diff --git a/common/formatter/rules/formatting_rules.cpp b/common/formatter/rules/formatting_rules.cpp index 4c4ed21c91..4ce13352b3 100644 --- a/common/formatter/rules/formatting_rules.cpp +++ b/common/formatter/rules/formatting_rules.cpp @@ -19,6 +19,9 @@ bool is_constant_list(const FormatterTreeNode& node) { if (!node.is_list() || node.refs.empty()) { return false; } + if (!node.refs.at(0).token) { + return true; + } const auto& type = node.refs.at(0).metadata.node_type; return constant_types.find(type) != constant_types.end(); } @@ -120,6 +123,7 @@ bool is_element_second_in_constant_pair_new(const FormatterTreeNode& prev_node, const FormatterTreeNode& curr_node) { if (prev_node.metadata.node_type == "kwd_lit") { // Handle standard constant types + // TODO - pair up sym_names as well if (constant_types.find(curr_node.metadata.node_type) != constant_types.end()) { if (curr_node.metadata.node_type != "kwd_lit") { // NOTE - there is ambiugity here which cannot be totally solved (i think?) @@ -150,7 +154,6 @@ bool is_element_second_in_constant_pair_new(const FormatterTreeNode& prev_node, return true; } } - } return false; } diff --git a/goal_src/jak1/levels/misty/misty-part.gc b/goal_src/jak1/levels/misty/misty-part.gc index ff88693f7e..4b02052daf 100644 --- a/goal_src/jak1/levels/misty/misty-part.gc +++ b/goal_src/jak1/levels/misty/misty-part.gc @@ -17,203 +17,213 @@ (defpart 972 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 1.0) - (:y (meters 1)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 973 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 3.0) - (:y (meters 1)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 3.0) + (:y (meters 1)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-misty-ship-steam :id 205 :bounds (static-bspherem 0 0.5 0 4.5) :parts - ((sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 973 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) + ((sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 972 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 973 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) (defpartgroup group-part-misty-torch :id 206 :bounds (static-bspherem 0 3 0 4) :parts - ((sp-item 974 :fade-after (meters 180) :falloff-to (meters 200)) (sp-item 975 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 976 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 977 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 978 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 979 :fade-after (meters 50) :falloff-to (meters 50)))) + ((sp-item 974 :fade-after (meters 180) :falloff-to (meters 200)) + (sp-item 975 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 976 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 977 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 978 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 979 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 979 :init-specs - ((:num 0.3) (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 980) - (:rotate-y (degrees 0) (degrees 360)))) + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 980) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 980 :init-specs ((:fade-b -6.826667))) (defpart 974 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 981 :init-specs ((:fade-a -1.3333334))) (defpart 976 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 977 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 978 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 981))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 981))) (defpart 975 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-misty-fog :id 207 @@ -222,29 +232,30 @@ (defpart 982 :init-specs - ((:texture (new 'static 'texture-id :index #x7 :page #x2)) (:num 0.06125) - (:x (meters 0) (meters 128)) - (:y (meters 5.5) (meters 1.5)) - (:z (meters -20) (meters 80)) - (:scale-x (meters 36)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 127.0) - (:g 127.0) - (:b 95.0 32.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-y (degrees -0.033333335) (degrees 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 10)) - (:flags (bit2 bit14 left-multiply-quat)) - (:next-time (seconds 1) (seconds 0.997)) - (:next-launcher 983) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 16) (meters 32)) - (:rotate-y (degrees 25.000002)))) + ((:texture (new 'static 'texture-id :index #x7 :page #x2)) + (:num 0.06125) + (:x (meters 0) (meters 128)) + (:y (meters 5.5) (meters 1.5)) + (:z (meters -20) (meters 80)) + (:scale-x (meters 36)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 127.0) + (:g 127.0) + (:b 95.0 32.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-y (degrees -0.033333335) (degrees 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 10)) + (:flags (bit2 bit14 left-multiply-quat)) + (:next-time (seconds 1) (seconds 0.997)) + (:next-launcher 983) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 16) (meters 32)) + (:rotate-y (degrees 25.000002)))) (defpart 983 :init-specs ((:fade-a 0.0) (:next-time (seconds 4) (seconds 0.997)) (:next-launcher 984))) @@ -259,31 +270,32 @@ (defpart 985 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.5 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 70)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 70)))) (defpartgroup group-misty-lurkermachine-vent-313 :id 209 @@ -292,31 +304,32 @@ (defpart 986 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.5 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 0)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 0)))) (defpartgroup group-misty-lurkermachine-vent-308 :id 210 @@ -325,31 +338,32 @@ (defpart 987 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 80)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 80)))) (defpartgroup group-misty-lurkermachine-vent-307 :id 211 @@ -358,31 +372,32 @@ (defpart 988 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 120)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 120)))) (defpartgroup group-misty-lurkermachine-vent-305 :id 212 @@ -391,31 +406,32 @@ (defpart 989 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees -20)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees -20)))) (defpartgroup group-misty-lurkermachine-vent-309 :id 213 @@ -424,31 +440,32 @@ (defpart 990 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 150)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 150)))) (defpartgroup group-misty-lurkermachine-vent-2 :id 214 @@ -457,31 +474,32 @@ (defpart 991 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 50.000004)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-misty-lurkermachine-vent-328 :id 215 @@ -490,31 +508,32 @@ (defpart 992 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -1) (meters 2)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 150)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -1) (meters 2)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 150)))) (defpartgroup group-misty-lurkermachine-vent-325 :id 216 @@ -523,31 +542,32 @@ (defpart 993 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees -50.000004)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees -50.000004)))) (defpartgroup group-misty-lurkermachine-vent-320 :id 217 @@ -556,31 +576,32 @@ (defpart 994 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 50.000004)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-misty-lurkermachine-vent-324 :id 218 @@ -589,310 +610,329 @@ (defpart 995 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.45 0.8) - (:x (meters -0.8) (meters 1.6)) - (:y (meters -0.3) (meters 0.6)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0 16.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters -0.0033333334)) - (:vel-z (meters -0.013333334) (meters -0.026666667)) - (:scalevel-x (meters 0.005) (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.10666667) - (:fade-b -0.10666667) - (:fade-a -0.21333334) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 220)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.45 0.8) + (:x (meters -0.8) (meters 1.6)) + (:y (meters -0.3) (meters 0.6)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0 16.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters -0.0033333334)) + (:vel-z (meters -0.013333334) (meters -0.026666667)) + (:scalevel-x (meters 0.005) (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.10666667) + (:fade-b -0.10666667) + (:fade-a -0.21333334) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 220)))) (defpartgroup group-misty-fort-steam :id 219 :bounds (static-bspherem 0 0.5 0 4.5) :parts - ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam2 :id 220 :bounds (static-bspherem 0 0.5 0 4.5) :parts - ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 4.1) :length (seconds 1)) (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.5) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 20.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.7) :length (seconds 0.15)))) + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 4.1) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.5) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 20.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.7) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam3 :id 221 :bounds (static-bspherem 0 0.5 0 4.5) :parts - ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 6) :length (seconds 1)) (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.53) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 17.34) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.8) :length (seconds 0.15)))) + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 6) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.53) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 17.34) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.8) :length (seconds 0.15)))) (defpartgroup group-misty-fort-steam4 :id 222 :bounds (static-bspherem 0 0.5 0 4.5) :parts - ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5.2) :length (seconds 1)) (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.67) :length (seconds 1.2)) - (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 16.16) :length (seconds 0.6)) - (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.9) :length (seconds 0.15)))) + ((sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5.2) :length (seconds 1)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 8.67) :length (seconds 1.2)) + (sp-item 996 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 16.16) :length (seconds 0.6)) + (sp-item 997 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.9) :length (seconds 0.15)))) (defpart 996 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 0.6) - (:y (meters 0)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 997 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 2.0) - (:y (meters 0)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1) (seconds 0.997)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:y (meters 0)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1) (seconds 0.997)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-misty-lurkermachine-spout-314 :id 223 :bounds (static-bspherem 0 0 0 6) :parts - ((sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) (sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 998 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 999 :fade-after (meters 100) :falloff-to (meters 100)))) + ((sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 998 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 998 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 999 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 999 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 998 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.00033333333) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.00033333333) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-310 :id 224 :bounds (static-bspherem 0 0 0 6) :parts - ((sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) (sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1000 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1001 :fade-after (meters 100) :falloff-to (meters 100)))) + ((sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1000 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1000 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1001 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1001 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-x (meters -0.02) (meters 0.0033333334)) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-x (meters -0.02) (meters 0.0033333334)) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1000 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-x (meters -0.053333335) (meters 0.0033333334)) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-x (meters -0.053333335) (meters 0.0033333334)) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-311 :id 225 :bounds (static-bspherem 0 0 0 6) :parts - ((sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) (sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1002 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1003 :fade-after (meters 100) :falloff-to (meters 100)))) + ((sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1002 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1002 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1003 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1003 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-x (meters 0.01) (meters 0.0033333334)) - (:vel-y (meters -0.02)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-x (meters 0.01) (meters 0.0033333334)) + (:vel-y (meters -0.02)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1002 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-x (meters 0.026666667) (meters 0.0033333334)) - (:vel-y (meters -0.053333335)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-x (meters 0.026666667) (meters 0.0033333334)) + (:vel-y (meters -0.053333335)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpartgroup group-misty-lurkermachine-spout-312 :id 226 :bounds (static-bspherem 0 0 0 6) :parts - ((sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) (sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) - (sp-item 1004 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) - (sp-item 1005 :fade-after (meters 100) :falloff-to (meters 100)))) + ((sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 4.2) :length (seconds 0.25)) + (sp-item 1004 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2.567) :length (seconds 0.32)) + (sp-item 1004 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 3.12) :length (seconds 0.2)) + (sp-item 1005 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1005 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 0.0 1.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters -0.02)) - (:vel-z (meters -0.013333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters -0.02)) + (:vel-z (meters -0.013333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) (defpart 1004 :init-specs - ((:texture (new 'static 'texture-id :page #x2)) (:num 1.0 0.6) - (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 32.0) - (:vel-y (meters -0.053333335)) - (:vel-z (meters -0.04) (meters 0.0033333334)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.001) (meters 0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:rotate-y (degrees 35)))) + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.6) + (:sound (static-sound-spec "steam-release" :num 0.05 :volume 100.0)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 32.0) + (:vel-y (meters -0.053333335)) + (:vel-z (meters -0.04) (meters 0.0033333334)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.001) (meters 0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:rotate-y (degrees 35)))) diff --git a/goal_src/jak1/levels/misty/misty-teetertotter.gc b/goal_src/jak1/levels/misty/misty-teetertotter.gc index dd11868cd7..1e482e8765 100644 --- a/goal_src/jak1/levels/misty/misty-teetertotter.gc +++ b/goal_src/jak1/levels/misty/misty-teetertotter.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/game/task/hint-control.gc") @@ -14,134 +13,96 @@ ;; DECOMP BEGINS (deftype teetertotter (process-drawable) - ((launched-player basic) - (in-launch-window basic) - (rock-is-dangerous basic) - ) + ((launched-player basic) + (in-launch-window basic) + (rock-is-dangerous basic)) (:states - teetertotter-bend - teetertotter-idle - teetertotter-launch - ) - ) + teetertotter-bend + teetertotter-idle + teetertotter-launch)) - -(defskelgroup *teetertotter-sg* teetertotter teetertotter-lod0-jg teetertotter-idle-ja - ((teetertotter-lod0-mg (meters 20)) (teetertotter-lod1-mg (meters 40)) (teetertotter-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *teetertotter-sg* + teetertotter + teetertotter-lod0-jg + teetertotter-idle-ja + ((teetertotter-lod0-mg (meters 20)) (teetertotter-lod1-mg (meters 40)) (teetertotter-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defun target-on-end-of-teetertotter? ((arg0 teetertotter)) (let ((gp-1 (vector-! (new-stack-vector0) (-> *target* control trans) (-> arg0 root trans)))) - (if (< (vector-dot (vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat)) gp-1) -8192.0) - #t - ) - ) - ) + (if (< (vector-dot (vector-x-quaternion! (new-stack-vector0) (-> arg0 root quat)) gp-1) -8192.0) #t))) (defstate teetertotter-idle (teetertotter) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (case (-> block param 1) - (('flop) - (when (target-on-end-of-teetertotter? self) - (set! (-> self in-launch-window) #f) - (increment-success-for-hint (text-id misty-teetertotter)) - (go teetertotter-launch) - ) - ) - ) - ) - (('bonk) - (when (target-on-end-of-teetertotter? self) - (level-hint-spawn (text-id misty-teetertotter) "sksp0070" (the-as entity #f) *entity-pool* (game-task none)) - (go teetertotter-bend) - ) - ) - ) - ) - :code (behavior () - (ja :group! teetertotter-idle-ja :num! min) - (loop - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (case (-> block param 1) + (('flop) + (when (target-on-end-of-teetertotter? self) + (set! (-> self in-launch-window) #f) + (increment-success-for-hint (text-id misty-teetertotter)) + (go teetertotter-launch))))) + (('bonk) + (when (target-on-end-of-teetertotter? self) + (level-hint-spawn (text-id misty-teetertotter) "sksp0070" (the-as entity #f) *entity-pool* (game-task none)) + (go teetertotter-bend))))) + :code + (behavior () + (ja :group! teetertotter-idle-ja :num! min) + (loop (suspend))) + :post transform-post) (defstate teetertotter-launch (teetertotter) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (when (= message 'touch) - (if (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (-> self rock-is-dangerous) - ) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly)))) - ) - (when (and ((method-of-type touching-shapes-entry prims-touching?) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (when (= message 'touch) + (if (and ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> block param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - (target-on-end-of-teetertotter? self) - (not (-> self launched-player)) - (-> self in-launch-window) - ) - (when (send-event - proc - 'shove - #f - (static-attack-info ((shove-back (meters 0)) (shove-up (meters 13)) (angle 'jump) (control 1.0))) - ) - (let ((v0-0 #t)) - (set! (-> self launched-player) v0-0) - v0-0 - ) - ) - ) - ) - ) - :code (behavior () - (set! (-> self launched-player) #f) - (ja-no-eval :group! teetertotter-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4))) - (let ((v1-16 (>= f0-4 12.0))) - (set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4))) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - (go teetertotter-idle) - ) - :post rider-post - ) + (the-as uint 1)) + (-> self rock-is-dangerous)) + (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'deadly))))) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2)) + (target-on-end-of-teetertotter? self) + (not (-> self launched-player)) + (-> self in-launch-window)) + (when (send-event proc + 'shove + #f + (static-attack-info ((shove-back (meters 0)) (shove-up (meters 13)) (angle 'jump) (control 1.0)))) + (let ((v0-0 #t)) (set! (-> self launched-player) v0-0) v0-0))))) + :code + (behavior () + (set! (-> self launched-player) #f) + (ja-no-eval :group! teetertotter-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (set! (-> self in-launch-window) (and (>= f0-4 76.0) (>= 82.0 f0-4))) + (let ((v1-16 (>= f0-4 12.0))) (set! (-> self rock-is-dangerous) (and v1-16 (>= 76.0 f0-4))))) + (suspend) + (ja :num! (seek!))) + (go teetertotter-idle)) + :post rider-post) (defstate teetertotter-bend (teetertotter) - :code (behavior () - (ja-no-eval :group! teetertotter-landing-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go teetertotter-idle) - ) - :post rider-post - ) + :code + (behavior () + (ja-no-eval :group! teetertotter-landing-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go teetertotter-idle)) + :post rider-post) (defmethod init-from-entity! ((this teetertotter) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -156,8 +117,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -165,8 +125,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -174,8 +133,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -183,8 +141,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 2)))) (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -192,18 +149,14 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) - (append-prim s3-0 s2-4) - ) - ) + (append-prim s3-0 s2-4))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *teetertotter-sg* '()) + (initialize-skeleton this *teetertotter-sg* ()) (set! (-> this launched-player) #f) (set! (-> this in-launch-window) #f) (set! (-> this rock-is-dangerous) #f) (go teetertotter-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/misty-warehouse.gc b/goal_src/jak1/levels/misty/misty-warehouse.gc index e9bc0076ba..579873932b 100644 --- a/goal_src/jak1/levels/misty/misty-warehouse.gc +++ b/goal_src/jak1/levels/misty/misty-warehouse.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/game/task/task-control.gc") (require "engine/common-obs/baseplat.gc") @@ -14,123 +13,88 @@ ;; DECOMP BEGINS (deftype silostep (process-drawable) - ((anim-limit float) - (cam-tracker handle) - ) + ((anim-limit float) + (cam-tracker handle)) (:states - silostep-camera - silostep-idle - (silostep-rise symbol) - ) - ) + silostep-camera + silostep-idle + (silostep-rise symbol))) - -(defskelgroup *silostep-sg* silostep silostep-lod0-jg silostep-idle-ja - ((silostep-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 8) - ) +(defskelgroup *silostep-sg* + silostep + silostep-lod0-jg + silostep-idle-ja + ((silostep-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 8)) (defstate silostep-idle (silostep) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go silostep-camera) - ) - (('trigger-rise) - (go silostep-rise #f) - ) - ) - ) - :code (behavior () - (ja :group! silostep-idle-ja :num! min) - (transform-post) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go silostep-camera)) + (('trigger-rise) (go silostep-rise #f)))) + :code + (behavior () + (ja :group! silostep-idle-ja :num! min) + (transform-post) + (loop (suspend))) + :post ja-post) (defbehavior misty-camera-view silostep () (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior camera-tracker - () - (while (not (process-grab? *target*)) - (suspend) - ) - (camera-change-to "camera-160" 150 #f) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 3)) - (suspend) - ) - ) - (while (not (process-release? (handle->process (-> self grab-target)))) - (suspend) - ) - (camera-change-to (the-as string 'base) 150 #f) - (none) - ) - :to self - ) - ) - ) - (none) - ) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior camera-tracker () + (while (not (process-grab? *target*)) + (suspend)) + (camera-change-to "camera-160" 150 #f) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 3)) (suspend))) + (while (not (process-release? (handle->process (-> self grab-target)))) + (suspend)) + (camera-change-to (the-as string 'base) 150 #f) + (none)) + :to + self))) + (none)) (defstate silostep-camera (silostep) - :code (behavior () - (misty-camera-view) - (let* ((gp-0 (get-task-control (game-task misty-warehouse))) - (v1-1 (get-reminder gp-0 0)) - ) - (save-reminder gp-0 (logior v1-1 2) 0) - ) - (set-time! (-> self state-time)) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 1)) - (suspend) - ) - ) - (sound-play "arena-steps") - (send-to-all-after (-> self link) 'trigger-rise) - (go silostep-rise #f) - ) - :post ja-post - ) + :code + (behavior () + (misty-camera-view) + (let* ((gp-0 (get-task-control (game-task misty-warehouse))) + (v1-1 (get-reminder gp-0 0))) + (save-reminder gp-0 (logior v1-1 2) 0)) + (set-time! (-> self state-time)) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 1)) (suspend))) + (sound-play "arena-steps") + (send-to-all-after (-> self link) 'trigger-rise) + (go silostep-rise #f)) + :post ja-post) (defstate silostep-rise (silostep) - :code (behavior ((arg0 symbol)) - (process-entity-status! self (entity-perm-status complete) #t) - (when (not arg0) - (ja-no-eval :group! silostep-idle-ja :num! (seek! (-> self anim-limit)) :frame-num 0.0) - (until (ja-done? 0) - (rider-trans) - (rider-post) - (suspend) - (ja :num! (seek! (-> self anim-limit))) - ) - ) - (ja :group! silostep-idle-ja :num! (identity (-> self anim-limit))) - (rider-post) - (loop - (ja-post) - (suspend) - ) - ) - :post #f - ) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not arg0) + (ja-no-eval :group! silostep-idle-ja :num! (seek! (-> self anim-limit)) :frame-num 0.0) + (until (ja-done? 0) + (rider-trans) + (rider-post) + (suspend) + (ja :num! (seek! (-> self anim-limit))))) + (ja :group! silostep-idle-ja :num! (identity (-> self anim-limit))) + (rider-post) + (loop (ja-post) + (suspend))) + :post #f) (defmethod init-from-entity! ((this silostep) (arg0 entity-actor)) (logior! (-> this mask) (process-mask movie-subject)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -139,36 +103,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *silostep-sg* '()) + (initialize-skeleton this *silostep-sg* ()) (set! (-> this anim-limit) (* (res-lump-float arg0 'distance :default 1.0) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) + (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)))) (set! (-> this link) (new 'process 'actor-link-info this)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go silostep-rise #t) - (go silostep-idle) - ) - (none) - ) + (go silostep-rise #t) + (go silostep-idle)) + (none)) -(defskelgroup *rounddoor-sg* rounddoor rounddoor-lod0-jg rounddoor-idle-ja - ((rounddoor-lod0-mg (meters 20)) (rounddoor-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) - -(deftype rounddoor (eco-door) - () - ) +(defskelgroup *rounddoor-sg* + rounddoor + rounddoor-lod0-jg + rounddoor-idle-ja + ((rounddoor-lod0-mg (meters 20)) (rounddoor-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) +(deftype rounddoor (eco-door) ()) (defmethod eco-door-method-24 ((this rounddoor)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -179,18 +136,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this rounddoor)) - (initialize-skeleton this *rounddoor-sg* '()) + (initialize-skeleton this *rounddoor-sg* ()) (set! (-> this open-distance) 69632.0) (set! (-> this close-distance) 81920.0) (set! (-> this open-sound) (static-sound-name "arenadoor-open")) @@ -202,5 +156,4 @@ (set! (-> this out-dir w) (- 8192.0 (vector-dot (-> this out-dir) (-> this root trans)))) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/mistycannon.gc b/goal_src/jak1/levels/misty/mistycannon.gc index 4305d1f1a0..7be0776436 100644 --- a/goal_src/jak1/levels/misty/mistycannon.gc +++ b/goal_src/jak1/levels/misty/mistycannon.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "BEA.DGO" "MIS.DGO") - (require "engine/gfx/shadow/shadow.gc") (require "engine/common-obs/water.gc") (require "engine/entity/ambient.gc") @@ -13,919 +12,745 @@ ;; DECOMP BEGINS (deftype angle-tracker (structure) - ((value float) - (min float) - (range float) - (speed float) - ) - ) - + ((value float) + (min float) + (range float) + (speed float))) (defun angle-tracker-apply-move! ((arg0 angle-tracker) (arg1 float)) (let* ((f0-2 (* arg1 (-> arg0 speed) (seconds-per-frame))) - (f0-3 (+ (-> arg0 value) f0-2)) - ) + (f0-3 (+ (-> arg0 value) f0-2))) (when (!= (-> arg0 range) 0.0) - (if (< f0-3 0.0) - (set! f0-3 0.0) - ) - (if (< (-> arg0 range) f0-3) - (set! f0-3 (-> arg0 range)) - ) - ) + (if (< f0-3 0.0) (set! f0-3 0.0)) + (if (< (-> arg0 range) f0-3) (set! f0-3 (-> arg0 range)))) (let ((f1-7 (- (-> arg0 value) f0-3))) - (if (= (-> arg0 range) 0.0) - (set! f0-3 (the float (sar (shl (the int f0-3) 48) 48))) - ) + (if (= (-> arg0 range) 0.0) (set! f0-3 (the float (sar (shl (the int f0-3) 48) 48)))) (set! (-> arg0 value) f0-3) - f1-7 - ) - ) - ) + f1-7))) (defun angle-tracker-init-range! ((arg0 angle-tracker) (arg1 float) (arg2 float) (arg3 float)) (set! (-> arg0 min) arg1) (set! (-> arg0 range) (the float (sar (shl (the int (- arg2 arg1)) 48) 48))) - (if (< (-> arg0 range) 0.0) - (+! (-> arg0 range) 65536.0) - ) + (if (< (-> arg0 range) 0.0) (+! (-> arg0 range) 65536.0)) (set! (-> arg0 value) (* 0.5 (-> arg0 range))) (set! (-> arg0 speed) arg3) 0 - (none) - ) + (none)) (defun angle-tracker-get-value ((arg0 angle-tracker)) - (the float (sar (shl (the int (+ (-> arg0 min) (-> arg0 value))) 48) 48)) - ) + (the float (sar (shl (the int (+ (-> arg0 min) (-> arg0 value))) 48) 48))) (defun angle-tracker-set-value ((arg0 angle-tracker) (arg1 float)) (let ((v1-0 (- arg1 (-> arg0 min)))) (when (!= (-> arg0 range) 0.0) - (if (< v1-0 0.0) - (set! v1-0 0.0) - ) - (if (< (-> arg0 range) v1-0) - (set! v1-0 (-> arg0 range)) - ) - ) + (if (< v1-0 0.0) (set! v1-0 0.0)) + (if (< (-> arg0 range) v1-0) (set! v1-0 (-> arg0 range)))) (set! (-> arg0 value) v1-0) - (+ (-> arg0 min) v1-0) - ) - ) + (+ (-> arg0 min) v1-0))) (defun angle-tracker-seek! ((arg0 angle-tracker) (arg1 float)) (let* ((v1-0 arg0) (f1-1 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) (f0-6 (* (-> arg0 speed) (seconds-per-frame))) - (v1-9 (the float (sar (shl (the int (- arg1 f1-1)) 48) 48))) - ) + (v1-9 (the float (sar (shl (the int (- arg1 f1-1)) 48) 48)))) (when (< (fabs v1-9) f0-6) (let ((f0-8 (+ (-> arg0 value) v1-9))) (cond - ((= (-> arg0 range) 0.0) - (set! (-> arg0 value) (the float (sar (shl (the int f0-8) 48) 48))) - (return #t) - ) + ((= (-> arg0 range) 0.0) (set! (-> arg0 value) (the float (sar (shl (the int f0-8) 48) 48))) (return #t)) (else - (when (< f0-8 0.0) - (set! (-> arg0 value) 0.0) - (return #f) - ) - (when (< (-> arg0 range) f0-8) - (set! (-> arg0 value) (-> arg0 range)) - (return #f) - ) - (set! (-> arg0 value) f0-8) - (return #t) - ) - ) - ) - (set! v1-9 (the-as float 0)) - ) + (when (< f0-8 0.0) + (set! (-> arg0 value) 0.0) + (return #f)) + (when (< (-> arg0 range) f0-8) + (set! (-> arg0 value) (-> arg0 range)) + (return #f)) + (set! (-> arg0 value) f0-8) + (return #t)))) + (set! v1-9 (the-as float 0))) (cond ((< v1-9 0.0) (let ((f0-14 (- (-> arg0 value) f0-6))) - (set! f0-14 (cond - ((= (-> arg0 range) 0.0) - (the float (sar (shl (the int f0-14) 48) 48)) - ) - (else - (if (< f0-14 0.0) - (set! f0-14 0.0) - ) - f0-14 - ) - ) - ) - (set! (-> arg0 value) (the float (sar (shl (the int f0-14) 48) 48))) - ) - ) + (set! f0-14 + (cond + ((= (-> arg0 range) 0.0) (the float (sar (shl (the int f0-14) 48) 48))) + (else (if (< f0-14 0.0) (set! f0-14 0.0)) f0-14))) + (set! (-> arg0 value) (the float (sar (shl (the int f0-14) 48) 48))))) (else - (let ((f0-20 (+ (-> arg0 value) f0-6))) - (set! f0-20 (cond - ((= (-> arg0 range) 0.0) - (the float (sar (shl (the int f0-20) 48) 48)) - ) - (else - (if (< (-> arg0 range) f0-20) - (set! f0-20 (-> arg0 range)) - ) - f0-20 - ) - ) - ) - (set! (-> arg0 value) (the float (sar (shl (the int f0-20) 48) 48))) - ) - ) - ) - ) - #f - ) + (let ((f0-20 (+ (-> arg0 value) f0-6))) + (set! f0-20 + (cond + ((= (-> arg0 range) 0.0) (the float (sar (shl (the int f0-20) 48) 48))) + (else (if (< (-> arg0 range) f0-20) (set! f0-20 (-> arg0 range))) f0-20))) + (set! (-> arg0 value) (the float (sar (shl (the int f0-20) 48) 48))))))) + #f) (defpartgroup group-beach-sack-fuse :id 117 :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 517 :fade-after (meters 30)) - (sp-item 518 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 519 :fade-after (meters 80) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 517 :fade-after (meters 30)) + (sp-item 518 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 519 :fade-after (meters 80) :falloff-to (meters 80)))) (defpart 517 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 4.0 24.0) - (:vel-y (meters 0.013333334)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:fade-a 2.1333334) - (:accel-y (meters -0.0001)) - (:timer (seconds 0.15) (seconds 0.047)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 4.0 24.0) + (:vel-y (meters 0.013333334)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:fade-a 2.1333334) + (:accel-y (meters -0.0001)) + (:timer (seconds 0.15) (seconds 0.047)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 518 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 48.0 48.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 48.0 48.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 519 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 4.0) - (:scale-x (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 8.0 24.0) - (:a 160.0 95.0) - (:scalevel-x (meters 0.016666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -8.366014) - (:accel-y (meters -0.002)) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.6) (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 4.0) + (:scale-x (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 8.0 24.0) + (:a 160.0 95.0) + (:scalevel-x (meters 0.016666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -8.366014) + (:accel-y (meters -0.002)) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.6) (meters 0.2)))) (defpartgroup group-beach-sack-explosion :id 118 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 520 :period (seconds 4) :length (seconds 0.1)) - (sp-item 521 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) - (sp-item 522 :period (seconds 4) :length (seconds 0.05) :offset 15) - (sp-item 523 :period (seconds 4) :length (seconds 0.05)) - (sp-item 524 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 525) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - (sp-item 525 :flags (start-dead)) - ) - ) + :parts + ((sp-item 520 :period (seconds 4) :length (seconds 0.1)) + (sp-item 521 :fade-after (meters 60) :period (seconds 4) :length (seconds 0.05)) + (sp-item 522 :period (seconds 4) :length (seconds 0.05) :offset 15) + (sp-item 523 :period (seconds 4) :length (seconds 0.05)) + (sp-item 524 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.1) :binding 525) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)) + (sp-item 525 :flags (start-dead)))) (defpart 520 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 96.0) - (:vel-y (meters 0.006666667) (meters 0.033333335)) - (:scalevel-x (meters 0.006)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00005)) - (:friction 0.92) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 526) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 96.0) + (:vel-y (meters 0.006666667) (meters 0.033333335)) + (:scalevel-x (meters 0.006)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00005)) + (:friction 0.92) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 526) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 526 - :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32)) - ) + :init-specs ((:scalevel-x (meters 0)) (:scalevel-y :copy scalevel-x) (:fade-a -0.32))) (defpart 521 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:y (meters 0.75)) - (:scale-x (meters 8) (meters 8)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2) (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 527) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:y (meters 0.75)) + (:scale-x (meters 8) (meters 8)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2) (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 527) + (:rotate-y (degrees 0)))) (defpart 527 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 522 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 523 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 32.0) - (:b 32.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 32.0) + (:b 32.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 524 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0 10.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 127.0 1 127.0) - (:b 0.0) - (:a 127.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:fade-g -4.266667) - (:fade-b -2.8444445) - (:accel-y (meters -0.004)) - (:friction 0.97) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.017) (seconds 0.127)) - (:next-launcher 528) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0 10.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 127.0 1 127.0) + (:b 0.0) + (:a 127.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:fade-g -4.266667) + (:fade-b -2.8444445) + (:accel-y (meters -0.004)) + (:friction 0.97) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.017) (seconds 0.127)) + (:next-launcher 528) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 528 - :init-specs ((:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -4.266667) - (:fade-g 0.7111111) - (:fade-b 1.4222223) - (:fade-a -2.8444445) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -4.266667) + (:fade-g 0.7111111) + (:fade-b 1.4222223) + (:fade-a -2.8444445))) (defpart 525 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0) - (:g 70.0) - (:b 70.0 16.0) - (:a 20.0 8.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.11666667) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0) + (:g 70.0) + (:b 70.0 16.0) + (:a 20.0 8.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.11666667) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)))) (defpartgroup group-beach-cannon-fire :id 119 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 24) - :parts ((sp-item 529 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.1)) - (sp-item 530 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.05)) - (sp-item 531 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05)) - (sp-item 532 :period (seconds 4) :length (seconds 0.05) :offset 15) - (sp-item 533 :period (seconds 4) :length (seconds 0.05)) - (sp-item 534 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05) :binding 535) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - (sp-item 535 :flags (start-dead)) - ) - ) + :parts + ((sp-item 529 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.1)) + (sp-item 530 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.05)) + (sp-item 531 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05)) + (sp-item 532 :period (seconds 4) :length (seconds 0.05) :offset 15) + (sp-item 533 :period (seconds 4) :length (seconds 0.05)) + (sp-item 534 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 4) :length (seconds 0.05) :binding 535) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)) + (sp-item 535 :flags (start-dead)))) (defpart 529 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 16.0) - (:a 48.0) - (:vel-y (meters 0.1) (meters 0.013333334)) - (:vel-z (meters -0.033333335)) - (:scalevel-x (meters 0.016666668)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00006666667)) - (:friction 0.92) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 536) - (:launchrot-x (degrees 90)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 16.0) + (:a 48.0) + (:vel-y (meters 0.1) (meters 0.013333334)) + (:vel-z (meters -0.033333335)) + (:scalevel-x (meters 0.016666668)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00006666667)) + (:friction 0.92) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 536) + (:launchrot-x (degrees 90)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 90)))) (defpart 536 - :init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.16)) - ) + :init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.16))) (defpart 530 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 5.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 16.0) - (:a 48.0) - (:vel-z (meters 0.3) (meters 0.06666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00006666667)) - (:friction 0.96) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.497)) - (:next-launcher 536) - (:launchrot-x (degrees -83) (degrees -7.0000005)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:conerot-radius (meters 2)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 5.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 16.0) + (:a 48.0) + (:vel-z (meters 0.3) (meters 0.06666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00006666667)) + (:friction 0.96) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.497)) + (:next-launcher 536) + (:launchrot-x (degrees -83) (degrees -7.0000005)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:conerot-radius (meters 2)) + (:rotate-y (degrees 90)))) (defpart 531 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 6.0) - (:y (meters 0.75)) - (:scale-x (meters 16) (meters 16)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 1.2) (meters 3)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 537) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 6.0) + (:y (meters 0.75)) + (:scale-x (meters 16) (meters 16)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 1.2) (meters 3)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 537))) (defpart 537 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 532 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 533 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 24) (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 32.0) - (:b 32.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 24) (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 32.0) + (:b 32.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 534 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0 10.0) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 0.0) - (:a 128.0) - (:vel-z (meters 0.16666667) (meters 0.16666667)) - (:fade-g -4.2222223) - (:fade-b -2.8) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035) (seconds 0.297)) - (:next-launcher 538) - (:launchrot-x (degrees -60) (degrees -60)) - (:launchrot-y (degrees 0) (degrees 360)) - (:conerot-x (degrees 45)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0 10.0) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 0.0) + (:a 128.0) + (:vel-z (meters 0.16666667) (meters 0.16666667)) + (:fade-g -4.2222223) + (:fade-b -2.8) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035) (seconds 0.297)) + (:next-launcher 538) + (:launchrot-x (degrees -60) (degrees -60)) + (:launchrot-y (degrees 0) (degrees 360)) + (:conerot-x (degrees 45)) + (:rotate-y (degrees 90)))) (defpart 538 - :init-specs ((:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.6) - (:fade-g -1.8) - (:fade-a -0.85333335) - ) - ) + :init-specs + ((:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.6) + (:fade-g -1.8) + (:fade-a -0.85333335))) (defpart 535 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 16.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 16.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08) + (:timer (seconds 1)) + (:flags (bit2 bit12)))) (deftype mistycannon-missile (process-drawable) - ((root collide-shape-moving :override) - (muzzle-time float) - (tumble-quat quaternion :inline) - (blast-radius float) - (water-height float) - (sfx uint32) - (part2 sparticle-launch-control) - (ground-time time-frame) - ) + ((root collide-shape-moving :override) + (muzzle-time float) + (tumble-quat quaternion :inline) + (blast-radius float) + (water-height float) + (sfx uint32) + (part2 sparticle-launch-control) + (ground-time time-frame)) (:methods - (spawn-part (_type_) none) - ) + (spawn-part (_type_) none)) (:states - mistycannon-missile-explode - mistycannon-missile-idle - mistycannon-missile-in-water - ) - ) - + mistycannon-missile-explode + mistycannon-missile-idle + mistycannon-missile-in-water)) (defmethod relocate ((this mistycannon-missile) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as mistycannon-missile ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as mistycannon-missile ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this mistycannon-missile)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) -(defskelgroup *mistycannon-missile-sg* sack sack-lod0-jg sack-idle-ja - ((sack-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *mistycannon-missile-sg* + sack + sack-lod0-jg + sack-idle-ja + ((sack-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod spawn-part ((this mistycannon-missile)) (let ((gp-0 (-> this part)) - (a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 7))) - ) - (spawn gp-0 a1-1) - ) + (a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data 7)))) + (spawn gp-0 a1-1)) 0 - (none) - ) + (none)) (defstate mistycannon-missile-idle (mistycannon-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (go mistycannon-missile-explode) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self sfx) (the-as uint 0)) - 0 - ) - :trans (behavior () - (if (< (-> self root trans y) (-> self water-height)) - (go mistycannon-missile-in-water) - ) - ) - :code (behavior () - (clear-collide-with-as (-> self root)) - (while (not (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self muzzle-time))))) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (suspend) - (let ((f0-1 - (fmin - 1.0 - (/ (the float (- (current-time) (-> self state-time))) (the float (the int (* 300.0 (-> self muzzle-time))))) - ) - ) - ) - (set! (-> self root scale x) (* 0.6 f0-1)) - (set! (-> self root scale y) (* 0.6 f0-1)) - (set! (-> self root scale z) (* 0.6 f0-1)) - ) - ) - (restore-collide-with-as (-> self root)) - (set-vector! (-> self root scale) 0.6 0.6 0.6 1.0) - (while (not (logtest? (-> self root status) (cshape-moving-flags onsurf))) - (if (and (zero? (-> self sfx)) (< (if *target* - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - 4096000.0 - ) - 409600.0 - ) - ) - (set! (-> self sfx) (the-as uint (sound-play "sack-incoming" :position (the-as symbol (-> self root trans))))) - ) - (when (nonzero? (-> self sfx)) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (the-as sound-id (-> self sfx))) - (let ((a1-3 (-> self root trans))) - (let ((s5-1 self)) - (when (= a1-3 #t) - (if (and s5-1 (type-type? (-> s5-1 type) process-drawable) (nonzero? (-> s5-1 root))) - (set! a1-3 (-> s5-1 root trans)) - (set! a1-3 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> gp-1 parms trans) a1-3) - ) - (set! (-> gp-1 parms mask) (sound-mask trans)) - (-> gp-1 id) - ) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (suspend) - ) - (quaternion-set! (-> self root quat) 0.0 0.0 0.0 1.0) - (update-transforms! (-> self root)) - (when (nonzero? (-> self sfx)) - (sound-stop (the-as sound-id (-> self sfx))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (go mistycannon-missile-explode)))) + :enter + (behavior () + (set-time! (-> self state-time)) (set! (-> self sfx) (the-as uint 0)) - 0 - ) - (set-time! (-> self ground-time)) - (sound-play "sack-land" :position (the-as symbol (-> self root trans))) - (ja-no-eval :group! sack-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sack-fuse-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go mistycannon-missile-explode) - ) - :post (behavior () - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - (set! (-> self root root-prim prim-core offense) (collide-offense touch)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (spawn-part self) - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) - (if (logtest? (-> self root status) (cshape-moving-flags onsurf)) - (draw-shadow - (-> self root shadow-pos) - (-> self root shadow-pos) - (-> self root ground-poly-normal) - 8192.0 - 4096.0 - (the-as float 0) - ) - (find-ground-and-draw-shadow - (-> self root trans) - (-> self root shadow-pos) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - ) - ) - (ja-post) - ) - ) + 0) + :trans + (behavior () + (if (< (-> self root trans y) (-> self water-height)) (go mistycannon-missile-in-water))) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (while (not (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self muzzle-time))))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (suspend) + (let ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (the int (* 300.0 (-> self muzzle-time)))))))) + (set! (-> self root scale x) (* 0.6 f0-1)) + (set! (-> self root scale y) (* 0.6 f0-1)) + (set! (-> self root scale z) (* 0.6 f0-1)))) + (restore-collide-with-as (-> self root)) + (set-vector! (-> self root scale) 0.6 0.6 0.6 1.0) + (while (not (logtest? (-> self root status) (cshape-moving-flags onsurf))) + (if (and (zero? (-> self sfx)) + (< (if *target* (vector-vector-distance (-> self root trans) (-> *target* control trans)) 4096000.0) 409600.0)) + (set! (-> self sfx) (the-as uint (sound-play "sack-incoming" :position (the-as symbol (-> self root trans)))))) + (when (nonzero? (-> self sfx)) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (the-as sound-id (-> self sfx))) + (let ((a1-3 (-> self root trans))) + (let ((s5-1 self)) + (when (= a1-3 #t) + (if (and s5-1 (type-type? (-> s5-1 type) process-drawable) (nonzero? (-> s5-1 root))) + (set! a1-3 (-> s5-1 root trans)) + (set! a1-3 (the-as vector #f))))) + (sound-trans-convert (-> gp-1 parms trans) a1-3)) + (set! (-> gp-1 parms mask) (sound-mask trans)) + (-> gp-1 id))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (suspend)) + (quaternion-set! (-> self root quat) 0.0 0.0 0.0 1.0) + (update-transforms! (-> self root)) + (when (nonzero? (-> self sfx)) + (sound-stop (the-as sound-id (-> self sfx))) + (set! (-> self sfx) (the-as uint 0)) + 0) + (set-time! (-> self ground-time)) + (sound-play "sack-land" :position (the-as symbol (-> self root trans))) + (ja-no-eval :group! sack-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sack-fuse-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go mistycannon-missile-explode)) + :post + (behavior () + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) + (set! (-> self root root-prim prim-core offense) (collide-offense touch)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (spawn-part self) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status was-drawn))) + (if (logtest? (-> self root status) (cshape-moving-flags onsurf)) + (draw-shadow (-> self root shadow-pos) + (-> self root shadow-pos) + (-> self root ground-poly-normal) + 8192.0 + 4096.0 + (the-as float 0)) + (find-ground-and-draw-shadow (-> self root trans) + (-> self root shadow-pos) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0))) + (ja-post))) (defstate mistycannon-missile-in-water (mistycannon-missile) - :code (behavior () - (when (nonzero? (-> self sfx)) - (sound-stop (the-as sound-id (-> self sfx))) - (set! (-> self sfx) (the-as uint 0)) - 0 - ) - (let ((a1-0 (new-stack-vector0))) - (set! (-> a1-0 x) (-> self root trans x)) - (set! (-> a1-0 y) (-> self water-height)) - (set! (-> a1-0 z) (-> self root trans z)) - (set! (-> a1-0 w) 1.0) - (splash-spawn (the-as basic 1.0) (the-as basic a1-0) 1) - ) - (label cfg-3) - (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) - (vector-float*! (-> self root transv) (-> self root transv) 0.5) - (update-transforms! (-> self root)) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (seek! (-> self root scale x) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (seek! (-> self root scale y) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (seek! (-> self root scale z) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) - (when (< 0.05 (-> self root scale x)) - (suspend) - (goto cfg-3) - ) - (ja-channel-set! 0) - ) - :post ja-post - ) + :code + (behavior () + (when (nonzero? (-> self sfx)) + (sound-stop (the-as sound-id (-> self sfx))) + (set! (-> self sfx) (the-as uint 0)) + 0) + (let ((a1-0 (new-stack-vector0))) + (set! (-> a1-0 x) (-> self root trans x)) + (set! (-> a1-0 y) (-> self water-height)) + (set! (-> a1-0 z) (-> self root trans z)) + (set! (-> a1-0 w) 1.0) + (splash-spawn (the-as basic 1.0) (the-as basic a1-0) 1)) + (label cfg-3) + (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 1.0)) + (vector-float*! (-> self root transv) (-> self root transv) 0.5) + (update-transforms! (-> self root)) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (seek! (-> self root scale x) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (seek! (-> self root scale y) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (seek! (-> self root scale z) 0.0 (* 0.01 (-> *display* time-adjust-ratio))) + (when (< 0.05 (-> self root scale x)) + (suspend) + (goto cfg-3)) + (ja-channel-set! 0)) + :post ja-post) (defstate mistycannon-missile-explode (mistycannon-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (let* ((s4-0 proc) - (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) - (when v1-2 - (let* ((v1-3 (-> (the-as mistycannon-missile v1-2) root)) - (a1-2 (-> self root root-prim prim-core)) - (v1-5 (-> v1-3 root-prim prim-core)) - (a2-1 (new 'stack-no-clear 'vector)) - (t2-0 (new 'stack-no-clear 'collide-tri-result)) - ) - 0.0 - (vector-! a2-1 (the-as vector v1-5) (the-as vector a1-2)) - (when (< (fill-and-probe-using-line-sphere - *collide-cache* - (the-as vector a1-2) - a2-1 - 40.96 - (collide-kind background) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (else - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 4) - (set! (-> a1-4 message) 'attack) - (set! (-> a1-4 param 0) (-> block param 0)) - (set! (-> a1-4 param 1) (the-as uint 'explode)) - (let ((v1-18 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-18) - (set! (-> a1-4 param 2) (the-as uint v1-18)) - ) - (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function proc a1-4) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (if (and *target* (= (-> *target* next-state name) 'target-periscope)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (let* ((s4-0 proc) + (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) + (when v1-2 + (let* ((v1-3 (-> (the-as mistycannon-missile v1-2) root)) + (a1-2 (-> self root root-prim prim-core)) + (v1-5 (-> v1-3 root-prim prim-core)) + (a2-1 (new 'stack-no-clear 'vector)) + (t2-0 (new 'stack-no-clear 'collide-tri-result))) + 0.0 + (vector-! a2-1 (the-as vector v1-5) (the-as vector a1-2)) + (when (< (fill-and-probe-using-line-sphere *collide-cache* + (the-as vector a1-2) + a2-1 + 40.96 + (collide-kind background) + self + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (else + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 4) + (set! (-> a1-4 message) 'attack) + (set! (-> a1-4 param 0) (-> block param 0)) + (set! (-> a1-4 param 1) (the-as uint 'explode)) + (let ((v1-18 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-18) (set! (-> a1-4 param 2) (the-as uint v1-18))) + (set! (-> a1-4 param 3) (the-as uint 0)) + (send-event-function proc a1-4))))))))))) + :code + (behavior () + (if (and *target* (= (-> *target* next-state name) 'target-periscope)) (sound-play-by-spec (static-sound-spec "explosion" :fo-min 200 :fo-max 400) (new-sound-id) (the-as vector #t)) - (sound-play-by-spec (static-sound-spec "explosion") (new-sound-id) (the-as vector #t)) - ) - (spawn (-> self part2) (-> self root trans)) - (ja-channel-set! 0) - (let ((v1-11 (-> self root root-prim))) - (set! (-> v1-11 local-sphere w) (-> self blast-radius)) - (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) - (set! (-> v1-11 prim-core collide-as) (collide-kind enemy)) - ) - (update-transforms! (-> self root)) - (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-3 options) (the-as uint 0)) - (set! (-> a1-3 tlist) *touching-list*) - (find-overlapping-shapes (-> self root) a1-3) - ) - (suspend) - (clear-collide-with-as (-> self root)) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 3)) - (spawn (-> self part2) (-> self root trans)) - (suspend) - ) - ) - (kill-and-free-particles (-> self part2)) - (deactivate self) - ) - :post ja-post - ) + (sound-play-by-spec (static-sound-spec "explosion") (new-sound-id) (the-as vector #t))) + (spawn (-> self part2) (-> self root trans)) + (ja-channel-set! 0) + (let ((v1-11 (-> self root root-prim))) + (set! (-> v1-11 local-sphere w) (-> self blast-radius)) + (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) + (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) + (set! (-> v1-11 prim-core collide-as) (collide-kind enemy))) + (update-transforms! (-> self root)) + (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) + (set! (-> a1-3 options) (the-as uint 0)) + (set! (-> a1-3 tlist) *touching-list*) + (find-overlapping-shapes (-> self root) a1-3)) + (suspend) + (clear-collide-with-as (-> self root)) + (let ((gp-2 (current-time))) + (until (time-elapsed? gp-2 (seconds 3)) + (spawn (-> self part2) (-> self root trans)) + (suspend))) + (kill-and-free-particles (-> self part2)) + (deactivate self)) + :post ja-post) (defun mistycannon-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) (let ((s5-0 0)) (let ((a1-1 (new 'stack-no-clear 'vector))) (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-1) - ) + (move-by-vector! arg0 a1-1)) (let ((f0-2 (vector-dot (-> arg0 transv) (-> arg1 best-tri normal))) - (v1-6 (new 'stack-no-clear 'vector)) - ) + (v1-6 (new 'stack-no-clear 'vector))) (vector-float*! v1-6 (-> arg1 best-tri normal) (* 2.0 f0-2)) - (vector-! (-> arg0 transv) (-> arg0 transv) v1-6) - ) + (vector-! (-> arg0 transv) (-> arg0 transv) v1-6)) (vector-float*! (-> arg0 transv) (-> arg0 transv) 0.15) - (let ((v0-1 (logior s5-0 7))) - (logior! (-> arg0 status) v0-1) - (the-as cshape-moving-flags v0-1) - ) - ) - ) + (let ((v0-1 (logior s5-0 7))) (logior! (-> arg0 status) v0-1) (the-as cshape-moving-flags v0-1)))) (deftype mistycannon-init-data (structure) - ((pos vector) - (vel vector) - (rotate float) - (flight-time float) - (muzzle-time float) - (blast-radius float) - ) - ) - + ((pos vector) + (vel vector) + (rotate float) + (flight-time float) + (muzzle-time float) + (blast-radius float))) (defbehavior mistycannon-missile-init-by-other mistycannon-missile ((arg0 mistycannon-init-data) (arg1 entity-actor)) (logior! (-> self mask) (process-mask projectile)) @@ -934,9 +759,7 @@ (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) mistycannon-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object)) @@ -944,40 +767,28 @@ (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1720.3201) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 event-self) 'touched) (set! (-> s5-0 max-iteration-count) (the-as uint 4)) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 pos quad)) (set-vector! (-> self root scale) 0.0 0.0 0.0 1.0) (set! (-> self muzzle-time) (-> arg0 muzzle-time)) (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> arg0 rotate)) (let ((f0-13 (/ 655360.0 (the float (the int (* 300.0 (-> arg0 flight-time))))))) - (quaternion-axis-angle! (-> self tumble-quat) 1.0 0.0 0.0 f0-13) - ) - (initialize-skeleton self *mistycannon-missile-sg* '()) + (quaternion-axis-angle! (-> self tumble-quat) 1.0 0.0 0.0 f0-13)) + (initialize-skeleton self *mistycannon-missile-sg* ()) (set! (-> self root transv quad) (-> arg0 vel quad)) (set! (-> self blast-radius) (-> arg0 blast-radius)) (set! (-> self water-height) (res-lump-float (-> self entity) 'water-height :default -4096000.0)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 117) self)) (set! (-> self part2) (create-launch-control (-> *part-group-id-table* 118) self)) (go mistycannon-missile-idle) - (none) - ) + (none)) -(defun spawn-mistycannon-missile ((arg0 process-tree) - (arg1 vector) - (arg2 vector) - (arg3 float) - (arg4 float) - (arg5 float) - (arg6 float) - (arg7 entity) - ) +(defun spawn-mistycannon-missile ((arg0 process-tree) (arg1 vector) (arg2 vector) (arg3 float) (arg4 float) (arg5 float) (arg6 float) (arg7 entity)) (let ((s5-0 (new 'stack-no-clear 'mistycannon-init-data))) (set! (-> s5-0 pos) arg1) (set! (-> s5-0 vel) arg2) @@ -985,154 +796,119 @@ (set! (-> s5-0 flight-time) arg4) (set! (-> s5-0 muzzle-time) arg5) (set! (-> s5-0 blast-radius) arg6) - (process-spawn mistycannon-missile s5-0 arg7 :to arg0) - ) + (process-spawn mistycannon-missile s5-0 arg7 :to arg0)) 0 - (none) - ) + (none)) (deftype mistycannon (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (rotate angle-tracker :inline) - (tilt angle-tracker :inline) - (front-wheel float) - (rear-wheel float) - (last-known-rotation float) - (part-timer time-frame) - (hellmouth vector :inline) - (postbindinfo-ok symbol) - (launch-origin vector :inline) - (goggles vector :inline) - (avoid-entity entity-actor) - (center-point vector :inline) - (at-point vector :inline) - (accuracy-range float) - (target-theta float) - (sound-id sound-id) - (aim-sound-id sound-id) - (player-touching-grips? symbol) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (rotate angle-tracker :inline) + (tilt angle-tracker :inline) + (front-wheel float) + (rear-wheel float) + (last-known-rotation float) + (part-timer time-frame) + (hellmouth vector :inline) + (postbindinfo-ok symbol) + (launch-origin vector :inline) + (goggles vector :inline) + (avoid-entity entity-actor) + (center-point vector :inline) + (at-point vector :inline) + (accuracy-range float) + (target-theta float) + (sound-id sound-id) + (aim-sound-id sound-id) + (player-touching-grips? symbol)) (:methods - (rotate! (_type_ float) none) - (tilt! (_type_ float) none) - (mistycannon-method-22 (_type_ float float float) none) - (mistycannon-method-23 (_type_) none) - ) + (rotate! (_type_ float) none) + (tilt! (_type_ float) none) + (mistycannon-method-22 (_type_ float float float) none) + (mistycannon-method-23 (_type_) none)) (:states - mistycannon-aim-at-player - mistycannon-idle - mistycannon-player-control - mistycannon-waiting-for-player - mistycannon-waiting-for-player-to-fuck-off - ) - ) - + mistycannon-aim-at-player + mistycannon-idle + mistycannon-player-control + mistycannon-waiting-for-player + mistycannon-waiting-for-player-to-fuck-off)) (defbehavior mistycannon-pick-random-target-point mistycannon () (let ((f30-0 (* (sqrtf (rand-vu)) (-> self center-point w))) - (f28-1 (* 65536.0 (rand-vu))) - ) + (f28-1 (* 65536.0 (rand-vu)))) (set! (-> self at-point x) (+ (-> self center-point x) (* f30-0 (cos f28-1)))) (set! (-> self at-point y) (-> self center-point y)) - (set! (-> self at-point z) (+ (-> self center-point z) (* f30-0 (sin f28-1)))) - ) + (set! (-> self at-point z) (+ (-> self center-point z) (* f30-0 (sin f28-1))))) (set! (-> self at-point w) 1.0) (set! (-> self target-theta) (rand-vu-float-range 2730.6667 12743.111)) - (none) - ) + (none)) (defmethod rotate! ((this mistycannon) (arg0 float)) (angle-tracker-apply-move! (-> this rotate) arg0) 0 - (none) - ) + (none)) (defmethod tilt! ((this mistycannon) (arg0 float)) (angle-tracker-apply-move! (-> this tilt) arg0) 0 - (none) - ) + (none)) ;; WARN: Function (method 22 mistycannon) has a return type of none, but the expression builder found a return statement. (defmethod mistycannon-method-22 ((this mistycannon) (arg0 float) (arg1 float) (arg2 float)) - (if (not (-> this postbindinfo-ok)) - (return #f) - ) + (if (not (-> this postbindinfo-ok)) (return #f)) (let* ((s3-0 (-> this launch-origin)) (s2-0 (new 'stack-no-clear 'vector)) (v1-3 (-> this rotate)) (f30-0 (the float (sar (shl (the int (+ (-> v1-3 min) (-> v1-3 value))) 48) 48))) (v1-8 (-> this tilt)) (f26-0 (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48))) - (f28-0 (/ 24576.0 arg0)) - ) - (let ((f24-0 (cos f26-0))) - (set! (-> s2-0 x) (* arg0 f24-0 (sin f30-0))) - (set! (-> s2-0 z) (* arg0 f24-0 (cos f30-0))) - ) + (f28-0 (/ 24576.0 arg0))) + (let ((f24-0 (cos f26-0))) (set! (-> s2-0 x) (* arg0 f24-0 (sin f30-0))) (set! (-> s2-0 z) (* arg0 f24-0 (cos f30-0)))) (set! (-> s2-0 y) (* arg0 (sin f26-0))) (vector-float*! (-> this hellmouth) s2-0 f28-0) (vector+! (-> this hellmouth) (-> this hellmouth) s3-0) - (spawn-mistycannon-missile this s3-0 s2-0 f30-0 arg1 f28-0 arg2 (-> this entity)) - ) + (spawn-mistycannon-missile this s3-0 s2-0 f30-0 arg1 f28-0 arg2 (-> this entity))) (sound-play "cannon-shot") (set! (-> this part local-clock) 0) (set-time! (-> this part-timer)) (mistycannon-pick-random-target-point) 0 - (none) - ) + (none)) (defmethod mistycannon-method-23 ((this mistycannon)) (when (not (time-elapsed? (-> this part-timer) (seconds 3))) (let ((v1-4 (-> this rotate))) (set! (-> *part-id-table* 529 init-specs 24 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)))) (let ((v1-12 (-> this rotate))) (set! (-> *part-id-table* 530 init-specs 23 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-12 min) (-> v1-12 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-12 min) (-> v1-12 value))) 48) 48)))) (let ((v1-20 (-> this rotate))) (set! (-> *part-id-table* 534 init-specs 21 initial-valuef) - (the float (sar (shl (the int (+ (-> v1-20 min) (-> v1-20 value))) 48) 48)) - ) - ) + (the float (sar (shl (the int (+ (-> v1-20 min) (-> v1-20 value))) 48) 48)))) (let ((f0-18 16384.0) - (v1-28 (-> this tilt)) - ) + (v1-28 (-> this tilt))) (set! (-> *part-id-table* 529 init-specs 22 initial-valuef) - (- f0-18 (the float (sar (shl (the int (+ (-> v1-28 min) (-> v1-28 value))) 48) 48))) - ) - ) + (- f0-18 (the float (sar (shl (the int (+ (-> v1-28 min) (-> v1-28 value))) 48) 48))))) (let ((f0-20 16384.0) - (v1-36 (-> this tilt)) - ) + (v1-36 (-> this tilt))) (set! (-> *part-id-table* 530 init-specs 21 initial-valuef) - (- f0-20 (the float (sar (shl (the int (+ (-> v1-36 min) (-> v1-36 value))) 48) 48))) - ) - ) + (- f0-20 (the float (sar (shl (the int (+ (-> v1-36 min) (-> v1-36 value))) 48) 48))))) (let ((f0-22 16384.0) - (v1-44 (-> this tilt)) - ) + (v1-44 (-> this tilt))) (set! (-> *part-id-table* 534 init-specs 20 initial-valuef) - (- f0-22 (the float (sar (shl (the int (+ (-> v1-44 min) (-> v1-44 value))) 48) 48))) - ) - ) - (spawn (-> this part) (-> this hellmouth)) - ) + (- f0-22 (the float (sar (shl (the int (+ (-> v1-44 min) (-> v1-44 value))) 48) 48))))) + (spawn (-> this part) (-> this hellmouth))) 0 - (none) - ) + (none)) -(defskelgroup *mistycannon-sg* mistycannon mistycannon-lod0-jg mistycannon-idle-ja - ((mistycannon-lod0-mg (meters 20)) (mistycannon-lod1-mg (meters 999999))) - :bounds (static-spherem 0 5 0 9) - :longest-edge (meters 4) - ) +(defskelgroup *mistycannon-sg* + mistycannon + mistycannon-lod0-jg + mistycannon-idle-ja + ((mistycannon-lod0-mg (meters 20)) (mistycannon-lod1-mg (meters 999999))) + :bounds (static-spherem 0 5 0 9) + :longest-edge (meters 4)) (defun mistycannon-prebind-function ((arg0 pointer) (arg1 int) (arg2 mistycannon)) (let ((t9-0 quaternion-axis-angle!) @@ -1140,92 +916,57 @@ (a1-1 0.0) (a2-1 1.0) (a3-0 0.0) - (v1-0 (-> arg2 rotate)) - ) - (t9-0 - (the-as quaternion a0-1) - a1-1 - a2-1 - a3-0 - (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48)) - ) - ) + (v1-0 (-> arg2 rotate))) + (t9-0 (the-as quaternion a0-1) a1-1 a2-1 a3-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48)))) (let ((t9-1 quaternion-axis-angle!) (a0-2 (&+ arg0 192)) (a1-2 -1.0) (a2-2 0.0) (a3-1 0.0) - (v1-4 (-> arg2 tilt)) - ) - (t9-1 - (the-as quaternion a0-2) - a1-2 - a2-2 - a3-1 - (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)) - ) - ) + (v1-4 (-> arg2 tilt))) + (t9-1 (the-as quaternion a0-2) a1-2 a2-2 a3-1 (the float (sar (shl (the int (+ (-> v1-4 min) (-> v1-4 value))) 48) 48)))) (let* ((v1-8 (-> arg2 rotate)) - (f0-16 - (- (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48)) (-> arg2 last-known-rotation)) - ) - ) + (f0-16 (- (the float (sar (shl (the int (+ (-> v1-8 min) (-> v1-8 value))) 48) 48)) (-> arg2 last-known-rotation)))) (set! (-> arg2 front-wheel) (the float (sar (shl (the int (+ (-> arg2 front-wheel) (* 5.0 f0-16))) 48) 48))) - (set! (-> arg2 rear-wheel) (the float (sar (shl (the int (+ (-> arg2 rear-wheel) (* 3.0 f0-16))) 48) 48))) - ) + (set! (-> arg2 rear-wheel) (the float (sar (shl (the int (+ (-> arg2 rear-wheel) (* 3.0 f0-16))) 48) 48)))) (let ((v1-19 (-> arg2 rotate))) - (set! (-> arg2 last-known-rotation) - (the float (sar (shl (the int (+ (-> v1-19 min) (-> v1-19 value))) 48) 48)) - ) - ) + (set! (-> arg2 last-known-rotation) (the float (sar (shl (the int (+ (-> v1-19 min) (-> v1-19 value))) 48) 48)))) (quaternion-axis-angle! (the-as quaternion (&+ arg0 432)) -1.0 0.0 0.0 (-> arg2 front-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 384)) 1.0 0.0 0.0 (-> arg2 front-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 288)) -1.0 0.0 0.0 (-> arg2 rear-wheel)) (quaternion-axis-angle! (the-as quaternion (&+ arg0 336)) 1.0 0.0 0.0 (-> arg2 rear-wheel)) 0 - (none) - ) + (none)) (defun mistycannon-postbind-function ((arg0 mistycannon)) (set! (-> arg0 launch-origin quad) (-> arg0 node-list data 4 bone transform vector 3 quad)) (let ((s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 0.0 53248.0 -4096.0 1.0) (vector-matrix*! s5-0 s5-0 (-> arg0 node-list data 3 bone transform)) - (set! (-> arg0 goggles quad) (-> s5-0 quad)) - ) + (set! (-> arg0 goggles quad) (-> s5-0 quad))) (set! (-> arg0 postbindinfo-ok) #t) 0 - (none) - ) + (none)) (defstate mistycannon-idle (mistycannon) - :trans (behavior () - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (go mistycannon-waiting-for-player) - ) - (if (and (-> self postbindinfo-ok) - *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go mistycannon-aim-at-player) - ) - (rider-trans) - ) - :code (behavior () - (loop - (mistycannon-method-23 self) - (suspend) - ) - ) - :post rider-post - ) + :trans + (behavior () + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (go mistycannon-waiting-for-player)) + (if (and (-> self postbindinfo-ok) + *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go mistycannon-aim-at-player)) + (rider-trans)) + :code + (behavior () + (loop (mistycannon-method-23 self) + (suspend))) + :post rider-post) (deftype quadratic-solution (structure) - ((s1 float) - (s2 float) - ) - ) - + ((s1 float) + (s2 float))) (defun solve-missile-tilt ((arg0 quadratic-solution) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) (let* ((f1-3 (* 0.5 arg2 arg2 arg4)) @@ -1233,396 +974,252 @@ (f30-0 (- (* arg2 arg1 arg1))) (f2-6 (+ f1-3 (* arg1 arg1 arg3))) (f1-5 (- (* f30-0 f30-0) (* 4.0 f2-6 f0-3))) - (f28-0 (/ 0.5 f0-3)) - ) - (if (< f1-5 0.0) - (return #f) - ) + (f28-0 (/ 0.5 f0-3))) + (if (< f1-5 0.0) (return #f)) (let ((f26-0 (sqrtf f1-5))) (set! (-> arg0 s1) (atan (* (+ (- f30-0) f26-0) f28-0) 1.0)) - (set! (-> arg0 s2) (atan (* (- (- f30-0) f26-0) f28-0) 1.0)) - ) - ) - #t - ) + (set! (-> arg0 s2) (atan (* (- (- f30-0) f26-0) f28-0) 1.0)))) + #t) (deftype trajectory-params (structure) - ((x float) - (y float) - (gravity float) - (theta float) - (speed float) - (time float) - ) - ) - + ((x float) + (y float) + (gravity float) + (theta float) + (speed float) + (time float))) (defun solve-missile-velocity ((arg0 trajectory-params) (arg1 float)) (set! (-> arg0 theta) arg1) (let ((f0-4 (* (- (* (-> arg0 x) (tan arg1)) (-> arg0 y)) (/ 2.0 (-> arg0 gravity))))) (when (< 0.0 f0-4) (set! (-> arg0 time) (sqrtf f0-4)) - (set! (-> arg0 speed) (/ (-> arg0 x) (* (-> arg0 time) (cos arg1)))) - ) - ) + (set! (-> arg0 speed) (/ (-> arg0 x) (* (-> arg0 time) (cos arg1)))))) 0 - (none) - ) + (none)) (defbehavior mistycannon-find-best-solution mistycannon ((arg0 quadratic-solution)) (let ((v1-0 #t) (a1-0 #t) - (v0-0 -1) - ) + (v0-0 -1)) (let ((f1-0 (-> self tilt min)) - (f0-1 (+ (-> self tilt range) (-> self tilt min))) - ) - (if (< (-> arg0 s1) f1-0) - (set! v1-0 #f) - ) - (if (< f0-1 (-> arg0 s1)) - (set! v1-0 #f) - ) - (if (< (-> arg0 s2) f1-0) - (set! a1-0 #f) - ) - (if (< f0-1 (-> arg0 s2)) - (set! a1-0 #f) - ) - ) - (if v1-0 - (set! v0-0 0) - ) - (if a1-0 - (set! v0-0 1) - ) + (f0-1 (+ (-> self tilt range) (-> self tilt min)))) + (if (< (-> arg0 s1) f1-0) (set! v1-0 #f)) + (if (< f0-1 (-> arg0 s1)) (set! v1-0 #f)) + (if (< (-> arg0 s2) f1-0) (set! a1-0 #f)) + (if (< f0-1 (-> arg0 s2)) (set! a1-0 #f))) + (if v1-0 (set! v0-0 0)) + (if a1-0 (set! v0-0 1)) (set! a1-0 (and v1-0 a1-0)) (when a1-0 - (if (< (-> arg0 s1) (-> arg0 s2)) - (set! v0-0 0) - (set! v0-0 1) - ) - ) - v0-0 - ) - ) + (if (< (-> arg0 s1) (-> arg0 s2)) (set! v0-0 0) (set! v0-0 1))) + v0-0)) (defbehavior mistycannon-find-trajectory mistycannon ((arg0 trajectory-params)) (set! (-> arg0 time) 0.0) (solve-missile-velocity arg0 (-> arg0 theta)) - (none) - ) + (none)) ;; WARN: Function mistycannon-do-aim has a return type of none, but the expression builder found a return statement. (defbehavior mistycannon-do-aim mistycannon ((arg0 vector) (arg1 vector)) - (if (not (-> self postbindinfo-ok)) - (return #f) - ) + (if (not (-> self postbindinfo-ok)) (return #f)) (when (-> self avoid-entity) - (let ((a1-1 (-> self avoid-entity extra trans))) - (if (< (vector-vector-distance arg0 a1-1) 122880.0) - (return #f) - ) - ) - ) + (let ((a1-1 (-> self avoid-entity extra trans))) (if (< (vector-vector-distance arg0 a1-1) 122880.0) (return #f)))) (let ((gp-0 (new 'stack-no-clear 'trajectory-params))) (let ((s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 arg0 (-> self launch-origin)) (set! (-> gp-0 x) (vector-xz-length s4-0)) - (set! (-> gp-0 y) (-> s4-0 y)) - ) + (set! (-> gp-0 y) (-> s4-0 y))) (set! (-> gp-0 gravity) (-> *standard-dynamics* gravity-length)) (set! (-> gp-0 speed) 409600.0) (set! (-> gp-0 theta) (-> self target-theta)) (mistycannon-find-trajectory gp-0) (let ((v1-12 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector-float*! v1-12 arg1 (* 0.4 (+ 2.0 (-> gp-0 time)))) (vector+! s4-1 arg0 v1-12) (let ((f30-0 (* (sqrtf (rand-vu)) (-> self accuracy-range))) - (f28-1 (* 65536.0 (rand-vu))) - ) + (f28-1 (* 65536.0 (rand-vu)))) (+! (-> s4-1 x) (* f30-0 (cos f28-1))) - (+! (-> s4-1 z) (* f30-0 (sin f28-1))) - ) + (+! (-> s4-1 z) (* f30-0 (sin f28-1)))) (let ((s5-1 (new 'stack-no-clear 'vector))) (vector-! s5-1 s4-1 (-> self launch-origin)) - (let ((f0-19 (atan (-> s5-1 x) (-> s5-1 z)))) - (angle-tracker-seek! (-> self rotate) f0-19) - ) + (let ((f0-19 (atan (-> s5-1 x) (-> s5-1 z)))) (angle-tracker-seek! (-> self rotate) f0-19)) (set! (-> gp-0 x) (vector-xz-length s5-1)) - (set! (-> gp-0 y) (-> s5-1 y)) - ) - ) + (set! (-> gp-0 y) (-> s5-1 y)))) (mistycannon-find-trajectory gp-0) (when (= (-> gp-0 time) 0.0) (when (time-elapsed? (-> self state-time) (seconds 3)) (mistycannon-method-22 self 409600.0 2.0 20480.0) - (set-time! (-> self state-time)) - ) - (return #f) - ) + (set-time! (-> self state-time))) + (return #f)) (when (angle-tracker-seek! (-> self tilt) (-> gp-0 theta)) (when (time-elapsed? (-> self state-time) (seconds 3)) (mistycannon-method-22 self (fmax 163840.0 (fmin 409600.0 (-> gp-0 speed))) (-> gp-0 time) 20480.0) - (set-time! (-> self state-time)) - ) - ) - ) + (set-time! (-> self state-time))))) 0 - (none) - ) + (none)) (defstate mistycannon-aim-at-player (mistycannon) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (go mistycannon-waiting-for-player) - ) - (if (not (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - ) - (go mistycannon-idle) - ) - (rider-trans) - ) - :code (behavior () - (loop - (if (< (vector-vector-xz-distance (target-pos 0) (-> self center-point)) (-> self center-point w)) - (mistycannon-do-aim (-> *target* control trans) (-> *target* control transv)) - (mistycannon-do-aim (-> self at-point) (new-stack-vector0)) - ) - (mistycannon-method-23 self) - (suspend) - ) - ) - :post rider-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (go mistycannon-waiting-for-player)) + (if (not (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (go mistycannon-idle)) + (rider-trans)) + :code + (behavior () + (loop (if (< (vector-vector-xz-distance (target-pos 0) (-> self center-point)) (-> self center-point w)) + (mistycannon-do-aim (-> *target* control trans) (-> *target* control transv)) + (mistycannon-do-aim (-> self at-point) (new-stack-vector0))) + (mistycannon-method-23 self) + (suspend))) + :post rider-post) (defstate mistycannon-waiting-for-player (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (let ((v0-1 (the-as object #t))) - (set! (-> self player-touching-grips?) (the-as symbol v0-1)) - v0-1 - ) - ) - ) - (('change-mode) - (go mistycannon-player-control) - ) - ) - ) - :trans (behavior () - (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (go mistycannon-aim-at-player) - ) - (rider-trans) - ) - :code (behavior () - (set! (-> self player-touching-grips?) #f) - (loop - (let ((f0-0 2730.6667) - (v1-0 (-> self tilt)) - ) - (if (< f0-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) - (angle-tracker-seek! (-> self tilt) 2730.6667) - ) - ) - (mistycannon-method-23 self) - (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) - (set! (-> self player-touching-grips?) #f) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) (can-grab-display? self)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-15 gp-0)) - (set! (-> v1-15 width) (the float 440)) - ) - (let ((v1-16 gp-0)) - (set! (-> v1-16 height) (the float 80)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - (when (cpad-pressed? 0 circle) - (loop - (send-event *target* 'change-mode 'periscope self) - (suspend) - (suspend) - ) - ) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (let ((v0-1 (the-as object #t))) (set! (-> self player-touching-grips?) (the-as symbol v0-1)) v0-1))) + (('change-mode) (go mistycannon-player-control)))) + :trans + (behavior () + (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (go mistycannon-aim-at-player)) + (rider-trans)) + :code + (behavior () + (set! (-> self player-touching-grips?) #f) + (loop (let ((f0-0 2730.6667) + (v1-0 (-> self tilt))) + (if (< f0-0 (the float (sar (shl (the int (+ (-> v1-0 min) (-> v1-0 value))) 48) 48))) + (angle-tracker-seek! (-> self tilt) 2730.6667))) + (mistycannon-method-23 self) + (when (and (-> self player-touching-grips?) (not (level-hint-displayed?))) + (set! (-> self player-touching-grips?) #f) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint () '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-15 gp-0)) (set! (-> v1-15 width) (the float 440))) + (let ((v1-16 gp-0)) (set! (-> v1-16 height) (the float 80))) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)) + (when (cpad-pressed? 0 circle) + (loop (send-event *target* 'change-mode 'periscope self) + (suspend) + (suspend))))) + (suspend))) + :post rider-post) (defstate cam-mistycannon (camera-slave) :event cam-standard-event-handler - :enter (behavior () - (when (not (-> self enter-has-run)) - (set! (-> self blend-from-type) (the-as uint 1)) - (set! (-> self blend-to-type) (the-as uint 1)) - ) - ) - :trans (behavior () - (if (not (logtest? (-> *camera* master-options) 2)) - (cam-slave-go cam-free-floating) - ) - ) - :code (behavior () - (loop - (let ((v1-0 (-> self change-event-from))) - (set! (-> self trans quad) (-> (the-as mistycannon (-> v1-0 0)) goggles quad)) - (let ((t9-0 matrix-rotate-yx!) - (a0-1 (-> self tracking)) - (v1-2 (-> (the-as mistycannon (-> v1-0 0)) rotate)) - ) - (t9-0 (the-as matrix a0-1) (the float (sar (shl (the int (+ (-> v1-2 min) (-> v1-2 value))) 48) 48)) 3640.889) - ) - ) - (suspend) - ) - ) - ) + :enter + (behavior () + (when (not (-> self enter-has-run)) + (set! (-> self blend-from-type) (the-as uint 1)) + (set! (-> self blend-to-type) (the-as uint 1)))) + :trans + (behavior () + (if (not (logtest? (-> *camera* master-options) 2)) (cam-slave-go cam-free-floating))) + :code + (behavior () + (loop (let ((v1-0 (-> self change-event-from))) + (set! (-> self trans quad) (-> (the-as mistycannon (-> v1-0 0)) goggles quad)) + (let ((t9-0 matrix-rotate-yx!) + (a0-1 (-> self tracking)) + (v1-2 (-> (the-as mistycannon (-> v1-0 0)) rotate))) + (t9-0 (the-as matrix a0-1) (the float (sar (shl (the int (+ (-> v1-2 min) (-> v1-2 value))) 48) 48)) 3640.889))) + (suspend)))) (defstate mistycannon-player-control (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('change-mode) - (send-event *camera* 'change-state cam-mistycannon 0) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - (sound-stop (-> self aim-sound-id)) - ) - :trans (behavior () - (mistycannon-method-23 self) - (rider-trans) - ) - :code (behavior () - (send-event *camera* 'change-state cam-mistycannon 0) - (suspend) - (set-time! (-> self state-time)) - (let ((gp-0 0) - (s5-0 0) - ) - (loop - (when *camera-read-analog* - (let ((f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) - (f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0)) - ) - (rotate! self f30-0) - (tilt! self (- f28-0)) - (if (or (!= f30-0 0.0) (!= f28-0 0.0)) - (sound-play "telescope" :id (-> self aim-sound-id)) - (sound-stop (-> self aim-sound-id)) - ) - ) - ) - (when (cpad-pressed? 0 triangle) - (process-entity-status! self (entity-perm-status bit-3) #t) - (sound-stop (-> self sound-id)) - (send-event *camera* 'change-to-entity-by-name "camera-111") - (suspend) - (loop - (when (send-event *target* 'end-mode) - (send-event *camera* 'change-state *camera-base-mode* 0) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go mistycannon-waiting-for-player-to-fuck-off) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('change-mode) (send-event *camera* 'change-state cam-mistycannon 0)))) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (sound-stop (-> self aim-sound-id))) + :trans + (behavior () + (mistycannon-method-23 self) + (rider-trans)) + :code + (behavior () + (send-event *camera* 'change-state cam-mistycannon 0) + (suspend) + (set-time! (-> self state-time)) + (let ((gp-0 0) + (s5-0 0)) + (loop (when *camera-read-analog* + (let ((f30-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0)) + (f28-0 (analog-input (the-as int (-> *cpad-list* cpads 0 lefty)) 128.0 48.0 110.0 -1.0))) + (rotate! self f30-0) + (tilt! self (- f28-0)) + (if (or (!= f30-0 0.0) (!= f28-0 0.0)) + (sound-play "telescope" :id (-> self aim-sound-id)) + (sound-stop (-> self aim-sound-id))))) + (when (cpad-pressed? 0 triangle) + (process-entity-status! self (entity-perm-status bit-3) #t) + (sound-stop (-> self sound-id)) + (send-event *camera* 'change-to-entity-by-name "camera-111") (suspend) - ) - ) - (let ((v1-45 (and (cpad-hold? 0 x) (time-elapsed? (-> self state-time) (seconds 1))))) - (when (zero? s5-0) - (when v1-45 - (set! gp-0 (seekl gp-0 300 (the-as int (- (current-time) (-> *display* old-base-frame-counter))))) - (sound-play "cannon-charge" :id (-> self sound-id) :pitch (* 0.008 (the float gp-0))) - ) - (when (or (= gp-0 300) (and (not (cpad-hold? 0 x)) (nonzero? gp-0))) - (let ((gp-1 (+ 50 (the int (* 0.16666667 (the float gp-0)))))) - (level-hint-spawn (text-id sidekick-mistycannon) "sksp009f" (the-as entity #f) *entity-pool* (game-task none)) - (mistycannon-method-22 self (* 4096.0 (the float gp-1)) 2.0 40960.0) - ) - (set-time! (-> self state-time)) - (set! gp-0 0) - (set! s5-0 1) - (sound-stop (-> self sound-id)) - ) - (if (nonzero? gp-0) - (debug-percent-bar - #t - (bucket-id debug) - 192 - 160 - (* 0.0033333334 (the float gp-0)) - (new 'static 'rgba :r #xff :a #x80) - ) - ) - ) - ) - (if (not (cpad-hold? 0 x)) - (set! s5-0 0) - ) - (suspend) - ) - ) - ) - :post rider-post - ) + (loop (when (send-event *target* 'end-mode) + (send-event *camera* 'change-state *camera-base-mode* 0) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go mistycannon-waiting-for-player-to-fuck-off)) + (suspend))) + (let ((v1-45 (and (cpad-hold? 0 x) (time-elapsed? (-> self state-time) (seconds 1))))) + (when (zero? s5-0) + (when v1-45 + (set! gp-0 (seekl gp-0 300 (the-as int (- (current-time) (-> *display* old-base-frame-counter))))) + (sound-play "cannon-charge" :id (-> self sound-id) :pitch (* 0.008 (the float gp-0)))) + (when (or (= gp-0 300) (and (not (cpad-hold? 0 x)) (nonzero? gp-0))) + (let ((gp-1 (+ 50 (the int (* 0.16666667 (the float gp-0)))))) + (level-hint-spawn (text-id sidekick-mistycannon) "sksp009f" (the-as entity #f) *entity-pool* (game-task none)) + (mistycannon-method-22 self (* 4096.0 (the float gp-1)) 2.0 40960.0)) + (set-time! (-> self state-time)) + (set! gp-0 0) + (set! s5-0 1) + (sound-stop (-> self sound-id))) + (if (nonzero? gp-0) + (debug-percent-bar #t (bucket-id debug) 192 160 (* 0.0033333334 (the float gp-0)) (new 'static 'rgba :r #xff :a #x80))))) + (if (not (cpad-hold? 0 x)) (set! s5-0 0)) + (suspend)))) + :post rider-post) (defstate mistycannon-waiting-for-player-to-fuck-off (mistycannon) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0))))) + :enter + (behavior () + (set-time! (-> self state-time))) :trans rider-trans - :code (behavior () - (loop - (suspend) - (mistycannon-method-23 self) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (go mistycannon-waiting-for-player) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop (suspend) + (mistycannon-method-23 self) + (if (time-elapsed? (-> self state-time) (seconds 1)) (go mistycannon-waiting-for-player)))) + :post rider-post) (defmethod init-from-entity! ((this mistycannon) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) @@ -1630,9 +1227,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1648,93 +1243,61 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 20480.0 0.0 40960.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 28672.0 -8192.0 4096.0) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (quaternion-identity! (-> this root quat)) - (initialize-skeleton this *mistycannon-sg* '()) + (initialize-skeleton this *mistycannon-sg* ()) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root)) (set! (-> this skel prebind-function) mistycannon-prebind-function) (set! (-> this skel postbind-function) mistycannon-postbind-function) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (logclear! (-> this mask) (process-mask actor-pause)) (let ((f30-0 (res-lump-float arg0 'rotmin :default 16384.0)) (f28-0 (res-lump-float arg0 'rotmax :default 32768.0)) - (f0-15 (res-lump-float arg0 'rotspeed :default 3640.889)) - ) - (angle-tracker-init-range! (-> this rotate) f30-0 f28-0 f0-15) - ) + (f0-15 (res-lump-float arg0 'rotspeed :default 3640.889))) + (angle-tracker-init-range! (-> this rotate) f30-0 f28-0 f0-15)) (let ((f30-1 (res-lump-float arg0 'tiltmin :default -1820.4445)) (f28-1 (res-lump-float arg0 'tiltmax :default 12743.111)) - (f0-16 (res-lump-float arg0 'tiltspeed :default 3640.889)) - ) - (angle-tracker-init-range! (-> this tilt) f30-1 f28-1 f0-16) - ) + (f0-16 (res-lump-float arg0 'tiltspeed :default 3640.889))) + (angle-tracker-init-range! (-> this tilt) f30-1 f28-1 f0-16)) (set! (-> this avoid-entity) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this center-point w) (res-lump-float arg0 'center-radius)) (cond ((= (-> this center-point w) 0.0) (set! (-> this center-point quad) (-> this root trans quad)) - (set! (-> this center-point w) (-> this fact idle-distance)) - ) + (set! (-> this center-point w) (-> this fact idle-distance))) (else - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-64 (res-lump-data arg0 'center-point pointer :tag-ptr (& sv-16)))) - (set! (-> this center-point x) (if (and v1-64 (< 0.0 (the float (-> sv-16 elt-count)))) - (-> (the-as (pointer float) v1-64)) - 0.0 - ) - ) - ) - (set! sv-32 (new 'static 'res-tag)) - (let ((v1-67 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-32)))) - (set! (-> this center-point y) (if (and v1-67 (< 1.0 (the float (-> sv-32 elt-count)))) - (-> v1-67 1) - 0.0 - ) - ) - ) - (set! sv-48 (new 'static 'res-tag)) - (let ((v1-70 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-48)))) - (set! (-> this center-point z) (if (and v1-70 (< 2.0 (the float (-> sv-48 elt-count)))) - (-> v1-70 2) - 0.0 - ) - ) - ) - ) - ) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-64 (res-lump-data arg0 'center-point pointer :tag-ptr (& sv-16)))) + (set! (-> this center-point x) + (if (and v1-64 (< 0.0 (the float (-> sv-16 elt-count)))) (-> (the-as (pointer float) v1-64)) 0.0))) + (set! sv-32 (new 'static 'res-tag)) + (let ((v1-67 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-32)))) + (set! (-> this center-point y) (if (and v1-67 (< 1.0 (the float (-> sv-32 elt-count)))) (-> v1-67 1) 0.0))) + (set! sv-48 (new 'static 'res-tag)) + (let ((v1-70 (res-lump-data arg0 'center-point (pointer float) :tag-ptr (& sv-48)))) + (set! (-> this center-point z) (if (and v1-70 (< 2.0 (the float (-> sv-48 elt-count)))) (-> v1-70 2) 0.0))))) (set! (-> this accuracy-range) 16384.0) (mistycannon-pick-random-target-point) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 119) this)) (set! (-> this part-timer) (+ (current-time) (seconds -10))) (set! (-> this postbindinfo-ok) #f) (let ((v1-79 (-> this rotate))) - (set! (-> this last-known-rotation) - (the float (sar (shl (the int (+ (-> v1-79 min) (-> v1-79 value))) 48) 48)) - ) - ) + (set! (-> this last-known-rotation) (the float (sar (shl (the int (+ (-> v1-79 min) (-> v1-79 value))) 48) 48)))) (set! (-> this sound-id) (new-sound-id)) (set! (-> this aim-sound-id) (new-sound-id)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go mistycannon-idle) - (go mistycannon-waiting-for-player) - ) - (none) - ) + (go mistycannon-idle) + (go mistycannon-waiting-for-player)) + (none)) diff --git a/goal_src/jak1/levels/misty/mud.gc b/goal_src/jak1/levels/misty/mud.gc index e5459e56d7..c264ccab86 100644 --- a/goal_src/jak1/levels/misty/mud.gc +++ b/goal_src/jak1/levels/misty/mud.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/water-anim.gc") ;; name: mud.gc @@ -10,41 +9,42 @@ ;; DECOMP BEGINS -(deftype mud (water-anim) - () - ) +(deftype mud (water-anim) ()) +(define ripple-for-mud + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) -(define ripple-for-mud (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) - -(define ripple-for-small-mud (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-small-mud + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 20.0 :xdiv 2 :speed 0.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv -2 :zdiv 2 :speed 0.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this mud)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt18)) (let ((gp-0 (new 'process 'ripple-control))) @@ -54,20 +54,9 @@ (let ((v1-9 (res-lump-data (-> this entity) 'water-anim-fade-dist (pointer float)))) (when v1-9 (set! (-> gp-0 close-fade-dist) (-> v1-9 0)) - (set! (-> gp-0 far-fade-dist) (-> v1-9 1)) - ) - ) + (set! (-> gp-0 far-fade-dist) (-> v1-9 1)))) (case (-> this look) - ((21 25 29) - (set! (-> gp-0 close-fade-dist) 4096000000.0) - (set! (-> gp-0 far-fade-dist) 8192000000.0) - ) - ) + ((21 25 29) (set! (-> gp-0 close-fade-dist) 4096000000.0) (set! (-> gp-0 far-fade-dist) 8192000000.0))) (case (-> this look) - ((22 25 24 27 26 31) - (set! (-> gp-0 waveform) ripple-for-small-mud) - ) - ) - ) - (none) - ) + ((22 25 24 27 26 31) (set! (-> gp-0 waveform) ripple-for-small-mud)))) + (none)) diff --git a/goal_src/jak1/levels/misty/muse.gc b/goal_src/jak1/levels/misty/muse.gc index a32617ad5c..13dcf291e7 100644 --- a/goal_src/jak1/levels/misty/muse.gc +++ b/goal_src/jak1/levels/misty/muse.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: muse.gc @@ -11,36 +10,29 @@ ;; DECOMP BEGINS (deftype muse (nav-enemy) - ((root collide-shape-moving :override) - (current-path-index float) - (prev-path-index float) - (dest-path-index float) - (player-path-index float) - (max-path-index float) - (sprint-distance float) - (dest-point vector :inline) - (anim spool-anim) - (victory-anim spool-anim) - (old-target-pos transformq :inline) - ) + ((root collide-shape-moving :override) + (current-path-index float) + (prev-path-index float) + (dest-path-index float) + (player-path-index float) + (max-path-index float) + (sprint-distance float) + (dest-point vector :inline) + (anim spool-anim) + (victory-anim spool-anim) + (old-target-pos transformq :inline)) (:states - muse-caught - muse-idle - ) - ) - + muse-caught + muse-idle)) (deftype point-on-path-segment-info (structure) - ((point vector :inline) - (segment vector 2 :inline) - (dir vector :inline) - (nearest-point vector :inline) - (segment-length float) - (distance-to-segment float) - (parametric-index float) - ) - ) - + ((point vector :inline) + (segment vector 2 :inline) + (dir vector :inline) + (nearest-point vector :inline) + (segment-length float) + (distance-to-segment float) + (parametric-index float))) (defun analyze-point-on-path-segment ((arg0 point-on-path-segment-info)) (vector-! (-> arg0 dir) (-> arg0 segment 1) (the-as vector (-> arg0 segment))) @@ -52,395 +44,309 @@ (vector+! (-> arg0 nearest-point) (-> arg0 point) s5-0) (set! (-> arg0 distance-to-segment) (vector-length s5-0)) (vector-! s5-0 (-> arg0 point) (the-as vector (-> arg0 segment))) - (set! (-> arg0 parametric-index) (/ (vector-dot (-> arg0 dir) s5-0) (-> arg0 segment-length))) - ) + (set! (-> arg0 parametric-index) (/ (vector-dot (-> arg0 dir) s5-0) (-> arg0 segment-length)))) (cond ((< (-> arg0 parametric-index) 0.0) (set! (-> arg0 parametric-index) 0.0) (set! (-> arg0 nearest-point quad) (-> arg0 segment 0 quad)) - (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))) - ) + (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point)))) ((< 1.0 (-> arg0 parametric-index)) (set! (-> arg0 parametric-index) 1.0) (set! (-> arg0 nearest-point quad) (-> arg0 segment 1 quad)) - (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))) - ) - ) - ) + (set! (-> arg0 distance-to-segment) (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point)))))) (defbehavior muse-get-path-point muse ((arg0 vector) (arg1 int)) (eval-path-curve-div! (-> self path) arg0 (the float arg1) 'interp) 0 - (none) - ) + (none)) (defbehavior muse-check-dest-point muse () (let ((gp-0 (new 'stack-no-clear 'point-on-path-segment-info)) (f26-0 4096000.0) (f30-0 0.0) (f24-0 4096000.0) - (f28-0 0.0) - ) + (f28-0 0.0)) (let ((s5-0 (+ (-> self path curve num-cverts) -1)) - (s4-0 (target-pos 0)) - ) + (s4-0 (target-pos 0))) (dotimes (s3-0 s5-0) (let ((f22-0 (the float s3-0))) (let ((f20-0 (the float (+ s3-0 1)))) (eval-path-curve-div! (-> self path) (the-as vector (-> gp-0 segment)) f22-0 'interp) - (eval-path-curve-div! (-> self path) (-> gp-0 segment 1) f20-0 'interp) - ) + (eval-path-curve-div! (-> self path) (-> gp-0 segment 1) f20-0 'interp)) (set! (-> gp-0 point quad) (-> s4-0 quad)) (analyze-point-on-path-segment gp-0) (when (< (-> gp-0 distance-to-segment) f24-0) (set! f24-0 (-> gp-0 distance-to-segment)) - (set! f28-0 (+ f22-0 (-> gp-0 parametric-index))) - ) + (set! f28-0 (+ f22-0 (-> gp-0 parametric-index)))) (set! (-> gp-0 point quad) (-> self collide-info trans quad)) (analyze-point-on-path-segment gp-0) (when (< (-> gp-0 distance-to-segment) f26-0) (set! f26-0 (-> gp-0 distance-to-segment)) - (set! f30-0 (+ f22-0 (-> gp-0 parametric-index))) - ) - ) - 0 - ) - ) + (set! f30-0 (+ f22-0 (-> gp-0 parametric-index))))) + 0)) (let ((f0-6 (- f30-0 f28-0))) - (if (< f0-6 (* -0.5 (-> self max-path-index))) - (+! f0-6 (-> self max-path-index)) - ) - (if (< (* 0.5 (-> self max-path-index)) f0-6) - (set! f0-6 (- f0-6 (-> self max-path-index))) - ) + (if (< f0-6 (* -0.5 (-> self max-path-index))) (+! f0-6 (-> self max-path-index))) + (if (< (* 0.5 (-> self max-path-index)) f0-6) (set! f0-6 (- f0-6 (-> self max-path-index)))) (cond ((>= f0-6 0.0) (set! (-> self dest-path-index) (the float (the int (+ 2.5 f30-0)))) (if (>= (-> self dest-path-index) (-> self max-path-index)) - (set! (-> self dest-path-index) (- (-> self dest-path-index) (-> self max-path-index))) - ) - ) + (set! (-> self dest-path-index) (- (-> self dest-path-index) (-> self max-path-index))))) (else - (set! (-> self dest-path-index) (+ -1.5 f30-0)) - (if (< (-> self dest-path-index) 0.0) - (+! (-> self dest-path-index) (-> self max-path-index)) - ) - (set! (-> self dest-path-index) (the float (the int (-> self dest-path-index)))) - ) - ) - ) - ) + (set! (-> self dest-path-index) (+ -1.5 f30-0)) + (if (< (-> self dest-path-index) 0.0) (+! (-> self dest-path-index) (-> self max-path-index))) + (set! (-> self dest-path-index) (the float (the int (-> self dest-path-index)))))))) (eval-path-curve-div! (-> self path) (-> self dest-point) (-> self dest-path-index) 'interp) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-51 ((this muse)) (dotimes (s5-0 2) (let ((v1-2 (rand-vu-int-range 3 (+ (-> this node-list length) -1)))) - (launch-particles - (-> *part-id-table* 271) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data v1-2)) - ) - ) - ) + (launch-particles (-> *part-id-table* 271) (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data v1-2))))) 0 - (none) - ) + (none)) (defmethod common-post ((this muse)) (spool-push *art-control* (-> this anim name) 0 this -99.0) (nav-enemy-method-51 this) ((method-of-type nav-enemy common-post) this) - (none) - ) + (none)) -(defskelgroup *muse-sg* muse muse-lod0-jg muse-idle-ja - ((muse-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 3) - :shadow muse-shadow-mg - ) +(defskelgroup *muse-sg* + muse + muse-lod0-jg + muse-idle-ja + ((muse-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 3) + :shadow muse-shadow-mg) (defmethod touch-handler ((this muse) (arg0 process) (arg1 event-message-block)) - (go muse-caught) - ) + (go muse-caught)) (defmethod attack-handler ((this muse) (arg0 process) (arg1 event-message-block)) - (go muse-caught) - ) + (go muse-caught)) nav-enemy-default-event-handler (defstate muse-idle (muse) :event nav-enemy-default-event-handler - :trans (behavior () - (seek! (-> self sprint-distance) 61440.0 (* 8192.0 (seconds-per-frame))) - (if (and *target* (>= 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) - ) - (if (and *target* (>= 81920.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go-virtual nav-enemy-chase) - ) - ) - :code (behavior () - (when (ja-group? muse-run-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :num! (loop!)) - (ja-no-eval :group! muse-run-to-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - (loop - (ja-no-eval :group! muse-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - (nav-enemy-method-51 self) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (seek! (-> self sprint-distance) 61440.0 (* 8192.0 (seconds-per-frame))) + (if (and *target* (>= 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (level-hint-spawn (text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))) + (if (and *target* (>= 81920.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-chase))) + :code + (behavior () + (when (ja-group? muse-run-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :num! (loop!)) + (ja-no-eval :group! muse-run-to-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + (loop (ja-no-eval :group! muse-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spool-push *art-control* (-> self anim name) 0 self -99.0) + (nav-enemy-method-51 self) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate nav-enemy-chase (muse) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (cond - ((or (not *target*) - (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (set! (-> self target-speed) 0.0) - (if (= (-> self momentum-speed) 0.0) - (go muse-idle) - ) - ) - ((or (not *target*) (< (-> self sprint-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (set! (-> self target-speed) 40960.0) - ) - (else - (set! (-> self target-speed) 61440.0) - ) - ) - (seek! (-> self sprint-distance) 0.0 (* 4096.0 (seconds-per-frame))) - (muse-check-dest-point) - ) - :code (behavior () - (cond - ((ja-group? muse-idle-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :num! (loop!)) - (ja-no-eval :group! muse-idle-to-run-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - (ja :group! muse-run-ja :num! min) - (loop - (suspend) - (ja :num! (loop! (* 0.000016276043 (-> self momentum-speed)))) - ) - ) - :post (behavior () - (set! (-> self nav destination-pos quad) (-> self dest-point quad)) - (nav-control-method-19 - (-> self nav) - (-> self nav target-pos) - (-> self collide-info) - (-> self nav destination-pos) - 546133.3 - ) - (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf10)) - ) - (nav-enemy-travel-post) - ) - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (cond + ((or (not *target*) (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (set! (-> self target-speed) 0.0) + (if (= (-> self momentum-speed) 0.0) (go muse-idle))) + ((or (not *target*) + (< (-> self sprint-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (set! (-> self target-speed) 40960.0)) + (else (set! (-> self target-speed) 61440.0))) + (seek! (-> self sprint-distance) 0.0 (* 4096.0 (seconds-per-frame))) + (muse-check-dest-point)) + :code + (behavior () + (cond + ((ja-group? muse-idle-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :num! (loop!)) + (ja-no-eval :group! muse-idle-to-run-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.1)))) + (ja :group! muse-run-ja :num! min) + (loop (suspend) + (ja :num! (loop! (* 0.000016276043 (-> self momentum-speed)))))) + :post + (behavior () + (set! (-> self nav destination-pos quad) (-> self dest-point quad)) + (nav-control-method-19 (-> self nav) + (-> self nav target-pos) + (-> self collide-info) + (-> self nav destination-pos) + 546133.3) + (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags navcf10))) + (nav-enemy-travel-post))) (defstate nav-enemy-jump (muse) :virtual #t :event nav-enemy-default-event-handler - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-jump) enter)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) - ) - :code (-> (method-of-type nav-enemy nav-enemy-jump) code) - ) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-jump) enter)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump))) + :code + (-> (method-of-type nav-enemy nav-enemy-jump) + code)) (defstate nav-enemy-jump-land (muse) :virtual #t :event nav-enemy-default-event-handler - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! muse-run-ja :num! (seek! max 0.8) :frame-num (ja-aframe 6.0 0)) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max 0.8)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! muse-run-ja :num! (seek! max 0.8) :frame-num (ja-aframe 6.0 0)) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max 0.8))) + (go-virtual nav-enemy-chase))) (defstate muse-caught (muse) :event #f - :trans (behavior () - (spool-push *art-control* (-> self anim name) 0 self -1.0) - ) - :code (behavior () - (sound-play "money-pickup") - (close-specific-task! (game-task misty-muse) (task-status need-reminder)) - (process-entity-status! self (entity-perm-status dead) #t) - (suspend) - (when (send-event *target* 'clone-anim self) - (set-blackout-frames (seconds 10)) - (let ((gp-1 (res-lump-struct (-> self entity) 'movie-pos vector))) - (cond - (gp-1 - (move-to-point! (-> self collide-info) gp-1) - (set-yaw-angle-clear-roll-pitch! (-> self collide-info) (-> gp-1 w)) - ) - (else - (move-to-point! (-> self collide-info) (-> *target* control trans)) - (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #f (collide-kind background)) - ) - ) - ) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (if (!= *kernel-boot-message* 'play) + :trans + (behavior () + (spool-push *art-control* (-> self anim name) 0 self -1.0)) + :code + (behavior () + (sound-play "money-pickup") + (close-specific-task! (game-task misty-muse) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status dead) #t) + (suspend) + (when (send-event *target* 'clone-anim self) + (set-blackout-frames (seconds 10)) + (let ((gp-1 (res-lump-struct (-> self entity) 'movie-pos vector))) + (cond + (gp-1 (move-to-point! (-> self collide-info) gp-1) (set-yaw-angle-clear-roll-pitch! (-> self collide-info) (-> gp-1 w))) + (else + (move-to-point! (-> self collide-info) (-> *target* control trans)) + (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #f (collide-kind background))))) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (if (!= *kernel-boot-message* 'play) (set! (-> self trans-hook) - (lambda :behavior muse () (spool-push *art-control* (-> self victory-anim name) 0 self -1.0) (none)) - ) - ) - (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) - (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) - (add-setting! 'ambient-volume 'rel (-> *setting-control* current ambient-volume-movie) 0) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 3 #f #t :to self) - (auto-save-command 'auto-save 0 0 *default-pool*) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim muse-idle-ja) - (the-as art-joint-anim muse-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'ambient-volume) - (send-event *target* 'blend-shape #f) - (cond - ((!= *kernel-boot-message* 'play) - (set-blackout-frames 0) - (ja-channel-set! 0) - (ja-post) - (clear-collide-with-as (-> self collide-info)) - (send-event *target* 'trans 'reset) - (let ((gp-4 (ppointer->handle (birth-pickup-at-point - (target-pos 0) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - ) - (send-event (handle->process (the-as handle gp-4)) 'pickup) - (while (handle->process (the-as handle gp-4)) - (suspend) - ) - ) - ) - (else - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (set-blackout-frames 0) - (set-blackout-frames (seconds 0.1)) - ) - ) - ) - ) - :post (behavior () - (nav-enemy-method-51 self) - (level-hint-surpress!) - (kill-current-level-hint '() '() 'exit) - (ja-post) - ) - ) + (lambda :behavior muse () + (spool-push *art-control* (-> self victory-anim name) 0 self -1.0) + (none)))) + (add-setting! 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0) + (add-setting! 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0) + (add-setting! 'ambient-volume 'rel (-> *setting-control* current ambient-volume-movie) 0) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 3 #f #t :to self) + (auto-save-command 'auto-save 0 0 *default-pool*) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim muse-idle-ja) + (the-as art-joint-anim muse-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'ambient-volume) + (send-event *target* 'blend-shape #f) + (cond + ((!= *kernel-boot-message* 'play) + (set-blackout-frames 0) + (ja-channel-set! 0) + (ja-post) + (clear-collide-with-as (-> self collide-info)) + (send-event *target* 'trans 'reset) + (let ((gp-4 (ppointer->handle (birth-pickup-at-point (target-pos 0) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))))) + (send-event (handle->process (the-as handle gp-4)) 'pickup) + (while (handle->process (the-as handle gp-4)) + (suspend)))) + (else + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (set-blackout-frames 0) + (set-blackout-frames (seconds 0.1)))))) + :post + (behavior () + (nav-enemy-method-51 self) + (level-hint-surpress!) + (kill-current-level-hint () () 'exit) + (ja-post))) -(define *muse-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 4 - :turn-anim -1 - :notice-anim 3 - :run-anim 4 - :jump-anim 7 - :jump-land-anim 8 - :victory-anim 3 - :taunt-anim 3 - :die-anim 3 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 10) - :run-rotate-speed (degrees 999.99994) - :run-acceleration (meters 5) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 10) - :walk-rotate-speed (degrees 999.99994) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.15) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 6.5 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *muse-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 3 + :walk-anim 4 + :turn-anim -1 + :notice-anim 3 + :run-anim 4 + :jump-anim 7 + :jump-land-anim 8 + :victory-anim 3 + :taunt-anim 3 + :die-anim 3 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 10) + :run-rotate-speed (degrees 999.99994) + :run-acceleration (meters 5) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 10) + :walk-rotate-speed (degrees 999.99994) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.15) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 6.5 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this muse) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -448,23 +354,19 @@ nav-enemy-default-event-handler (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *muse-sg* '()) + (initialize-skeleton this *muse-sg* ()) (logclear! (-> this mask) (process-mask actor-pause)) (init-defaults! this *muse-nav-enemy-info*) (set! (-> this max-path-index) (the float (+ (-> this path curve num-cverts) -1))) @@ -481,14 +383,8 @@ nav-enemy-default-event-handler (set! (-> this neck ear) (the-as uint 2)) (set! (-> this neck max-dist) 102400.0) (set! (-> this neck ignore-angle) 16384.0) - (set! (-> this anim) (new 'static 'spool-anim - :name "muse-victory" - :index 9 - :parts 2 - :command-list '((1 blackout 0) (219 blackout 60)) - ) - ) + (set! (-> this anim) + (new 'static 'spool-anim :name "muse-victory" :index 9 :parts 2 :command-list '((1 blackout 0) (219 blackout 60)))) (set! (-> this victory-anim) (fuel-cell-pick-anim this)) (go muse-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/quicksandlurker.gc b/goal_src/jak1/levels/misty/quicksandlurker.gc index 1f7fb0331d..0ea67560d3 100644 --- a/goal_src/jak1/levels/misty/quicksandlurker.gc +++ b/goal_src/jak1/levels/misty/quicksandlurker.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "engine/common-obs/water-anim.gc") (require "engine/common-obs/nav-enemy.gc") @@ -14,836 +13,667 @@ (defpartgroup group-quicksandlurker-missile :id 198 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2481 :flags (launch-asap) :binding 2479) - (sp-item 2479 :flags (start-dead) :binding 2480) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - (sp-item 2480 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 2481 :flags (launch-asap) :binding 2479) + (sp-item 2479 :flags (start-dead) :binding 2480) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)) + (sp-item 2480 :flags (start-dead launch-asap)))) (defpart 2481 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 2479 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 2482 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 2480 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-r -1.0666667) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-quicksandlurker-pre-missile :id 199 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2483)) - ) + :parts ((sp-item 2483))) (defpart 2483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -0.7111111) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666)) - (:friction 0.85 0.05) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.3)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -0.7111111) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666)) + (:friction 0.85 0.05) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.3)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-quicksandlurker-missile-impact :id 200 :duration (seconds 0.035) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2484) (sp-item 2485) (sp-item 2486)) - ) + :parts ((sp-item 2484) (sp-item 2485) (sp-item 2486))) (defpart 2484 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:vel-y (meters 0.10666667) (meters 0.10666667)) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.7111111) - (:fade-g -0.7111111) - (:fade-b 0.0) - (:accel-y (meters -0.00016666666)) - (:friction 0.85 0.05) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.3)) - (:next-launcher 2482) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:vel-y (meters 0.10666667) (meters 0.10666667)) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.7111111) + (:fade-g -0.7111111) + (:fade-b 0.0) + (:accel-y (meters -0.00016666666)) + (:friction 0.85 0.05) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.3)) + (:next-launcher 2482) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpart 2486 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 96.0 64.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-r -0.35555556) - (:fade-g -0.35555556) - (:fade-b 0.0) - (:fade-a -0.30476192) - (:accel-y (meters -0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 2482) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 96.0 64.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-r -0.35555556) + (:fade-g -0.35555556) + (:fade-b 0.0) + (:fade-a -0.30476192) + (:accel-y (meters -0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 2482) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 2485 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 128.0 32.0) - (:a 96.0) - (:fade-a -4.8) - (:timer (seconds 0.05)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 128.0 32.0) + (:a 96.0) + (:fade-a -4.8) + (:timer (seconds 0.05)) + (:flags (bit2)))) (defpartgroup group-quicksandlurker-hide :id 201 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (defpartgroup group-quicksandlurker-popup :id 202 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 -12 0 14) - :parts ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) - (sp-item 125 :period (seconds 3) :length (seconds 0.05)) - (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) - (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) - ) - ) + :parts + ((sp-item 124 :flags (is-3d) :period (seconds 3) :length (seconds 0.21)) + (sp-item 125 :period (seconds 3) :length (seconds 0.05)) + (sp-item 126 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 127 :flags (is-3d) :period (seconds 3) :length (seconds 0.05)) + (sp-item 128 :period (seconds 3) :length (seconds 0.035) :binding 129) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)) + (sp-item 129 :flags (start-dead) :period (seconds 3) :length (seconds 0.4)))) (deftype quicksandlurker-missile (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:states - quicksandlurker-missile-idle - quicksandlurker-missile-impact - ) - ) - + quicksandlurker-missile-idle + quicksandlurker-missile-impact)) (defstate quicksandlurker-missile-idle (quicksandlurker-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (when (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (else - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 4) - (set! (-> a1-4 message) 'attack) - (set! (-> a1-4 param 0) (-> block param 0)) - (set! (-> a1-4 param 1) (the-as uint 'explode)) - (let ((v1-12 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-12) - (set! (-> a1-4 param 2) (the-as uint v1-12)) - ) - (set! (-> a1-4 param 3) (the-as uint 0)) - (send-event-function proc a1-4) - ) - ) - ) - (send-event (ppointer->process (-> self parent)) 'victory) - (go quicksandlurker-missile-impact) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (while (not (time-elapsed? (-> self state-time) (seconds 4))) - (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) - (if (or (logtest? (-> self root status) (cshape-moving-flags twall)) - (< (vector-vector-distance (-> self root trans) (the-as vector (-> self root trans-old))) 40.96) - ) - (go quicksandlurker-missile-impact) - ) - (spawn (-> self part) (-> self root trans)) - (find-ground-and-draw-shadow - (-> self root trans) - (the-as vector #f) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - (suspend) - ) - (cleanup-for-death self) - ) - :post (behavior () - (update-transforms! (-> self root)) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (when (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (else + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 4) + (set! (-> a1-4 message) 'attack) + (set! (-> a1-4 param 0) (-> block param 0)) + (set! (-> a1-4 param 1) (the-as uint 'explode)) + (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-4 param 2) (the-as uint v1-12))) + (set! (-> a1-4 param 3) (the-as uint 0)) + (send-event-function proc a1-4)))) + (send-event (ppointer->process (-> self parent)) 'victory) + (go quicksandlurker-missile-impact))))) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (while (not (time-elapsed? (-> self state-time) (seconds 4))) + (fill-cache-integrate-and-collide! (-> self root) (-> self root transv) (-> self root root-prim collide-with)) + (if (or (logtest? (-> self root status) (cshape-moving-flags twall)) + (< (vector-vector-distance (-> self root trans) (the-as vector (-> self root trans-old))) 40.96)) + (go quicksandlurker-missile-impact)) + (spawn (-> self part) (-> self root trans)) + (find-ground-and-draw-shadow (-> self root trans) + (the-as vector #f) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0) + (suspend)) + (cleanup-for-death self)) + :post + (behavior () + (update-transforms! (-> self root)))) (defstate quicksandlurker-missile-impact (quicksandlurker-missile) - :code (behavior () - (sound-play "sack-land" :position (the-as symbol (-> self root trans))) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 200) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (sound-play "sack-land" :position (the-as symbol (-> self root trans))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 200) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (cleanup-for-death self))) (deftype quicksandlurker-missile-init-data (structure) - ((position vector) - (velocity vector) - ) - ) - + ((position vector) + (velocity vector))) (defbehavior quicksandlurker-missile-init-by-other quicksandlurker-missile ((arg0 quicksandlurker-missile-init-data) (arg1 entity-actor)) (set! (-> self entity) arg1) (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) - (set! (-> s4-0 collide-with) - (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) - ) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) (set! (-> s5-0 event-self) 'touched) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 position quad)) (set! (-> self root quat vec quad) (-> (the-as process-drawable (-> self parent 0)) root quat vec quad)) (vector-identity! (-> self root scale)) (set! (-> self root transv quad) (-> arg0 velocity quad)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 198) self)) (go quicksandlurker-missile-idle) - (none) - ) + (none)) (defun spawn-quicksandlurker-missile ((arg0 process) (arg1 vector) (arg2 vector) (arg3 entity-actor)) (let ((s5-0 (new 'stack-no-clear 'quicksandlurker-missile-init-data))) (set! (-> s5-0 position) arg1) (set! (-> s5-0 velocity) arg2) - (process-spawn quicksandlurker-missile s5-0 arg3 :to arg0) - ) + (process-spawn quicksandlurker-missile s5-0 arg3 :to arg0)) 0 - (none) - ) + (none)) (deftype quicksandlurker (process-drawable) - ((root collide-shape :override) - (original-position vector :inline) - (y-offset float) - (theta-angle float) - (radial-offset float) - (bob-angle float) - (mud-entity entity-actor) - ) + ((root collide-shape :override) + (original-position vector :inline) + (y-offset float) + (theta-angle float) + (radial-offset float) + (bob-angle float) + (mud-entity entity-actor)) (:states - quicksandlurker-attack - quicksandlurker-die - quicksandlurker-hide - quicksandlurker-idle - quicksandlurker-popup - quicksandlurker-track - quicksandlurker-victory - quicksandlurker-wait - quicksandlurker-yawn - ) - ) + quicksandlurker-attack + quicksandlurker-die + quicksandlurker-hide + quicksandlurker-idle + quicksandlurker-popup + quicksandlurker-track + quicksandlurker-victory + quicksandlurker-wait + quicksandlurker-yawn)) - -(defskelgroup *quicksandlurker-sg* quicksandlurker quicksandlurker-lod0-jg quicksandlurker-idle-ja - ((quicksandlurker-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *quicksandlurker-sg* + quicksandlurker + quicksandlurker-lod0-jg + quicksandlurker-idle-ja + ((quicksandlurker-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defbehavior orient-to-face-target quicksandlurker () - (if *target* - (seek-to-point-toward-point! (-> self root) (-> *target* control trans) 65536.0 (seconds 0.2)) - ) - ) + (if *target* (seek-to-point-toward-point! (-> self root) (-> *target* control trans) 65536.0 (seconds 0.2)))) ;; ERROR: function has no type analysis. Cannot decompile. (defun intersects-nav-mesh? ((arg0 nav-control) (arg1 vector)) - (if (nav-control-method-16 arg0 arg1) - #t - ) - ) + (if (nav-control-method-16 arg0 arg1) #t)) (defbehavior quicksandlurker-default-event-handler quicksandlurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - enter-state - (go quicksandlurker-die) - ) - (('victory) - (go quicksandlurker-victory) - ) - ) - ) + (('attack) enter-state (go quicksandlurker-die)) + (('victory) (go quicksandlurker-victory)))) (defun inc-angle ((arg0 (pointer float)) (arg1 float)) (+! (-> arg0 0) arg1) - (if (< 65536.0 (-> arg0 0)) - (set! (-> arg0 0) (+ -65536.0 (-> arg0 0))) - ) - ) + (if (< 65536.0 (-> arg0 0)) (set! (-> arg0 0) (+ -65536.0 (-> arg0 0))))) (defbehavior quicksandlurker-post quicksandlurker () (inc-angle (&-> self theta-angle) (* 9102.223 (seconds-per-frame))) (inc-angle (&-> self bob-angle) (* 14563.556 (seconds-per-frame))) (let ((f28-0 (* (-> self radial-offset) (cos (-> self theta-angle)))) - (f30-2 (* 0.0 (sin (-> self theta-angle)))) - ) + (f30-2 (* 0.0 (sin (-> self theta-angle))))) (let ((f0-10 (* (-> self radial-offset) (sin (-> self theta-angle))))) (set! (-> self root trans x) (+ (-> self original-position x) f28-0)) - (set! (-> self root trans z) (+ (-> self original-position z) f0-10)) - ) + (set! (-> self root trans z) (+ (-> self original-position z) f0-10))) (let* ((v1-4 (-> self mud-entity)) - (a0-5 (if v1-4 - (-> v1-4 extra process) - ) - ) - ) + (a0-5 (if v1-4 (-> v1-4 extra process)))) (if a0-5 - (set! (-> self root trans y) - (+ (get-ripple-height (the-as water-anim a0-5) (-> self root trans)) f30-2 (-> self y-offset)) - ) - (set! (-> self root trans y) (+ (-> self original-position y) f30-2 (-> self y-offset))) - ) - ) - ) + (set! (-> self root trans y) + (+ (get-ripple-height (the-as water-anim a0-5) (-> self root trans)) f30-2 (-> self y-offset))) + (set! (-> self root trans y) (+ (-> self original-position y) f30-2 (-> self y-offset)))))) (transform-post) - (none) - ) + (none)) (defbehavior quicksandlurker-check-hide-transition quicksandlurker () (when *target* (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (!= (-> *target* next-state name) 'target-flop) - ) - (go quicksandlurker-hide) - ) + (!= (-> *target* next-state name) 'target-flop)) + (go quicksandlurker-hide)) 0.0 (let ((a0-2 (-> self nav)) - (a1-1 (-> *target* control trans)) - ) - (when (if (nav-control-method-16 a0-2 a1-1) - #t - ) - (if (< (- (-> *target* control trans y) (-> self original-position y)) 0.0) - (go quicksandlurker-hide) - ) - ) - ) - ) - (none) - ) + (a1-1 (-> *target* control trans))) + (when (if (nav-control-method-16 a0-2 a1-1) #t) + (if (< (- (-> *target* control trans y) (-> self original-position y)) 0.0) (go quicksandlurker-hide))))) + (none)) (defstate quicksandlurker-idle (quicksandlurker) :event #f - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (go quicksandlurker-wait) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go quicksandlurker-wait))) + :code + (behavior () + (loop (suspend))) + :post ja-post) (defstate quicksandlurker-wait (quicksandlurker) :event quicksandlurker-default-event-handler - :trans (behavior () - (cond - ((and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (set! (-> self y-offset) 1228.8) - (go quicksandlurker-track) - ) - ((or (not *target*) (< 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (seek! (-> self y-offset) -6553.6 (* 20480.0 (seconds-per-frame))) - (if (= (-> self y-offset) -6553.6) - (go quicksandlurker-idle) - ) - ) - (else - (seek! (-> self y-offset) 1228.8 (* 20480.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 1.5 2.0)))) - (s5-0 5) - (s4-0 0) - ) - (ja-channel-push! 1 (seconds 0.1)) - (loop - (when (time-elapsed? (-> self state-time) gp-0) - (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self state-time)) - (+! s4-0 1) - (when (< s5-0 s4-0) - (set! s4-0 0) - (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (orient-to-face-target) - (ja :group! quicksandlurker-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - ) - :post quicksandlurker-post - ) + :trans + (behavior () + (cond + ((and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (set! (-> self y-offset) 1228.8) + (go quicksandlurker-track)) + ((or (not *target*) (< 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (seek! (-> self y-offset) -6553.6 (* 20480.0 (seconds-per-frame))) + (if (= (-> self y-offset) -6553.6) (go quicksandlurker-idle))) + (else (seek! (-> self y-offset) 1228.8 (* 20480.0 (seconds-per-frame)))))) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 1.5 2.0)))) + (s5-0 5) + (s4-0 0)) + (ja-channel-push! 1 (seconds 0.1)) + (loop (when (time-elapsed? (-> self state-time) gp-0) + (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self state-time)) + (+! s4-0 1) + (when (< s5-0 s4-0) + (set! s4-0 0) + (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (orient-to-face-target) + (ja :group! quicksandlurker-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)))) + :post quicksandlurker-post) (defstate quicksandlurker-yawn (quicksandlurker) :event quicksandlurker-default-event-handler - :code (behavior () - (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go quicksandlurker-wait) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (ja-no-eval :group! quicksandlurker-yawn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go quicksandlurker-wait)) + :post quicksandlurker-post) (defstate quicksandlurker-track (quicksandlurker) :event quicksandlurker-default-event-handler - :trans (behavior () - (if (or (not *target*) (< 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (go quicksandlurker-wait) - ) - (quicksandlurker-check-hide-transition) - ) - :code (behavior () - (set-time! (-> self state-time)) - (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) - (s5-0 1) - (s4-0 0) - ) - (loop - (when (time-elapsed? (-> self state-time) gp-0) - (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self state-time)) - (+! s4-0 1) - (when (>= s4-0 s5-0) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (go quicksandlurker-attack) - ) - ) - ) - (orient-to-face-target) - (ja :group! quicksandlurker-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - ) - :post quicksandlurker-post - ) + :trans + (behavior () + (if (or (not *target*) (< 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go quicksandlurker-wait)) + (quicksandlurker-check-hide-transition)) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((gp-0 (the int (* 300.0 (rand-vu-float-range 0.8 1.2)))) + (s5-0 1) + (s4-0 0)) + (loop (when (time-elapsed? (-> self state-time) gp-0) + (ja-no-eval :group! quicksandlurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self state-time)) + (+! s4-0 1) + (when (>= s4-0 s5-0) + (if (logtest? (-> self draw status) (draw-status was-drawn)) (go quicksandlurker-attack)))) + (orient-to-face-target) + (ja :group! quicksandlurker-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)))) + :post quicksandlurker-post) (defbehavior quicksandlurker-spit quicksandlurker () (let ((gp-0 (new-stack-vector0))) (let ((s5-0 (new-stack-vector0))) (set! (-> gp-0 quad) - (-> (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node quicksandlurker-lod0-jg jawEND)) quad) - ) + (-> (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node quicksandlurker-lod0-jg jawEND)) quad)) (vector-! s5-0 (target-pos 5) gp-0) - (let ((f1-0 (vector-xz-length s5-0))) - (set! (-> s5-0 y) (fmin (-> s5-0 y) (* 0.5 f1-0))) - ) + (let ((f1-0 (vector-xz-length s5-0))) (set! (-> s5-0 y) (fmin (-> s5-0 y) (* 0.5 f1-0)))) (vector-normalize! s5-0 49152.0) - (spawn-quicksandlurker-missile self gp-0 s5-0 (-> self entity)) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 199) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - ) + (spawn-quicksandlurker-missile self gp-0 s5-0 (-> self entity))) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 199) -1 #f #f #f gp-0 :to *entity-pool*))) (defstate quicksandlurker-attack (quicksandlurker) :event quicksandlurker-default-event-handler :trans quicksandlurker-check-hide-transition - :code (behavior () - (let ((gp-0 #f) - (f30-0 51.0) - ) - (ja-no-eval :group! quicksandlurker-spit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (orient-to-face-target) - (when (and (not gp-0) (>= (ja-aframe-num 0) f30-0)) - (set! gp-0 #t) - (quicksandlurker-spit) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (let ((gp-0 #f) + (f30-0 51.0)) + (ja-no-eval :group! quicksandlurker-spit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (orient-to-face-target) + (when (and (not gp-0) (>= (ja-aframe-num 0) f30-0)) + (set! gp-0 #t) + (quicksandlurker-spit)) + (suspend) + (ja :num! (seek!)))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-victory (quicksandlurker) :event quicksandlurker-default-event-handler :trans quicksandlurker-check-hide-transition - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (cond - ((rand-vu-percent? 0.5) - (ja-no-eval :group! quicksandlurker-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! quicksandlurker-victory2-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (cond + ((rand-vu-percent? 0.5) + (ja-no-eval :group! quicksandlurker-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! quicksandlurker-victory2-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-hide (quicksandlurker) :event quicksandlurker-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - ) - :trans (behavior () - (if (not *target*) - (go quicksandlurker-wait) - ) - (let ((a0-0 (-> self nav)) - (a1-0 (-> *target* control trans)) - ) - (cond - ((or (if (nav-control-method-16 a0-0 a1-0) - #t - ) - (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - (set-time! (-> self state-time)) - ) - (else - (if (time-elapsed? (-> self state-time) (seconds 2)) - (go quicksandlurker-popup) - ) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! quicksandlurker-hide-ja :num! (seek! max 0.75) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.75)) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 201) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (clear-collide-with-as (-> self root)) - (loop - (orient-to-face-target) - (suspend) - ) - ) - :post quicksandlurker-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :exit + (behavior () + (restore-collide-with-as (-> self root))) + :trans + (behavior () + (if (not *target*) (go quicksandlurker-wait)) + (let ((a0-0 (-> self nav)) + (a1-0 (-> *target* control trans))) + (cond + ((or (if (nav-control-method-16 a0-0 a1-0) #t) + (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (set-time! (-> self state-time))) + (else (if (time-elapsed? (-> self state-time) (seconds 2)) (go quicksandlurker-popup)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! quicksandlurker-hide-ja :num! (seek! max 0.75) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.75))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 201) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (clear-collide-with-as (-> self root)) + (loop (orient-to-face-target) + (suspend))) + :post quicksandlurker-post) (defstate quicksandlurker-popup (quicksandlurker) :trans quicksandlurker-check-hide-transition - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 202) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! quicksandlurker-popup-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (orient-to-face-target) - (suspend) - (ja :num! (seek!)) - ) - (go quicksandlurker-track) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 202) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! quicksandlurker-popup-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (orient-to-face-target) + (suspend) + (ja :num! (seek!))) + (go quicksandlurker-track)) + :post quicksandlurker-post) (defstate quicksandlurker-die (quicksandlurker) :event process-drawable-death-event-handler - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! quicksandlurker-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post quicksandlurker-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! quicksandlurker-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post quicksandlurker-post) (defmethod init-from-entity! ((this quicksandlurker) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -861,8 +691,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -870,19 +699,15 @@ (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 5) (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (+! (-> this root trans y) -2048.0) (set! (-> this original-position quad) (-> this root trans quad)) @@ -891,13 +716,10 @@ (set! (-> this radial-offset) 4096.0) (set! (-> this y-offset) -6553.6) (set-yaw-angle-clear-roll-pitch! (-> this root) (rand-vu-float-range 0.0 65536.0)) - (initialize-skeleton this *quicksandlurker-sg* '()) + (initialize-skeleton this *quicksandlurker-sg* ()) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this mud-entity) (entity-actor-lookup (-> this entity) 'water-actor 0)) (go quicksandlurker-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/misty/sidekick-human.gc b/goal_src/jak1/levels/misty/sidekick-human.gc index ac621e87e6..3996dacc37 100644 --- a/goal_src/jak1/levels/misty/sidekick-human.gc +++ b/goal_src/jak1/levels/misty/sidekick-human.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "MIS.DGO") - (require "levels/village1/sequence-a-village1.gc") (require "engine/common-obs/babak.gc") (require "levels/intro/evilbro.gc") @@ -12,1036 +11,996 @@ ;; DECOMP BEGINS -(deftype sequenceA (process-hidden) - () - ) - +(deftype sequenceA (process-hidden) ()) (defpartgroup group-2d-intro-mist :id 657 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2665 :period (seconds 1) :length (seconds 0.017) :binding 2663) - (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) - (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) - (sp-item 2664 :flags (start-dead)) - (sp-item 2664 :flags (start-dead)) - (sp-item 2664 :flags (start-dead)) - (sp-item 2666) - (sp-item 2667) - ) - ) + :parts + ((sp-item 2665 :period (seconds 1) :length (seconds 0.017) :binding 2663) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2663 :flags (start-dead launch-asap) :binding 2664) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2664 :flags (start-dead)) + (sp-item 2666) + (sp-item 2667))) (defpart 2665 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -2.5) (meters 5)) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:conerot-z (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -2.5) (meters 5)) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:conerot-z (degrees 0) (degrees 360)))) (defpart 2663 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:scalevel-x (meters -0.0012121212)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:scalevel-x (meters -0.0012121212)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 2664 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.0010952381)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0) (meters -0.000033333334)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.0010952381)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0) (meters -0.000033333334)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2667 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit14)))) (defpart 2666 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -4) (meters 8)) - (:y (meters -3) (meters 6)) - (:z (meters 0) (meters 3.4179688)) - (:scale-x (meters 6) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 6) (meters 8)) - (:r 16.0 80.0) - (:g 0.0 16.0) - (:b 16.0 150.0) - (:a 0.0) - (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.075) (degrees 0.15)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.497)) - (:next-launcher 2668) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -4) (meters 8)) + (:y (meters -3) (meters 6)) + (:z (meters 0) (meters 3.4179688)) + (:scale-x (meters 6) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 6) (meters 8)) + (:r 16.0 80.0) + (:g 0.0 16.0) + (:b 16.0 150.0) + (:a 0.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.075) (degrees 0.15)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 2668))) (defpart 2668 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2669)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2669))) (defpart 2669 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-evilsib-appear :id 557 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2345 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2346 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2347 :period (seconds 5) :length (seconds 0.017) :offset 1500) - (sp-item 2348 :period (seconds 5) :length (seconds 0.067) :offset 1500) - (sp-item 2349 :period (seconds 5) :length (seconds 3) :offset 750 :binding 2344) - (sp-item 2350 :period (seconds 5) :length (seconds 2.5) :offset 600 :binding 2344) - (sp-item 2351 :period (seconds 5) :length (seconds 2) :offset 450 :binding 2344) - (sp-item 2351 :period (seconds 5) :length (seconds 1.5) :offset 300 :binding 2344) - (sp-item 2352 :period (seconds 5) :length (seconds 1) :offset 150 :binding 2344) - (sp-item 2352 :period (seconds 5) :length (seconds 0.5) :binding 2344) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 2345 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2346 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2347 :period (seconds 5) :length (seconds 0.017) :offset 1500) + (sp-item 2348 :period (seconds 5) :length (seconds 0.067) :offset 1500) + (sp-item 2349 :period (seconds 5) :length (seconds 3) :offset 750 :binding 2344) + (sp-item 2350 :period (seconds 5) :length (seconds 2.5) :offset 600 :binding 2344) + (sp-item 2351 :period (seconds 5) :length (seconds 2) :offset 450 :binding 2344) + (sp-item 2351 :period (seconds 5) :length (seconds 1.5) :offset 300 :binding 2344) + (sp-item 2352 :period (seconds 5) :length (seconds 1) :offset 150 :binding 2344) + (sp-item 2352 :period (seconds 5) :length (seconds 0.5) :binding 2344) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2344 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)))) (defpart 2349 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.1)) - (:y (meters -1) (meters 4)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.1)) + (:y (meters -1) (meters 4)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2353 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpart 2350 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.1)) - (:y (meters -1) (meters 4)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.1)) + (:y (meters -1) (meters 4)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2351 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.3)) - (:y (meters 0) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.3)) + (:y (meters 0) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2352 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters 0) (meters 0.5)) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1)) - (:next-launcher 2353) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters 0) (meters 0.5)) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1)) + (:next-launcher 2353) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2344 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 5) (meters 1.5)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 64.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.074074075) (meters 0.14814815)) - (:vel-y (meters 0)) - (:vel-z (meters -0.015)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.9)) - (:next-launcher 2354) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 5) (meters 1.5)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 64.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.074074075) (meters 0.14814815)) + (:vel-y (meters 0)) + (:vel-z (meters -0.015)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.9)) + (:next-launcher 2354))) (defpart 2354 - :init-specs ((:fade-a -3.2)) - ) + :init-specs ((:fade-a -3.2))) (defpart 2345 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 1) (meters 2)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.21333334)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:accel-y (meters -0.00016666666) (meters -0.00083333335)) - (:friction 0.8 0.05) - (:timer (seconds 5)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.1) (seconds 2.497)) - (:next-launcher 2355) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-z (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 1) (meters 2)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.21333334)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:accel-y (meters -0.00016666666) (meters -0.00083333335)) + (:friction 0.8 0.05) + (:timer (seconds 5)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.1) (seconds 2.497)) + (:next-launcher 2355) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-z (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2355 - :init-specs ((:fade-g 0.0) (:fade-a 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-a 0.0))) (defpart 2346 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 0) (meters 3)) - (:scale-x (meters 0.1) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.026666667)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.42666668) - (:accel-y (meters -0.00016666666) (meters -0.00083333335)) - (:friction 0.75 0.05) - (:timer (seconds 5)) - (:flags (bit0 bit2 bit14)) - (:next-time (seconds 0.1) (seconds 2.497)) - (:next-launcher 2355) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-z (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 0) (meters 3)) + (:scale-x (meters 0.1) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.026666667)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.42666668) + (:accel-y (meters -0.00016666666) (meters -0.00083333335)) + (:friction 0.75 0.05) + (:timer (seconds 5)) + (:flags (bit0 bit2 bit14)) + (:next-time (seconds 0.1) (seconds 2.497)) + (:next-launcher 2355) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-z (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2347 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 28) (meters 4)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 128.0) - (:fade-g -2.3272727) - (:fade-a -2.3272727) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 28) (meters 4)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 128.0) + (:fade-g -2.3272727) + (:fade-a -2.3272727) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2348 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters 0.5) (meters 2)) - (:scale-x (meters 0.25) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 255.0) - (:g 128.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-y (meters 0.6)) - (:fade-r -2.1333334) - (:fade-g -2.1333334) - (:fade-a -1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters 0.5) (meters 2)) + (:scale-x (meters 0.25) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 128.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-y (meters 0.6)) + (:fade-r -2.1333334) + (:fade-g -2.1333334) + (:fade-a -1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-evilsib-hover :id 558 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2386 :binding 2385) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - (sp-item 2384 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 2386 :binding 2385) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2385 :flags (bit1 start-dead launch-asap) :binding 2384) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)) + (sp-item 2384 :flags (bit1 start-dead)))) (defpart 2386 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0.25) (meters 1.5)) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:a 0.0) - (:accel-y (meters -0.0005)) - (:timer (seconds 1)) - (:flags (bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0.25) (meters 1.5)) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:a 0.0) + (:accel-y (meters -0.0005)) + (:timer (seconds 1)) + (:flags (bit14)))) (defpart 2385 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0)) - (:z (meters 0.25) (meters 0.25)) - (:scale-x (meters 0.05) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.04444444) (meters 0.08888888)) - (:vel-y (meters 0)) - (:vel-z (meters 0.0027777778)) - (:scalevel-x (meters 0.00027777778)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit7 bit14)) - (:next-time (seconds 0.1) (seconds 0.047)) - (:next-launcher 2388) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0)) + (:z (meters 0.25) (meters 0.25)) + (:scale-x (meters 0.05) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.04444444) (meters 0.08888888)) + (:vel-y (meters 0)) + (:vel-z (meters 0.0027777778)) + (:scalevel-x (meters 0.00027777778)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit7 bit14)) + (:next-time (seconds 0.1) (seconds 0.047)) + (:next-launcher 2388))) (defpart 2388 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5)) (:next-launcher 2389)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5)) (:next-launcher 2389))) (defpart 2389 - :init-specs ((:vel-z (meters -0.008333334)) - (:scalevel-x (meters -0.00041666668)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.0666667) - ) - ) + :init-specs + ((:vel-z (meters -0.008333334)) + (:scalevel-x (meters -0.00041666668)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.0666667))) (defpart 2384 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1) - (:scale-x (meters 0.4) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 64.0 32.0) - (:scalevel-x (meters -0.03)) - (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -4.8) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.05)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 64.0 32.0) + (:scalevel-x (meters -0.03)) + (:rotvel-z (degrees -0.53333336) (degrees 1.0666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -4.8) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.05)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-sequenceC-glowing-can :id 560 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2298)) - ) + :parts ((sp-item 2298))) (defpart 2298 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 96.0 32.0) - (:b 0.0) - (:a 32.0 32.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.42666668) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 96.0 32.0) + (:b 0.0) + (:a 32.0 32.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.42666668) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defpartgroup group-sequenceC-exploding-can :id 561 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2785 :period (seconds 6) :length (seconds 0.017)) - (sp-item 2786 :period (seconds 6) :length (seconds 0.135)) - (sp-item 2787 :period (seconds 6) :length (seconds 0.067)) - (sp-item 2788 :period (seconds 6) :length (seconds 0.067)) - (sp-item 2830 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - ) - ) + :parts + ((sp-item 2785 :period (seconds 6) :length (seconds 0.017)) + (sp-item 2786 :period (seconds 6) :length (seconds 0.135)) + (sp-item 2787 :period (seconds 6) :length (seconds 0.067)) + (sp-item 2788 :period (seconds 6) :length (seconds 0.067)) + (sp-item 2830 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)))) (defpart 2830 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 1) (meters 2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.00033333333)) - (:friction 0.94) - (:timer (seconds 0.8)) - (:flags (bit3)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 1) (meters 2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.00033333333)) + (:friction 0.94) + (:timer (seconds 0.8)) + (:flags (bit3)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2786 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2789) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2789) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2789 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2788 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 128.0 128.0) - (:g 0.0 32.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 128.0 128.0) + (:g 0.0 32.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2785 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 0.0 32.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 0.0 32.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2787 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpartgroup group-sequenceC-dark-splash :id 562 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) - (sp-item 2097 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 295 :fade-after (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 2095 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2096 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.135)) + (sp-item 2097 :period (seconds 2) :length (seconds 0.067)))) (defpartgroup group-sequenceC-blow-dust :id 681 @@ -1049,452 +1008,379 @@ :linger-duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2790)) - ) + :parts ((sp-item 2790))) (defpart 2790 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 96.0 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.0033333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333) (meters -0.00033333333)) - (:friction 0.92) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05) (seconds 0.147)) - (:next-launcher 2822) - (:conerot-x (degrees 112.99999) (degrees 2)) - (:conerot-y (degrees -12.500001) (degrees 15)) - (:conerot-radius (meters 0.3) (meters -0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 96.0 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.0033333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333) (meters -0.00033333333)) + (:friction 0.92) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05) (seconds 0.147)) + (:next-launcher 2822) + (:conerot-x (degrees 112.99999) (degrees 2)) + (:conerot-y (degrees -12.500001) (degrees 15)) + (:conerot-radius (meters 0.3) (meters -0.5)))) (defpart 2822 - :init-specs ((:fade-a -0.1)) - ) + :init-specs ((:fade-a -0.1))) (deftype sequenceB (process-taskable) - ((bonelurker handle) - (evilbro handle) - (evilsis handle) - (lurker-army handle 9) - ) - ) - + ((bonelurker handle) + (evilbro handle) + (evilsis handle) + (lurker-army handle 9))) (deftype sequenceC (process-taskable) - ((bonelurker handle) - (darkecocan handle) - (darkecocan-glowing-look lod-set :inline) - ) - ) + ((bonelurker handle) + (darkecocan handle) + (darkecocan-glowing-look lod-set :inline))) +(defskelgroup *sidekick-human-sg* + sidekick-human + sidekick-human-lod0-jg + sidekick-human-idle-ja + ((sidekick-human-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sidekick-human-shadow-mg) -(defskelgroup *sidekick-human-sg* sidekick-human sidekick-human-lod0-jg sidekick-human-idle-ja - ((sidekick-human-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sidekick-human-shadow-mg - ) +(defskelgroup *darkecocan-sg* + darkecocan + darkecocan-lod0-jg + darkecocan-idle-ja + ((darkecocan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) -(defskelgroup *darkecocan-sg* darkecocan darkecocan-lod0-jg darkecocan-idle-ja - ((darkecocan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *darkecocan-glow-sg* + darkecocan + darkecocan-glow-lod0-jg + darkecocan-idle-ja + ((darkecocan-glow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) -(defskelgroup *darkecocan-glow-sg* darkecocan darkecocan-glow-lod0-jg darkecocan-idle-ja - ((darkecocan-glow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *evilbro-sg* + evilbro + evilbro-lod0-jg + evilbro-idle-ja + ((evilbro-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) -(defskelgroup *evilbro-sg* evilbro evilbro-lod0-jg evilbro-idle-ja - ((evilbro-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) - -(defskelgroup *evilsis-sg* evilsis evilsis-lod0-jg evilsis-idle-ja - ((evilsis-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *evilsis-sg* + evilsis + evilsis-lod0-jg + evilsis-idle-ja + ((evilsis-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) (deftype army-info (structure) - ((pos vector) - (rot float) - (start-frame float) - (skel symbol) - ) - ) + ((pos vector) + (rot float) + (start-frame float) + (skel symbol))) - -(define *lurker-army* (new 'static 'boxed-array :type army-info - (new 'static 'army-info - :pos (new 'static 'vector :x -920633.4 :y 83546.11 :z 4210409.5) - :rot 28556.04 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -873488.4 :y 86441.984 :z 4225454.0) - :rot 37861.24 - :start-frame 5.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -905871.4 :y 83132.414 :z 4231934.0) - :rot 32054.021 - :start-frame 10.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -926765.06 :y 83496.96 :z 4236230.5) - :rot 30001.652 - :start-frame 15.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -893345.8 :y 83517.44 :z 4212961.5) - :rot 32755.074 - :start-frame 20.0 - :skel 'babak - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -842797.06 :y 84041.73 :z 4218855.5) - :rot 43916.402 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -839274.5 :y 82644.99 :z 4248723.5) - :rot 40510.715 - :start-frame 6.0 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -871485.44 :y 85909.51 :z 4243181.5) - :rot 37046.043 - :start-frame 12.0 - :skel 'bonelurker - ) - (new 'static 'army-info - :pos (new 'static 'vector :x -947523.56 :y 85835.77 :z 4219314.0) - :rot 26980.078 - :start-frame 18.0 - :skel 'bonelurker - ) - ) - ) +(define *lurker-army* + (new 'static + 'boxed-array + :type + army-info + (new 'static 'army-info :pos (new 'static 'vector :x -920633.4 :y 83546.11 :z 4210409.5) :rot 28556.04 :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -873488.4 :y 86441.984 :z 4225454.0) + :rot 37861.24 + :start-frame 5.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -905871.4 :y 83132.414 :z 4231934.0) + :rot 32054.021 + :start-frame 10.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -926765.06 :y 83496.96 :z 4236230.5) + :rot 30001.652 + :start-frame 15.0 + :skel 'babak) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -893345.8 :y 83517.44 :z 4212961.5) + :rot 32755.074 + :start-frame 20.0 + :skel 'babak) + (new 'static 'army-info :pos (new 'static 'vector :x -842797.06 :y 84041.73 :z 4218855.5) :rot 43916.402 :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -839274.5 :y 82644.99 :z 4248723.5) + :rot 40510.715 + :start-frame 6.0 + :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -871485.44 :y 85909.51 :z 4243181.5) + :rot 37046.043 + :start-frame 12.0 + :skel 'bonelurker) + (new 'static + 'army-info + :pos + (new 'static 'vector :x -947523.56 :y 85835.77 :z 4219314.0) + :rot 26980.078 + :start-frame 18.0 + :skel 'bonelurker))) (defbehavior evilsib-trans-hook-hover evilbro () 0 - (none) - ) + (none)) (defbehavior evilsib-trans-hook-wait evilbro () (when (>= (ja-aframe-num 0) 425.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 557) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) - (send-event self 'trans-hook evilsib-trans-hook-hover) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 557) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) + (send-event self 'trans-hook evilsib-trans-hook-hover)) 0 - (none) - ) + (none)) (defmethod play-anim! ((this sequenceB) (arg0 symbol)) (cond (arg0 - (send-event *target* 'sidekick #f) - (set! (-> this bonelurker) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this)) - ) - (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this bonelurker)) 'center-joint 3) - (set-setting! 'music-volume-movie 'abs 0.0 0) - (set-setting! 'sfx-volume-movie 'abs 0.0 0) - (set-setting! 'ambient-volume-movie 'abs 0.0 0) - (dotimes (s5-1 9) - (let ((s4-0 (-> *lurker-army* s5-1))) - (cond - ((= (-> s4-0 skel) 'bonelurker) - (set! (-> this lurker-army s5-1) - (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *bonelurker-sg* #f :to this)) - ) - (let ((s3-1 (handle->process (-> this lurker-army s5-1)))) - (when s3-1 - (set! (-> (the-as babak s3-1) draw light-index) (the-as uint 1)) - (set! (-> (the-as babak s3-1) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - ) - (else - (set! (-> this lurker-army s5-1) - (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *babak-sg* #f :to this)) - ) - (let ((s3-3 (handle->process (-> this lurker-army s5-1)))) - (when s3-3 - (set! (-> (the-as babak s3-3) draw light-index) (the-as uint 1)) - (set! (-> (the-as babak s3-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> this lurker-army s5-1)) 'art-joint-anim "idle" 0) - ) - ) - (send-event (handle->process (-> this lurker-army s5-1)) 'rot (-> s4-0 rot)) - ) - ) - ) - ((!= (level-status *level* 'intro) 'active) - (return (get-art-elem this)) - ) - ) - (new 'static 'spool-anim - :name "sidekick-human-intro-sequence-b" - :index 5 - :parts 11 - :command-list '((0 blackout 0) - (0 setting-reset ocean-off near) - (0 want-levels misty intro) - (0 display-level intro special) - (0 kill "money-1404") - (0 kill "money-1405") - (0 kill "money-1406") - (0 kill "money-1407") - (0 kill "money-1551") - (0 kill "money-1552") - (0 kill "money-1553") - (0 kill "balloonlurker-9") - (0 kill "balloonlurker-10") - (0 kill "balloonlurker-11") - (0 kill "balloonlurker-12") - (0 kill "balloonlurker-13") - (0 kill "balloonlurker-14") - (0 kill "keg-conveyor-8") - (0 kill "mistycannon-8") - (0 kill "muse-2") - (0 kill "mud-1") - (0 kill "mud-2") - (0 kill "mud-3") - (0 kill "mud-4") - (0 kill "mud-5") - (0 kill "mud-6") - (0 kill "mud-7") - (0 kill "mud-8") - (0 kill "mud-9") - (0 kill "mud-10") - (0 kill "mud-11") - (0 kill "dark-eco-pool-11") - (0 kill "sharkey-32") - (0 kill "sharkey-34") - (0 kill "sharkey-39") - (0 kill "sharkey-41") - (0 kill "bonelurker-14") - (0 kill "bonelurker-15") - (0 kill "bonelurker-16") - (0 kill "bonelurker-17") - (0 kill "bonelurker-18") - (0 kill "bonelurker-19") - (0 kill "bonelurker-20") - (0 kill "bonelurker-21") - (0 kill "bonelurker-22") - (0 kill "bonelurker-23") - (0 kill "bonelurker-24") - (0 kill "bonelurker-26") - (0 kill "babak-with-cannon-5") - (0 kill "babak-200") - (0 kill "babak-201") - (0 kill "babak-202") - (0 kill "babak-203") - (0 kill "babak-204") - (0 kill "babak-205") - (0 kill "babak-206") - (0 kill "babak-207") - (0 kill "babak-208") - (0 kill "babak-209") - (0 kill "babak-212") - (0 kill "quicksandlurker-5") - (0 kill "boatpaddle-4") - (0 kill "silostep-7") - (0 kill "silostep-8") - (0 kill "silostep-9") - (0 kill "silostep-10") - (0 kill "orb-cache-top-15") - (0 kill "windturbine-11") - (0 kill "teetertotter-5") - (0 kill "bone-platform-4") - (0 kill "misty-battle-controller-1") - (30 send-event self offset-army) - (196 joint "cameraB") - (196 shadow target #f) - (196 shadow self #f) - (380 send-event self evilbro) - (385 send-event "evilbro" draw #t) - (385 send-event "evilsis" draw #t) - (397 joint "camera") - (410 setting-reset ocean-off #t) - (456 joint "cameraB") - (546 joint "camera") - (701 joint "cameraB") - (701 setting-reset ocean-off near) - (776 joint "camera") - (776 setting-reset ocean-off #t) - (937 joint "cameraB") - (1027 joint "camera") - (1122 joint "cameraB") - (1221 joint "cameraB") - (1221 setting-reset ocean-off near) - (1280 alive "sequenceC-1") - (1281 save) - (1281 shadow target #t) - (1281 setting-unset ocean-off) - ) - ) - ) + (send-event *target* 'sidekick #f) + (set! (-> this bonelurker) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this))) + (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> this bonelurker)) 'center-joint 3) + (set-setting! 'music-volume-movie 'abs 0.0 0) + (set-setting! 'sfx-volume-movie 'abs 0.0 0) + (set-setting! 'ambient-volume-movie 'abs 0.0 0) + (dotimes (s5-1 9) + (let ((s4-0 (-> *lurker-army* s5-1))) + (cond + ((= (-> s4-0 skel) 'bonelurker) + (set! (-> this lurker-army s5-1) + (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *bonelurker-sg* #f :to this))) + (let ((s3-1 (handle->process (-> this lurker-army s5-1)))) + (when s3-1 + (set! (-> (the-as babak s3-1) draw light-index) (the-as uint 1)) + (set! (-> (the-as babak s3-1) draw level-index) (the-as uint (-> (level-get *level* 'misty) index)))))) + (else + (set! (-> this lurker-army s5-1) + (ppointer->handle (manipy-spawn (-> s4-0 pos) (-> this entity) *babak-sg* #f :to this))) + (let ((s3-3 (handle->process (-> this lurker-army s5-1)))) + (when s3-3 + (set! (-> (the-as babak s3-3) draw light-index) (the-as uint 1)) + (set! (-> (the-as babak s3-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> this lurker-army s5-1)) 'art-joint-anim "idle" 0))) + (send-event (handle->process (-> this lurker-army s5-1)) 'rot (-> s4-0 rot))))) + ((!= (level-status *level* 'intro) 'active) (return (get-art-elem this)))) + (new 'static + 'spool-anim + :name "sidekick-human-intro-sequence-b" + :index 5 + :parts 11 + :command-list + '((0 blackout 0) + (0 setting-reset ocean-off near) + (0 want-levels misty intro) + (0 display-level intro special) + (0 kill "money-1404") + (0 kill "money-1405") + (0 kill "money-1406") + (0 kill "money-1407") + (0 kill "money-1551") + (0 kill "money-1552") + (0 kill "money-1553") + (0 kill "balloonlurker-9") + (0 kill "balloonlurker-10") + (0 kill "balloonlurker-11") + (0 kill "balloonlurker-12") + (0 kill "balloonlurker-13") + (0 kill "balloonlurker-14") + (0 kill "keg-conveyor-8") + (0 kill "mistycannon-8") + (0 kill "muse-2") + (0 kill "mud-1") + (0 kill "mud-2") + (0 kill "mud-3") + (0 kill "mud-4") + (0 kill "mud-5") + (0 kill "mud-6") + (0 kill "mud-7") + (0 kill "mud-8") + (0 kill "mud-9") + (0 kill "mud-10") + (0 kill "mud-11") + (0 kill "dark-eco-pool-11") + (0 kill "sharkey-32") + (0 kill "sharkey-34") + (0 kill "sharkey-39") + (0 kill "sharkey-41") + (0 kill "bonelurker-14") + (0 kill "bonelurker-15") + (0 kill "bonelurker-16") + (0 kill "bonelurker-17") + (0 kill "bonelurker-18") + (0 kill "bonelurker-19") + (0 kill "bonelurker-20") + (0 kill "bonelurker-21") + (0 kill "bonelurker-22") + (0 kill "bonelurker-23") + (0 kill "bonelurker-24") + (0 kill "bonelurker-26") + (0 kill "babak-with-cannon-5") + (0 kill "babak-200") + (0 kill "babak-201") + (0 kill "babak-202") + (0 kill "babak-203") + (0 kill "babak-204") + (0 kill "babak-205") + (0 kill "babak-206") + (0 kill "babak-207") + (0 kill "babak-208") + (0 kill "babak-209") + (0 kill "babak-212") + (0 kill "quicksandlurker-5") + (0 kill "boatpaddle-4") + (0 kill "silostep-7") + (0 kill "silostep-8") + (0 kill "silostep-9") + (0 kill "silostep-10") + (0 kill "orb-cache-top-15") + (0 kill "windturbine-11") + (0 kill "teetertotter-5") + (0 kill "bone-platform-4") + (0 kill "misty-battle-controller-1") + (30 send-event self offset-army) + (196 joint "cameraB") + (196 shadow target #f) + (196 shadow self #f) + (380 send-event self evilbro) + (385 send-event "evilbro" draw #t) + (385 send-event "evilsis" draw #t) + (397 joint "camera") + (410 setting-reset ocean-off #t) + (456 joint "cameraB") + (546 joint "camera") + (701 joint "cameraB") + (701 setting-reset ocean-off near) + (776 joint "camera") + (776 setting-reset ocean-off #t) + (937 joint "cameraB") + (1027 joint "camera") + (1122 joint "cameraB") + (1221 joint "cameraB") + (1221 setting-reset ocean-off near) + (1280 alive "sequenceC-1") + (1281 save) + (1281 shadow target #t) + (1281 setting-unset ocean-off)))) (defmethod get-art-elem ((this sequenceB)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceB) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('offset-army) - (dotimes (gp-0 9) - (let ((v1-3 (-> *lurker-army* gp-0))) - (send-event (handle->process (-> self lurker-army gp-0)) 'set-frame-num (-> v1-3 start-frame)) - ) - ) - #f - ) - (('evilbro) - (when (= (level-status *level* 'intro) 'active) - (let ((gp-2 (entity-by-name "evilbro-2"))) - (when gp-2 - (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root trans) gp-2 *evilbro-sg* #f :to self))) - (let ((gp-3 (handle->process (-> self evilbro)))) - (when gp-3 - (set! (-> (the-as evilbro gp-3) draw light-index) (the-as uint 1)) - (set! (-> (the-as evilbro gp-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilbro)) 'blend-shape #t) - (send-event (handle->process (-> self evilbro)) 'center-joint 3) - (send-event (handle->process (-> self evilbro)) 'trans-hook evilsib-trans-hook-wait) - (send-event (handle->process (-> self evilbro)) 'draw #f) - (send-event - (handle->process (-> self evilbro)) - 'eval - (lambda :behavior sequenceB () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - ) - ) - (let ((gp-4 (entity-by-name "evilsis-2"))) - (when gp-4 - (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root trans) gp-4 *evilsis-sg* #f :to self))) - (let ((gp-5 (handle->process (-> self evilsis)))) - (when gp-5 - (set! (-> (the-as evilsis gp-5) draw light-index) (the-as uint 1)) - (set! (-> (the-as evilsis gp-5) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))) - ) - ) - (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilsis)) 'blend-shape #t) - (send-event (handle->process (-> self evilsis)) 'center-joint 3) - (send-event (handle->process (-> self evilsis)) 'trans-hook evilsib-trans-hook-wait) - (send-event (handle->process (-> self evilsis)) 'draw #f) - (send-event - (handle->process (-> self evilsis)) - 'eval - (lambda :behavior sequenceB () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - ) - ) - ) - ) - ) - ) - :exit (behavior () - (send-event *target* 'sidekick #t) - (let ((a0-2 (handle->process (-> self bonelurker)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self evilbro)))) - (if a0-6 - (deactivate a0-6) - ) - ) - (let ((a0-10 (handle->process (-> self evilsis)))) - (if a0-10 - (deactivate a0-10) - ) - ) - (dotimes (gp-0 9) - (let ((a0-14 (handle->process (-> self lurker-army gp-0)))) - (if a0-14 - (deactivate a0-14) - ) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('offset-army) + (dotimes (gp-0 9) + (let ((v1-3 (-> *lurker-army* gp-0))) + (send-event (handle->process (-> self lurker-army gp-0)) 'set-frame-num (-> v1-3 start-frame)))) + #f) + (('evilbro) + (when (= (level-status *level* 'intro) 'active) + (let ((gp-2 (entity-by-name "evilbro-2"))) + (when gp-2 + (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root trans) gp-2 *evilbro-sg* #f :to self))) + (let ((gp-3 (handle->process (-> self evilbro)))) + (when gp-3 + (set! (-> (the-as evilbro gp-3) draw light-index) (the-as uint 1)) + (set! (-> (the-as evilbro gp-3) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilbro)) 'blend-shape #t) + (send-event (handle->process (-> self evilbro)) 'center-joint 3) + (send-event (handle->process (-> self evilbro)) 'trans-hook evilsib-trans-hook-wait) + (send-event (handle->process (-> self evilbro)) 'draw #f) + (send-event (handle->process (-> self evilbro)) + 'eval + (lambda :behavior sequenceB () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) (set! (-> self part) v0-0) v0-0))))) + (let ((gp-4 (entity-by-name "evilsis-2"))) + (when gp-4 + (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root trans) gp-4 *evilsis-sg* #f :to self))) + (let ((gp-5 (handle->process (-> self evilsis)))) + (when gp-5 + (set! (-> (the-as evilsis gp-5) draw light-index) (the-as uint 1)) + (set! (-> (the-as evilsis gp-5) draw level-index) (the-as uint (-> (level-get *level* 'misty) index))))) + (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilsis)) 'blend-shape #t) + (send-event (handle->process (-> self evilsis)) 'center-joint 3) + (send-event (handle->process (-> self evilsis)) 'trans-hook evilsib-trans-hook-wait) + (send-event (handle->process (-> self evilsis)) 'draw #f) + (send-event (handle->process (-> self evilsis)) + 'eval + (lambda :behavior sequenceB () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 558) self))) (set! (-> self part) v0-0) v0-0))))))))) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self bonelurker)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self evilbro)))) (if a0-6 (deactivate a0-6))) + (let ((a0-10 (handle->process (-> self evilsis)))) (if a0-10 (deactivate a0-10))) + (dotimes (gp-0 9) + (let ((a0-14 (handle->process (-> self lurker-army gp-0)))) (if a0-14 (deactivate a0-14)))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (let ((gp-1 (entity-by-name "sequenceC-1"))) - (set-blackout-frames (seconds 20)) - (send-event *camera* 'clear-entity) - (entity-birth-no-kill gp-1) - (send-event - (if gp-1 - (-> gp-1 extra process) - ) - 'play-anim - ) - ) - ) - :trans (behavior () - (spool-push *art-control* "sidekick-human-intro-sequence-c" 0 self (the-as float -1.0)) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (let ((gp-1 (entity-by-name "sequenceC-1"))) + (set-blackout-frames (seconds 20)) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-1) + (send-event (if gp-1 (-> gp-1 extra process)) 'play-anim))) + :trans + (behavior () + (spool-push *art-control* "sidekick-human-intro-sequence-c" 0 self (the-as float -1.0)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceB)) - #f - ) + #f) (defmethod init-from-entity! ((this sequenceB) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sidekick-human-sg* 3 44 (new 'static 'vector :w 4096.0) -1) @@ -1503,44 +1389,35 @@ (set! (-> this evilbro) (the-as handle #f)) (set! (-> this evilsis) (the-as handle #f)) (dotimes (v1-2 9) - (set! (-> this lurker-army v1-2) (the-as handle #f)) - ) + (set! (-> this lurker-army v1-2) (the-as handle #f))) (process-taskable-method-42 this) - (none) - ) + (none)) (defbehavior sequenceC-can-trans-hook-2 sequenceC () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (-> self node-list data 4)) - (spawn (-> self part) gp-0) - ) + (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 4)) (spawn (-> self part) gp-0)) (when (>= (ja-aframe-num 0) 1590.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 561) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 561) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior sequenceC-can-trans-hook sequenceC () (when (>= (ja-aframe-num 0) 1055.0) (lods-assign! (-> self draw) (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288))) (send-event self 'trans-hook sequenceC-can-trans-hook-2) - (set-vector! (-> self draw color-emissive) 0.5 0.0 0.0 0.0) - ) + (set-vector! (-> self draw color-emissive) 0.5 0.0 0.0 0.0)) 0 - (none) - ) + (none)) (defmethod play-anim! ((this sequenceC) (arg0 symbol)) (when arg0 @@ -1548,156 +1425,118 @@ (set-setting! 'sfx-volume-movie 'abs 0.0 0) (set-setting! 'ambient-volume-movie 'abs 0.0 0) (set! (-> this bonelurker) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *bonelurker-sg* #f :to this))) (send-event (handle->process (-> this bonelurker)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this bonelurker)) 'center-joint 3) (set! (-> this darkecocan) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *darkecocan-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *darkecocan-sg* #f :to this))) (send-event (handle->process (-> this darkecocan)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this darkecocan)) 'center-joint 3) (send-event (handle->process (-> this darkecocan)) 'trans-hook sequenceC-can-trans-hook) - (send-event - (handle->process (-> this darkecocan)) - 'eval - (lambda :behavior sequenceC - () - ((method-of-type lod-set setup-lods!) - (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288)) - *darkecocan-glow-sg* - (-> self draw art-group) - (-> (the-as process-taskable (-> self parent 0)) entity) - ) - (let ((v0-1 (create-launch-control (-> *part-group-id-table* 560) self))) - (set! (-> self part) v0-1) - v0-1 - ) - ) - ) - ) - (the-as basic (new 'static 'spool-anim - :name "sidekick-human-intro-sequence-c" - :index 6 - :parts 22 - :command-list '((0 blackout 0) - (0 kill "fuel-cell-11") - (0 kill "fuel-cell-50") - (0 kill "money-1561") - (0 kill "money-1562") - (0 kill "money-1563") - (0 kill "money-1564") - (0 kill "money-1565") - (5 alive "dark-eco-pool-11") - (151 joint "cameraB") - (200 want-levels misty village1) - (236 joint "camera") - (301 joint "cameraB") - (421 joint "camera") - (460 shadow self #f) - (470 shadow self #t) - (496 joint "cameraB") - (611 joint "camera") - (721 joint "cameraB") - (1176 joint "camera") - (1271 joint "cameraB") - (1331 joint "camera") - (1386 joint "cameraB") - (1461 joint "camera") - (1524 joint "cameraB") - (1558 joint "camera") - (1602 joint "cameraB") - (1628 joint "camera") - (1676 joint "cameraB") - (1728 joint "camera") - (1791 joint "cameraB") - (1831 joint "camera") - (1942 joint "cameraB") - (2000 display-level village1 special) - (2028 joint "camera") - (2096 joint "cameraB") - (2154 joint "camera") - (2226 joint "cameraB") - (2266 joint "camera") - (2307 joint "cameraB") - (2431 joint "camera") - (2476 joint "cameraB") - (2530 display-level misty movie) - (2530 want-force-vis misty #t) - (2530 dead "dark-eco-pool-11") - (2534 display-level village1 display) - (2535 want-vis vi1) - (2536 joint "camera") - (2580 alive "sage-23") - (2596 save) - ) - ) - ) - ) + (send-event (handle->process (-> this darkecocan)) + 'eval + (lambda :behavior sequenceC () + ((method-of-type lod-set setup-lods!) + (the-as lod-set (&-> (the-as process-taskable (-> self parent 0)) stack 288)) + *darkecocan-glow-sg* + (-> self draw art-group) + (-> (the-as process-taskable (-> self parent 0)) entity)) + (let ((v0-1 (create-launch-control (-> *part-group-id-table* 560) self))) (set! (-> self part) v0-1) v0-1)))) + (the-as basic + (new 'static + 'spool-anim + :name "sidekick-human-intro-sequence-c" + :index 6 + :parts 22 + :command-list + '((0 blackout 0) + (0 kill "fuel-cell-11") + (0 kill "fuel-cell-50") + (0 kill "money-1561") + (0 kill "money-1562") + (0 kill "money-1563") + (0 kill "money-1564") + (0 kill "money-1565") + (5 alive "dark-eco-pool-11") + (151 joint "cameraB") + (200 want-levels misty village1) + (236 joint "camera") + (301 joint "cameraB") + (421 joint "camera") + (460 shadow self #f) + (470 shadow self #t) + (496 joint "cameraB") + (611 joint "camera") + (721 joint "cameraB") + (1176 joint "camera") + (1271 joint "cameraB") + (1331 joint "camera") + (1386 joint "cameraB") + (1461 joint "camera") + (1524 joint "cameraB") + (1558 joint "camera") + (1602 joint "cameraB") + (1628 joint "camera") + (1676 joint "cameraB") + (1728 joint "camera") + (1791 joint "cameraB") + (1831 joint "camera") + (1942 joint "cameraB") + (2000 display-level village1 special) + (2028 joint "camera") + (2096 joint "cameraB") + (2154 joint "camera") + (2226 joint "cameraB") + (2266 joint "camera") + (2307 joint "cameraB") + (2431 joint "camera") + (2476 joint "cameraB") + (2530 display-level misty movie) + (2530 want-force-vis misty #t) + (2530 dead "dark-eco-pool-11") + (2534 display-level village1 display) + (2535 want-vis vi1) + (2536 joint "camera") + (2580 alive "sage-23") + (2596 save))))) (defmethod get-art-elem ((this sequenceC)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceC) :virtual #t - :exit (behavior () - (let ((a0-1 (handle->process (-> self bonelurker)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (let ((a0-5 (handle->process (-> self darkecocan)))) - (if a0-5 - (deactivate a0-5) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self bonelurker)))) (if a0-1 (deactivate a0-1))) + (let ((a0-5 (handle->process (-> self darkecocan)))) (if a0-5 (deactivate a0-5))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (start 'play (get-continue-by-name *game-info* "village1-intro")) - ) - :trans (behavior () - (spool-push *art-control* "sage-intro-sequence-d1" 0 self (the-as float -1.0)) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (start 'play (get-continue-by-name *game-info* "village1-intro"))) + :trans + (behavior () + (spool-push *art-control* "sage-intro-sequence-d1" 0 self (the-as float -1.0)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceC)) - #f - ) + #f) (defbehavior sequenceC-trans-hook sequenceC () (when (>= (ja-aframe-num 0) 1655.0) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (-> self node-list data 3)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 562) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (set! (-> self cur-trans-hook) nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 562) -1 #f #f #f gp-0 :to *entity-pool*)) + (set! (-> self cur-trans-hook) nothing)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this sequenceC) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sidekick-human-sg* 3 44 (new 'static 'vector :w 4096.0) -1) @@ -1706,5 +1545,4 @@ (set! (-> this darkecocan) (the-as handle #f)) (set! (-> this cur-trans-hook) sequenceC-trans-hook) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/ogre/flying-lurker.gc b/goal_src/jak1/levels/ogre/flying-lurker.gc index 0d8d6f0a8f..d29e58d635 100644 --- a/goal_src/jak1/levels/ogre/flying-lurker.gc +++ b/goal_src/jak1/levels/ogre/flying-lurker.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/collide/collide-cache.gc") @@ -13,244 +12,176 @@ ;; DECOMP BEGINS -(defskelgroup *ogrecam-sg* ogrecam ogrecam-lod0-jg -1 - ((ogrecam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6) - ) +(defskelgroup *ogrecam-sg* + ogrecam + ogrecam-lod0-jg + -1 + ((ogrecam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6)) (deftype plunger-lurker (process-drawable) - ((alt-actor entity-actor) - (got-hit symbol) - ) + ((alt-actor entity-actor) + (got-hit symbol)) (:states - plunger-lurker-die - plunger-lurker-flee - plunger-lurker-idle - plunger-lurker-plunge - ) - ) + plunger-lurker-die + plunger-lurker-flee + plunger-lurker-idle + plunger-lurker-plunge)) - -(defskelgroup *plunger-lurker-sg* plunger-lurker plunger-lurker-lod0-jg plunger-lurker-idle-ja - ((plunger-lurker-lod0-mg (meters 20)) - (plunger-lurker-lod1-mg (meters 40)) - (plunger-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 2 4 0 12) - ) +(defskelgroup *plunger-lurker-sg* + plunger-lurker + plunger-lurker-lod0-jg + plunger-lurker-idle-ja + ((plunger-lurker-lod0-mg (meters 20)) (plunger-lurker-lod1-mg (meters 40)) (plunger-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 2 4 0 12)) (defstate plunger-lurker-plunge (plunger-lurker) - :code (behavior () - (set-setting! 'allow-progress #f 0.0 0) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (while (or (not *target*) (logtest? (-> *target* state-flags) (state-flags being-attacked dying))) + :code + (behavior () + (set-setting! 'allow-progress #f 0.0 0) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (while (or (not *target*) (logtest? (-> *target* state-flags) (state-flags being-attacked dying))) + (suspend)) + (while (not (process-grab? *target*)) + (suspend)) + (let ((gp-1 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)))) + (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) + (ppointer->handle (when s5-0 + (let ((t9-7 (method-of-type othercam activate))) (t9-7 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000))) + (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) + (-> s5-0 ppointer)))) + (send-event (handle->process gp-1) + 'eval + (lambda :behavior manipy () + (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) + (set! (-> self draw status) v0-0) + (the-as uint v0-0)))) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 1) + (set! (-> a1-9 message) 'clone-and-kill-links) + (set! (-> a1-9 param 0) (the-as uint (process->handle self))) + (let ((t9-10 send-event-function) + (v1-34 (-> self alt-actor))) + (t9-10 (if v1-34 (-> v1-34 extra process)) a1-9))) + (send-event (-> gp-1 process 0) 'clone-copy-trans #f) + (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) + (ja-play-spooled-anim (new 'static + 'spool-anim + :name "plunger-lurker-blowup" + :index 7 + :parts 4 + :command-list + '((200 alive "tntbarrel-223") + (200 alive "tntbarrel-222") + (200 alive "tntbarrel-221") + (200 alive "tntbarrel-220") + (200 alive "tntbarrel-224") + (200 alive "tntbarrel-219") + (200 alive "tntbarrel-246") + (200 alive "tntbarrel-249") + (200 alive "tntbarrel-250") + (200 alive "tntbarrel-251") + (200 alive "tntbarrel-225") + (201 joint "cameraB") + (220 send-event "tntbarrel-223" 'die-big) + (230 send-event "tntbarrel-222" 'die-big) + (240 send-event "tntbarrel-221" 'die-big) + (240 send-event "tntbarrel-220" 'die-big) + (245 send-event "tntbarrel-224" 'die-big) + (250 send-event "tntbarrel-219" 'die-big) + (251 joint "cameraA") + (260 send-event "tntbarrel-246" 'die-big) + (325 send-event "tntbarrel-249" 'die-big) + (380 send-event "tntbarrel-250" 'die-big) + (410 send-event "tntbarrel-251" 'die-big) + (420 blackout 30) + (421 joint "cameraB") + (430 send-event "tntbarrel-225" 'die-big))) + (the-as art-joint-anim #f) + (the-as art-joint-anim plunger-lurker-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (if (handle->process gp-1) (deactivate (-> gp-1 process 0)))) + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 0) + (set! (-> a1-14 message) 'reset) + (let ((t9-15 send-event-function) + (v1-56 (-> self alt-actor))) + (t9-15 (if v1-56 (-> v1-56 extra process)) a1-14))) + (process-release? *target*) (suspend) - ) - (while (not (process-grab? *target*)) - (suspend) - ) - (let ((gp-1 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)) - ) - ) - (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) - (ppointer->handle (when s5-0 - (let ((t9-7 (method-of-type othercam activate))) - (t9-7 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000)) - ) - (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) - (-> s5-0 ppointer) - ) - ) - ) - (send-event - (handle->process gp-1) - 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) - (set! (-> self draw status) v0-0) - (the-as uint v0-0) - ) - ) - ) - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 1) - (set! (-> a1-9 message) 'clone-and-kill-links) - (set! (-> a1-9 param 0) (the-as uint (process->handle self))) - (let ((t9-10 send-event-function) - (v1-34 (-> self alt-actor)) - ) - (t9-10 - (if v1-34 - (-> v1-34 extra process) - ) - a1-9 - ) - ) - ) - (send-event (-> gp-1 process 0) 'clone-copy-trans #f) - (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "plunger-lurker-blowup" - :index 7 - :parts 4 - :command-list '((200 alive "tntbarrel-223") - (200 alive "tntbarrel-222") - (200 alive "tntbarrel-221") - (200 alive "tntbarrel-220") - (200 alive "tntbarrel-224") - (200 alive "tntbarrel-219") - (200 alive "tntbarrel-246") - (200 alive "tntbarrel-249") - (200 alive "tntbarrel-250") - (200 alive "tntbarrel-251") - (200 alive "tntbarrel-225") - (201 joint "cameraB") - (220 send-event "tntbarrel-223" 'die-big) - (230 send-event "tntbarrel-222" 'die-big) - (240 send-event "tntbarrel-221" 'die-big) - (240 send-event "tntbarrel-220" 'die-big) - (245 send-event "tntbarrel-224" 'die-big) - (250 send-event "tntbarrel-219" 'die-big) - (251 joint "cameraA") - (260 send-event "tntbarrel-246" 'die-big) - (325 send-event "tntbarrel-249" 'die-big) - (380 send-event "tntbarrel-250" 'die-big) - (410 send-event "tntbarrel-251" 'die-big) - (420 blackout 30) - (421 joint "cameraB") - (430 send-event "tntbarrel-225" 'die-big) - ) - ) - (the-as art-joint-anim #f) - (the-as art-joint-anim plunger-lurker-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (if (handle->process gp-1) - (deactivate (-> gp-1 process 0)) - ) - ) - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 0) - (set! (-> a1-14 message) 'reset) - (let ((t9-15 send-event-function) - (v1-56 (-> self alt-actor)) - ) - (t9-15 - (if v1-56 - (-> v1-56 extra process) - ) - a1-14 - ) - ) - ) - (process-release? *target*) - (suspend) - 0 - (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death)))) - (cleanup-for-death self) - (deactivate self) - (loop - (suspend) - ) - ) - :post ja-post - ) - -(defstate plunger-lurker-flee (plunger-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (let ((v0-0 #t)) - (set! (-> self got-hit) v0-0) - v0-0 - ) - ) - ) - ) - :trans (behavior () - (when (-> self got-hit) - (close-specific-task! (game-task plunger-lurker-hit) (task-status need-hint)) - (process-entity-status! self (entity-perm-status complete) #t) - (level-hint-spawn - (text-id ogre-plunger-lurker-resolution) - "sksp0321" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 474) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) + 0 + (send-event *target* 'attack-invinc #f (static-attack-info ((mode 'instant-death)))) (cleanup-for-death self) (deactivate self) - ) - ) - :code (behavior () - (ja-no-eval :group! plunger-lurker-notice-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! plunger-lurker-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post ja-post - ) + (loop (suspend))) + :post ja-post) -(defstate plunger-lurker-idle (plunger-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('plunge) - (logclear! (-> self mask) (process-mask actor-pause)) - (go plunger-lurker-plunge) - ) - ) - ) - :trans (behavior () - (spool-push *art-control* "plunger-lurker-blowup" 0 self -99.0) - (when (and *target* (< (vector-vector-distance-squared (-> self root trans) (target-pos 0)) 6710886400.0)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go plunger-lurker-flee) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! plunger-lurker-idle-ja :num! (seek!) :frame-num 0.0) +(defstate plunger-lurker-flee (plunger-lurker) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (let ((v0-0 #t)) (set! (-> self got-hit) v0-0) v0-0)))) + :trans + (behavior () + (when (-> self got-hit) + (close-specific-task! (game-task plunger-lurker-hit) (task-status need-hint)) + (process-entity-status! self (entity-perm-status complete) #t) + (level-hint-spawn (text-id ogre-plunger-lurker-resolution) "sksp0321" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self) + (deactivate self))) + :code + (behavior () + (ja-no-eval :group! plunger-lurker-notice-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (ja-no-eval :group! plunger-lurker-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop (suspend))) + :post ja-post) + +(defstate plunger-lurker-idle (plunger-lurker) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('plunge) (logclear! (-> self mask) (process-mask actor-pause)) (go plunger-lurker-plunge)))) + :trans + (behavior () + (spool-push *art-control* "plunger-lurker-blowup" 0 self -99.0) + (when (and *target* (< (vector-vector-distance-squared (-> self root trans) (target-pos 0)) 6710886400.0)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go plunger-lurker-flee))) + :code + (behavior () + (loop (ja-no-eval :group! plunger-lurker-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate plunger-lurker-die (plunger-lurker) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (suspend) - 0 - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (suspend) + 0)) (defmethod init-from-entity! ((this plunger-lurker) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -262,150 +193,112 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *plunger-lurker-sg* '()) + (initialize-skeleton this *plunger-lurker-sg* ()) (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this got-hit) #f) (quaternion-rotate-y! (-> this root quat) (-> this root quat) -16384.0) (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go plunger-lurker-die) - (go plunger-lurker-idle) - ) - (none) - ) + (go plunger-lurker-die) + (go plunger-lurker-idle)) + (none)) (deftype flying-lurker (process-drawable) - ((curve-position float) - (speed float) - (tangent vector :inline) - (anim-blend float) - (y-offset float) - (y-offset-desired float) - (y-vel float) - (last-look-time time-frame) - (time-to-next-look time-frame) - (take-off symbol) - (race-seconds float) - (race-start-time time-frame) - (rank int32) - (alt-actor entity-actor) - (alt-trans vector) - (shadow-backup shadow-geo) - (try-count uint8) - (try-counted symbol) - (default-bounds vector :inline) - ) + ((curve-position float) + (speed float) + (tangent vector :inline) + (anim-blend float) + (y-offset float) + (y-offset-desired float) + (y-vel float) + (last-look-time time-frame) + (time-to-next-look time-frame) + (take-off symbol) + (race-seconds float) + (race-start-time time-frame) + (rank int32) + (alt-actor entity-actor) + (alt-trans vector) + (shadow-backup shadow-geo) + (try-count uint8) + (try-counted symbol) + (default-bounds vector :inline)) (:methods - (flying-lurker-method-20 (_type_) none) - ) - (:states - (flying-lurker-clone handle string) - flying-lurker-die - flying-lurker-fly - flying-lurker-idle - flying-lurker-sleep - flying-lurker-start - ) - ) + (flying-lurker-method-20 (_type_) none)) + (:states (flying-lurker-clone handle string) + flying-lurker-die + flying-lurker-fly + flying-lurker-idle + flying-lurker-sleep + flying-lurker-start)) - -(defskelgroup *flying-lurker-sg* flying-lurker flying-lurker-lod0-jg flying-lurker-fly-ja - ((flying-lurker-lod0-mg (meters 20)) - (flying-lurker-lod1-mg (meters 40)) - (flying-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 2 0 6) - :longest-edge (meters 2.3) - :shadow flying-lurker-shadow-mg - ) +(defskelgroup *flying-lurker-sg* + flying-lurker + flying-lurker-lod0-jg + flying-lurker-fly-ja + ((flying-lurker-lod0-mg (meters 20)) (flying-lurker-lod1-mg (meters 40)) (flying-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6) + :longest-edge (meters 2.3) + :shadow flying-lurker-shadow-mg) (defmethod flying-lurker-method-20 ((this flying-lurker)) (with-pp (let ((s5-0 (-> this draw shadow-ctrl)) - (s4-0 #f) - ) + (s4-0 #f)) (when (-> this draw shadow) (when (or (logtest? (-> this draw status) (draw-status was-drawn)) - (< (vector-vector-xz-distance-squared (-> this root trans) (camera-pos)) 10485760000.0) - ) + (< (vector-vector-xz-distance-squared (-> this root trans) (camera-pos)) 10485760000.0)) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> this root trans quad)) (+! (-> a1-1 y) -8192.0) (set-vector! a2-0 0.0 -81920.0 0.0 1.0) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-1 - a2-0 - 8192.0 - (collide-kind background) - pp - s3-1 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-1 + a2-0 + 8192.0 + (collide-kind background) + pp + s3-1 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> s3-1 intersect w) 8192.0) (when (and (sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect))) - (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos))) - ) + (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos)))) (set! s4-0 #t) - (let ((v1-17 s5-0)) - (logclear! (-> v1-17 settings flags) (shadow-flags disable-draw)) - ) + (let ((v1-17 s5-0)) (logclear! (-> v1-17 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-19 s5-0)) - (set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y)))) - ) + (let ((v1-19 s5-0)) (set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y))))) 0 - (let ((v1-21 s5-0)) - (set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y)))) - ) + (let ((v1-21 s5-0)) (set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y))))) 0 (let ((s2-2 (new 'stack-no-clear 'bounding-box))) (let ((s1-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s1-1 (-> this node-list data 4)) (vector+float! (-> s2-2 min) s1-1 -18432.0) - (vector+float! (-> s2-2 max) s1-1 18432.0) - ) + (vector+float! (-> s2-2 max) s1-1 18432.0)) (add-spheres! s2-2 (the-as (inline-array sphere) (-> s3-1 intersect)) 1) (let ((f0-17 (* 0.5 (vector-vector-distance (-> s2-2 min) (-> s2-2 max))))) - (set-vector! - (-> this draw bounds) - (* 0.5 (+ (-> s2-2 min x) (-> s2-2 max x))) - (* 0.5 (+ (-> s2-2 min y) (-> s2-2 max y))) - (* 0.5 (+ (-> s2-2 min z) (-> s2-2 max z))) - 1.0 - ) + (set-vector! (-> this draw bounds) + (* 0.5 (+ (-> s2-2 min x) (-> s2-2 max x))) + (* 0.5 (+ (-> s2-2 min y) (-> s2-2 max y))) + (* 0.5 (+ (-> s2-2 min z) (-> s2-2 max z))) + 1.0) (vector-! (-> this draw bounds) (-> this draw bounds) (-> this root trans)) - (set! (-> this draw bounds w) f0-17) - ) - ) + (set! (-> this draw bounds w) f0-17))) (set! (-> this draw origin-joint-index) (the-as uint 0)) - 0 - ) - ) - ) - ) - ) + 0))))) (when (not s4-0) (logior! (-> s5-0 settings flags) (shadow-flags disable-draw)) 0 (set! (-> this draw bounds quad) (-> this default-bounds quad)) - (set! (-> this draw origin-joint-index) (the-as uint 4)) - ) - ) - (none) - ) - ) + (set! (-> this draw origin-joint-index) (the-as uint 4)))) + (none))) (defbehavior flying-lurker-inc-try-count flying-lurker () (when (not (-> self try-counted)) @@ -413,89 +306,57 @@ (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (seekl! (-> gp-0 user-int8 0) 255 1) - (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))) - ) - ) + (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))))) 0 - (none) - ) + (none)) (defun play-movie? () - (= (get-task-status (game-task plunger-lurker-hit)) (task-status unknown)) - ) + (= (get-task-status (game-task plunger-lurker-hit)) (task-status unknown))) (defstate flying-lurker-die (flying-lurker) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate flying-lurker-sleep (flying-lurker) - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self draw status) (draw-status hidden)) + (loop (suspend)))) (defbehavior first? flying-lurker () - (not (-> self link prev)) - ) + (not (-> self link prev))) (defbehavior flying-lurker-calc-speed flying-lurker ((arg0 meters) (arg1 meters) (arg2 meters) (arg3 meters)) (let ((s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> self tangent quad)) 0.0 (let ((f30-0 (vector-length s4-1))) (set! (-> s4-1 y) 0.0) (set! (-> s3-0 y) 0.0) (let ((f28-0 (vector-dot s4-1 s3-0))) - (let ((f26-0 - (* (path-distance (-> self path)) - (/ (the float (- (-> *display* game-frame-counter) (-> self race-start-time))) (-> self race-seconds)) - ) - ) - (f0-6 (* (path-distance (-> self path)) (-> self curve-position))) - ) + (let ((f26-0 (* (path-distance (-> self path)) + (/ (the float (- (-> *display* game-frame-counter) (-> self race-start-time))) (-> self race-seconds)))) + (f0-6 (* (path-distance (-> self path)) (-> self curve-position)))) 0.0 (let* ((f1-6 (* -81920.0 (the float (-> self rank)))) - (f0-10 (+ (if (< f26-0 f0-6) - (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) - (fmin (+ 245760.0 f1-6) (- f26-0 f0-6)) - ) - f28-0 - ) - ) + (f0-10 (+ (if (< f26-0 f0-6) (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) (fmin (+ 245760.0 f1-6) (- f26-0 f0-6))) f28-0)) (f1-10 (* 0.000012207031 f0-10)) - (f0-12 (fmax -0.5 (fmin 0.5 f1-10))) - ) - (set! (-> self speed) (+ (* (+ 0.5 f0-12) (- arg2 arg3)) arg3)) - ) - ) + (f0-12 (fmax -0.5 (fmin 0.5 f1-10)))) + (set! (-> self speed) (+ (* (+ 0.5 f0-12) (- arg2 arg3)) arg3)))) ;; og:preserve-this PAL patch here (let ((f0-16 65536.0)) - (if (and (< 0.6332 (-> self curve-position)) (< (-> self curve-position) 0.6928)) - (set! f0-16 40960.0) - ) - (set! (-> self y-offset-desired) (fmin f0-16 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0)))))) - ) - ) - ) - ) - (none) - ) + (if (and (< 0.6332 (-> self curve-position)) (< (-> self curve-position) 0.6928)) (set! f0-16 40960.0)) + (set! (-> self y-offset-desired) (fmin f0-16 (fmax 0.0 (* 1.6 (- 40960.0 (fmin (- f28-0) f30-0)))))))))) + (none)) (defbehavior flying-lurker-move flying-lurker () (+! (-> self curve-position) (/ (the float (* (- (current-time) (-> *display* old-base-frame-counter)) (the int (-> self speed)))) - (path-distance (-> self path)) - ) - ) + (path-distance (-> self path)))) (set! (-> self curve-position) (fmin 1.0 (fmax 0.0 (-> self curve-position)))) (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) (cond @@ -505,43 +366,26 @@ (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset-desired) (-> self y-offset)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) ((< (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset)))) (set! (-> self y-vel) (fmin 436.90668 (-> self y-vel))) (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) - ) + (set! (-> self y-vel) 0.0)))) (+! (-> self root trans y) (-> self y-offset)) (+! (-> self root trans y) 12288.0) - (none) - ) + (none)) (defbehavior flying-lurker-rotate flying-lurker () (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'matrix))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) - (eval-path-curve! - (-> self path) - s3-0 - (+ (/ 12288.0 (path-distance (-> self path))) (-> self curve-position)) - 'interp - ) - (eval-path-curve! - (-> self path) - s4-0 - (+ (/ 4096.0 (path-distance (-> self path))) (-> self curve-position)) - 'interp - ) + (eval-path-curve! (-> self path) s3-0 (+ (/ 12288.0 (path-distance (-> self path))) (-> self curve-position)) 'interp) + (eval-path-curve! (-> self path) s4-0 (+ (/ 4096.0 (path-distance (-> self path))) (-> self curve-position)) 'interp) (vector-! s3-0 s3-0 (-> self root trans)) (vector-! s4-0 s4-0 (-> self root trans)) (set! (-> s3-0 y) 0.0) @@ -549,192 +393,128 @@ (vector-normalize! s3-0 1.0) (vector-normalize! s4-0 1.0) (vector-cross! s4-0 s4-0 s3-0) - (set! (-> self anim-blend) (asin (-> s4-0 y))) - ) + (set! (-> self anim-blend) (asin (-> s4-0 y)))) (set! (-> self anim-blend) (* 0.0010986328 (-> self anim-blend))) (set! (-> self anim-blend) (fmax -1.0 (fmin 1.0 (-> self anim-blend)))) (set! (-> self anim-blend) (sin (* 16384.0 (-> self anim-blend)))) (forward-down->inv-matrix gp-0 (-> self tangent) (new 'static 'vector :y -1.0)) (matrix-rotate-z! s5-0 (* -10922.667 (-> self anim-blend))) - (matrix*! gp-0 s5-0 gp-0) - ) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix*! gp-0 s5-0 gp-0)) + (matrix->quaternion (-> self root quat) gp-0))) (defbehavior flying-lurker-calc-anim-speed flying-lurker () (let* ((f0-1 (fabs (-> self speed))) (f0-2 (* 0.07324219 f0-1)) (f0-3 (+ -15.0 f0-2)) - (f1-3 (* 0.13333334 f0-3)) - ) - (fmin 1.5 (fmax 0.9 f1-3)) - ) - ) + (f1-3 (* 0.13333334 f0-3))) + (fmin 1.5 (fmax 0.9 f1-3)))) (defstate flying-lurker-fly (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone-and-kill-links) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'sleep) - (let ((t9-0 send-event-function) - (v1-3 (-> self link next)) - ) - (t9-0 - (if v1-3 - (-> v1-3 extra process) - ) - a1-1 - ) - ) - ) - (go flying-lurker-clone (the-as handle (-> block param 0)) "") - ) - (('die) - (let ((v1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-7 from) proc) - (set! (-> v1-7 num-params) argc) - (set! (-> v1-7 message) message) - (set! (-> v1-7 param 0) (-> block param 0)) - (set! (-> v1-7 param 1) (-> block param 1)) - (set! (-> v1-7 param 2) (-> block param 2)) - (set! (-> v1-7 param 3) (-> block param 3)) - (set! (-> v1-7 param 4) (-> block param 4)) - (set! (-> v1-7 param 5) (-> block param 5)) - (set! (-> v1-7 param 6) (-> block param 6)) - (let ((t9-2 send-event-function) - (a1-3 (-> self link next)) - ) - (t9-2 - (if a1-3 - (-> a1-3 extra process) - ) - v1-7 - ) - ) - ) - (cleanup-for-death self) - (deactivate self) - ) - (('sleep) - (let ((v1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-12 from) proc) - (set! (-> v1-12 num-params) argc) - (set! (-> v1-12 message) message) - (set! (-> v1-12 param 0) (-> block param 0)) - (set! (-> v1-12 param 1) (-> block param 1)) - (set! (-> v1-12 param 2) (-> block param 2)) - (set! (-> v1-12 param 3) (-> block param 3)) - (set! (-> v1-12 param 4) (-> block param 4)) - (set! (-> v1-12 param 5) (-> block param 5)) - (set! (-> v1-12 param 6) (-> block param 6)) - (let ((t9-5 send-event-function) - (a1-5 (-> self link next)) - ) - (t9-5 - (if a1-5 - (-> a1-5 extra process) - ) - v1-12 - ) - ) - ) - (go flying-lurker-sleep) - ) - (('reset) - (let ((v1-15 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-15 from) proc) - (set! (-> v1-15 num-params) argc) - (set! (-> v1-15 message) message) - (set! (-> v1-15 param 0) (-> block param 0)) - (set! (-> v1-15 param 1) (-> block param 1)) - (set! (-> v1-15 param 2) (-> block param 2)) - (set! (-> v1-15 param 3) (-> block param 3)) - (set! (-> v1-15 param 4) (-> block param 4)) - (set! (-> v1-15 param 5) (-> block param 5)) - (set! (-> v1-15 param 6) (-> block param 6)) - (let ((t9-7 send-event-function) - (a1-7 (-> self link next)) - ) - (t9-7 - (if a1-7 - (-> a1-7 extra process) - ) - v1-15 - ) - ) - ) - (deactivate self) - ) - ) - ) - :enter (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (flying-lurker-method-20 self) - (when (not (movie?)) - (flying-lurker-calc-speed (meters 15) (meters 30) (meters 0.11666667) (meters 0.083333336)) - (flying-lurker-move) - (flying-lurker-rotate) - (when (and (-> self alt-actor) - (or (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) - (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))) - ) - ) - (set-or-clear-status! (-> self alt-actor) (entity-perm-status dead) #f) - (entity-birth-no-kill (-> self alt-actor)) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'plunge) - (let ((t9-10 send-event-function) - (v1-13 (-> self alt-actor)) - ) - (t9-10 - (if v1-13 - (-> v1-13 extra process) - ) - a1-4 - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? flying-lurker-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! flying-lurker-fly-ja) - ) - (ja :num! (loop! (flying-lurker-calc-anim-speed))) - (suspend) - (when (time-elapsed? (-> self last-look-time) (-> self time-to-next-look)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! flying-lurker-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-look-time)) - (let* ((f30-0 300.0) - (f28-0 3.0) - (f26-0 5.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as float (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-look) (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 v1-42))))))) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone-and-kill-links) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'sleep) + (let ((t9-0 send-event-function) + (v1-3 (-> self link next))) + (t9-0 (if v1-3 (-> v1-3 extra process)) a1-1))) + (go flying-lurker-clone (the-as handle (-> block param 0)) "")) + (('die) + (let ((v1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-7 from) proc) + (set! (-> v1-7 num-params) argc) + (set! (-> v1-7 message) message) + (set! (-> v1-7 param 0) (-> block param 0)) + (set! (-> v1-7 param 1) (-> block param 1)) + (set! (-> v1-7 param 2) (-> block param 2)) + (set! (-> v1-7 param 3) (-> block param 3)) + (set! (-> v1-7 param 4) (-> block param 4)) + (set! (-> v1-7 param 5) (-> block param 5)) + (set! (-> v1-7 param 6) (-> block param 6)) + (let ((t9-2 send-event-function) + (a1-3 (-> self link next))) + (t9-2 (if a1-3 (-> a1-3 extra process)) v1-7))) + (cleanup-for-death self) + (deactivate self)) + (('sleep) + (let ((v1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-12 from) proc) + (set! (-> v1-12 num-params) argc) + (set! (-> v1-12 message) message) + (set! (-> v1-12 param 0) (-> block param 0)) + (set! (-> v1-12 param 1) (-> block param 1)) + (set! (-> v1-12 param 2) (-> block param 2)) + (set! (-> v1-12 param 3) (-> block param 3)) + (set! (-> v1-12 param 4) (-> block param 4)) + (set! (-> v1-12 param 5) (-> block param 5)) + (set! (-> v1-12 param 6) (-> block param 6)) + (let ((t9-5 send-event-function) + (a1-5 (-> self link next))) + (t9-5 (if a1-5 (-> a1-5 extra process)) v1-12))) + (go flying-lurker-sleep)) + (('reset) + (let ((v1-15 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-15 from) proc) + (set! (-> v1-15 num-params) argc) + (set! (-> v1-15 message) message) + (set! (-> v1-15 param 0) (-> block param 0)) + (set! (-> v1-15 param 1) (-> block param 1)) + (set! (-> v1-15 param 2) (-> block param 2)) + (set! (-> v1-15 param 3) (-> block param 3)) + (set! (-> v1-15 param 4) (-> block param 4)) + (set! (-> v1-15 param 5) (-> block param 5)) + (set! (-> v1-15 param 6) (-> block param 6)) + (let ((t9-7 send-event-function) + (a1-7 (-> self link next))) + (t9-7 (if a1-7 (-> a1-7 extra process)) v1-15))) + (deactivate self)))) + :enter + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (flying-lurker-method-20 self) + (when (not (movie?)) + (flying-lurker-calc-speed (meters 15) (meters 30) (meters 0.11666667) (meters 0.083333336)) + (flying-lurker-move) + (flying-lurker-rotate) + (when (and (-> self alt-actor) + (or (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) + (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))))) + (set-or-clear-status! (-> self alt-actor) (entity-perm-status dead) #f) + (entity-birth-no-kill (-> self alt-actor)) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'plunge) + (let ((t9-10 send-event-function) + (v1-13 (-> self alt-actor))) + (t9-10 (if v1-13 (-> v1-13 extra process)) a1-4)))))) + :code + (behavior () + (loop (when (not (ja-group? flying-lurker-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! flying-lurker-fly-ja)) + (ja :num! (loop! (flying-lurker-calc-anim-speed))) + (suspend) + (when (time-elapsed? (-> self last-look-time) (-> self time-to-next-look)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! flying-lurker-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-look-time)) + (let* ((f30-0 300.0) + (f28-0 3.0) + (f26-0 5.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as float (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-look) (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 v1-42))))))))))) + :post ja-post) (defbehavior flying-lurker-handler flying-lurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -748,126 +528,65 @@ (set! (-> a1-1 param 0) (the-as uint (/ (the-as int (-> arg3 param 0)) 16))) (set! (-> a1-1 param 1) (-> arg3 param 1)) (let ((t9-1 send-event-function) - (v1-11 (-> self link next)) - ) - (t9-1 - (if v1-11 - (-> v1-11 extra process) - ) - a1-1 - ) - ) - ) - ) + (v1-11 (-> self link next))) + (t9-1 (if v1-11 (-> v1-11 extra process)) a1-1)))) (let* ((v1-14 (-> arg3 param 0)) (a0-4 (-> arg3 param 1)) - (v1-15 (logand v1-14 3)) - ) + (v1-15 (logand v1-14 3))) (set! (-> self rank) (the-as int v1-15)) (cond ((< 15 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 33000.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 34500.0) - ) - (else - (set! (-> self race-seconds) 36000.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 33000.0)) + ((= v1-15 1) (set! (-> self race-seconds) 34500.0)) + (else (set! (-> self race-seconds) 36000.0)))) ((< 10 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 31800.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 33300.0) - ) - (else - (set! (-> self race-seconds) 34800.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 31800.0)) + ((= v1-15 1) (set! (-> self race-seconds) 33300.0)) + (else (set! (-> self race-seconds) 34800.0)))) ((< 5 (the-as int a0-4)) (cond - ((zero? v1-15) - (set! (-> self race-seconds) 30600.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 32100.0) - ) - (else - (set! (-> self race-seconds) 33600.0) - ) - ) - ) - ((zero? v1-15) - (set! (-> self race-seconds) 30000.0) - ) - ((= v1-15 1) - (set! (-> self race-seconds) 31500.0) - ) - (else - (set! (-> self race-seconds) 33000.0) - ) - ) - ) + ((zero? v1-15) (set! (-> self race-seconds) 30600.0)) + ((= v1-15 1) (set! (-> self race-seconds) 32100.0)) + (else (set! (-> self race-seconds) 33600.0)))) + ((zero? v1-15) (set! (-> self race-seconds) 30000.0)) + ((= v1-15 1) (set! (-> self race-seconds) 31500.0)) + (else (set! (-> self race-seconds) 33000.0)))) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self race-start-time) (-> *display* game-frame-counter)) - (go flying-lurker-fly) - ) - ) - ) + (go flying-lurker-fly)))) (defbehavior flying-lurker-play-intro flying-lurker () (logclear! (-> self mask) (process-mask actor-pause)) (close-specific-task! (game-task plunger-lurker-hit) (task-status unknown)) (while (and *target* (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) (while (not (process-grab? *target*)) - (suspend) - ) - (kill-current-level-hint '(notice) '() 'exit) + (suspend)) + (kill-current-level-hint '(notice) () 'exit) (while (or (-> *setting-control* current talking) (-> *setting-control* current spooling) (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - ) - (suspend) - ) + (!= (-> *level* loading-level) (-> *level* level-default))) + (suspend)) (suspend) - (kill-current-level-hint '() '() 'die) + (kill-current-level-hint () () 'die) (suspend) - (let ((gp-1 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)) - ) - ) + (let ((gp-1 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *ogrecam-sg* #f :to self)))) (let ((s5-0 (the-as othercam (get-process *default-dead-pool* othercam #x4000)))) (ppointer->handle (when s5-0 - (let ((t9-8 (method-of-type othercam activate))) - (t9-8 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000)) - ) + (let ((t9-8 (method-of-type othercam activate))) (t9-8 s5-0 (-> gp-1 process 0) 'othercam (the-as pointer #x70004000))) (run-now-in-process s5-0 othercam-init-by-other (-> gp-1 process 0) 4 #f #t) - (-> s5-0 ppointer) - ) - ) - ) - (send-event - (handle->process gp-1) - 'eval - (lambda :behavior manipy () (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) - (set! (-> self draw status) v0-0) - (the-as uint v0-0) - ) - ) - ) + (-> s5-0 ppointer)))) + (send-event (handle->process gp-1) + 'eval + (lambda :behavior manipy () + (let ((v0-0 (logior (-> self draw status) (draw-status skip-bones)))) + (set! (-> self draw status) v0-0) + (the-as uint v0-0)))) (send-event (-> gp-1 process 0) 'clone-copy-trans #f) (send-event (-> gp-1 process 0) 'anim-mode 'clone-anim) (let ((a1-12 (new 'stack-no-clear 'event-message-block))) @@ -877,314 +596,190 @@ (set! (-> a1-12 param 0) (the-as uint (process->handle self))) (set! (-> a1-12 param 1) (the-as uint 2)) (let ((t9-13 send-event-function) - (v1-58 (-> self link next)) - ) - (t9-13 - (if v1-58 - (-> v1-58 extra process) - ) - a1-12 - ) - ) - ) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "flying-lurker-intro" :index 7 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (if (handle->process gp-1) - (deactivate (-> gp-1 process 0)) - ) - ) + (v1-58 (-> self link next))) + (t9-13 (if v1-58 (-> v1-58 extra process)) a1-12))) + (ja-play-spooled-anim (new 'static 'spool-anim :name "flying-lurker-intro" :index 7 :parts 2 :command-list ()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (if (handle->process gp-1) (deactivate (-> gp-1 process 0)))) (process-release? *target*) - (process-spawn-function - process - (lambda :behavior process - () - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 0.1)) - (suspend) - ) - ) + (process-spawn-function process + (lambda :behavior process () + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 0.1)) (suspend))) (level-hint-spawn (text-id ogre-race-hint) "asstvb24" (the-as entity #f) *entity-pool* (game-task none)) - (none) - ) - :to self - ) - (none) - ) + (none)) + :to + self) + (none)) (defstate flying-lurker-start (flying-lurker) :event flying-lurker-handler - :exit (behavior () - (remove-setting! 'allow-progress) - ) - :code (behavior () - (when (play-movie?) - (set-setting! 'allow-progress #f 0.0 0) - (flying-lurker-play-intro) - ) - (flying-lurker-inc-try-count) - (ja-channel-set! 1) - (ja :group! flying-lurker-fly-ja) - (let* ((v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-9 (the-as float (logior #x3f800000 v1-8))) - (f0-2 (+ -1.0 v1-9)) - ) - (cond - ((< 0.8333333 f0-2) - (send-event self 'fly-away 18 (-> self try-count)) - ) - ((< 0.6666667 f0-2) - (send-event self 'fly-away 33 (-> self try-count)) - ) - ((< 0.5 f0-2) - (send-event self 'fly-away 258 (-> self try-count)) - ) - ((< 0.33333334 f0-2) - (send-event self 'fly-away 288 (-> self try-count)) - ) - ((< 0.16666667 f0-2) - (send-event self 'fly-away 513 (-> self try-count)) - ) - (else - (send-event self 'fly-away 528 (-> self try-count)) - ) - ) - ) - ) - :post ja-post - ) + :exit + (behavior () + (remove-setting! 'allow-progress)) + :code + (behavior () + (when (play-movie?) + (set-setting! 'allow-progress #f 0.0 0) + (flying-lurker-play-intro)) + (flying-lurker-inc-try-count) + (ja-channel-set! 1) + (ja :group! flying-lurker-fly-ja) + (let* ((v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-9 (the-as float (logior #x3f800000 v1-8))) + (f0-2 (+ -1.0 v1-9))) + (cond + ((< 0.8333333 f0-2) (send-event self 'fly-away 18 (-> self try-count))) + ((< 0.6666667 f0-2) (send-event self 'fly-away 33 (-> self try-count))) + ((< 0.5 f0-2) (send-event self 'fly-away 258 (-> self try-count))) + ((< 0.33333334 f0-2) (send-event self 'fly-away 288 (-> self try-count))) + ((< 0.16666667 f0-2) (send-event self 'fly-away 513 (-> self try-count))) + (else (send-event self 'fly-away 528 (-> self try-count)))))) + :post ja-post) (defstate flying-lurker-clone (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (let ((v1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-1 from) proc) - (set! (-> v1-1 num-params) argc) - (set! (-> v1-1 message) message) - (set! (-> v1-1 param 0) (-> block param 0)) - (set! (-> v1-1 param 1) (-> block param 1)) - (set! (-> v1-1 param 2) (-> block param 2)) - (set! (-> v1-1 param 3) (-> block param 3)) - (set! (-> v1-1 param 4) (-> block param 4)) - (set! (-> v1-1 param 5) (-> block param 5)) - (set! (-> v1-1 param 6) (-> block param 6)) - (let ((t9-0 send-event-function) - (a1-1 (-> self link next)) - ) - (t9-0 - (if a1-1 - (-> a1-1 extra process) - ) - v1-1 - ) - ) - ) - (cleanup-for-death self) - (deactivate self) - ) - (('sleep) - (let ((v1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-6 from) proc) - (set! (-> v1-6 num-params) argc) - (set! (-> v1-6 message) message) - (set! (-> v1-6 param 0) (-> block param 0)) - (set! (-> v1-6 param 1) (-> block param 1)) - (set! (-> v1-6 param 2) (-> block param 2)) - (set! (-> v1-6 param 3) (-> block param 3)) - (set! (-> v1-6 param 4) (-> block param 4)) - (set! (-> v1-6 param 5) (-> block param 5)) - (set! (-> v1-6 param 6) (-> block param 6)) - (let ((t9-3 send-event-function) - (a1-3 (-> self link next)) - ) - (t9-3 - (if a1-3 - (-> a1-3 extra process) - ) - v1-6 - ) - ) - ) - (go flying-lurker-sleep) - ) - (('reset) - (let ((v1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> v1-9 from) proc) - (set! (-> v1-9 num-params) argc) - (set! (-> v1-9 message) message) - (set! (-> v1-9 param 0) (-> block param 0)) - (set! (-> v1-9 param 1) (-> block param 1)) - (set! (-> v1-9 param 2) (-> block param 2)) - (set! (-> v1-9 param 3) (-> block param 3)) - (set! (-> v1-9 param 4) (-> block param 4)) - (set! (-> v1-9 param 5) (-> block param 5)) - (set! (-> v1-9 param 6) (-> block param 6)) - (let ((t9-5 send-event-function) - (a1-5 (-> self link next)) - ) - (t9-5 - (if a1-5 - (-> a1-5 extra process) - ) - v1-9 - ) - ) - ) - (deactivate self) - ) - (else - (flying-lurker-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (ja-channel-set! 0) - ) - :code (behavior ((arg0 handle) (arg1 string)) - (clone-anim arg0 3 #t arg1) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) + (let ((v1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-1 from) proc) + (set! (-> v1-1 num-params) argc) + (set! (-> v1-1 message) message) + (set! (-> v1-1 param 0) (-> block param 0)) + (set! (-> v1-1 param 1) (-> block param 1)) + (set! (-> v1-1 param 2) (-> block param 2)) + (set! (-> v1-1 param 3) (-> block param 3)) + (set! (-> v1-1 param 4) (-> block param 4)) + (set! (-> v1-1 param 5) (-> block param 5)) + (set! (-> v1-1 param 6) (-> block param 6)) + (let ((t9-0 send-event-function) + (a1-1 (-> self link next))) + (t9-0 (if a1-1 (-> a1-1 extra process)) v1-1))) + (cleanup-for-death self) + (deactivate self)) + (('sleep) + (let ((v1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-6 from) proc) + (set! (-> v1-6 num-params) argc) + (set! (-> v1-6 message) message) + (set! (-> v1-6 param 0) (-> block param 0)) + (set! (-> v1-6 param 1) (-> block param 1)) + (set! (-> v1-6 param 2) (-> block param 2)) + (set! (-> v1-6 param 3) (-> block param 3)) + (set! (-> v1-6 param 4) (-> block param 4)) + (set! (-> v1-6 param 5) (-> block param 5)) + (set! (-> v1-6 param 6) (-> block param 6)) + (let ((t9-3 send-event-function) + (a1-3 (-> self link next))) + (t9-3 (if a1-3 (-> a1-3 extra process)) v1-6))) + (go flying-lurker-sleep)) + (('reset) + (let ((v1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> v1-9 from) proc) + (set! (-> v1-9 num-params) argc) + (set! (-> v1-9 message) message) + (set! (-> v1-9 param 0) (-> block param 0)) + (set! (-> v1-9 param 1) (-> block param 1)) + (set! (-> v1-9 param 2) (-> block param 2)) + (set! (-> v1-9 param 3) (-> block param 3)) + (set! (-> v1-9 param 4) (-> block param 4)) + (set! (-> v1-9 param 5) (-> block param 5)) + (set! (-> v1-9 param 6) (-> block param 6)) + (let ((t9-5 send-event-function) + (a1-5 (-> self link next))) + (t9-5 (if a1-5 (-> a1-5 extra process)) v1-9))) + (deactivate self)) + (else (flying-lurker-handler proc argc message block)))) + :exit + (behavior () + (ja-channel-set! 0)) + :code + (behavior ((arg0 handle) (arg1 string)) + (clone-anim arg0 3 #t arg1))) (defstate flying-lurker-idle (flying-lurker) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('saw-player) - (set! (-> self take-off) #t) - (when (-> self link prev) - (entity-birth-no-kill (-> self link prev)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) proc) - (set! (-> a1-1 num-params) argc) - (set! (-> a1-1 message) message) - (set! (-> a1-1 param 0) (-> block param 0)) - (set! (-> a1-1 param 1) (-> block param 1)) - (set! (-> a1-1 param 2) (-> block param 2)) - (set! (-> a1-1 param 3) (-> block param 3)) - (set! (-> a1-1 param 4) (-> block param 4)) - (set! (-> a1-1 param 5) (-> block param 5)) - (set! (-> a1-1 param 6) (-> block param 6)) - (let ((t9-1 send-event-function) - (v1-13 (-> self link prev)) - ) - (t9-1 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - (('clone) - (when (-> self link next) - (entity-birth-no-kill (-> self link next)) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'clone) - (set! (-> a1-2 param 0) (-> block param 0)) - (set! (-> a1-2 param 1) (+ (-> block param 1) -1)) - (let ((t9-3 send-event-function) - (v1-25 (-> self link next)) - ) - (t9-3 - (if v1-25 - (-> v1-25 extra process) - ) - a1-2 - ) - ) - ) - ) - (case (-> block param 1) - ((2) - (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-b-") - ) - ((1) - (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-c-") - ) - ) - ) - (else - (flying-lurker-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) - (if (and (-> self take-off) (first?)) - (go flying-lurker-start) - ) - ) - :code (behavior () - (local-vars (gp-0 int) (f30-0 float)) - 1.0 - 0 - (cond - ((not (-> self link next)) - (set! f30-0 0.9) - (set! gp-0 0) - ) - ((not (-> self link prev)) - (set! f30-0 1.0) - (set! gp-0 5) - ) - (else - (set! f30-0 1.2) - (set! gp-0 11) - ) - ) - (loop + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('saw-player) + (set! (-> self take-off) #t) + (when (-> self link prev) + (entity-birth-no-kill (-> self link prev)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) proc) + (set! (-> a1-1 num-params) argc) + (set! (-> a1-1 message) message) + (set! (-> a1-1 param 0) (-> block param 0)) + (set! (-> a1-1 param 1) (-> block param 1)) + (set! (-> a1-1 param 2) (-> block param 2)) + (set! (-> a1-1 param 3) (-> block param 3)) + (set! (-> a1-1 param 4) (-> block param 4)) + (set! (-> a1-1 param 5) (-> block param 5)) + (set! (-> a1-1 param 6) (-> block param 6)) + (let ((t9-1 send-event-function) + (v1-13 (-> self link prev))) + (t9-1 (if v1-13 (-> v1-13 extra process)) a1-1))))) + (('clone) + (when (-> self link next) + (entity-birth-no-kill (-> self link next)) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'clone) + (set! (-> a1-2 param 0) (-> block param 0)) + (set! (-> a1-2 param 1) (+ (-> block param 1) -1)) + (let ((t9-3 send-event-function) + (v1-25 (-> self link next))) + (t9-3 (if v1-25 (-> v1-25 extra process)) a1-2)))) + (case (-> block param 1) + ((2) (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-b-")) + ((1) (go flying-lurker-clone (the-as handle (-> block param 0)) "flying-lurker-c-")))) + (else (flying-lurker-handler proc argc message block)))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) + (if (and (-> self take-off) (first?)) (go flying-lurker-start))) + :code + (behavior () + (local-vars (gp-0 int) (f30-0 float)) + 1.0 + 0 (cond - ((play-movie?) - (ja-channel-set! 0) - (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go flying-lurker-die) - ) - (when (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (process-grab? *target*) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 1)) + ((not (-> self link next)) (set! f30-0 0.9) (set! gp-0 0)) + ((not (-> self link prev)) (set! f30-0 1.0) (set! gp-0 5)) + (else (set! f30-0 1.2) (set! gp-0 11))) + (loop (cond + ((play-movie?) + (ja-channel-set! 0) + (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) (go flying-lurker-die)) + (when (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (process-grab? *target*) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 1)) (suspend))) + (process-release? *target*) + (send-event self 'saw-player)) (suspend) - ) - ) - (process-release? *target*) - (send-event self 'saw-player) - ) - (suspend) - 0 - ) - (else - (ja :group! flying-lurker-fly-ja) - (ja-no-eval :group! flying-lurker-fly-ja :num! (seek! max f30-0) :frame-num (the float gp-0)) - (until (ja-done? 0) - (if (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (send-event self 'saw-player) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (set! gp-0 0) - ) - ) - ) - ) - :post ja-post - ) + 0) + (else + (ja :group! flying-lurker-fly-ja) + (ja-no-eval :group! flying-lurker-fly-ja :num! (seek! max f30-0) :frame-num (the float gp-0)) + (until (ja-done? 0) + (if (and *target* (>= 172032.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (send-event self 'saw-player)) + (suspend) + (ja :num! (seek! max f30-0))) + (set! gp-0 0))))) + :post ja-post) (defmethod init-from-entity! ((this flying-lurker) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *flying-lurker-sg* '()) + (initialize-skeleton this *flying-lurker-sg* ()) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) @@ -1194,13 +789,8 @@ ((play-movie?) (eval-path-curve! (-> this path) (-> this root trans) (-> this curve-position) 'interp) (path-control-method-14 (-> this path) (-> this tangent) (-> this curve-position)) - (quaternion-identity! (-> this root quat)) - ) - (else - (flying-lurker-move) - (flying-lurker-rotate) - ) - ) + (quaternion-identity! (-> this root quat))) + (else (flying-lurker-move) (flying-lurker-rotate))) (set! (-> this y-offset) 0.0) (set! (-> this y-vel) 0.0) (set! (-> this last-look-time) 0) @@ -1210,19 +800,13 @@ (set! (-> this take-off) #f) (set-vector! (-> this default-bounds) 0.0 8192.0 0.0 24576.0) (set! (-> this draw bounds quad) (-> this default-bounds quad)) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control 131072.0 151552.0 614400.0 (the-as float 60) 409600.0) - ) - (let ((v1-27 (-> this draw shadow-ctrl))) - (logclear! (-> v1-27 settings flags) (shadow-flags disable-draw)) - ) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 131072.0 151552.0 614400.0 (the-as float 60) 409600.0)) + (let ((v1-27 (-> this draw shadow-ctrl))) (logclear! (-> v1-27 settings flags) (shadow-flags disable-draw))) 0 (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this shadow-backup) (-> this draw shadow)) (set! (-> this try-counted) #f) (if (= (get-task-status (game-task plunger-lurker-hit)) (task-status invalid)) - (go flying-lurker-die) - (go flying-lurker-idle) - ) - (none) - ) + (go flying-lurker-die) + (go flying-lurker-idle)) + (none)) diff --git a/goal_src/jak1/levels/ogre/ogre-obs.gc b/goal_src/jak1/levels/ogre/ogre-obs.gc index 4ebaa1ec2b..bae3e91f71 100644 --- a/goal_src/jak1/levels/ogre/ogre-obs.gc +++ b/goal_src/jak1/levels/ogre/ogre-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/anim/joint-mod-h.gc") (require "engine/game/projectiles.gc") (require "engine/common-obs/rigid-body.gc") @@ -10,363 +9,324 @@ ;; name in dgo: ogre-obs ;; dgos: L1, OGR - ;; DECOMP BEGINS -(defskelgroup *med-res-snow-sg* medres-snow medres-snow-lod0-jg medres-snow-idle-ja - ((medres-snow-lod0-mg (meters 999999))) - :bounds (static-spherem -390 150 70 410) - ) +(defskelgroup *med-res-snow-sg* + medres-snow + medres-snow-lod0-jg + medres-snow-idle-ja + ((medres-snow-lod0-mg (meters 999999))) + :bounds (static-spherem -390 150 70 410)) (defpartgroup group-tntbarrel-BIG-explosion :id 473 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2234 :period (seconds 10) :length (seconds 0.017)) - (sp-item 2235 :period (seconds 10) :length (seconds 0.017)) - (sp-item 2236 :period (seconds 10) :length (seconds 0.135)) - (sp-item 2237 :period (seconds 10) :length (seconds 0.135)) - (sp-item 2238 :period (seconds 10) :length (seconds 0.135)) - ) - ) + :parts + ((sp-item 2234 :period (seconds 10) :length (seconds 0.017)) + (sp-item 2235 :period (seconds 10) :length (seconds 0.017)) + (sp-item 2236 :period (seconds 10) :length (seconds 0.135)) + (sp-item 2237 :period (seconds 10) :length (seconds 0.135)) + (sp-item 2238 :period (seconds 10) :length (seconds 0.135)))) (defpart 2236 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 32.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 2.4) (meters 1.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.32) (meters 0.42666668)) - (:scalevel-x (meters -0.009333333)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.0005) (meters -0.0005)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2239) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 32.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 2.4) (meters 1.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.32) (meters 0.42666668)) + (:scalevel-x (meters -0.009333333)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.0005) (meters -0.0005)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2239) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 12)))) (defpart 2239 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2238 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 32)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 3.4133334)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 32)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 3.4133334)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2234 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 128)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 128)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2235 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2237 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 48.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 16) (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 48.0 48.0) - (:vel-y (meters 0.32) (meters 0.21333334)) - (:scalevel-x (meters 0.053333335)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.08533333) - (:accel-y (meters 0.0005) (meters 0.0005)) - (:friction 0.85) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2240) - (:conerot-x (degrees 0) (degrees 160)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 8)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 48.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 16) (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 48.0 48.0) + (:vel-y (meters 0.32) (meters 0.21333334)) + (:scalevel-x (meters 0.053333335)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.08533333) + (:accel-y (meters 0.0005) (meters 0.0005)) + (:friction 0.85) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2240) + (:conerot-x (degrees 0) (degrees 160)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 8)))) (defpart 2240 - :init-specs ((:fade-r -0.26666668) - (:fade-g -0.26666668) - (:fade-b -0.52916664) - (:next-time (seconds 0.8)) - (:next-launcher 2241) - ) - ) + :init-specs ((:fade-r -0.26666668) (:fade-g -0.26666668) (:fade-b -0.52916664) (:next-time (seconds 0.8)) (:next-launcher 2241))) (defpart 2241 - :init-specs ((:fade-r -0.24380952) - (:fade-g -0.12190476) - (:fade-b 0.0) - (:fade-a -0.09142857) - (:next-time (seconds 1.75)) - (:next-launcher 2242) - ) - ) + :init-specs + ((:fade-r -0.24380952) + (:fade-g -0.12190476) + (:fade-b 0.0) + (:fade-a -0.09142857) + (:next-time (seconds 1.75)) + (:next-launcher 2242))) (defpart 2242 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-tntbarrel-explosion :id 474 :duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2081 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2081 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)))) (defpart 2080 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2083) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2083) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2083 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2082 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.85333335)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.85333335)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2079 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2081 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2084) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2084) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3)))) (defpart 2084 - :init-specs ((:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -2.1166666) - (:next-time (seconds 0.2)) - (:next-launcher 2085) - ) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-b -2.1166666) (:next-time (seconds 0.2)) (:next-launcher 2085))) (defpart 2085 - :init-specs ((:fade-r -0.5688889) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:next-time (seconds 0.75)) - (:next-launcher 2086) - ) - ) + :init-specs + ((:fade-r -0.5688889) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:next-time (seconds 0.75)) + (:next-launcher 2086))) (defpart 2086 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) -(defskelgroup *tntbarrel-sg* tntbarrel tntbarrel-lod0-jg tntbarrel-idle-ja - ((tntbarrel-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 4) - ) +(defskelgroup *tntbarrel-sg* + tntbarrel + tntbarrel-lod0-jg + tntbarrel-idle-ja + ((tntbarrel-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 4)) (deftype tntbarrel (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:state-methods - idle - (die symbol) - ) - ) - + idle + (die symbol))) (defstate die (tntbarrel) :virtual #t - :code (behavior ((arg0 symbol)) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (ja-post) - (sound-play "dcrate-break") - (if arg0 - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 473) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 474) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - (suspend) - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (ja-post) + (sound-play "dcrate-break") + (if arg0 + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 473) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 474) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*)) + (suspend) + (cleanup-for-death self) + (deactivate self))) (defstate idle (tntbarrel) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die-big) - (go-virtual die #t) - ) - (('die) - (go-virtual die #f) - ) - (('attack 'touch) - (send-event proc 'attack-invinc (-> block param 0) (static-attack-info ((mode 'death)))) - (go-virtual die #f) - ) - ) - ) - :code (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die-big) (go-virtual die #t)) + (('die) (go-virtual die #f)) + (('attack 'touch) + (send-event proc 'attack-invinc (-> block param 0) (static-attack-info ((mode 'death)))) + (go-virtual die #f)))) + :code + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defmethod init-from-entity! ((this tntbarrel) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -377,152 +337,126 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *tntbarrel-sg* '()) + (initialize-skeleton this *tntbarrel-sg* ()) (set-vector! (-> this draw color-mult) 1.3 1.3 1.3 1.0) (go (method-of-object this idle)) - (none) - ) + (none)) -(defskelgroup *ogre-step-a-sg* ogre-step ogre-step-a-lod0-jg ogre-step-a-idle-ja - ((ogre-step-a-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 5) - ) +(defskelgroup *ogre-step-a-sg* + ogre-step + ogre-step-a-lod0-jg + ogre-step-a-idle-ja + ((ogre-step-a-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 5)) -(defskelgroup *ogre-step-b-sg* ogre-step ogre-step-b-lod0-jg ogre-step-b-idle-ja - ((ogre-step-b-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 5) - ) +(defskelgroup *ogre-step-b-sg* + ogre-step + ogre-step-b-lod0-jg + ogre-step-b-idle-ja + ((ogre-step-b-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 5)) -(defskelgroup *ogre-step-c-sg* ogre-step ogre-step-c-lod0-jg ogre-step-c-idle-ja - ((ogre-step-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3 0 6.5) - ) +(defskelgroup *ogre-step-c-sg* + ogre-step + ogre-step-c-lod0-jg + ogre-step-c-idle-ja + ((ogre-step-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3 0 6.5)) -(defskelgroup *ogre-isle-a-sg* ogre-isle ogre-isle-a-lod0-jg ogre-isle-a-idle-ja - ((ogre-isle-a-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *ogre-isle-a-sg* + ogre-isle + ogre-isle-a-lod0-jg + ogre-isle-a-idle-ja + ((ogre-isle-a-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *ogre-isle-b-sg* ogre-isle ogre-isle-b-lod0-jg ogre-isle-b-idle-ja - ((ogre-isle-b-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *ogre-isle-b-sg* + ogre-isle + ogre-isle-b-lod0-jg + ogre-isle-b-idle-ja + ((ogre-isle-b-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *ogre-isle-c-sg* ogre-isle ogre-isle-c-lod0-jg ogre-isle-c-idle-ja - ((ogre-isle-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *ogre-isle-c-sg* + ogre-isle + ogre-isle-c-lod0-jg + ogre-isle-c-idle-ja + ((ogre-isle-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *ogre-isle-d-sg* ogre-isle ogre-isle-d-lod0-jg ogre-isle-d-idle-ja - ((ogre-isle-d-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *ogre-isle-d-sg* + ogre-isle + ogre-isle-d-lod0-jg + ogre-isle-d-idle-ja + ((ogre-isle-d-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (deftype ogre-plat (rigid-body-platform) - ((anchor-point vector :inline) - (idle-y-offset float) - (float-y-offset float) - (delay time-frame) - (active symbol) - (triggered entity-actor) - ) - ) - + ((anchor-point vector :inline) + (idle-y-offset float) + (float-y-offset float) + (delay time-frame) + (active symbol) + (triggered entity-actor))) (defmethod rigid-body-platform-method-23 ((this ogre-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (ogre-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (set! (-> self triggered) (the-as entity-actor #t)) - (set! (-> self delay) (the-as time-frame (-> block param 0))) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - :trans (behavior () - (cond - ((-> self active) - (when (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (if (-> self triggered) - (sound-play "rock-in-lava") - ) - (go-virtual rigid-body-platform-float) - ) - ) - (else - (if (and (-> self triggered) (time-elapsed? (-> self state-time) (-> self delay))) - (set! (-> self active) #t) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (set! (-> self triggered) (the-as entity-actor #t)) + (set! (-> self delay) (the-as time-frame (-> block param 0))) + (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0)))) + :trans + (behavior () + (cond + ((-> self active) + (when (and *target* + (>= (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (if (-> self triggered) (sound-play "rock-in-lava")) + (go-virtual rigid-body-platform-float))) + (else (if (and (-> self triggered) (time-elapsed? (-> self state-time) (-> self delay))) (set! (-> self active) #t))))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (loop (suspend))) + :post ja-post) (defstate rigid-body-platform-float (ogre-plat) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (cond - ((or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (let ((f30-1 (-> self idle-y-offset))) - (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) - (if (= (-> self float-height-offset) f30-1) - (go-virtual rigid-body-platform-idle) - ) - ) - ) - (else - (seek! (-> self float-height-offset) (-> self float-y-offset) (* 32768.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (cond + ((or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (let ((f30-1 (-> self idle-y-offset))) + (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) + (if (= (-> self float-height-offset) f30-1) (go-virtual rigid-body-platform-idle)))) + (else (seek! (-> self float-height-offset) (-> self float-y-offset) (* 32768.0 (seconds-per-frame)))))) + :code + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (loop (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-30 ((this ogre-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -531,15 +465,12 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-plat)) (set! (-> this float-height-offset) (-> this idle-y-offset)) @@ -547,53 +478,44 @@ (dotimes (s4-0 s5-0) (let ((s3-0 (-> this control-point-array data s4-0))) (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0)))) - (f28-0 (-> this root-overlay root-prim local-sphere w)) - ) + (f28-0 (-> this root-overlay root-prim local-sphere w))) (set! (-> s3-0 local-pos x) (* f28-0 (sin f30-0))) (set! (-> s3-0 local-pos y) 0.0) - (set! (-> s3-0 local-pos z) (* f28-0 (cos f30-0))) - ) - (set! (-> s3-0 local-pos w) 1.0) - ) - ) - ) + (set! (-> s3-0 local-pos z) (* f28-0 (cos f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (set! (-> this active) #f) (set! (-> this triggered) #f) 0 - (none) - ) + (none)) -(define *ogre-step-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 2.0 - :max-buoyancy-depth (meters 4) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 5) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 100) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 10) - :inertial-tensor-z (meters 4) - :idle-distance (meters 150) - :platform #t - :sound-name "lava-plat" - ) - ) - -(deftype ogre-step (ogre-plat) - () - ) +(define *ogre-step-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 4) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 5) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 100) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 10) + :inertial-tensor-z (meters 4) + :idle-distance (meters 150) + :platform #t + :sound-name "lava-plat")) +(deftype ogre-step (ogre-plat) ()) (defmethod rigid-body-platform-method-31 ((this ogre-step)) (set! (-> this idle-y-offset) -28672.0) @@ -602,106 +524,81 @@ (rigid-body-platform-method-29 this *ogre-step-constants*) (call-parent-method this) (let ((a0-5 (entity-actor-lookup (-> this entity) 'alt-actor 0))) - (if (and a0-5 (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) - (set! (-> this active) #t) - ) - ) + (if (and a0-5 (logtest? (-> a0-5 extra perm status) (entity-perm-status complete))) (set! (-> this active) #t))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-34 ((this ogre-step)) (if (-> this active) - (go (method-of-object this rigid-body-platform-float)) - (go (method-of-object this rigid-body-platform-idle)) - ) + (go (method-of-object this rigid-body-platform-float)) + (go (method-of-object this rigid-body-platform-idle))) 0 - (none) - ) + (none)) -(deftype ogre-step-a (ogre-step) - () - ) +(deftype ogre-step-a (ogre-step) ()) +(deftype ogre-step-b (ogre-step) ()) -(deftype ogre-step-b (ogre-step) - () - ) - - -(deftype ogre-step-c (ogre-step) - () - ) - - -(deftype ogre-step-d (ogre-step) - () - ) +(deftype ogre-step-c (ogre-step) ()) +(deftype ogre-step-d (ogre-step) ()) (defmethod rigid-body-platform-method-31 ((this ogre-step-a)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) - (initialize-skeleton this *ogre-step-a-sg* '()) + (initialize-skeleton this *ogre-step-a-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-b)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) - (initialize-skeleton this *ogre-step-b-sg* '()) + (initialize-skeleton this *ogre-step-b-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-c)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 26624.0) - (initialize-skeleton this *ogre-step-c-sg* '()) + (initialize-skeleton this *ogre-step-c-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-step-d)) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 12288.0 0.0 20480.0) - (initialize-skeleton this *ogre-step-b-sg* '()) + (initialize-skeleton this *ogre-step-b-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) -(define *ogre-isle-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 2.0 - :max-buoyancy-depth (meters 2) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 2) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 4000) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 10) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 10) - :cm-joint-y (meters 1) - :idle-distance (meters 150) - :platform #t - :sound-name #f - ) - ) - -(deftype ogre-isle (ogre-plat) - () - ) +(define *ogre-isle-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 2) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 4000) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 10) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 10) + :cm-joint-y (meters 1) + :idle-distance (meters 150) + :platform #t + :sound-name #f)) +(deftype ogre-isle (ogre-plat) ()) (defmethod rigid-body-platform-method-31 ((this ogre-isle)) (set! (-> this idle-y-offset) -6144.0) @@ -710,80 +607,61 @@ (call-parent-method this) (set! (-> this active) #t) 0 - (none) - ) + (none)) -(deftype ogre-isle-b (ogre-isle) - () - ) +(deftype ogre-isle-b (ogre-isle) ()) +(deftype ogre-isle-c (ogre-isle) ()) -(deftype ogre-isle-c (ogre-isle) - () - ) - - -(deftype ogre-isle-d (ogre-isle) - () - ) - +(deftype ogre-isle-d (ogre-isle) ()) (defmethod rigid-body-platform-method-31 ((this ogre-isle-b)) (+! (-> this root-overlay trans x) -8192.0) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 8192.0 0.0 24576.0) - (initialize-skeleton this *ogre-isle-b-sg* '()) + (initialize-skeleton this *ogre-isle-b-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-isle-c)) (+! (-> this root-overlay trans x) -8192.0) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 8192.0 0.0 24576.0) - (initialize-skeleton this *ogre-isle-b-sg* '()) + (initialize-skeleton this *ogre-isle-b-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this ogre-isle-d)) (+! (-> this root-overlay trans x) -8192.0) (+! (-> this root-overlay trans z) -8192.0) (set-vector! (-> this root-overlay root-prim local-sphere) 0.0 8192.0 0.0 22528.0) - (initialize-skeleton this *ogre-isle-d-sg* '()) + (initialize-skeleton this *ogre-isle-d-sg* ()) (call-parent-method this) 0 - (none) - ) + (none)) -(defskelgroup *ogre-bridge-sg* ogre-bridge ogre-bridge-lod0-jg ogre-bridge-idle-ja - ((ogre-bridge-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 52) - :longest-edge (meters 4.5) - ) +(defskelgroup *ogre-bridge-sg* + ogre-bridge + ogre-bridge-lod0-jg + ogre-bridge-idle-ja + ((ogre-bridge-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 52) + :longest-edge (meters 4.5)) (deftype ogre-bridge (process-drawable) - ((root collide-shape-moving :override) - (joint-mod-array joint-mod 8) - (dead-joint-count int8) - ) + ((root collide-shape-moving :override) + (joint-mod-array joint-mod 8) + (dead-joint-count int8)) (:states - ogre-bridge-activate - ogre-bridge-activated - ogre-bridge-break - ogre-bridge-idle - ) - ) - + ogre-bridge-activate + ogre-bridge-activated + ogre-bridge-break + ogre-bridge-idle)) (defmethod relocate ((this ogre-bridge) (arg0 int)) (dotimes (v1-0 8) - (if (nonzero? (-> this joint-mod-array v1-0)) - (&+! (-> this joint-mod-array v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this joint-mod-array v1-0)) (&+! (-> this joint-mod-array v1-0) arg0))) + (call-parent-method this arg0)) (defbehavior ogre-bridge-update-joints ogre-bridge () (let ((v1-1 (min 8 (-> self dead-joint-count)))) @@ -791,125 +669,72 @@ (let ((a1-2 (-> self joint-mod-array a0-1))) (set! (-> a1-2 trans z) (the-as float #t)) (set! (-> a1-2 trans x) (the-as float #t)) - (set! (-> a1-2 trans y) (the-as float #t)) - ) - ) - ) + (set! (-> a1-2 trans y) (the-as float #t))))) 0 - (none) - ) + (none)) (defstate ogre-bridge-idle (ogre-bridge) - :exit (behavior () - (ogre-bridge-update-joints) - ) - :trans (behavior () - (if (and (and *target* (>= 286720.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - (go ogre-bridge-activate) - ) - 0 - ) - :code (behavior () - (ja-post) - (loop - (suspend) - ) - ) - ) + :exit + (behavior () + (ogre-bridge-update-joints)) + :trans + (behavior () + (if (and (and *target* (>= 286720.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup (pickup-type eco-blue))) + (go ogre-bridge-activate)) + 0) + :code + (behavior () + (ja-post) + (loop (suspend)))) (defstate ogre-bridge-activate (ogre-bridge) - :code (behavior () - (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (when (if v1-0 - (not (send-event - (if v1-0 - (-> v1-0 extra process) - ) - 'next-stage - ) - ) - ) + :code + (behavior () + (let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (when (if v1-0 (not (send-event (if v1-0 (-> v1-0 extra process)) 'next-stage))) + (suspend) + 0)) + (ja-no-eval :group! ogre-bridge-assemble-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (rand-vu-percent? 0.2) (spawn-projectile-blue *target*)) (suspend) - 0 - ) - ) - (ja-no-eval :group! ogre-bridge-assemble-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (rand-vu-percent? 0.2) - (spawn-projectile-blue *target*) - ) - (suspend) - (ja :num! (seek!)) - ) - (go ogre-bridge-activated) - ) - :post rider-post - ) + (ja :num! (seek!))) + (go ogre-bridge-activated)) + :post rider-post) (defstate ogre-bridge-activated (ogre-bridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('break) - (+! (-> self dead-joint-count) 4) - (go ogre-bridge-break) - ) - (('break-no-damage) - (go ogre-bridge-break) - ) - (('complete) - (process-entity-status! self (entity-perm-status complete) #t) - #t - ) - ) - ) - :code (behavior () - (ja :group! ogre-bridge-assemble-ja :num! max) - (transform-post) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('break) (+! (-> self dead-joint-count) 4) (go ogre-bridge-break)) + (('break-no-damage) (go ogre-bridge-break)) + (('complete) (process-entity-status! self (entity-perm-status complete) #t) #t))) + :code + (behavior () + (ja :group! ogre-bridge-assemble-ja :num! max) + (transform-post) + (loop (suspend))) + :post ja-post) (defstate ogre-bridge-break (ogre-bridge) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('effect) - (when (= (-> block param 0) 'splash) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((a1-1 (-> block param 2))) - (set! (-> gp-0 quad) (-> self node-list data a1-1 bone transform vector 3 quad)) - ) - (set! (-> gp-0 y) 118784.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 466) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - ) - ) - ) - ) - :code (behavior () - (ja-no-eval :group! ogre-bridge-break-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogre-bridge-idle) - ) - :post rider-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('effect) + (when (= (-> block param 0) 'splash) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (-> block param 2))) (set! (-> gp-0 quad) (-> self node-list data a1-1 bone transform vector 3 quad))) + (set! (-> gp-0 y) 118784.0) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 466) -1 #f #f #f gp-0 :to *entity-pool*)))))) + :code + (behavior () + (ja-no-eval :group! ogre-bridge-break-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ogre-bridge-idle)) + :post rider-post) (define *ogre-bridge-joint-array* (new 'static 'boxed-array :type uint8 #x4 #x9 #xc #x11 #x7 #xa #xf #x12)) @@ -919,9 +744,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -937,8 +760,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -946,8 +768,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -955,8 +776,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -964,8 +784,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -973,8 +792,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-4) - ) + (append-prim s3-0 s2-4)) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -982,8 +800,7 @@ (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-5) - ) + (append-prim s3-0 s2-5)) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-6 collide-with) (collide-kind target)) @@ -991,8 +808,7 @@ (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-6) - ) + (append-prim s3-0 s2-6)) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-7 collide-with) (collide-kind target)) @@ -1000,8 +816,7 @@ (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-7) - ) + (append-prim s3-0 s2-7)) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-8 collide-with) (collide-kind target)) @@ -1009,8 +824,7 @@ (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-8) - ) + (append-prim s3-0 s2-8)) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-9 collide-with) (collide-kind target)) @@ -1018,8 +832,7 @@ (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-9) - ) + (append-prim s3-0 s2-9)) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-10 collide-with) (collide-kind target)) @@ -1027,8 +840,7 @@ (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-10) - ) + (append-prim s3-0 s2-10)) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-11 collide-with) (collide-kind target)) @@ -1036,8 +848,7 @@ (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-11) - ) + (append-prim s3-0 s2-11)) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-12 collide-with) (collide-kind target)) @@ -1045,8 +856,7 @@ (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-12) - ) + (append-prim s3-0 s2-12)) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-13 collide-with) (collide-kind target)) @@ -1054,8 +864,7 @@ (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-13) - ) + (append-prim s3-0 s2-13)) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-14 collide-with) (collide-kind target)) @@ -1063,8 +872,7 @@ (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-14) - ) + (append-prim s3-0 s2-14)) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-15 collide-with) (collide-kind target)) @@ -1072,8 +880,7 @@ (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-15) - ) + (append-prim s3-0 s2-15)) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 1)))) (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-16 collide-with) (collide-kind target)) @@ -1081,56 +888,43 @@ (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) - (append-prim s3-0 s2-16) - ) - ) + (append-prim s3-0 s2-16))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) - (initialize-skeleton this *ogre-bridge-sg* '()) + (initialize-skeleton this *ogre-bridge-sg* ()) (logior! (-> this skel effect flags) 1) (dotimes (s5-1 8) (let ((v1-185 (new 'process 'joint-mod-set-local this (the-as int (-> *ogre-bridge-joint-array* s5-1)) #f #f #f))) (set! (-> this joint-mod-array s5-1) (the-as joint-mod v1-185)) - (vector-reset! (-> v1-185 transform scale)) - ) - ) + (vector-reset! (-> v1-185 transform scale)))) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! (-> this dead-joint-count) 8) (ogre-bridge-update-joints) - (go ogre-bridge-activated) - ) - (else - (go ogre-bridge-idle) - ) - ) - (none) - ) + (go ogre-bridge-activated)) + (else (go ogre-bridge-idle))) + (none)) -(defskelgroup *ogre-bridgeend-sg* ogre-bridgeend ogre-bridgeend-lod0-jg ogre-bridgeend-idle-ja - ((ogre-bridgeend-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -3 8.2) - ) +(defskelgroup *ogre-bridgeend-sg* + ogre-bridgeend + ogre-bridgeend-lod0-jg + ogre-bridgeend-idle-ja + ((ogre-bridgeend-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -3 8.2)) (deftype ogre-bridgeend (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - ogre-bridgeend-idle - ) - ) - + ogre-bridgeend-idle)) (defstate ogre-bridgeend-idle (ogre-bridgeend) - :code (behavior () - (transform-post) - (anim-loop) - ) - ) + :code + (behavior () + (transform-post) + (anim-loop))) (defmethod init-from-entity! ((this ogre-bridgeend) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -1141,251 +935,206 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *ogre-bridgeend-sg* '()) + (initialize-skeleton this *ogre-bridgeend-sg* ()) (go ogre-bridgeend-idle) - (none) - ) + (none)) (deftype ogre-lava (water-anim) - ((idle-anim int32) - (anim int32) - ) - ) - + ((idle-anim int32) + (anim int32))) (defstate water-vol-idle (ogre-lava) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('submerge1) - (set! (-> self anim) 3) - (go-virtual water-vol-idle) - ) - (('submerge2) - (set! (-> self anim) 5) - (go-virtual water-vol-idle) - ) - (('emerge1) - (set! (-> self anim) 4) - (go-virtual water-vol-idle) - ) - (('emerge2) - (set! (-> self anim) 6) - (go-virtual water-vol-idle) - ) - (('boulder) - (set! (-> self anim) 7) - (go-virtual water-vol-idle) - ) - (else - ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block) - ) - ) - ) - :code (behavior () - (ja-channel-push! 2 (seconds 0.1)) - (ja :chan 1 :group! (-> self draw art-group data (-> self idle-anim)) :num! min) - (ja-no-eval :group! (-> self draw art-group data (-> self anim)) :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (ja :chan 1 :frame-interp 0.5) - (ja-post) - (suspend) - (ja :num! (seek! max 0.5)) - ) - (ja :group! (-> self draw art-group data (-> self idle-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - ) - ) - :post #f - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('submerge1) (set! (-> self anim) 3) (go-virtual water-vol-idle)) + (('submerge2) (set! (-> self anim) 5) (go-virtual water-vol-idle)) + (('emerge1) (set! (-> self anim) 4) (go-virtual water-vol-idle)) + (('emerge2) (set! (-> self anim) 6) (go-virtual water-vol-idle)) + (('boulder) (set! (-> self anim) 7) (go-virtual water-vol-idle)) + (else ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block)))) + :code + (behavior () + (ja-channel-push! 2 (seconds 0.1)) + (ja :chan 1 :group! (-> self draw art-group data (-> self idle-anim)) :num! min) + (ja-no-eval :group! (-> self draw art-group data (-> self anim)) :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (ja :chan 1 :frame-interp 0.5) + (ja-post) + (suspend) + (ja :num! (seek! max 0.5))) + (ja :group! (-> self draw art-group data (-> self idle-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (loop (suspend))) + :post #f) (defstate water-vol-startup (ogre-lava) :virtual #t - :code (behavior () - (set! (-> self idle-anim) 2) - (set! (-> self anim) (-> self idle-anim)) - (go-virtual water-vol-idle) - ) - ) + :code + (behavior () + (set! (-> self idle-anim) 2) + (set! (-> self anim) (-> self idle-anim)) + (go-virtual water-vol-idle))) -(define ripple-for-ogre-lava (new 'static 'ripple-wave-set - :count 2 - :converted #f - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 3.0) - (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 1.8) - (new 'static 'ripple-wave) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-ogre-lava + (new 'static + 'ripple-wave-set + :count 2 + :converted #f + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 3.0) + (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 1.8) + (new 'static 'ripple-wave) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this ogre-lava)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 2048.0) - (set! (-> v1-2 waveform) ripple-for-ogre-lava) - ) + (set! (-> v1-2 waveform) ripple-for-ogre-lava)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt25)) (set! (-> this attack-event) 'lava) - (none) - ) + (none)) (deftype shortcut-boulder (process-drawable) - ((root collide-shape :override) - (broken-look lod-set :inline) - ) + ((root collide-shape :override) + (broken-look lod-set :inline)) (:states - shortcut-boulder-break - shortcut-boulder-idle - ) - ) + shortcut-boulder-break + shortcut-boulder-idle)) +(defskelgroup *shortcut-boulder-whole-sg* + shortcut-boulder + shortcut-boulder-whole-lod0-jg + shortcut-boulder-idle-ja + ((shortcut-boulder-whole-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5.5 0 7.5)) -(defskelgroup *shortcut-boulder-whole-sg* shortcut-boulder shortcut-boulder-whole-lod0-jg shortcut-boulder-idle-ja - ((shortcut-boulder-whole-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5.5 0 7.5) - ) - -(defskelgroup *shortcut-boulder-broken-sg* shortcut-boulder shortcut-boulder-broken-lod0-jg shortcut-boulder-idle-ja - ((shortcut-boulder-broken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5.5 0 20) - ) +(defskelgroup *shortcut-boulder-broken-sg* + shortcut-boulder + shortcut-boulder-broken-lod0-jg + shortcut-boulder-idle-ja + ((shortcut-boulder-broken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5.5 0 20)) (defpartgroup group-shortcut-boulder-explosion :id 475 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2149 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2150 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2151 :period (seconds 5) :length (seconds 0.05)) - ) - ) + :parts + ((sp-item 2149 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2150 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2151 :period (seconds 5) :length (seconds 0.05)))) (defpart 2150 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 64.0) - (:b 54.0) - (:a 128.0) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 64.0) + (:b 54.0) + (:a 128.0) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 2149 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 16.0 16.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 16.0 16.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2151 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y (meters 0.0033333334)) - (:accel-y (meters -0.00026666667)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 2152) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y (meters 0.0033333334)) + (:accel-y (meters -0.00026666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 2152) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2152 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defstate shortcut-boulder-break (shortcut-boulder) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (lods-assign! (-> self draw) (-> self broken-look)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 475) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (lods-assign! (-> self draw) (-> self broken-look)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 475) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self) + (deactivate self)) + :post ja-post) (defstate shortcut-boulder-idle (shortcut-boulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (go shortcut-boulder-break) - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) (go shortcut-boulder-break))))) + :code + (behavior () + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this shortcut-boulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1396,16 +1145,13 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *shortcut-boulder-whole-sg* '()) + (initialize-skeleton this *shortcut-boulder-whole-sg* ()) (setup-lods! (-> this broken-look) *shortcut-boulder-broken-sg* (-> this draw art-group) (-> this entity)) (set-vector! (-> this draw color-emissive) 0.125 0.0625 0.0 0.0) (go shortcut-boulder-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/ogre/ogre-part.gc b/goal_src/jak1/levels/ogre/ogre-part.gc index 445c9abae8..86f170b76e 100644 --- a/goal_src/jak1/levels/ogre/ogre-part.gc +++ b/goal_src/jak1/levels/ogre/ogre-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") @@ -19,125 +18,116 @@ :linger-duration (seconds 10) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2193 :period (seconds 5) :length (seconds 0.017)) - (sp-item 2194 :period (seconds 5) :length (seconds 0.135)) - (sp-item 2195 :period (seconds 5) :length (seconds 0.067)) - (sp-item 2196 :period (seconds 5) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2193 :period (seconds 5) :length (seconds 0.017)) + (sp-item 2194 :period (seconds 5) :length (seconds 0.135)) + (sp-item 2195 :period (seconds 5) :length (seconds 0.067)) + (sp-item 2196 :period (seconds 5) :length (seconds 0.067)))) (defpart 2194 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 0.6) (meters 1.2)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.06666667) (meters 0.23333333)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2197) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 0.6) (meters 1.2)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.06666667) (meters 0.23333333)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2197) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2197 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2196 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 0.6)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 20)) - (:r 128.0) - (:g 128.0) - (:b 96.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.5)) - (:fade-g -1.6) - (:fade-b -1.6) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 0.6)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 20)) + (:r 128.0) + (:g 128.0) + (:b 96.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.5)) + (:fade-g -1.6) + (:fade-b -1.6) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2193 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 44)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 64.0) - (:b 0.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 44)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 64.0) + (:b 0.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2195 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 24.0) - (:y (meters -5) (meters 1)) - (:scale-x (meters 5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 32.0) - (:b 0.0) - (:a 64.0 32.0) - (:vel-y (meters 0.12) (meters 0.06666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.8) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2198) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 24.0) + (:y (meters -5) (meters 1)) + (:scale-x (meters 5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 32.0) + (:b 0.0) + (:a 64.0 32.0) + (:vel-y (meters 0.12) (meters 0.06666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.8) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2198) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 6)))) (defpart 2198 - :init-specs ((:fade-r -0.21333334) (:fade-g -0.21333334) (:fade-b 0.0) (:next-time (seconds 0.5)) (:next-launcher 2199)) - ) + :init-specs ((:fade-r -0.21333334) (:fade-g -0.21333334) (:fade-b 0.0) (:next-time (seconds 0.5)) (:next-launcher 2199))) (defpart 2199 - :init-specs ((:fade-r -0.021333333) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.08533333) - (:next-time (seconds 0.75)) - (:next-launcher 2200) - ) - ) + :init-specs + ((:fade-r -0.021333333) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.08533333) + (:next-time (seconds 0.75)) + (:next-launcher 2200))) (defpart 2200 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpartgroup group-ogreboss-lava-splash :id 465 @@ -145,27 +135,25 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2023)) - ) + :parts ((sp-item 2023))) (defpart 2023 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.053333335)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.053333335)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ogre-bridge-splash :id 466 @@ -173,116 +161,110 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2108) (sp-item 2109) (sp-item 2110) (sp-item 2111)) - ) + :parts ((sp-item 2108) (sp-item 2109) (sp-item 2110) (sp-item 2111))) (defpart 2111 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 4.0) - (:y (meters -3)) - (:scale-x (meters 0.3) (meters 0.75)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:scalevel-x (meters -0.003)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 4.0) + (:y (meters -3)) + (:scale-x (meters 0.3) (meters 0.75)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:scalevel-x (meters -0.003)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpart 2108 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 2)) - (:y (meters -3)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:scalevel-x (meters 0.03529412)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.1294118) - (:friction 0.98) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 2)) + (:y (meters -3)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:scalevel-x (meters 0.03529412)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.1294118) + (:friction 0.98) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2109 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters 3) (meters 4)) - (:y (meters -3)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0) (meters 0.0016666667)) - (:scalevel-x (meters 0.07777778)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:friction 0.98) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters 3) (meters 4)) + (:y (meters -3)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0) (meters 0.0016666667)) + (:scalevel-x (meters 0.07777778)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:friction 0.98) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2110 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 3)) - (:y (meters -3) (meters 1)) - (:scale-x (meters 5) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.02)) - (:scalevel-x (meters 0.015555556)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.56666666) - (:fade-g -0.56666666) - (:fade-b -0.56666666) - (:fade-a 0.15) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.27) (seconds 0.267)) - (:next-launcher 2112) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 3)) + (:y (meters -3) (meters 1)) + (:scale-x (meters 5) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.02)) + (:scalevel-x (meters 0.015555556)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.56666666) + (:fade-g -0.56666666) + (:fade-b -0.56666666) + (:fade-a 0.15) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.27) (seconds 0.267)) + (:next-launcher 2112) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2112 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpartgroup group-ogreboss-boulder-grow :id 468 @@ -290,148 +272,139 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 2201) (sp-item 2202) (sp-item 2203) (sp-item 2204)) - ) + :parts ((sp-item 2201) (sp-item 2202) (sp-item 2203) (sp-item 2204))) (defpart 2203 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.6) (meters 0.6)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:vel-y (meters -0.13333334)) - (:scalevel-x (meters -0.002)) - (:scalevel-y :copy scalevel-x) - (:fade-g -6.4) - (:fade-b -6.4) - (:fade-a 6.4) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.067)) - (:next-launcher 2205) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 12) (meters 4)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.6) (meters 0.6)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:vel-y (meters -0.13333334)) + (:scalevel-x (meters -0.002)) + (:scalevel-y :copy scalevel-x) + (:fade-g -6.4) + (:fade-b -6.4) + (:fade-a 6.4) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.067)) + (:next-launcher 2205) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 12) (meters 4)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2205 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:fade-b -0.42666668) (:fade-a -0.85333335)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:fade-b -0.42666668) (:fade-a -0.85333335))) (defpart 2204 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 128.0) - (:g 96.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.2)) - (:fade-g -1.0666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 128.0) + (:g 96.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.2)) + (:fade-g -1.0666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpart 2201 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 28) (meters 4)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -2.3272727) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 28) (meters 4)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -2.3272727) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 2202 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 16) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 128.0 64.0) - (:b 64.0 64.0) - (:a 32.0) - (:fade-a -2.3272727) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 16) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 128.0 64.0) + (:b 64.0 64.0) + (:a 32.0) + (:fade-a -2.3272727) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboss-missile :id 469 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1933) (sp-item 1934)) - ) + :parts ((sp-item 1933) (sp-item 1934))) (defpart 1934 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4.8) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.10666667) - (:fade-b 0.10666667) - (:fade-a -0.32) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4.8) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.10666667) + (:fade-b 0.10666667) + (:fade-a -0.32) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 1)) + (:flags (bit2 bit14)))) (defpart 1933 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 80.0 80.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g -0.53333336) - (:fade-b -0.17777778) - (:fade-a -1.0666667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 80.0 80.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g -0.53333336) + (:fade-b -0.17777778) + (:fade-a -1.0666667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboss-pre-missile :id 470 @@ -439,219 +412,218 @@ :linger-duration (seconds 2) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.1)) - (sp-item 2206 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.035)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.1)) + (sp-item 2206 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.035)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.017)))) (defpart 2206 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2083) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 8)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2083) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 8)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-ogreboss-missile-impact :id 471 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2148 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2082 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2079 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2080 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2148 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2082 :period (seconds 2) :length (seconds 0.067)))) (defpartgroup group-ogre-lava-lava-20x20 :id 472 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 2030 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 2031 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 2032 :fade-after (meters 80) :falloff-to (meters 80) :binding 2028) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2028 :flags (start-dead)) - (sp-item 2033 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.457) :length (seconds 0.017) :binding 2029) - (sp-item 2033 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.78) :length (seconds 0.017) :binding 2029) - (sp-item 2033 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.307) :length (seconds 0.017) :binding 2029) - (sp-item 2029 :flags (start-dead)) - ) - ) + :parts + ((sp-item 2030 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 2031 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 2032 :fade-after (meters 80) :falloff-to (meters 80) :binding 2028) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2028 :flags (start-dead)) + (sp-item 2033 + :fade-after (meters 40) + :falloff-to (meters 40) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 2029) + (sp-item 2033 + :fade-after (meters 60) + :falloff-to (meters 60) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 2029) + (sp-item 2033 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 2029) + (sp-item 2029 :flags (start-dead)))) (defpart 2031 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.05) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 2034) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.05) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 2034) + (:rotate-y (degrees 0)))) (defpart 2033 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 2032 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.02 0.02) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.02 0.02) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 2030 - :init-specs ((:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 5324.8) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-r 40.96) - (:fade-g 27.306667) - (:fade-b 38.229332) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 2035) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 5324.8) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-r 40.96) + (:fade-g 27.306667) + (:fade-b 38.229332) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 2035) + (:rotate-y (degrees 0)))) (defpart 2035 - :init-specs ((:fade-b 16.384)) - ) + :init-specs ((:fade-b 16.384))) (defpart 2034 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2036)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 2036))) (defpart 2036 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2037)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 2037))) (defpart 2037 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667))) (defpart 2028 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.7) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:scalevel-x (meters -0.0029166667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.1) (seconds 0.597)) - (:flags (bit0 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.7) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:scalevel-x (meters -0.0029166667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.1) (seconds 0.597)) + (:flags (bit0 bit3)) + (:rotate-y (degrees 45)))) (defpart 2029 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 6.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.006666667) (meters 0.02)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 6.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.006666667) (meters 0.02)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) -(deftype ogre-part (part-spawner) - () - ) +(deftype ogre-part (part-spawner) ()) diff --git a/goal_src/jak1/levels/ogre/ogreboss.gc b/goal_src/jak1/levels/ogre/ogreboss.gc index 71128eaeae..44d974bd85 100644 --- a/goal_src/jak1/levels/ogre/ogreboss.gc +++ b/goal_src/jak1/levels/ogre/ogreboss.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "OGR.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/collide/collide-cache.gc") (require "engine/anim/joint-mod-h.gc") @@ -13,466 +12,347 @@ ;; dgos: L1, OGR (declare-type ogreboss process-drawable) + (define-extern *ogreboss* ogreboss) ;; DECOMP BEGINS -(defskelgroup *ogreboss-sg* ogreboss ogreboss-lod0-jg ogreboss-idle-ja - ((ogreboss-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 20) - ) +(defskelgroup *ogreboss-sg* + ogreboss + ogreboss-lod0-jg + ogreboss-idle-ja + ((ogreboss-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 20)) -(defskelgroup *ogreboss-cam-sg* ogreboss ogreboss-cam-lod0-jg ogreboss-cam-idle-ja - ((ogreboss-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *ogreboss-cam-sg* + ogreboss + ogreboss-cam-lod0-jg + ogreboss-cam-idle-ja + ((ogreboss-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *ogreboss-shoot-boulder-sg* ogreboss ogreboss-shoot-boulder-lod0-jg ogreboss-shoot-boulder-idle-ja - ((ogreboss-shoot-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 300) - :shadow ogreboss-shoot-boulder-shadow-mg - ) +(defskelgroup *ogreboss-shoot-boulder-sg* + ogreboss + ogreboss-shoot-boulder-lod0-jg + ogreboss-shoot-boulder-idle-ja + ((ogreboss-shoot-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 300) + :shadow ogreboss-shoot-boulder-shadow-mg) -(defskelgroup *ogreboss-shoot-boulder-break-sg* ogreboss ogreboss-shoot-boulder-break-lod0-jg ogreboss-shoot-boulder-break-idle-ja - ((ogreboss-shoot-boulder-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) +(defskelgroup *ogreboss-shoot-boulder-break-sg* + ogreboss + ogreboss-shoot-boulder-break-lod0-jg + ogreboss-shoot-boulder-break-idle-ja + ((ogreboss-shoot-boulder-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) -(defskelgroup *ogreboss-bounce-boulder-sg* ogreboss ogreboss-bounce-boulder-lod0-jg ogreboss-bounce-boulder-idle-ja - ((ogreboss-bounce-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 50) - ) +(defskelgroup *ogreboss-bounce-boulder-sg* + ogreboss + ogreboss-bounce-boulder-lod0-jg + ogreboss-bounce-boulder-idle-ja + ((ogreboss-bounce-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 50)) -(defskelgroup *ogreboss-super-boulder-sg* ogreboss ogreboss-super-boulder-lod0-jg ogreboss-super-boulder-idle-ja - ((ogreboss-super-boulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *ogreboss-super-boulder-sg* + ogreboss + ogreboss-super-boulder-lod0-jg + ogreboss-super-boulder-idle-ja + ((ogreboss-super-boulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *ogreboss-column-sg* ogreboss ogreboss-column-lod0-jg ogreboss-column-idle-ja - ((ogreboss-column-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *ogreboss-column-sg* + ogreboss + ogreboss-column-lod0-jg + ogreboss-column-idle-ja + ((ogreboss-column-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (define *ogreboss-missile-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf02 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w -102400.0) - :top-plane (new 'static 'plane :y 1.0 :w -143360.0) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf02 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w -102400.0) + :top-plane + (new 'static 'plane :y 1.0 :w -143360.0)))) (define *ogreboss-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf02 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w -102400.0) - :top-plane (new 'static 'plane :y 1.0 :w -143360.0) - :fade-dist 819200.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf02 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w -102400.0) + :top-plane + (new 'static 'plane :y 1.0 :w -143360.0) + :fade-dist 819200.0))) (deftype ogreboss-missile (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer process-drawable) :overlay-at parent) - (trajectory trajectory :inline) - (src-pos vector :inline) - (dest-pos vector :inline) - (start-time time-frame) - (tumble-quat quaternion :inline) - (blast-radius float) - (pickup-type pickup-type) - ) + ((root collide-shape-moving :override) + (parent-override (pointer process-drawable) :overlay-at parent) + (trajectory trajectory :inline) + (src-pos vector :inline) + (dest-pos vector :inline) + (start-time time-frame) + (tumble-quat quaternion :inline) + (blast-radius float) + (pickup-type pickup-type)) (:states - ogreboss-missile-idle - ogreboss-missile-impact - ogreboss-missile-seek - ) - ) - + ogreboss-missile-idle + ogreboss-missile-impact + ogreboss-missile-seek)) (defstate ogreboss-missile-idle (ogreboss-missile) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 6))) - (let ((f0-1 (the float (- (current-time) (-> self start-time))))) - (eval-position! (-> self trajectory) f0-1 gp-0) - ) - (vector-! s5-0 gp-0 (-> self root trans)) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - s5-0 - (the-as float 4096.0) - (-> self root root-prim collide-with) - (-> self parent-override 0) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (cond - ((>= f0-2 0.0) - (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) - (go ogreboss-missile-impact) - ) - (else - (set! (-> self root trans quad) (-> gp-0 quad)) - 0 - ) - ) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) + (while (not (time-elapsed? (-> self state-time) (seconds 6))) + (let ((f0-1 (the float (- (current-time) (-> self start-time))))) (eval-position! (-> self trajectory) f0-1 gp-0)) + (vector-! s5-0 gp-0 (-> self root trans)) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + s5-0 + (the-as float 4096.0) + (-> self root root-prim collide-with) + (-> self parent-override 0) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) + (cond + ((>= f0-2 0.0) (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) (go ogreboss-missile-impact)) + (else (set! (-> self root trans quad) (-> gp-0 quad)) 0))) + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (spawn (-> self part) (-> self root trans)) + (suspend))) + (cleanup-for-death self)) + :post transform-post) (defstate ogreboss-missile-seek (ogreboss-missile) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (empty) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 6))) - (let ((f0-1 (the float (- (current-time) (-> self start-time))))) - (eval-position! (-> self trajectory) f0-1 gp-0) - ) - (vector-! s5-0 gp-0 (-> self root trans)) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - (-> self root trans) - s5-0 - (the-as float 4096.0) - (-> self root root-prim collide-with) - (-> self parent-override 0) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (cond - ((>= f0-2 0.0) - (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) - (go ogreboss-missile-impact) - ) - (else - (set! (-> self root trans quad) (-> gp-0 quad)) - 0 - ) - ) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post (behavior () - (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) - (transform-post) - ) - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (empty)) + (while (not (time-elapsed? (-> self state-time) (seconds 6))) + (let ((f0-1 (the float (- (current-time) (-> self start-time))))) (eval-position! (-> self trajectory) f0-1 gp-0)) + (vector-! s5-0 gp-0 (-> self root trans)) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + (-> self root trans) + s5-0 + (the-as float 4096.0) + (-> self root root-prim collide-with) + (-> self parent-override 0) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) + (cond + ((>= f0-2 0.0) (vector+*! (-> self root trans) (-> self root trans) s5-0 f0-2) (go ogreboss-missile-impact)) + (else (set! (-> self root trans quad) (-> gp-0 quad)) 0))) + (spawn (-> self part) (-> self root trans)) + (suspend))) + (cleanup-for-death self)) + :post + (behavior () + (quaternion*! (-> self root quat) (-> self root quat) (-> self tumble-quat)) + (transform-post))) (defun ogreboss-rock-explosion-effect ((arg0 basic)) (with-pp (sound-play "ogre-explode" :position (the-as symbol arg0)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 471) - -1 - #f - #f - #f - arg0 - :to *entity-pool* - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 471) -1 #f #f #f arg0 :to *entity-pool*) (activate! *camera-smush-control* (the-as float 819.2) 37 600 (the-as float 1.0) (the-as float 0.995)) (let ((gp-2 (manipy-spawn arg0 (-> pp entity) *ogreboss-shoot-boulder-break-sg* #f :to pp))) - (quaternion-axis-angle! - (-> (the-as manipy (-> gp-2 0)) root quat) - (the-as float 0.0) - (the-as float 1.0) - (the-as float 0.0) - (* 65536.0 (rand-vu)) - ) + (quaternion-axis-angle! (-> (the-as manipy (-> gp-2 0)) root quat) + (the-as float 0.0) + (the-as float 1.0) + (the-as float 0.0) + (* 65536.0 (rand-vu))) (send-event (ppointer->process gp-2) 'anim-mode 'play1) - (the-as handle (ppointer->handle gp-2)) - ) - ) - ) + (the-as handle (ppointer->handle gp-2))))) (defun ogreboss-missile-scale-explosion ((arg0 handle)) (let* ((gp-0 (handle->process arg0)) (f0-0 (-> (the-as process-drawable gp-0) root scale x)) - (f0-2 (seek f0-0 (the-as float 0.0) (seconds-per-frame))) - ) - (set-vector! (-> (the-as process-drawable gp-0) root scale) f0-2 f0-2 f0-2 1.0) - ) + (f0-2 (seek f0-0 (the-as float 0.0) (seconds-per-frame)))) + (set-vector! (-> (the-as process-drawable gp-0) root scale) f0-2 f0-2 f0-2 1.0)) 0 - (none) - ) + (none)) (defstate ogreboss-missile-impact (ogreboss-missile) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touched) - (cond - (#f - (cond - ((= (-> proc type) target) - (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode)))) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touched) + (cond + (#f + (cond + ((= (-> proc type) target) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'explode))))) + (else (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 4) (set! (-> a1-2 message) 'attack) (set! (-> a1-2 param 0) (-> block param 0)) (set! (-> a1-2 param 1) (the-as uint 'explode)) - (let ((v1-12 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-12) - (set! (-> a1-2 param 2) (the-as uint v1-12)) - ) + (let ((v1-12 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-12) (set! (-> a1-2 param 2) (the-as uint v1-12))) (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function proc a1-2) - ) - ) - ) - (if (= (-> proc type) target) - (send-event (ppointer->process (-> self parent-override)) 'victory) - ) - ) - (else - (let* ((s4-0 proc) - (t1-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) target)) - s4-0 - ) - ) - ) - (cond - (t1-0 + (send-event-function proc a1-2)))) + (if (= (-> proc type) target) (send-event (ppointer->process (-> self parent-override)) 'victory))) + (else + (let* ((s4-0 proc) + (t1-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) target)) s4-0))) + (cond + (t1-0 (let ((s4-1 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'vector)) - (t2-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (t2-0 (new 'stack-no-clear 'collide-tri-result))) 0.0 (set! (-> s4-1 quad) (-> (the-as target t1-0) control trans quad)) (+! (-> s4-1 y) 4096.0) (set-vector! s3-0 0.0 (- 118784.0 (-> s4-1 y)) 0.0 1.0) - (let ((f30-0 - (fill-and-probe-using-line-sphere - *collide-cache* - s4-1 - s3-0 - (the-as float 40.96) - (-> self root root-prim collide-with) - t1-0 - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - s4-1 - s3-0 - (meters 0.00024414062) - (the-as rgba (new 'static 'rgba :g #xff :a #x80)) - ) + (let ((f30-0 (fill-and-probe-using-line-sphere *collide-cache* + s4-1 + s3-0 + (the-as float 40.96) + (-> self root root-prim collide-with) + t1-0 + t2-0 + (new 'static 'pat-surface :noentity #x1)))) + (add-debug-vector #t + (bucket-id debug-no-zbuf) + s4-1 + s3-0 + (meters 0.00024414062) + (the-as rgba (new 'static 'rgba :g #xff :a #x80))) (when (>= f30-0 0.0) (send-event proc 'attack (-> block param 0) (static-attack-info ((mode 'damage)))) - (send-event (ppointer->process (-> self parent-override)) 'victory) - ) - ) - ) - ) - (else - (let ((v1-37 (new 'stack-no-clear 'vector))) - (set-vector! v1-37 0.0 -12288000.0 0.0 1.0) - (send-event proc 'impulse v1-37) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logclear! (-> self mask) (process-mask enemy projectile)) - (ogreboss-rock-explosion-effect (the-as basic (-> self root trans))) - (when (nonzero? (-> self pickup-type)) - (let ((t1-0 (new 'static 'fact-info :options (fact-options fade) :fade-time (seconds 5)))) - (birth-pickup-at-point - (-> self root trans) - (-> self pickup-type) - (-> *FACT-bank* eco-single-inc) - #t - *entity-pool* - t1-0 - ) - ) - ) - (ja-channel-set! 0) - (let ((v1-10 (-> self root root-prim))) - (set! (-> v1-10 local-sphere w) (-> self blast-radius)) - (set! (-> v1-10 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-10 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object ground-object)) - (set! (-> v1-10 prim-core collide-as) (collide-kind enemy)) - ) - (update-transforms! (-> self root)) - (let ((a1-1 (new 'stack-no-clear 'overlaps-others-params))) - (set! (-> a1-1 options) (the-as uint 0)) - (set! (-> a1-1 tlist) *touching-list*) - (find-overlapping-shapes (-> self root) a1-1) - ) - (suspend) - (clear-collide-with-as (-> self root)) - (while (-> self child) + (send-event (ppointer->process (-> self parent-override)) 'victory))))) + (else + (let ((v1-37 (new 'stack-no-clear 'vector))) (set-vector! v1-37 0.0 -12288000.0 0.0 1.0) (send-event proc 'impulse v1-37)))))))))) + :code + (behavior () + (logclear! (-> self mask) (process-mask enemy projectile)) + (ogreboss-rock-explosion-effect (the-as basic (-> self root trans))) + (when (nonzero? (-> self pickup-type)) + (let ((t1-0 (new 'static 'fact-info :options (fact-options fade) :fade-time (seconds 5)))) + (birth-pickup-at-point (-> self root trans) (-> self pickup-type) (-> *FACT-bank* eco-single-inc) #t *entity-pool* t1-0))) + (ja-channel-set! 0) + (let ((v1-10 (-> self root root-prim))) + (set! (-> v1-10 local-sphere w) (-> self blast-radius)) + (set! (-> v1-10 prim-core world-sphere w) (-> self blast-radius)) + (set! (-> v1-10 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object ground-object)) + (set! (-> v1-10 prim-core collide-as) (collide-kind enemy))) + (update-transforms! (-> self root)) + (let ((a1-1 (new 'stack-no-clear 'overlaps-others-params))) + (set! (-> a1-1 options) (the-as uint 0)) + (set! (-> a1-1 tlist) *touching-list*) + (find-overlapping-shapes (-> self root) a1-1)) (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + (clear-collide-with-as (-> self root)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (deftype ogreboss-missile-init-data (structure) - ((src vector) - (dest vector) - (duration time-frame) - (xz-speed float) - (blast-radius float) - (pickup-type pickup-type) - ) - ) - + ((src vector) + (dest vector) + (duration time-frame) + (xz-speed float) + (blast-radius float) + (pickup-type pickup-type))) (defbehavior ogreboss-missile-init-by-other ogreboss-missile ((arg0 ogreboss-missile-init-data) (arg1 entity-actor)) (set! (-> self entity) arg1) (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind background cak-2 target wall-object ground-object)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 event-self) 'touched) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 src quad)) (set! (-> self src-pos quad) (-> arg0 src quad)) (set! (-> self dest-pos quad) (-> arg0 dest quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 root quat vec quad)) (vector-identity! (-> self root scale)) - (initialize-skeleton self *ogreboss-shoot-boulder-sg* '()) + (initialize-skeleton self *ogreboss-shoot-boulder-sg* ()) (logior! (-> self mask) (process-mask enemy projectile)) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw shadow-ctrl) *ogreboss-missile-shadow-control*) (if (> (-> arg0 duration) 0) - (setup-from-to-duration! - (-> self trajectory) - (-> arg0 src) - (-> arg0 dest) - (the float (-> arg0 duration)) - (the-as float -0.22755557) - ) - (setup-from-to-xz-vel! - (-> self trajectory) - (-> arg0 src) - (-> arg0 dest) - (-> arg0 xz-speed) - (the-as float -0.22755557) - ) - ) + (setup-from-to-duration! (-> self trajectory) + (-> arg0 src) + (-> arg0 dest) + (the float (-> arg0 duration)) + (the-as float -0.22755557)) + (setup-from-to-xz-vel! (-> self trajectory) (-> arg0 src) (-> arg0 dest) (-> arg0 xz-speed) (the-as float -0.22755557))) (set-time! (-> self start-time)) (set! (-> self blast-radius) (-> arg0 blast-radius)) (set! (-> self pickup-type) (-> arg0 pickup-type)) (let ((f30-1 (* 65536.0 (rand-vu)))) - (quaternion-axis-angle! - (-> self tumble-quat) - (cos f30-1) - (the-as float 0.0) - (sin f30-1) - (the-as float 2730.6667) - ) - ) + (quaternion-axis-angle! (-> self tumble-quat) (cos f30-1) (the-as float 0.0) (sin f30-1) (the-as float 2730.6667))) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 469) self)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) (go ogreboss-missile-idle) - (none) - ) + (none)) (deftype ogreboss-super-boulder (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer process-drawable) :overlay-at parent) - (orig-pos vector :inline) - (src-pos vector :inline) - (spin-axis vector :inline) - (joint joint-mod-blend-local) - (speed float) - (size float) - (grow-rate float) - (lava entity-actor) - (sound-id sound-id) - (hit-boss symbol) - (tumble-quat quaternion :inline) - ) + ((root collide-shape-moving :override) + (parent-override (pointer process-drawable) :overlay-at parent) + (orig-pos vector :inline) + (src-pos vector :inline) + (spin-axis vector :inline) + (joint joint-mod-blend-local) + (speed float) + (size float) + (grow-rate float) + (lava entity-actor) + (sound-id sound-id) + (hit-boss symbol) + (tumble-quat quaternion :inline)) (:states - ogreboss-super-boulder-die - ogreboss-super-boulder-hit - ogreboss-super-boulder-idle - ogreboss-super-boulder-killed-player - ogreboss-super-boulder-land - ogreboss-super-boulder-roll - ogreboss-super-boulder-throw - ) - ) - + ogreboss-super-boulder-die + ogreboss-super-boulder-hit + ogreboss-super-boulder-idle + ogreboss-super-boulder-killed-player + ogreboss-super-boulder-land + ogreboss-super-boulder-roll + ogreboss-super-boulder-throw)) (defbehavior ogreboss-super-boulder-event-handler ogreboss-super-boulder ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 ;; og:preserve-this PAL patch here (('touch 'attack) - (when (and *target* ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root) - (the-as uint 1) - ) - ) - (if (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder)))) - #f - ) - ) - ) + (when (and *target* + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root) + (the-as uint 1))) + (if (send-event arg0 'attack-invinc (-> arg3 param 0) (static-attack-info ((mode 'ogreboss-super-boulder)))) #f))) (('effect) (case (-> arg3 param 0) (('lava-ripple) @@ -481,99 +361,62 @@ (set! (-> a1-3 num-params) 0) (set! (-> a1-3 message) 'boulder) (let ((t9-3 send-event-function) - (v1-12 (-> self lava)) - ) - (t9-3 - (if v1-12 - (-> v1-12 extra process) - ) - a1-3 - ) - ) - ) - ) - (else - #f - ) - ) - ) - ) - ) + (v1-12 (-> self lava))) + (t9-3 (if v1-12 (-> v1-12 extra process)) a1-3)))) + (else #f))))) (defstate ogreboss-super-boulder-idle (ogreboss-super-boulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('speedup) - (set! (-> self speed) (* 1.3 (-> self speed))) - ) - (('grow-faster) - (set! (-> self grow-rate) 1.0) - ) - (('go-throw) - (go ogreboss-super-boulder-throw) - ) - (('go-hit) - (go ogreboss-super-boulder-hit) - ) - (('go-die) - (go ogreboss-super-boulder-die) - ) - ) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :code (behavior () - (ja :group! ogreboss-super-boulder-idle-ja :num! min) - (set! (-> self joint enable) #t) - (set! (-> self joint blend) 1.0) - (set-time! (-> self state-time)) - (loop - (quaternion-vector-angle! - (-> self tumble-quat) - (-> self spin-axis) - (* 32768.0 (seconds-per-frame) (-> self speed)) - ) - (quaternion*! (-> self joint transform quat) (-> self joint transform quat) (-> self tumble-quat)) - (+! (-> self size) (* (-> self grow-rate) (seconds-per-frame))) - (set! (-> self size) (fmin 1.0 (-> self size))) - (let* ((f0-10 (sqrtf (-> self size))) - (f28-0 (* 0.0033333334 (the float (- (current-time) (-> self state-time))))) - (f30-0 (* 116508.445 f28-0 (-> self speed))) - ) - (set-vector! (-> self joint transform scale) f0-10 f0-10 f0-10 1.0) - (let ((gp-1 (-> self joint transform))) - (set! (-> gp-1 trans x) (* 4096.0 (sin f30-0))) - (set! (-> gp-1 trans y) (+ 122880.0 (* 12288.0 (sin (* 98304.0 f28-0))))) - (set! (-> gp-1 trans z) (* 4096.0 (cos f30-0))) - (set! (-> gp-1 trans w) 1.0) - ) - ) - (spawn (-> self part) (-> self node-list data 3 bone transform vector 3)) - (sound-play "ogre-rock" :id (-> self sound-id) :position (the-as symbol (-> self joint transform))) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('speedup) (set! (-> self speed) (* 1.3 (-> self speed)))) + (('grow-faster) (set! (-> self grow-rate) 1.0)) + (('go-throw) (go ogreboss-super-boulder-throw)) + (('go-hit) (go ogreboss-super-boulder-hit)) + (('go-die) (go ogreboss-super-boulder-die)))) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :code + (behavior () + (ja :group! ogreboss-super-boulder-idle-ja :num! min) + (set! (-> self joint enable) #t) + (set! (-> self joint blend) 1.0) + (set-time! (-> self state-time)) + (loop (quaternion-vector-angle! (-> self tumble-quat) (-> self spin-axis) (* 32768.0 (seconds-per-frame) (-> self speed))) + (quaternion*! (-> self joint transform quat) (-> self joint transform quat) (-> self tumble-quat)) + (+! (-> self size) (* (-> self grow-rate) (seconds-per-frame))) + (set! (-> self size) (fmin 1.0 (-> self size))) + (let* ((f0-10 (sqrtf (-> self size))) + (f28-0 (* 0.0033333334 (the float (- (current-time) (-> self state-time))))) + (f30-0 (* 116508.445 f28-0 (-> self speed)))) + (set-vector! (-> self joint transform scale) f0-10 f0-10 f0-10 1.0) + (let ((gp-1 (-> self joint transform))) + (set! (-> gp-1 trans x) (* 4096.0 (sin f30-0))) + (set! (-> gp-1 trans y) (+ 122880.0 (* 12288.0 (sin (* 98304.0 f28-0))))) + (set! (-> gp-1 trans z) (* 4096.0 (cos f30-0))) + (set! (-> gp-1 trans w) 1.0))) + (spawn (-> self part) (-> self node-list data 3 bone transform vector 3)) + (sound-play "ogre-rock" :id (-> self sound-id) :position (the-as symbol (-> self joint transform))) + (suspend))) + :post transform-post) (defbehavior ogreboss-super-boulder-impact-effect ogreboss-super-boulder () (sound-play "ogre-boulder" :position (the-as symbol (-> self draw origin))) (activate! *camera-smush-control* (the-as float 819.2) 37 600 (the-as float 1.0) (the-as float 0.995)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 471) - -1 - #f - #f - #f - (-> self draw origin) - :to *entity-pool* - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 471) + -1 + #f + #f + #f + (-> self draw origin) + :to + *entity-pool*) 0 - (none) - ) + (none)) (defbehavior ogreboss-super-boulder-play-hit-anim ogreboss-super-boulder () (set! (-> self src-pos quad) (-> self root trans quad)) @@ -581,191 +424,135 @@ (until (ja-done? 0) (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 54.0) 0)) - (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 54.0) 0)) - ) - ) - (f0-13 (fmax 0.0 (fmin 1.0 f1-1))) - ) - (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13) - ) + (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 54.0) 0)))) + (f0-13 (fmax 0.0 (fmin 1.0 f1-1)))) + (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13)) (suspend) - (ja :num! (seek!)) - ) - 0 - ) + (ja :num! (seek!))) + 0) (defstate ogreboss-super-boulder-throw (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self hit-boss) #f) - (set! (-> self src-pos quad) (-> self root trans quad)) - (ja-no-eval :group! ogreboss-super-boulder-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) - (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 32.0) 0)) - (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 32.0) 0)) - ) - ) - (f0-13 (fmax 0.0 (fmin 1.0 f1-1))) - ) - (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13) - ) - 0 - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-super-boulder-land) - ) - :post transform-post - ) + :code + (behavior () + (set! (-> self hit-boss) #f) + (set! (-> self src-pos quad) (-> self root trans quad)) + (ja-no-eval :group! ogreboss-super-boulder-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self joint blend) (the-as float 0.0) (* 5.0 (seconds-per-frame))) + (let* ((f1-1 (/ (- (ja-frame-num 0) (ja-aframe (the-as float 32.0) 0)) + (- (the float (ja-num-frames 0)) (ja-aframe (the-as float 32.0) 0)))) + (f0-13 (fmax 0.0 (fmin 1.0 f1-1)))) + (vector-lerp! (-> self root trans) (-> self src-pos) (-> self orig-pos) f0-13)) + 0 + (suspend) + (ja :num! (seek!))) + (go ogreboss-super-boulder-land)) + :post transform-post) (defstate ogreboss-super-boulder-hit (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self hit-boss) #t) - (ogreboss-super-boulder-play-hit-anim) - (go ogreboss-super-boulder-land) - ) - :post transform-post - ) + :code + (behavior () + (set! (-> self hit-boss) #t) + (ogreboss-super-boulder-play-hit-anim) + (go ogreboss-super-boulder-land)) + :post transform-post) (defstate ogreboss-super-boulder-die (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (ogreboss-super-boulder-play-hit-anim) - (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) - (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) - (ja-channel-set! 0) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post transform-post - ) + :code + (behavior () + (ogreboss-super-boulder-play-hit-anim) + (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) + (ogreboss-rock-explosion-effect (the-as basic (-> self draw origin))) + (ja-channel-set! 0) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post transform-post) (defstate ogreboss-super-boulder-land (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (set! (-> self root trans quad) (-> self orig-pos quad)) - (ogreboss-super-boulder-impact-effect) - (set! (-> self joint enable) #f) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek! (ja-aframe (the-as float 100.0) 0)) - :frame-num 0.0 - ) - (until (ja-done? 0) - (when (< 81920.0 (vector-vector-distance (the-as vector (-> self root root-prim prim-core)) (target-pos 0))) - (ja-channel-push! 1 (seconds 0.1)) - (go ogreboss-super-boulder-roll) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 100.0) 0))) - ) - (go ogreboss-super-boulder-roll) - ) - :post (behavior () - (transform-post) - 0 - ) - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self orig-pos quad)) + (ogreboss-super-boulder-impact-effect) + (set! (-> self joint enable) #f) + (ja-no-eval :group! ogreboss-super-boulder-roll-ja :num! (seek! (ja-aframe (the-as float 100.0) 0)) :frame-num 0.0) + (until (ja-done? 0) + (when (< 81920.0 (vector-vector-distance (the-as vector (-> self root root-prim prim-core)) (target-pos 0))) + (ja-channel-push! 1 (seconds 0.1)) + (go ogreboss-super-boulder-roll)) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 100.0) 0)))) + (go ogreboss-super-boulder-roll)) + :post + (behavior () + (transform-post) + 0)) (defstate ogreboss-super-boulder-roll (ogreboss-super-boulder) :event ogreboss-super-boulder-event-handler - :code (behavior () - (ogreboss-super-boulder-impact-effect) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek! (ja-aframe (the-as float 162.0) 0)) - :frame-num (ja-aframe (the-as float 100.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 162.0) 0))) - ) - (set! (-> self root root-prim local-sphere w) 28672.0) - (cond - ((-> self hit-boss) - (while (let ((gp-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-2 from) self) - (set! (-> gp-2 num-params) 0) - (set! (-> gp-2 message) 'break) - (let ((s5-0 send-event-function) - (v1-22 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (not (s5-0 - (if v1-22 - (-> v1-22 extra process) - ) - gp-2 - ) - ) - ) - ) - (suspend) - ) - ) - (else - (while (let ((gp-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-3 from) self) - (set! (-> gp-3 num-params) 0) - (set! (-> gp-3 message) 'break-no-damage) - (let ((s5-1 send-event-function) - (v1-27 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (not (s5-1 - (if v1-27 - (-> v1-27 extra process) - ) - gp-3 - ) - ) - ) - ) - (suspend) - ) - ) - ) - (ja-no-eval :group! ogreboss-super-boulder-roll-ja - :num! (seek!) - :frame-num (ja-aframe (the-as float 162.0) 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (cleanup-for-death self) - ) - :post (behavior () - (transform-post) - 0 - ) - ) + :code + (behavior () + (ogreboss-super-boulder-impact-effect) + (ja-no-eval :group! + ogreboss-super-boulder-roll-ja + :num! + (seek! (ja-aframe (the-as float 162.0) 0)) + :frame-num + (ja-aframe (the-as float 100.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 162.0) 0)))) + (set! (-> self root root-prim local-sphere w) 28672.0) + (cond + ((-> self hit-boss) + (while (let ((gp-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-2 from) self) + (set! (-> gp-2 num-params) 0) + (set! (-> gp-2 message) 'break) + (let ((s5-0 send-event-function) + (v1-22 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (not (s5-0 (if v1-22 (-> v1-22 extra process)) gp-2)))) + (suspend))) + (else + (while (let ((gp-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-3 from) self) + (set! (-> gp-3 num-params) 0) + (set! (-> gp-3 message) 'break-no-damage) + (let ((s5-1 send-event-function) + (v1-27 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (not (s5-1 (if v1-27 (-> v1-27 extra process)) gp-3)))) + (suspend)))) + (ja-no-eval :group! ogreboss-super-boulder-roll-ja :num! (seek!) :frame-num (ja-aframe (the-as float 162.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (cleanup-for-death self)) + :post + (behavior () + (transform-post) + 0)) (defmethod relocate ((this ogreboss-super-boulder) (arg0 int)) - (if (nonzero? (-> this joint)) - (&+! (-> this joint) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this joint)) (&+! (-> this joint) arg0)) + (call-parent-method this arg0)) (defstate ogreboss-super-boulder-killed-player (ogreboss-super-boulder) - :code (behavior () - (clear-collide-with-as (-> self root)) - (ja-post) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (ja-post) + (loop (suspend)))) (defbehavior ogreboss-super-boulder-init-by-other ogreboss-super-boulder ((arg0 vector) (arg1 float) (arg2 entity-actor)) (set! (-> self entity) arg2) (let ((s4-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -773,31 +560,22 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self orig-pos quad) (-> arg0 quad)) (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 root quat vec quad)) (vector-identity! (-> self root scale)) - (initialize-skeleton self *ogreboss-super-boulder-sg* '()) + (initialize-skeleton self *ogreboss-super-boulder-sg* ()) ;; og:preserve-this PAL patch here (logclear! (-> self mask) (process-mask actor-pause enemy)) (set! (-> self lava) (entity-actor-lookup (-> self entity) 'water-actor 0)) (logior! (-> self skel effect flags) 1) (set! (-> self draw origin-joint-index) (the-as uint 3)) (let ((f30-1 (* 65536.0 (rand-vu)))) - (quaternion-axis-angle! - (-> self tumble-quat) - (cos f30-1) - (the-as float 0.0) - (sin f30-1) - (the-as float 2730.6667) - ) - ) + (quaternion-axis-angle! (-> self tumble-quat) (cos f30-1) (the-as float 0.0) (sin f30-1) (the-as float 2730.6667))) (set! (-> self joint) (new 'process 'joint-mod-blend-local self 3 #f)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 468) self)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) @@ -806,92 +584,73 @@ (set! (-> self grow-rate) (/ 300.0 arg1)) (set! (-> self sound-id) (new-sound-id)) (go ogreboss-super-boulder-idle) - (none) - ) + (none)) (deftype ogreboss-bounce-boulder (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer ogreboss-super-boulder) :overlay-at parent) - (src-pos vector :inline) - (side-dir vector :inline) - (side-pos float) - (dest-pos float) - (boulder-type int8) - ) + ((root collide-shape-moving :override) + (parent-override (pointer ogreboss-super-boulder) :overlay-at parent) + (src-pos vector :inline) + (side-dir vector :inline) + (side-pos float) + (dest-pos float) + (boulder-type int8)) (:states - ogreboss-bounce-boulder-idle - ) - ) - + ogreboss-bounce-boulder-idle)) (defbehavior ogreboss-bounce-boulder-event-handler ogreboss-bounce-boulder ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch) - (if (and *target* ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root) - (the-as uint 1) - ) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - ) - ) + (if (and *target* + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root) + (the-as uint 1))) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)))))) (defstate ogreboss-bounce-boulder-idle (ogreboss-bounce-boulder) :event ogreboss-bounce-boulder-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (let ((f30-0 2.0)) - (ja-no-eval :group! ogreboss-bounce-boulder-idle-ja - :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (set! (-> self side-pos) - (* (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe (the-as float 40.0) 0))) (-> self dest-pos)) - ) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0)) - ) - (ja-no-eval :group! ogreboss-bounce-boulder-idle-ja - :num! (seek! max f30-0) - :frame-num (ja-aframe (the-as float 40.0) 0) - ) - (until (ja-done? 0) - (if (>= (ja-frame-num 0) (ja-aframe (the-as float 235.0) 0)) - (seek! (-> self side-pos) (the-as float 0.0) (* 20480.0 (seconds-per-frame))) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (cleanup-for-death self) - ) - :post (behavior () - (vector+*! (-> self root trans) (-> self src-pos) (-> self side-dir) (-> self side-pos)) - (transform-post) - (find-ground-and-draw-shadow - (the-as vector (-> self root root-prim prim-core)) - (the-as vector #f) - (the-as float 49152.0) - (collide-kind background) - (the-as process-drawable #f) - (the-as float 0.0) - (the-as float 409600.0) - ) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((f30-0 2.0)) + (ja-no-eval :group! + ogreboss-bounce-boulder-idle-ja + :num! + (seek! (ja-aframe (the-as float 40.0) 0) f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self side-pos) (* (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe (the-as float 40.0) 0))) (-> self dest-pos))) + (suspend) + (ja :num! (seek! (ja-aframe (the-as float 40.0) 0) f30-0))) + (ja-no-eval :group! + ogreboss-bounce-boulder-idle-ja + :num! (seek! max f30-0) + :frame-num + (ja-aframe (the-as float 40.0) 0)) + (until (ja-done? 0) + (if (>= (ja-frame-num 0) (ja-aframe (the-as float 235.0) 0)) + (seek! (-> self side-pos) (the-as float 0.0) (* 20480.0 (seconds-per-frame)))) + (suspend) + (ja :num! (seek! max f30-0)))) + (cleanup-for-death self)) + :post + (behavior () + (vector+*! (-> self root trans) (-> self src-pos) (-> self side-dir) (-> self side-pos)) + (transform-post) + (find-ground-and-draw-shadow (the-as vector (-> self root root-prim prim-core)) + (the-as vector #f) + (the-as float 49152.0) + (collide-kind background) + (the-as process-drawable #f) + (the-as float 0.0) + (the-as float 409600.0)))) (defbehavior ogreboss-bounce-boulder-init-by-other ogreboss-bounce-boulder ((arg0 int) (arg1 entity-actor)) (set! (-> self entity) arg1) (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -899,88 +658,72 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self boulder-type) arg0) (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 root quat vec quad)) (vector-identity! (-> self root scale)) (set! (-> self src-pos quad) (-> self root trans quad)) (set! (-> self side-pos) 0.0) - (set! (-> self dest-pos) (the-as float (cond - ((zero? arg0) - 0.0 - ) - ((= arg0 1) - -20480.0 - ) - ((= arg0 2) - 20480.0 - ) - (else - 0.0 - ) - ) - ) - ) + (set! (-> self dest-pos) + (the-as float + (cond + ((zero? arg0) 0.0) + ((= arg0 1) -20480.0) + ((= arg0 2) 20480.0) + (else 0.0)))) (vector-x-quaternion! (-> self side-dir) (-> self root quat)) - (initialize-skeleton self *ogreboss-bounce-boulder-sg* '()) + (initialize-skeleton self *ogreboss-bounce-boulder-sg* ()) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self draw origin-joint-index) (the-as uint 3)) (set-vector! (-> self draw color-emissive) 0.125 0.0625 0.0 0.0) (go ogreboss-bounce-boulder-idle) - (none) - ) + (none)) (deftype ogreboss (process-drawable) - ((root collide-shape :override) - (old-player-transform transformq :inline) - (level float) - (difficulty float) - (boulder handle) - (column handle) - (z-plane vector :inline) - (far-pos vector :inline) - (near-pos vector :inline) - (side-dir vector :inline) - (target-offset-array vector 3 :inline) - (target-offset-array-2 vector :inline :overlay-at (-> target-offset-array 1)) - (target-offset-array-3 vector :inline :overlay-at (-> target-offset-array 2)) - (target-actor-array entity-actor 3) - (target-blast-radius-array float 3) - (shuffle-pos float) - (target-count int8) - (hit-count int8) - (max-hit-count int8) - (roll-boulder int8) - (try-count uint8) - (hit-time time-frame) - (grow-time float) - (lava entity-actor) - (vulnerable symbol) - (bridge-assembled symbol) - (at-near-spot symbol) - (submerged symbol) - (try-counted symbol) - ) + ((root collide-shape :override) + (old-player-transform transformq :inline) + (level float) + (difficulty float) + (boulder handle) + (column handle) + (z-plane vector :inline) + (far-pos vector :inline) + (near-pos vector :inline) + (side-dir vector :inline) + (target-offset-array vector 3 :inline) + (target-offset-array-2 vector :inline :overlay-at (-> target-offset-array 1)) + (target-offset-array-3 vector :inline :overlay-at (-> target-offset-array 2)) + (target-actor-array entity-actor 3) + (target-blast-radius-array float 3) + (shuffle-pos float) + (target-count int8) + (hit-count int8) + (max-hit-count int8) + (roll-boulder int8) + (try-count uint8) + (hit-time time-frame) + (grow-time float) + (lava entity-actor) + (vulnerable symbol) + (bridge-assembled symbol) + (at-near-spot symbol) + (submerged symbol) + (try-counted symbol)) (:states - ogreboss-dead - ogreboss-die - ogreboss-idle - ogreboss-intro - ogreboss-stage1 - ogreboss-stage2 - ogreboss-stage3-hit - ogreboss-stage3-shuffle - ogreboss-stage3-throw - ogreboss-wait-for-player - ) - ) - + ogreboss-dead + ogreboss-die + ogreboss-idle + ogreboss-intro + ogreboss-stage1 + ogreboss-stage2 + ogreboss-stage3-hit + ogreboss-stage3-shuffle + ogreboss-stage3-throw + ogreboss-wait-for-player)) (defbehavior ogreboss-inc-try-count ogreboss () (when (not (-> self try-counted)) @@ -988,217 +731,151 @@ (let ((gp-0 (-> self entity extra perm))) (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) (seekl! (-> gp-0 user-int8 0) 255 1) - (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))) - ) - ) + (set! (-> self try-count) (the-as uint (-> gp-0 user-int8 0))))) 0 - (none) - ) + (none)) (defbehavior ogreboss-player-inside-range? ogreboss ((arg0 float)) - (< (vector-vector-distance (-> self far-pos) (target-pos 0)) arg0) - ) + (< (vector-vector-distance (-> self far-pos) (target-pos 0)) arg0)) (defun ogreboss-set-stage1-camera () 0 - (none) - ) + (none)) (defun ogreboss-set-stage2-camera () 0 - (none) - ) + (none)) (defun ogreboss-reset-camera () 0 - (none) - ) + (none)) (defbehavior ogreboss-idle-loop ogreboss () - (loop - (ja-channel-push! 1 (seconds 0.1)) + (loop (ja-channel-push! 1 (seconds 0.1)) (let ((v1-0 (rand-vu-int-range 0 2))) (cond ((zero? v1-0) (ja-no-eval :group! ogreboss-idle-ja :num! (seek! (ja-aframe (the-as float 140.0) 0)) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 140.0) 0))) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.167)) - (suspend) - ) - ) - (ja-no-eval :group! ogreboss-idle-ja - :num! (seek! (ja-aframe (the-as float 168.0) 0)) - :frame-num (ja-aframe (the-as float 140.0) 0) - ) + (ja :num! (seek! (ja-aframe (the-as float 140.0) 0)))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.167)) (suspend))) + (ja-no-eval :group! + ogreboss-idle-ja + :num! + (seek! (ja-aframe (the-as float 168.0) 0)) + :frame-num + (ja-aframe (the-as float 140.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe (the-as float 168.0) 0))) - ) - (let ((gp-5 (current-time))) - (until (time-elapsed? gp-5 (seconds 0.167)) - (suspend) - ) - ) + (ja :num! (seek! (ja-aframe (the-as float 168.0) 0)))) + (let ((gp-5 (current-time))) (until (time-elapsed? gp-5 (seconds 0.167)) (suspend))) (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num (ja-aframe (the-as float 168.0) 0)) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) ((= v1-0 1) (ja-no-eval :group! ogreboss-idle-alt-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) (else - (dotimes (gp-7 4) - (ja-no-eval :group! ogreboss-idle-bored-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (dotimes (gp-7 4) + (ja-no-eval :group! ogreboss-idle-bored-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (the-as none 0) - (none) - ) + (none)) (defstate ogreboss-idle (ogreboss) - :enter (behavior () - (when (zero? (-> self try-count)) - (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *ogreboss-column-sg* #f :to self))) - (set! (-> self column) (ppointer->handle gp-0)) - (send-event (ppointer->process gp-0) 'anim-mode 'loop) - (send-event (ppointer->process gp-0) 'art-joint-anim "ogreboss-column-idle" 0) - (send-event (ppointer->process gp-0) 'draw #t) - ) - ) - ) - :trans (behavior () - (try-preload-stream *art-control* "$GAMCAM23" 0 self (the-as float -99.0)) - (when *target* - (let ((gp-0 (-> *target* control trans))) - (if (and (< 122880.0 (-> gp-0 y)) - (< (-> gp-0 x) 892928.0) - (and (ogreboss-player-inside-range? (the-as float 737280.0)) (< 0.0 (vector4-dot gp-0 (-> self z-plane)))) - ) - (go ogreboss-intro) - ) - ) - ) - ) - :code (behavior () - (ogreboss-reset-camera) - (ogreboss-idle-loop) - ) - :post ja-post - ) + :enter + (behavior () + (when (zero? (-> self try-count)) + (let ((gp-0 (manipy-spawn (-> self root trans) (-> self entity) *ogreboss-column-sg* #f :to self))) + (set! (-> self column) (ppointer->handle gp-0)) + (send-event (ppointer->process gp-0) 'anim-mode 'loop) + (send-event (ppointer->process gp-0) 'art-joint-anim "ogreboss-column-idle" 0) + (send-event (ppointer->process gp-0) 'draw #t)))) + :trans + (behavior () + (try-preload-stream *art-control* "$GAMCAM23" 0 self (the-as float -99.0)) + (when *target* + (let ((gp-0 (-> *target* control trans))) + (if (and (< 122880.0 (-> gp-0 y)) + (< (-> gp-0 x) 892928.0) + (and (ogreboss-player-inside-range? (the-as float 737280.0)) (< 0.0 (vector4-dot gp-0 (-> self z-plane))))) + (go ogreboss-intro))))) + :code + (behavior () + (ogreboss-reset-camera) + (ogreboss-idle-loop)) + :post ja-post) (defstate ogreboss-intro (ogreboss) - :code (behavior () - (when (zero? (-> self try-count)) - (process-drawable-delay-player (seconds 1)) - (let ((gp-0 (get-process *default-dead-pool* pov-camera #x4000))) - (ppointer->handle (when gp-0 - (let ((t9-2 (method-of-type pov-camera activate))) - (t9-2 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self root trans) - *ogreboss-cam-sg* - "ogreboss-cam-intro" - 0 - #f - '((0 setting-reset music ogreboss) (2 ambient camera "gamcam23")) - ) - (-> gp-0 ppointer) - ) - ) - ) - (send-event (handle->process (-> self column)) 'anim-mode 'play1) - (send-event (handle->process (-> self column)) 'art-joint-anim "ogreboss-column-intro" 0) - (ja-no-eval :group! ogreboss-intro-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :code + (behavior () + (when (zero? (-> self try-count)) + (process-drawable-delay-player (seconds 1)) + (let ((gp-0 (get-process *default-dead-pool* pov-camera #x4000))) + (ppointer->handle (when gp-0 + (let ((t9-2 (method-of-type pov-camera activate))) + (t9-2 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000))) + (run-now-in-process gp-0 + pov-camera-init-by-other + (-> self root trans) + *ogreboss-cam-sg* + "ogreboss-cam-intro" + 0 + #f + '((0 setting-reset music ogreboss) (2 ambient camera "gamcam23"))) + (-> gp-0 ppointer)))) + (send-event (handle->process (-> self column)) 'anim-mode 'play1) + (send-event (handle->process (-> self column)) 'art-joint-anim "ogreboss-column-intro" 0) + (ja-no-eval :group! ogreboss-intro-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (close-specific-task! (game-task ogre-boss) (task-status need-hint)) (suspend) - (ja :num! (seek!)) - ) - (close-specific-task! (game-task ogre-boss) (task-status need-hint)) - (suspend) - (send-event *target* 'continue (get-continue-by-name *game-info* "ogre-start")) - (ogreboss-inc-try-count) - ) - (set-setting! 'music 'ogreboss 0.0 0) - (go ogreboss-wait-for-player) - ) - :post ja-post - ) + (send-event *target* 'continue (get-continue-by-name *game-info* "ogre-start")) + (ogreboss-inc-try-count)) + (set-setting! 'music 'ogreboss 0.0 0) + (go ogreboss-wait-for-player)) + :post ja-post) (defstate ogreboss-wait-for-player (ogreboss) - :trans (behavior () - (when *target* - (if (ogreboss-player-inside-range? (the-as float 614400.0)) - (go ogreboss-stage1) - ) - (if (not (ogreboss-player-inside-range? (the-as float 737280.0))) - (go ogreboss-idle) - ) - ) - ) - :code (behavior () - (ogreboss-idle-loop) - ) - :post ja-post - ) + :trans + (behavior () + (when *target* + (if (ogreboss-player-inside-range? (the-as float 614400.0)) (go ogreboss-stage1)) + (if (not (ogreboss-player-inside-range? (the-as float 737280.0))) (go ogreboss-idle)))) + :code + (behavior () + (ogreboss-idle-loop)) + :post ja-post) (defun ogreboss-debug-adjust-difficulty () 0 - (none) - ) + (none)) (defbehavior ogreboss-pick-target ogreboss () (local-vars (gp-0 int)) (cond - ((rand-vu-percent? (the-as float 0.4)) - (set! gp-0 (rand-vu-int-range 0 (+ (-> self target-count) -1))) - ) + ((rand-vu-percent? (the-as float 0.4)) (set! gp-0 (rand-vu-int-range 0 (+ (-> self target-count) -1)))) (else - (set! gp-0 0) - (let ((f30-0 4096000.0) - (s5-0 (target-pos 0)) - ) - (dotimes (s4-0 (-> self target-count)) - (let* ((v1-6 (-> self target-actor-array s4-0)) - (s3-0 (if v1-6 - (-> v1-6 extra process) - ) - ) - ) - (when s3-0 - (let ((f0-0 (vector-vector-distance s5-0 (-> (the-as process-drawable s3-0) root trans)))) - (when (< f0-0 f30-0) - (set! f30-0 f0-0) - (set! gp-0 s4-0) - ) - ) - ) - ) - ) - ) - ) - ) - gp-0 - ) + (set! gp-0 0) + (let ((f30-0 4096000.0) + (s5-0 (target-pos 0))) + (dotimes (s4-0 (-> self target-count)) + (let* ((v1-6 (-> self target-actor-array s4-0)) + (s3-0 (if v1-6 (-> v1-6 extra process)))) + (when s3-0 + (let ((f0-0 (vector-vector-distance s5-0 (-> (the-as process-drawable s3-0) root trans)))) + (when (< f0-0 f30-0) + (set! f30-0 f0-0) + (set! gp-0 s4-0))))))))) + gp-0) (defbehavior ogreboss-shoot-boulder ogreboss ((arg0 pickup-type)) (let ((gp-0 (new 'stack-no-clear 'ogreboss-missile-init-data))) @@ -1206,122 +883,73 @@ ;; og:preserve-this (set! (-> gp-0 src) (-> self node-list data (#if *jak1-full-game* 50 52) bone transform vector 3)) (set! (-> gp-0 duration) - (the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty)))))) - ) + (the-as time-frame (the int (* 300.0 (+ 1.25 (* -0.25 (-> self level)) (/ 0.5 (-> self difficulty))))))) (set! (-> gp-0 pickup-type) arg0) (set! (-> gp-0 blast-radius) 32768.0) (cond (*target* - (let ((v1-10 (ogreboss-pick-target))) - (let* ((a0-3 (-> self target-actor-array v1-10)) - (a1-0 (if a0-3 - (-> a0-3 extra process) - ) - ) - ) - (if a1-0 - (set! (-> s5-0 quad) (-> (the-as process-drawable a1-0) root trans quad)) - (set! (-> s5-0 quad) (-> self root trans quad)) - ) - ) - (vector+! s5-0 s5-0 (-> self target-offset-array v1-10)) - (set! (-> gp-0 blast-radius) (-> self target-blast-radius-array v1-10)) - ) - ) - (else - (vector+*! s5-0 (-> self root trans) *z-vector* (the-as float 409600.0)) - ) - ) - (set! (-> gp-0 dest) s5-0) - ) + (let ((v1-10 (ogreboss-pick-target))) + (let* ((a0-3 (-> self target-actor-array v1-10)) + (a1-0 (if a0-3 (-> a0-3 extra process)))) + (if a1-0 + (set! (-> s5-0 quad) (-> (the-as process-drawable a1-0) root trans quad)) + (set! (-> s5-0 quad) (-> self root trans quad)))) + (vector+! s5-0 s5-0 (-> self target-offset-array v1-10)) + (set! (-> gp-0 blast-radius) (-> self target-blast-radius-array v1-10)))) + (else (vector+*! s5-0 (-> self root trans) *z-vector* (the-as float 409600.0)))) + (set! (-> gp-0 dest) s5-0)) (sound-play "ogre-fires" :position (the-as symbol (-> self root trans))) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 470) - -1 - #f - #f - #f - (-> gp-0 src) - :to *entity-pool* - ) - (process-spawn ogreboss-missile gp-0 (-> self entity) :to self) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 470) + -1 + #f + #f + #f + (-> gp-0 src) + :to + *entity-pool*) + (process-spawn ogreboss-missile gp-0 (-> self entity) :to self)) 0 - (none) - ) + (none)) (defbehavior ogreboss-submerge ogreboss ((arg0 time-frame) (arg1 float)) (when (not (-> self submerged)) (cond - ((ja-group? ogreboss-dive-ja) + ((ja-group? ogreboss-dive-ja) (until (ja-done? 0) (suspend) (ja :num! (seek! max arg1)))) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-dive-ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max arg1)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-dive-ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1)) - ) - (cond - ((-> self at-near-spot) - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 0) - (set! (-> a1-7 message) 'submerge2) - (let ((t9-8 send-event-function) - (v1-31 (-> self lava)) - ) - (t9-8 - (if v1-31 - (-> v1-31 extra process) - ) - a1-7 - ) - ) - ) - ) - (else - (let ((a1-8 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-8 from) self) - (set! (-> a1-8 num-params) 0) - (set! (-> a1-8 message) 'submerge1) - (let ((t9-9 send-event-function) - (v1-35 (-> self lava)) - ) - (t9-9 - (if v1-35 - (-> v1-35 extra process) - ) - a1-8 - ) - ) - ) - ) - ) - (ja-no-eval :group! ogreboss-dive-ja :num! (seek! max arg1) :frame-num (ja-aframe (the-as float 22.0) 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max arg1)) - ) - ) - ) + (ja :num! (seek! (ja-aframe (the-as float 22.0) 0) arg1))) + (cond + ((-> self at-near-spot) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 0) + (set! (-> a1-7 message) 'submerge2) + (let ((t9-8 send-event-function) + (v1-31 (-> self lava))) + (t9-8 (if v1-31 (-> v1-31 extra process)) a1-7)))) + (else + (let ((a1-8 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-8 from) self) + (set! (-> a1-8 num-params) 0) + (set! (-> a1-8 message) 'submerge1) + (let ((t9-9 send-event-function) + (v1-35 (-> self lava))) + (t9-9 (if v1-35 (-> v1-35 extra process)) a1-8))))) + (ja-no-eval :group! ogreboss-dive-ja :num! (seek! max arg1) :frame-num (ja-aframe (the-as float 22.0) 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max arg1))))) (logior! (-> self draw status) (draw-status hidden)) (set! (-> self submerged) #t) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 arg0) - (suspend) - ) - ) - ) + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 arg0) (suspend)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-emerge ogreboss ((arg0 float)) (when (-> self submerged) @@ -1334,253 +962,161 @@ (set! (-> a1-0 num-params) 0) (set! (-> a1-0 message) 'emerge2) (let ((t9-0 send-event-function) - (v1-6 (-> self lava)) - ) - (t9-0 - (if v1-6 - (-> v1-6 extra process) - ) - a1-0 - ) - ) - ) - ) + (v1-6 (-> self lava))) + (t9-0 (if v1-6 (-> v1-6 extra process)) a1-0)))) (else - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'emerge1) - (let ((t9-1 send-event-function) - (v1-10 (-> self lava)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - ) - ) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'emerge1) + (let ((t9-1 send-event-function) + (v1-10 (-> self lava))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))))) (ja-no-eval :group! ogreboss-rise-ja :num! (seek! max arg0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max arg0)) - ) - ) + (ja :num! (seek! max arg0)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-move-near ogreboss ((arg0 time-frame) (arg1 float)) (when (not (-> self at-near-spot)) (ogreboss-submerge arg0 arg1) (set! (-> self at-near-spot) #t) (set! (-> self root trans quad) (-> self near-pos quad)) - (ogreboss-emerge arg1) - ) + (ogreboss-emerge arg1)) 0 - (none) - ) + (none)) (defbehavior ogreboss-move-far ogreboss ((arg0 time-frame) (arg1 float)) (when (-> self at-near-spot) (ogreboss-submerge arg0 arg1) (set! (-> self at-near-spot) #f) (set! (-> self root trans quad) (-> self far-pos quad)) - (ogreboss-emerge arg1) - ) + (ogreboss-emerge arg1)) 0 - (none) - ) + (none)) (defbehavior ogreboss-post ogreboss () (transform-post) (send-event *camera* 'point-of-interest (-> self node-list data 5 bone transform vector 3)) 0 - (none) - ) + (none)) (defstate ogreboss-stage1 (ogreboss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('next-stage) - (set! (-> self bridge-assembled) #t) - (go ogreboss-stage2) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and (-> self bridge-assembled) - (ogreboss-player-inside-range? (the-as float 524288.0)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go ogreboss-stage2) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask enemy)) - (ogreboss-set-stage1-camera) - (ogreboss-move-near (seconds 3) (the-as float 1.0)) - (cond - ((ja-group? ogreboss-victory-ja) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('next-stage) (set! (-> self bridge-assembled) #t) (go ogreboss-stage2)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and (-> self bridge-assembled) + (ogreboss-player-inside-range? (the-as float 524288.0)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go ogreboss-stage2))) + :code + (behavior () + (logior! (-> self mask) (process-mask enemy)) + (ogreboss-set-stage1-camera) + (ogreboss-move-near (seconds 3) (the-as float 1.0)) + (cond + ((ja-group? ogreboss-victory-ja) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-roar-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (let* ((gp-0 (the int (* (-> self difficulty) (+ 8.0 (* 4.0 (-> self level)))))) + (f0-17 1.0) + (f1-2 0.15) + (f2-2 (-> self difficulty)) + (f30-0 (+ f0-17 (* f1-2 (* f2-2 f2-2) (-> self level))))) (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-roar-ja :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (let* ((gp-0 (the int (* (-> self difficulty) (+ 8.0 (* 4.0 (-> self level)))))) - (f0-17 1.0) - (f1-2 0.15) - (f2-2 (-> self difficulty)) - (f30-0 (+ f0-17 (* f1-2 (* f2-2 f2-2) (-> self level)))) - ) + (ja :num! (seek! max f30-0))) + (countdown (gp-1 (+ gp-0 -1)) + (let ((boulder-pickup (pickup-type none))) + (let ((f28-0 0.0)) + (cond + ((>= 1.0 (-> *target* fact health)) (set! f28-0 0.1)) + ((>= 2.0 (-> *target* fact health)) (set! f28-0 0.05))) + (set! f28-0 + (cond + ((< (-> self try-count) (the-as uint 5)) (* 0.0 f28-0)) + ((< (-> self try-count) (the-as uint 10)) (* 0.5 f28-0)) + (else (empty) f28-0))) + (if (and *target* (< (rand-vu) f28-0)) (set! boulder-pickup (pickup-type eco-green)))) + (ogreboss-shoot-boulder (the-as pickup-type boulder-pickup))) + (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ogreboss-inc-try-count)) + (ogreboss-shoot-boulder (pickup-type eco-blue)) + (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (ogreboss-move-far (seconds 2) (the-as float 1.0)) (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - (countdown (gp-1 (+ gp-0 -1)) - (let ((boulder-pickup (pickup-type none))) - (let ((f28-0 0.0)) - (cond - ((>= 1.0 (-> *target* fact health)) - (set! f28-0 0.1) - ) - ((>= 2.0 (-> *target* fact health)) - (set! f28-0 0.05) - ) - ) - (set! f28-0 (cond - ((< (-> self try-count) (the-as uint 5)) - (* 0.0 f28-0) - ) - ((< (-> self try-count) (the-as uint 10)) - (* 0.5 f28-0) - ) - (else - (empty) - f28-0 - ) - ) - ) - (if (and *target* (< (rand-vu) f28-0)) - (set! boulder-pickup (pickup-type eco-green)) - ) - ) - (ogreboss-shoot-boulder (the-as pickup-type boulder-pickup)) - ) - (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ogreboss-inc-try-count) - ) - (ogreboss-shoot-boulder (pickup-type eco-blue)) - (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (ogreboss-move-far (seconds 2) (the-as float 1.0)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-stage1) - ) - :post ogreboss-post - ) + (ja :num! (seek!))) + (go ogreboss-stage1)) + :post ogreboss-post) (defbehavior ogreboss-roll-boulder ogreboss () (sound-play "ogre-fires" :position (the-as symbol (-> self root trans))) (+! (-> self roll-boulder) (rand-vu-int-range 1 2)) - (if (>= (-> self roll-boulder) 3) - (+! (-> self roll-boulder) -3) - ) + (if (>= (-> self roll-boulder) 3) (+! (-> self roll-boulder) -3)) (let ((v1-7 (-> self roll-boulder))) (cond - ((zero? v1-7) - (process-spawn ogreboss-bounce-boulder 2 (-> self entity) :to self) - ) - ((= v1-7 1) - (process-spawn ogreboss-bounce-boulder 1 (-> self entity) :to self) - ) - (else - (process-spawn ogreboss-bounce-boulder 0 (-> self entity) :to self) - ) - ) - ) + ((zero? v1-7) (process-spawn ogreboss-bounce-boulder 2 (-> self entity) :to self)) + ((= v1-7 1) (process-spawn ogreboss-bounce-boulder 1 (-> self entity) :to self)) + (else (process-spawn ogreboss-bounce-boulder 0 (-> self entity) :to self)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-blend-hit-anim ogreboss () (let ((f1-0 0.0) - (f0-0 0.0) - ) + (f0-0 0.0)) (let ((f30-0 (the float (- (current-time) (-> self hit-time))))) (when (and (> (-> self hit-count) 0) (>= 45.0 f30-0)) - (set! f0-0 (+ (ja-aframe (the-as float 0.0) 1) - (* 0.022222223 f30-0 (- (ja-aframe (the-as float 8.0) 1) (ja-aframe (the-as float 0.0) 1))) - ) - ) - (set! f1-0 (cond - ((< f30-0 7.5) - (* 0.120000005 f30-0) - ) - ((< f30-0 22.5) - 0.9 - ) - (else - (* 0.04 (- 45.0 f30-0)) - ) - ) - ) - ) - ) - (ja :chan 1 :frame-interp f1-0 :num-func num-func-identity :frame-num f0-0) - ) + (set! f0-0 + (+ (ja-aframe (the-as float 0.0) 1) + (* 0.022222223 f30-0 (- (ja-aframe (the-as float 8.0) 1) (ja-aframe (the-as float 0.0) 1))))) + (set! f1-0 + (cond + ((< f30-0 7.5) (* 0.120000005 f30-0)) + ((< f30-0 22.5) 0.9) + (else (* 0.04 (- 45.0 f30-0))))))) + (ja :chan 1 :frame-interp f1-0 :num-func num-func-identity :frame-num f0-0)) 0 - (none) - ) + (none)) (defbehavior ogreboss-update-super-boulder ogreboss () (let ((a1-0 (handle->process (-> self boulder)))) - (if a1-0 - (set! (-> (the-as ogreboss-super-boulder a1-0) root trans quad) (-> self root trans quad)) - ) - ) + (if a1-0 (set! (-> (the-as ogreboss-super-boulder a1-0) root trans quad) (-> self root trans quad)))) 0 - (none) - ) + (none)) (defbehavior ogreboss-update-shuffling ogreboss () (ogreboss-update-super-boulder) (ogreboss-blend-hit-anim) 0 - (none) - ) + (none)) (defbehavior ogreboss-attack-event-handler ogreboss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -1589,367 +1125,259 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 128) - ) - (ja :chan 1 :group! ogreboss-hit-crotch-ja :num! min :frame-interp 0.0) - (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) - ) + (the-as uint 128)) + (ja :chan 1 :group! ogreboss-hit-crotch-ja :num! min :frame-interp 0.0) + (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0)) (set-time! (-> self hit-time)) (let ((v1-17 (rand-vu-int-range 0 2))) (cond - ((zero? v1-17) - (sound-play "ogre-grunt1" :position (the-as symbol (-> self root trans))) - ) - ((= v1-17 1) - (sound-play "ogre-grunt2" :position (the-as symbol (-> self root trans))) - ) - (else - (sound-play "ogre-grunt3" :position (the-as symbol (-> self root trans))) - ) - ) - ) + ((zero? v1-17) (sound-play "ogre-grunt1" :position (the-as symbol (-> self root trans)))) + ((= v1-17 1) (sound-play "ogre-grunt2" :position (the-as symbol (-> self root trans)))) + (else (sound-play "ogre-grunt3" :position (the-as symbol (-> self root trans)))))) (+! (-> self hit-count) 1) - (if (>= (-> self hit-count) (-> self max-hit-count)) - (go ogreboss-stage3-hit) - ) - (send-event (handle->process (-> self boulder)) 'speedup) - ) - #t - ) - ) - ) + (if (>= (-> self hit-count) (-> self max-hit-count)) (go ogreboss-stage3-hit)) + (send-event (handle->process (-> self boulder)) 'speedup)) + #t))) (defstate ogreboss-stage2 (ogreboss) :event ogreboss-attack-event-handler - :enter (behavior () - (set! (-> self boulder) (the-as handle #f)) - ) - :trans (behavior () - 0 - ) - :code (behavior () - (ogreboss-set-stage2-camera) - (ogreboss-move-far (seconds 0.1) (the-as float 2.0)) - (let ((f30-0 (* 0.75 (-> self difficulty)))) - (let ((gp-0 #f)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max 1.5) :frame-num 0.0) + :enter + (behavior () + (set! (-> self boulder) (the-as handle #f))) + :trans + (behavior () + 0) + :code + (behavior () + (ogreboss-set-stage2-camera) + (ogreboss-move-far (seconds 0.1) (the-as float 2.0)) + (let ((f30-0 (* 0.75 (-> self difficulty)))) + (let ((gp-0 #f)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-attack2-start-ja :num! (seek! max 1.5) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 1.5))) + (set-time! (-> self state-time)) + (while (not gp-0) + (ogreboss-roll-boulder) + (set! gp-0 + (or (and (time-elapsed? (-> self state-time) (seconds 2)) (not (ogreboss-player-inside-range? (the-as float 524288.0)))) + (ogreboss-player-inside-range? (the-as float 409600.0)))) + (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (if gp-0 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (ogreboss-roll-boulder) + (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max 1.5)) - ) - (set-time! (-> self state-time)) - (while (not gp-0) - (ogreboss-roll-boulder) - (set! gp-0 (or (and (time-elapsed? (-> self state-time) (seconds 2)) - (not (ogreboss-player-inside-range? (the-as float 524288.0))) - ) - (ogreboss-player-inside-range? (the-as float 409600.0)) - ) - ) - (ja-no-eval :group! ogreboss-attack2-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (if gp-0 - 0 - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (ogreboss-roll-boulder) - (ja-no-eval :group! ogreboss-attack2-last-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go ogreboss-stage3-shuffle) - ) - :post ogreboss-post - ) + (ja :num! (seek! max f30-0)))) + (go ogreboss-stage3-shuffle)) + :post ogreboss-post) (defbehavior ogreboss-spawn-super-boulder ogreboss () (set! (-> self boulder) - (ppointer->handle - (process-spawn ogreboss-super-boulder (-> self far-pos) (-> self grow-time) (-> self entity) :to self) - ) - ) + (ppointer->handle (process-spawn ogreboss-super-boulder (-> self far-pos) (-> self grow-time) (-> self entity) :to self))) 0 - (none) - ) + (none)) (defstate ogreboss-stage3-shuffle (ogreboss) :event ogreboss-attack-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self hit-count) 0) - (set! (-> self max-hit-count) (the int (* 6.0 (-> self difficulty)))) - (set! (-> self grow-time) (* 300.0 (+ (/ 10.0 (-> self difficulty)) (* -1.0 (-> self level))))) - (set! (-> self boulder) (the-as handle #f)) - ) - :exit (behavior () - (send-event *camera* 'point-of-interest #f) - (set! (-> self vulnerable) #f) - ) - :trans (behavior () - (let ((v1-1 (handle->process (-> self boulder)))) - (if (and v1-1 (>= (-> (the-as ogreboss-super-boulder v1-1) size) 1.0)) - (go ogreboss-stage3-throw) - ) - ) - (when (and (not (ogreboss-player-inside-range? (the-as float 409600.0))) - (time-elapsed? (-> self state-time) (seconds 0.5)) - ) + :enter + (behavior () (set-time! (-> self state-time)) - (send-event (handle->process (-> self boulder)) 'grow-faster) - ) - 0 - ) - :code (behavior () - (set! (-> self shuffle-pos) 0.0) - (let ((f30-0 (+ 1.0 (* 0.25 (-> self difficulty) (-> self level)))) - (gp-0 (if (rand-vu-percent? (the-as float 0.5)) - 0 - 1 - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-shuffle-prepare-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ogreboss-spawn-super-boulder) - (set-time! (-> self state-time)) - (ja-channel-push! 2 (seconds 0.05)) - (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) - (set! (-> self vulnerable) #t) - (loop - (if (>= -61440.0 (-> self shuffle-pos)) - (set! gp-0 1) - ) - (if (>= (-> self shuffle-pos) 61440.0) - (set! gp-0 0) - ) - (cond - ((zero? gp-0) - (set! gp-0 1) - (ja-no-eval :group! ogreboss-shuffle-right-start-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (let ((s5-1 (rand-vu-int-range 1 5))) - (while (and (> s5-1 0) (< -61440.0 (-> self shuffle-pos))) - (ja-no-eval :group! ogreboss-shuffle-right-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (set! (-> self shuffle-pos) (- (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0))) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (+! s5-1 -1) - ) - ) - (ja-no-eval :group! ogreboss-shuffle-right-stop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (set! gp-0 0) - (ja-no-eval :group! ogreboss-shuffle-left-start-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (let ((s5-2 (rand-vu-int-range 1 5))) - (while (and (> s5-2 0) (< (-> self shuffle-pos) 61440.0)) - (ja-no-eval :group! ogreboss-shuffle-left-loop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (+! (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0)) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (+! s5-2 -1) - ) - ) - (ja-no-eval :group! ogreboss-shuffle-left-stop-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (ogreboss-update-shuffling) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) - ) - :post (behavior () - (vector+*! (-> self root trans) (-> self far-pos) (-> self side-dir) (-> self shuffle-pos)) - (ogreboss-post) - ) - ) + (set! (-> self hit-count) 0) + (set! (-> self max-hit-count) (the int (* 6.0 (-> self difficulty)))) + (set! (-> self grow-time) (* 300.0 (+ (/ 10.0 (-> self difficulty)) (* -1.0 (-> self level))))) + (set! (-> self boulder) (the-as handle #f))) + :exit + (behavior () + (send-event *camera* 'point-of-interest #f) + (set! (-> self vulnerable) #f)) + :trans + (behavior () + (let ((v1-1 (handle->process (-> self boulder)))) + (if (and v1-1 (>= (-> (the-as ogreboss-super-boulder v1-1) size) 1.0)) (go ogreboss-stage3-throw))) + (when (and (not (ogreboss-player-inside-range? (the-as float 409600.0))) (time-elapsed? (-> self state-time) (seconds 0.5))) + (set-time! (-> self state-time)) + (send-event (handle->process (-> self boulder)) 'grow-faster)) + 0) + :code + (behavior () + (set! (-> self shuffle-pos) 0.0) + (let ((f30-0 (+ 1.0 (* 0.25 (-> self difficulty) (-> self level)))) + (gp-0 (if (rand-vu-percent? (the-as float 0.5)) 0 1))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-shuffle-prepare-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (ogreboss-spawn-super-boulder) + (set-time! (-> self state-time)) + (ja-channel-push! 2 (seconds 0.05)) + (ja :chan 1 :group! ogreboss-hit-chest-ja :num! min :frame-interp 0.0) + (set! (-> self vulnerable) #t) + (loop (if (>= -61440.0 (-> self shuffle-pos)) (set! gp-0 1)) + (if (>= (-> self shuffle-pos) 61440.0) (set! gp-0 0)) + (cond + ((zero? gp-0) + (set! gp-0 1) + (ja-no-eval :group! ogreboss-shuffle-right-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0))) + (let ((s5-1 (rand-vu-int-range 1 5))) + (while (and (> s5-1 0) (< -61440.0 (-> self shuffle-pos))) + (ja-no-eval :group! ogreboss-shuffle-right-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (set! (-> self shuffle-pos) (- (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0))) + (suspend) + (ja :num! (seek! max f30-0))) + (+! s5-1 -1))) + (ja-no-eval :group! ogreboss-shuffle-right-stop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (set! gp-0 0) + (ja-no-eval :group! ogreboss-shuffle-left-start-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0))) + (let ((s5-2 (rand-vu-int-range 1 5))) + (while (and (> s5-2 0) (< (-> self shuffle-pos) 61440.0)) + (ja-no-eval :group! ogreboss-shuffle-left-loop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (+! (-> self shuffle-pos) (* 16384.0 (seconds-per-frame) f30-0)) + (suspend) + (ja :num! (seek! max f30-0))) + (+! s5-2 -1))) + (ja-no-eval :group! ogreboss-shuffle-left-stop-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ogreboss-update-shuffling) + (suspend) + (ja :num! (seek! max f30-0)))))))) + :post + (behavior () + (vector+*! (-> self root trans) (-> self far-pos) (-> self side-dir) (-> self shuffle-pos)) + (ogreboss-post))) (defstate ogreboss-stage3-throw (ogreboss) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (send-event (handle->process (-> self boulder)) 'go-throw) - (ja-no-eval :group! ogreboss-attack3-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ogreboss-submerge (seconds 1) (the-as float 1.0)) - (while (handle->process (-> self boulder)) - (suspend) - ) - (set! (-> self bridge-assembled) #f) - (go ogreboss-stage1) - ) - :post transform-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (send-event (handle->process (-> self boulder)) 'go-throw) + (ja-no-eval :group! ogreboss-attack3-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ogreboss-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ogreboss-submerge (seconds 1) (the-as float 1.0)) + (while (handle->process (-> self boulder)) + (suspend)) + (set! (-> self bridge-assembled) #f) + (go ogreboss-stage1)) + :post transform-post) (defstate ogreboss-stage3-hit (ogreboss) - :code (behavior () - (+! (-> self level) 1.0) - (if (< 2.0 (-> self level)) - (go ogreboss-die) - ) - (send-event (handle->process (-> self boulder)) 'go-hit) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self bridge-assembled) #f) - (set! (-> self submerged) #t) - (while (handle->process (-> self boulder)) - (suspend) - ) - (go ogreboss-stage1) - ) - :post transform-post - ) + :code + (behavior () + (+! (-> self level) 1.0) + (if (< 2.0 (-> self level)) (go ogreboss-die)) + (send-event (handle->process (-> self boulder)) 'go-hit) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self bridge-assembled) #f) + (set! (-> self submerged) #t) + (while (handle->process (-> self boulder)) + (suspend)) + (go ogreboss-stage1)) + :post transform-post) (defbehavior ogreboss-trigger-steps ogreboss () (let ((gp-0 (entity-actor-count (-> self entity) 'trigger-actor))) (dotimes (s5-0 gp-0) (let ((v1-1 (* 600 (+ s5-0 1))) - (s4-0 (new 'stack-no-clear 'event-message-block)) - ) + (s4-0 (new 'stack-no-clear 'event-message-block))) (set! (-> s4-0 from) self) (set! (-> s4-0 num-params) 1) (set! (-> s4-0 message) 'trigger) (set! (-> s4-0 param 0) (the-as uint v1-1)) (let ((s3-0 send-event-function) - (v1-2 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0)) - ) - (s3-0 - (if v1-2 - (-> v1-2 extra process) - ) - s4-0 - ) - ) - ) - ) - ) - #f - ) + (v1-2 (entity-actor-lookup (-> self entity) 'trigger-actor s5-0))) + (s3-0 (if v1-2 (-> v1-2 extra process)) s4-0))))) + #f) (defstate ogreboss-die (ogreboss) - :code (behavior () - (ogreboss-reset-camera) - (send-event (handle->process (-> self boulder)) 'go-die) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (transform-post) - (suspend) - (ja :num! (seek!)) - ) - (ogreboss-trigger-steps) - (go ogreboss-dead) - ) - ) + :code + (behavior () + (ogreboss-reset-camera) + (send-event (handle->process (-> self boulder)) 'go-die) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (transform-post) + (suspend) + (ja :num! (seek!))) + (ogreboss-trigger-steps) + (go ogreboss-dead))) (defstate ogreboss-dead (ogreboss) :event process-drawable-fuel-cell-handler - :code (behavior () - (remove-setting! 'music) - (ogreboss-reset-camera) - (let ((gp-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> gp-0 from) self) - (set! (-> gp-0 num-params) 0) - (set! (-> gp-0 message) 'complete) - (let ((s5-0 send-event-function) - (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (s5-0 - (if v1-3 - (-> v1-3 extra process) - ) - gp-0 - ) - ) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (close-specific-task! (game-task ogre-boss) (task-status need-reminder)) - (clear-collide-with-as (-> self root)) - (ja-channel-set! 0) - (ja-post) - (when (not (task-complete? *game-info* (-> self entity extra perm task))) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (let ((a0-9 (entity-actor-lookup (-> self entity) 'trigger-actor 2))) - (if (not a0-9) - (set! a0-9 (-> self entity)) - ) - (set! (-> gp-1 quad) (-> a0-9 extra trans quad)) - ) - (label cfg-6) - (birth-pickup-at-point - gp-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - (when (not (-> self child)) - (suspend) - (goto cfg-6) - ) - (while (-> self child) - (suspend) - ) - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (remove-setting! 'music) + (ogreboss-reset-camera) + (let ((gp-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> gp-0 from) self) + (set! (-> gp-0 num-params) 0) + (set! (-> gp-0 message) 'complete) + (let ((s5-0 send-event-function) + (v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (s5-0 (if v1-3 (-> v1-3 extra process)) gp-0))) + (process-entity-status! self (entity-perm-status complete) #t) + (close-specific-task! (game-task ogre-boss) (task-status need-reminder)) + (clear-collide-with-as (-> self root)) + (ja-channel-set! 0) + (ja-post) + (when (not (task-complete? *game-info* (-> self entity extra perm task))) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (let ((a0-9 (entity-actor-lookup (-> self entity) 'trigger-actor 2))) + (if (not a0-9) (set! a0-9 (-> self entity))) + (set! (-> gp-1 quad) (-> a0-9 extra trans quad))) + (label cfg-6) + (birth-pickup-at-point gp-1 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))) + (when (not (-> self child)) + (suspend) + (goto cfg-6)) + (while (-> self child) + (suspend))) + (cleanup-for-death self))) (defbehavior ogreboss-get-targets ogreboss () (let ((gp-1 (min 3 (entity-actor-count (-> self entity) 'target-actor)))) (dotimes (s5-0 gp-1) - (set! (-> self target-actor-array s5-0) (entity-actor-lookup (-> self entity) 'target-actor s5-0)) - ) - (set! (-> self target-count) gp-1) - ) + (set! (-> self target-actor-array s5-0) (entity-actor-lookup (-> self entity) 'target-actor s5-0))) + (set! (-> self target-count) gp-1)) (set-vector! (-> self target-offset-array 0) 0.0 16384.0 0.0 1.0) (set-vector! (-> self target-offset-array-2) 0.0 16384.0 0.0 1.0) (set-vector! (-> self target-offset-array-3) 0.0 16384.0 0.0 1.0) @@ -1957,8 +1385,7 @@ (set! (-> self target-blast-radius-array 1) 24576.0) (set! (-> self target-blast-radius-array 2) 24576.0) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this ogreboss) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -1976,8 +1403,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 14336.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -1985,8 +1411,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 28672.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -1994,8 +1419,7 @@ (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 14336.0) - (append-prim s3-0 s2-2) - ) + (append-prim s3-0 s2-2)) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-3 collide-with) (collide-kind target)) @@ -2003,8 +1427,7 @@ (set! (-> s2-3 prim-core offense) (collide-offense touch)) (set! (-> s2-3 transform-index) 43) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s3-0 s2-3) - ) + (append-prim s3-0 s2-3)) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-4 collide-with) (collide-kind target)) @@ -2012,8 +1435,7 @@ (set! (-> s2-4 prim-core offense) (collide-offense touch)) (set! (-> s2-4 transform-index) 42) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s3-0 s2-4) - ) + (append-prim s3-0 s2-4)) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-5 collide-with) (collide-kind target)) @@ -2021,33 +1443,21 @@ (set! (-> s2-5 prim-core offense) (collide-offense touch)) (set! (-> s2-5 transform-index) 27) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 8192.0) - (append-prim s3-0 s2-5) - ) - ) + (append-prim s3-0 s2-5))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) - (initialize-skeleton this *ogreboss-sg* '()) + (initialize-skeleton this *ogreboss-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 5)) (ogreboss-get-targets) (set! (-> this try-count) (-> this entity extra perm user-uint8 0)) (cond - ((< (-> this try-count) (the-as uint 5)) - (set! (-> this difficulty) 1.0) - ) - ((< (-> this try-count) (the-as uint 10)) - (set! (-> this difficulty) 0.83334) - ) - ((< (-> this try-count) (the-as uint 15)) - (set! (-> this difficulty) 0.66667) - ) - (else - (set! (-> this difficulty) 0.5) - ) - ) + ((< (-> this try-count) (the-as uint 5)) (set! (-> this difficulty) 1.0)) + ((< (-> this try-count) (the-as uint 10)) (set! (-> this difficulty) 0.83334)) + ((< (-> this try-count) (the-as uint 15)) (set! (-> this difficulty) 0.66667)) + (else (set! (-> this difficulty) 0.5))) (set! (-> this lava) (entity-actor-lookup (-> this entity) 'water-actor 0)) (set! *ogreboss* (the-as ogreboss (process->ppointer this))) (set! (-> this level) 0.0) @@ -2058,16 +1468,12 @@ (set! (-> this z-plane w) (- (vector-dot (-> this z-plane) (-> this root trans)))) (vector-x-quaternion! (-> this side-dir) (-> this root quat)) (set! (-> this far-pos quad) (-> this root trans quad)) - (let ((f0-38 1.0)) - (set-vector! (-> this root scale) f0-38 f0-38 f0-38 1.0) - ) + (let ((f0-38 1.0)) (set-vector! (-> this root scale) f0-38 f0-38 f0-38 1.0)) (vector+*! (-> this near-pos) (-> this far-pos) (-> this z-plane) (the-as float 348160.0)) (set! (-> this at-near-spot) #t) (set! (-> this try-counted) #f) (set! (-> this root trans quad) (-> this near-pos quad)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go ogreboss-dead) - (go ogreboss-idle) - ) - (none) - ) + (go ogreboss-dead) + (go ogreboss-idle)) + (none)) diff --git a/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc b/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc index 51a596a005..c55f7c7563 100644 --- a/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc +++ b/goal_src/jak1/levels/racer_common/collide-reaction-racer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/target/collide-reaction-target.gc") ;; name: collide-reaction-racer.gc @@ -16,54 +15,35 @@ (set! sv-84 (new-stack-vector0)) (let ((v1-2 (new 'stack-no-clear 'inline-array 'vector 2))) (dotimes (a0-1 2) - (set! (-> v1-2 a0-1 quad) (the-as uint128 0)) - ) - (set! sv-88 v1-2) - ) + (set! (-> v1-2 a0-1 quad) (the-as uint128 0))) + (set! sv-88 v1-2)) (set! sv-96 0) (set! sv-104 0) (set! (-> sv-88 0 quad) (-> arg3 quad)) (set! (-> sv-88 1 quad) (-> arg3 quad)) (let ((a1-3 (new 'stack-no-clear 'vector))) (vector-float*! a1-3 (-> arg1 move-vec) (-> arg1 best-u)) - (move-by-vector! arg0 a1-3) - ) + (move-by-vector! arg0 a1-3)) (set-and-handle-pat! arg0 (-> arg1 best-tri pat)) - (if (= (-> arg0 poly-pat mode) (pat-mode wall)) - (set! sv-104 (logior sv-104 1)) - ) - (if (= (-> arg0 unknown-surface00 mode) 'air) - (set! sv-104 (logior sv-104 32)) - ) + (if (= (-> arg0 poly-pat mode) (pat-mode wall)) (set! sv-104 (logior sv-104 1))) + (if (= (-> arg0 unknown-surface00 mode) 'air) (set! sv-104 (logior sv-104 32))) (let ((v1-21 (new 'stack-no-clear 'vector))) (set! (-> v1-21 quad) (-> arg1 best-from-prim prim-core world-sphere quad)) - (vector-! sv-80 v1-21 (-> arg1 best-tri intersect)) - ) + (vector-! sv-80 v1-21 (-> arg1 best-tri intersect))) (vector-normalize! sv-80 1.0) (set! (-> arg0 coverage) (vector-dot sv-80 (-> arg1 best-tri normal))) (when (< (-> arg0 coverage) 0.0) (set! (-> arg0 coverage) 0.0) (vector-flatten! sv-80 sv-80 (-> arg1 best-tri normal)) - (vector-normalize! sv-80 1.0) - ) - (if (< (-> arg0 coverage) 0.9999) - (set! sv-104 (logior sv-104 24)) - ) - (let ((v1-31 (-> sv-80 quad))) - (set! (-> sv-84 quad) v1-31) - ) - (if (= (-> arg1 best-u) 0.0) - (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0)) - ) + (vector-normalize! sv-80 1.0)) + (if (< (-> arg0 coverage) 0.9999) (set! sv-104 (logior sv-104 24))) + (let ((v1-31 (-> sv-80 quad))) (set! (-> sv-84 quad) v1-31)) + (if (= (-> arg1 best-u) 0.0) (move-by-vector! arg0 (vector-normalize-copy! (new-stack-vector0) sv-84 3.0))) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) (collide-shape-moving-angle-set! arg0 sv-84 (-> sv-88 0)) - (if (< (-> arg0 poly-angle) -0.2) - (set! sv-96 (logior sv-96 16)) - ) + (if (< (-> arg0 poly-angle) -0.2) (set! sv-96 (logior sv-96 16))) (let ((s3-1 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle)))) - (if s3-1 - (set! sv-104 (logior sv-104 2)) - ) + (if s3-1 (set! sv-104 (logior sv-104 2))) (when (not (logtest? (-> arg0 prev-status) (cshape-moving-flags onsurf))) (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))) (set! sv-96 (logior sv-96 2048)) @@ -71,128 +51,79 @@ (let ((f30-0 (- 1.0 (-> arg0 surf impact-fric)))) (when (< f30-0 1.0) (let ((s2-1 (new-stack-vector0)) - (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0))) - ) + (f28-0 (vector-dot (-> arg0 dynam gravity-normal) (-> sv-88 0)))) 0.0 (vector-! s2-1 (-> sv-88 0) (vector-float*! s2-1 (-> arg0 dynam gravity-normal) f28-0)) (let* ((f0-18 (vector-length s2-1)) - (f1-6 f0-18) - ) - (if (< f28-0 0.0) - (set! f28-0 (* f28-0 f30-0)) - ) - (vector+! - (-> sv-88 0) - (vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0) - (vector-float*! s2-1 s2-1 (/ f0-18 f1-6)) - ) - ) - ) - ) - ) - ) - ) + (f1-6 f0-18)) + (if (< f28-0 0.0) (set! f28-0 (* f28-0 f30-0))) + (vector+! (-> sv-88 0) + (vector-float*! (-> sv-88 0) (-> arg0 dynam gravity-normal) f28-0) + (vector-float*! s2-1 s2-1 (/ f0-18 f1-6))))))))) (set! sv-96 (logior sv-96 4)) (cond ((-> arg1 best-to-prim) (set! sv-96 (logior sv-96 32)) (set! (-> arg0 unknown-vector72 quad) (-> arg1 best-tri intersect quad)) (set! (-> arg0 unknown-vector73 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process))) - ) - ((= (-> arg0 poly-pat material) (pat-material waterbottom)) - ) - (else - (set! sv-96 (logior sv-96 4096)) - ) - ) - (if (and s3-1 (logtest? (collide-action racer-unused) (-> arg0 root-prim prim-core action))) - (set! s3-1 #f) - ) + (set! (-> arg0 unknown-handle00) (process->handle (-> arg1 best-to-prim cshape process)))) + ((= (-> arg0 poly-pat material) (pat-material waterbottom))) + (else (set! sv-96 (logior sv-96 4096)))) + (if (and s3-1 (logtest? (collide-action racer-unused) (-> arg0 root-prim prim-core action))) (set! s3-1 #f)) (cond (s3-1 - (set! sv-104 (logior sv-104 4)) - (set! sv-96 (logior sv-96 8)) - (set! (-> arg0 cur-pat mode) 1) - (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) - (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) - (vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84) - (cond - ((not (and (>= (-> arg1 best-from-prim local-sphere w) - (vector-dot - (-> arg0 ground-poly-normal) - (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)) - ) - ) - (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) - (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) - (not (logtest? sv-104 32)) - ) - ) - ) - ) - (else - (set! sv-104 (logior sv-104 256)) - (set! sv-104 (logand -65 sv-104)) - (let ((s3-3 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) - (vector-normalize! s3-3 1.0) - (vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3)) - ) - (vector+! arg2 arg2 (-> arg0 poly-normal)) - ) - ) - (let* ((s2-2 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)) - (s3-4 (new-stack-vector0)) - (f30-1 (vector-dot s2-2 arg2)) - ) - 0.0 - (vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1)) - (let* ((f1-11 (vector-length s3-4)) - (f0-27 f1-11) - (f1-12 (* 0.9 f1-11)) - ) - (vector+! arg2 (vector-float*! arg2 s2-2 f30-1) (vector-float*! s3-4 s3-4 (/ f1-12 f0-27))) - ) - ) - ) + (set! sv-104 (logior sv-104 4)) + (set! sv-96 (logior sv-96 8)) + (set! (-> arg0 cur-pat mode) 1) + (set! (-> arg0 unknown-vector70 quad) (-> arg1 best-tri intersect quad)) + (set! (-> arg0 unknown-vector71 quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 wall-pat) (-> arg1 best-tri pat)) + (vector-reflect-flat-above! arg2 (-> sv-88 0) sv-84) + (cond + ((not (and (>= (-> arg1 best-from-prim local-sphere w) + (vector-dot (-> arg0 ground-poly-normal) + (vector-! (new 'stack-no-clear 'vector) (-> arg1 best-tri intersect) (-> arg0 ground-touch-point)))) + (and (< 0.0 (vector-dot (-> arg0 ground-poly-normal) arg2)) + (not (time-elapsed? (-> arg0 unknown-dword10) (seconds 0.3))) + (not (logtest? sv-104 32)))))) + (else + (set! sv-104 (logior sv-104 256)) + (set! sv-104 (logand -65 sv-104)) + (let ((s3-3 (vector-cross! (new 'stack-no-clear 'vector) (-> arg0 poly-normal) (-> arg0 ground-poly-normal)))) + (vector-normalize! s3-3 1.0) + (vector-float*! arg2 s3-3 (vector-dot (-> sv-88 0) s3-3))) + (vector+! arg2 arg2 (-> arg0 poly-normal)))) + (let* ((s2-2 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> sv-88 0) 1.0)) + (s3-4 (new-stack-vector0)) + (f30-1 (vector-dot s2-2 arg2))) + 0.0 + (vector-! s3-4 arg2 (vector-float*! s3-4 s2-2 f30-1)) + (let* ((f1-11 (vector-length s3-4)) + (f0-27 f1-11) + (f1-12 (* 0.9 f1-11))) + (vector+! arg2 (vector-float*! arg2 s2-2 f30-1) (vector-float*! s3-4 s3-4 (/ f1-12 f0-27)))))) (else - (set! sv-96 (logior sv-96 1)) - (set! (-> arg0 cur-pat mode) 0) - (if (and (= (-> arg1 best-from-prim prim-id) 6) (not (logtest? sv-104 7))) - (set! (-> arg0 local-normal quad) (-> sv-84 quad)) - ) - (vector-reflect-flat! arg2 (-> sv-88 0) sv-84) - (dotimes (v1-142 16) - (vector+! arg2 arg2 (-> arg0 poly-normal)) - ) - (set! sv-96 (logior sv-96 2)) - (set! (-> arg0 ground-touch-point w) 0.0) - (when (not (logtest? sv-104 15)) - (set! sv-96 (logior sv-96 2)) - (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) - (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) - (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) - (set-time! (-> arg0 unknown-dword10)) - (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) - (set! sv-104 (logior sv-104 2048)) - (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) - (set! sv-96 (logior sv-96 1024)) - ) - ) - ) - ) - ) + (set! sv-96 (logior sv-96 1)) + (set! (-> arg0 cur-pat mode) 0) + (if (and (= (-> arg1 best-from-prim prim-id) 6) (not (logtest? sv-104 7))) + (set! (-> arg0 local-normal quad) (-> sv-84 quad))) + (vector-reflect-flat! arg2 (-> sv-88 0) sv-84) + (dotimes (v1-142 16) + (vector+! arg2 arg2 (-> arg0 poly-normal))) + (set! sv-96 (logior sv-96 2)) + (set! (-> arg0 ground-touch-point w) 0.0) + (when (not (logtest? sv-104 15)) + (set! sv-96 (logior sv-96 2)) + (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) + (set! (-> arg0 unknown-vector53 quad) (-> sv-84 quad)) + (set! (-> arg0 unknown-float60) (vector-dot sv-84 (-> arg0 dynam gravity-normal))) + (set-time! (-> arg0 unknown-dword10)) + (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + (set! sv-104 (logior sv-104 2048)) + (if (= (-> arg0 poly-pat material) (pat-material waterbottom)) (set! sv-96 (logior sv-96 1024))))))) (logior! (-> arg0 status) sv-96) (set! (-> arg0 reaction-flag) (the-as cshape-reaction-flags sv-104)) - (update! - (-> arg0 history-data (-> arg0 unknown-halfword00)) - arg0 - (-> arg1 best-tri intersect) - (-> sv-88 1) - arg2 - ) + (update! (-> arg0 history-data (-> arg0 unknown-halfword00)) arg0 (-> arg1 best-tri intersect) (-> sv-88 1) arg2) (set! (-> arg0 unknown-halfword00) (logand (+ (-> arg0 unknown-halfword00) 1) 127)) - (the-as cshape-moving-flags sv-96) - ) + (the-as cshape-moving-flags sv-96)) diff --git a/goal_src/jak1/levels/racer_common/racer-part.gc b/goal_src/jak1/levels/racer_common/racer-part.gc index eaca6f4b13..0443561030 100644 --- a/goal_src/jak1/levels/racer_common/racer-part.gc +++ b/goal_src/jak1/levels/racer_common/racer-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/ui/hud.gc") (require "levels/racer_common/target-racer-h.gc") @@ -15,112 +14,82 @@ (defun part-hud-racer-speed-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let* ((f0-0 (-> *target* control unknown-float01)) (f0-1 (cond - ((>= 122880.0 f0-0) - (lerp-scale 42780.445 27488.71 f0-0 0.0 122880.0) - ) - ((>= 131072.0 f0-0) - (lerp-scale 27488.71 14927.645 f0-0 122880.0 131072.0) - ) - ((>= 139264.0 f0-0) - (lerp-scale 14927.645 7281.778 f0-0 131072.0 139264.0) - ) - ((>= 147456.0 f0-0) - (lerp-scale 7281.778 -546.13336 f0-0 139264.0 147456.0) - ) - ((>= 155648.0 f0-0) - (lerp-scale -546.13336 -6371.5557 f0-0 147456.0 155648.0) - ) - ((>= 163840.0 f0-0) - (lerp-scale -6371.5557 -10922.667 f0-0 155648.0 163840.0) - ) - (else - (lerp-scale -10922.667 -15473.777 f0-0 163840.0 172032.0) - ) - ) - ) - ) + ((>= 122880.0 f0-0) (lerp-scale 42780.445 27488.71 f0-0 0.0 122880.0)) + ((>= 131072.0 f0-0) (lerp-scale 27488.71 14927.645 f0-0 122880.0 131072.0)) + ((>= 139264.0 f0-0) (lerp-scale 14927.645 7281.778 f0-0 131072.0 139264.0)) + ((>= 147456.0 f0-0) (lerp-scale 7281.778 -546.13336 f0-0 139264.0 147456.0)) + ((>= 155648.0 f0-0) (lerp-scale -546.13336 -6371.5557 f0-0 147456.0 155648.0)) + ((>= 163840.0 f0-0) (lerp-scale -6371.5557 -10922.667 f0-0 155648.0 163840.0)) + (else (lerp-scale -10922.667 -15473.777 f0-0 163840.0 172032.0))))) (cond ((< (-> *hud-parts* bike-speed 0 offset) 10) (if (< f0-1 (-> arg2 vector 1 z)) - (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 131072.0 (seconds-per-frame)))) - (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 32768.0 (seconds-per-frame)))) - ) - ) - (else - (set! (-> arg2 vector 1 z) f0-1) - ) - ) - ) - (none) - ) + (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 131072.0 (seconds-per-frame)))) + (set! (-> arg2 vector 1 z) (deg-seek (-> arg2 vector 1 z) f0-1 (* 32768.0 (seconds-per-frame)))))) + (else (set! (-> arg2 vector 1 z) f0-1)))) + (none)) (defpartgroup group-part-hud-racer-speed-dial :id 108 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 740 :flags (launch-asap))) - ) + :parts ((sp-item 740 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-speed :id 109 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 741 :flags (launch-asap))) - ) + :parts ((sp-item 741 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-speed-front :id 110 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 1999 :flags (launch-asap))) - ) + :parts ((sp-item 1999 :flags (launch-asap)))) (defpart 741 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3)) - (:rot-x 4) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-x 4) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 740 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x45f)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x 4) - (:rot-z (degrees 235)) - (:scale-y (meters 0.3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-racer-speed-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x45f)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x 4) + (:rot-z (degrees 235)) + (:scale-y (meters 0.3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-racer-speed-func))) (defpart 1999 - :init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x45f)) - (:num 1.0) - (:scale-x (meters 0.8)) - (:rot-x 4) - (:scale-y (meters 0.8)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x7 :page #x45f)) + (:num 1.0) + (:scale-x (meters 0.8)) + (:rot-x 4) + (:scale-y (meters 0.8)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defun part-hud-racer-heat-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) @@ -129,205 +98,162 @@ ((and (< 0.8 f0-1) (not (logtest? (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 8))) ;; og:preserve-this changed for high fps (set! (-> arg2 vector 2 x) 128.0) (set! (-> arg2 vector 2 y) 0.0) - (set! (-> arg2 vector 2 z) 0.0) - ) - (else - (set! (-> arg2 vector 2 x) 128.0) - (set! (-> arg2 vector 2 y) 128.0) - (set! (-> arg2 vector 2 z) 128.0) - ) - ) - ) - (none) - ) + (set! (-> arg2 vector 2 z) 0.0)) + (else (set! (-> arg2 vector 2 x) 128.0) (set! (-> arg2 vector 2 y) 128.0) (set! (-> arg2 vector 2 z) 128.0)))) + (none)) (defun zoomer-heat-slice-color ((arg0 matrix) (arg1 float)) (cond ((< arg1 0.6) (set! (-> arg0 vector 2 x) (* 213.33333 arg1)) (set! (-> arg0 vector 2 y) 128.0) - (set! (-> arg0 vector 2 z) 0.0) - ) + (set! (-> arg0 vector 2 z) 0.0)) ((< arg1 0.8) (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) (- 128.0 (* 640.0 (+ -0.6 arg1)))) - (set! (-> arg0 vector 2 z) 0.0) - ) + (set! (-> arg0 vector 2 z) 0.0)) ((not (logtest? (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 8)) ;; og:preserve-this changed for high fps (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) 0.0) - (set! (-> arg0 vector 2 z) 0.0) - ) - (else - (set! (-> arg0 vector 2 x) 128.0) - (set! (-> arg0 vector 2 y) 100.0) - (set! (-> arg0 vector 2 z) 100.0) - ) - ) - (none) - ) + (set! (-> arg0 vector 2 z) 0.0)) + (else (set! (-> arg0 vector 2 x) 128.0) (set! (-> arg0 vector 2 y) 100.0) (set! (-> arg0 vector 2 z) 100.0))) + (none)) (defun part-hud-zoomer-heat-slice-01-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -135.0 (* 215.0 f0-1)))) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defun part-hud-zoomer-heat-slice-02-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -225.0 (* 215.0 f0-1)))) - (if (< (-> arg2 vector 1 z) -24576.0) - (set! (-> arg2 vector 1 z) -24576.0) - ) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (if (< (-> arg2 vector 1 z) -24576.0) (set! (-> arg2 vector 1 z) -24576.0)) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defun part-hud-zoomer-heat-slice-03-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (let ((f0-1 (/ (-> *target* racer heat) (-> *RACER-bank* heat-max)))) (set! (-> arg2 vector 1 z) (* 182.04445 (+ -315.0 (* 215.0 f0-1)))) - (if (< (-> arg2 vector 1 z) -24576.0) - (set! (-> arg2 vector 1 z) -24576.0) - ) - (zoomer-heat-slice-color arg2 f0-1) - ) - (none) - ) + (if (< (-> arg2 vector 1 z) -24576.0) (set! (-> arg2 vector 1 z) -24576.0)) + (zoomer-heat-slice-color arg2 f0-1)) + (none)) (defpartgroup group-part-hud-racer-heat-backing :id 111 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 737 :flags (launch-asap))) - ) + :parts ((sp-item 737 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat-dial :id 112 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 738 :flags (launch-asap))) - ) + :parts ((sp-item 738 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat :id 113 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 739 :flags (launch-asap))) - ) + :parts ((sp-item 739 :flags (launch-asap)))) (defpartgroup group-part-hud-racer-heat-slice :id 114 :flags (use-local-clock screen-space) :bounds (static-bspherem 0 0 0 100) - :parts ((sp-item 2010 :flags (launch-asap)) (sp-item 2011 :flags (launch-asap)) (sp-item 2012 :flags (launch-asap))) - ) + :parts ((sp-item 2010 :flags (launch-asap)) (sp-item 2011 :flags (launch-asap)) (sp-item 2012 :flags (launch-asap)))) (defpart 739 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3)) - (:rot-x 4) - (:scale-y (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3)) + (:rot-x 4) + (:scale-y (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 737 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x45f)) - (:num 1.0) - (:scale-x (meters 3.5)) - (:rot-x 4) - (:scale-y (meters 3.5)) - (:r 128.0) - (:g 100.0) - (:b 63.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x45f)) + (:num 1.0) + (:scale-x (meters 3.5)) + (:rot-x 4) + (:scale-y (meters 3.5)) + (:r 128.0) + (:g 100.0) + (:b 63.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)))) (defpart 738 - :init-specs ((:texture (new 'static 'texture-id :page #x45f)) - (:num 1.0) - (:scale-x (meters 0.9)) - (:rot-x 4) - (:scale-y (meters 0.52)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-racer-heat-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x45f)) + (:num 1.0) + (:scale-x (meters 0.9)) + (:rot-x 4) + (:scale-y (meters 0.52)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-racer-heat-func))) (defpart 2010 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-01-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-01-func))) (defpart 2011 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-02-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-02-func))) (defpart 2012 - :init-specs ((:texture (new 'static 'texture-id :index #x32 :page #x2)) - (:num 1.0) - (:scale-x (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds -0.005)) - (:flags (bit2 bit9)) - (:func 'part-hud-zoomer-heat-slice-03-func) - ) - ) - -(deftype hud-bike-heat (hud) - () - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x32 :page #x2)) + (:num 1.0) + (:scale-x (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds -0.005)) + (:flags (bit2 bit9)) + (:func 'part-hud-zoomer-heat-slice-03-func))) +(deftype hud-bike-heat (hud) ()) (defmethod hud-update ((this hud-bike-heat)) - (if *target* - (tally-value this (the int (-> *target* racer heat)) 0) - ) + (if *target* (tally-value this (the int (-> *target* racer heat)) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-bike-heat) (arg0 int)) (add-setting! 'common-page 'set 0.0 2) @@ -338,10 +264,8 @@ (set! (-> this particles s5-0 init-pos x) 13.0) (set! (-> this particles s5-0 init-pos y) 370.0) (set! (-> this particles s5-0 init-pos z) 10.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -349,10 +273,8 @@ (set! (-> this particles s5-1 init-pos x) 70.0) (set! (-> this particles s5-1 init-pos y) 370.0) (set! (-> this particles s5-1 init-pos z) 6.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -360,10 +282,8 @@ (set! (-> this particles s5-2 init-pos x) 20.0) (set! (-> this particles s5-2 init-pos y) 370.0) (set! (-> this particles s5-2 init-pos z) 1.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-3 (-> this nb-of-particles))) (set! (-> this particles s5-3) (new 'static 'hud-particle)) @@ -371,34 +291,22 @@ (set! (-> this particles s5-3 init-pos x) 70.0) (set! (-> this particles s5-3 init-pos y) 370.0) (set! (-> this particles s5-3 init-pos z) 7.0) - (set! (-> this particles s5-3 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-3 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-4 (-> this nb-of-particles)) - (if (= (-> this particles s5-4 part matrix) -1) - (set! (-> this particles s5-4 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-4 part matrix) -1) (set! (-> this particles s5-4 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this x-sgn) -1) (set! (-> this y-sgn) 1) (set! (-> this force-on-screen) #t) 0 - (none) - ) - -(deftype hud-bike-speed (hud) - () - ) + (none)) +(deftype hud-bike-speed (hud) ()) (defmethod hud-update ((this hud-bike-speed)) - (if *target* - (tally-value this (the int (-> *target* control unknown-float01)) 0) - ) + (if *target* (tally-value this (the int (-> *target* control unknown-float01)) 0)) 0 - (none) - ) + (none)) (defmethod init-particles! ((this hud-bike-speed) (arg0 int)) (add-setting! 'common-page 'set 0.0 2) @@ -409,10 +317,8 @@ (set! (-> this particles s5-0 init-pos x) 433.0) (set! (-> this particles s5-0 init-pos y) 370.0) (set! (-> this particles s5-0 init-pos z) 3.0) - (set! (-> this particles s5-0 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-0 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-1 (-> this nb-of-particles))) (set! (-> this particles s5-1) (new 'static 'hud-particle)) @@ -420,10 +326,8 @@ (set! (-> this particles s5-1 init-pos x) 378.0) (set! (-> this particles s5-1 init-pos y) 370.0) (set! (-> this particles s5-1 init-pos z) 5.0) - (set! (-> this particles s5-1 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-1 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (when (< (-> this nb-of-particles) (-> this max-nb-of-particles)) (let ((s5-2 (-> this nb-of-particles))) (set! (-> this particles s5-2) (new 'static 'hud-particle)) @@ -431,538 +335,495 @@ (set! (-> this particles s5-2 init-pos x) 415.0) (set! (-> this particles s5-2 init-pos y) 370.0) (set! (-> this particles s5-2 init-pos z) 1.0) - (set! (-> this particles s5-2 part matrix) -1) - ) - (+! (-> this nb-of-particles) 1) - ) + (set! (-> this particles s5-2 part matrix) -1)) + (+! (-> this nb-of-particles) 1)) (dotimes (s5-3 (-> this nb-of-particles)) - (if (= (-> this particles s5-3 part matrix) -1) - (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)) - ) - ) + (if (= (-> this particles s5-3 part matrix) -1) (set! (-> this particles s5-3 part matrix) (sprite-allocate-user-hvdf)))) (set! (-> this x-sgn) 1) (set! (-> this y-sgn) 1) (set! (-> this force-on-screen) #t) 0 - (none) - ) + (none)) (#when PC_PORT -;; og:preserve-this extra methods needed for aspect ratio in pc port -(defmethod set-pos-and-scale ((this hud-bike-heat) (arg0 symbol) (arg1 symbol)) - (with-pc - (let ((base-x (-> this particles 0 init-pos x))) + ;; og:preserve-this extra methods needed for aspect ratio in pc port + (defmethod set-pos-and-scale ((this hud-bike-heat) (arg0 symbol) (arg1 symbol)) + (with-pc + (let ((base-x (-> this particles 0 init-pos x))) (*! base-x (-> *pc-settings* aspect-ratio-reciprocal)) (set! (-> this particles 0 init-pos x) 13.0) (set! (-> this particles 1 init-pos x) 70.0) (set! (-> this particles 2 init-pos x) 20.0) (set! (-> this particles 3 init-pos x) 70.0) - - (when (not (-> *pc-settings* use-vis?)) - (dotimes (i (-> this nb-of-particles)) - (set! (-> this particles i init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))) - - )) - - ) - ) - (none) - ) - -(defmethod set-pos-and-scale ((this hud-bike-speed) (arg0 symbol) (arg1 symbol)) - (with-pc - (let ((base-x (-> this particles 1 init-pos x))) + (when (not (-> *pc-settings* use-vis?)) + (dotimes (i (-> this nb-of-particles)) + (set! (-> this particles i init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))))))) + (none)) + (defmethod set-pos-and-scale ((this hud-bike-speed) (arg0 symbol) (arg1 symbol)) + (with-pc + (let ((base-x (-> this particles 1 init-pos x))) (+! base-x (* (- 512.0 base-x) (- 1.0 (-> *pc-settings* aspect-ratio-reciprocal)))) (set! (-> this particles 0 init-pos x) 433.0) (set! (-> this particles 1 init-pos x) 378.0) (set! (-> this particles 2 init-pos x) 415.0) - - (when (not (-> *pc-settings* use-vis?)) - (dotimes (i (-> this nb-of-particles)) - (set! (-> this particles i init-pos x) (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))) - - )) - - ) - ) - (none) - ) - ) + (when (not (-> *pc-settings* use-vis?)) + (dotimes (i (-> this nb-of-particles)) + (set! (-> this particles i init-pos x) + (+ base-x (* (-> *pc-settings* aspect-ratio-reciprocal) (- (-> this particles i init-pos x) base-x)))))))) + (none))) (defpartgroup group-racer-trans-pad :id 115 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 742 :fade-after (meters 160)) - (sp-item 743 :fade-after (meters 160)) - (sp-item 744 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)) - ) - ) + :parts + ((sp-item 742 :fade-after (meters 160)) + (sp-item 743 :fade-after (meters 160)) + (sp-item 744 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)))) (defpart 742 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 7)) - (:scale-x (meters 14) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 32.0 32.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 7)) + (:scale-x (meters 14) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 743 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 14)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 14)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 744 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.75) (meters 0.1)) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 15)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0) - (:g 0.0 127.0) - (:b 127.0) - (:a 127.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.02)) - (:rotvel-y (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00015)) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.75) (meters 0.1)) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 15)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0) + (:g 0.0 127.0) + (:b 127.0) + (:a 127.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.02)) + (:rotvel-y (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00015)) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 2211 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2207 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 96.0 32.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 96.0 32.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2221 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.5 1.0) - (:scale-x (meters 0.15) (meters 0.35)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.15)) - (:r 0.0 2.0 64.0) - (:g 64.0 3.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -2.4) (degrees 4.8)) - (:fade-a -0.53333336) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.9)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 40) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.5 1.0) + (:scale-x (meters 0.15) (meters 0.35)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.15)) + (:r 0.0 2.0 64.0) + (:g 64.0 3.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -2.4) (degrees 4.8)) + (:fade-a -0.53333336) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.9)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 40) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2208 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 16.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 32.0 32.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 16.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 32.0 32.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2218 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0 16.0) - (:g 128.0 64.0) - (:b 192.0 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.64) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0 16.0) + (:g 128.0 64.0) + (:b 192.0 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.64) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2215 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 70.0 32.0) - (:b 40.0 20.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 70.0 32.0) + (:b 40.0 20.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2216 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0 64.0) - (:b 96.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0 64.0) + (:b 96.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2831 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 64.0 32.0) - (:b 96.0 40.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 64.0 32.0) + (:b 96.0 40.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2214 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2220 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.05) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 128.0) - (:vel-y (meters 0.02) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -1.0666667) - (:accel-y (meters -0.0013333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.05) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 128.0) + (:vel-y (meters 0.02) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -1.0666667) + (:accel-y (meters -0.0013333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1)))) (defpart 2213 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 128.0 64.0) - (:b 0.0 32.0) - (:a 16.0 16.0) - (:vel-y (meters 0.04) (meters 0.053333335)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters -0.00033333333)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:conerot-x (degrees 60) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 128.0 64.0) + (:b 0.0 32.0) + (:a 16.0 16.0) + (:vel-y (meters 0.04) (meters 0.053333335)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters -0.00033333333)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:conerot-x (degrees 60) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2275 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:num 0.06) - (:x (meters 10)) - (:scale-x (meters 1.5) (meters 3)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.5) (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.006666667) (meters 0.008666666)) - (:scalevel-y (meters 0.006666667) (meters 0.008666666)) - (:fade-a 0.7111111) - (:friction 0.94) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.3)) - (:next-launcher 119) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 1.5) (meters 3)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.5) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667) (meters 0.008666666)) + (:scalevel-y (meters 0.006666667) (meters 0.008666666)) + (:fade-a 0.7111111) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + (:rotate-y (degrees 0)))) (defpart 2276 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.04 0.03) - (:x (meters -0.2) (meters 0.4)) - (:z (meters -0.2) (meters 0.4)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:scalevel-x (meters 0.008333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 116) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.04 0.03) + (:x (meters -0.2) (meters 0.4)) + (:z (meters -0.2) (meters 0.4)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:scalevel-x (meters 0.008333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 116))) (defpart 2212 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:birth-func 'birth-func-vector-orient) - (:num 1.0) - (:scale-x (meters 4) (meters -0.5)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 64.0 -16.0) - (:g 64.0 -16.0) - (:b 64.0 -16.0) - (:a 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:userdata 0.0) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:birth-func 'birth-func-vector-orient) + (:num 1.0) + (:scale-x (meters 4) (meters -0.5)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 64.0 -16.0) + (:g 64.0 -16.0) + (:b 64.0 -16.0) + (:a 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:userdata 0.0))) (defpart 2225 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 4.0 16.0) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 2.0 128.0) - (:g 128.0 2.0 64.0) - (:b 0.0 2.0 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.35555556) - (:fade-a -0.6) - (:accel-y (meters -0.001)) - (:friction 0.9) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 4.0 16.0) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 2.0 128.0) + (:g 128.0 2.0 64.0) + (:b 0.0 2.0 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.35555556) + (:fade-a -0.6) + (:accel-y (meters -0.001)) + (:friction 0.9) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2226 - :init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x2)) - (:num 4.0 16.0) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.05) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 2.0 128.0) - (:g 0.0 2.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.35555556) - (:fade-a -0.6) - (:accel-y (meters -0.001)) - (:friction 0.9) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit0 bit2 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1 :page #x2)) + (:num 4.0 16.0) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.05) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 2.0 128.0) + (:g 0.0 2.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.35555556) + (:fade-a -0.6) + (:accel-y (meters -0.001)) + (:friction 0.9) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit0 bit2 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2227 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.00033333333) (meters 0.00033333333)) - (:friction 0.85) - (:timer (seconds 1.5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.05) (seconds 0.015)) - (:next-launcher 2277) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.00033333333) (meters 0.00033333333)) + (:friction 0.85) + (:timer (seconds 1.5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.05) (seconds 0.015)) + (:next-launcher 2277))) (defpart 2277 - :init-specs ((:fade-r -5.0) (:fade-g -1.6) (:fade-b 1.6) (:fade-a 0.0) (:next-time (seconds 0.067)) (:next-launcher 2278)) - ) + :init-specs ((:fade-r -5.0) (:fade-g -1.6) (:fade-b 1.6) (:fade-a 0.0) (:next-time (seconds 0.067)) (:next-launcher 2278))) (defpart 2278 - :init-specs ((:fade-r -0.2) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334)) - ) + :init-specs ((:fade-r -0.2) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.21333334))) (defpartgroup group-racer-explode :id 116 @@ -970,145 +831,130 @@ :linger-duration (seconds 10) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2279 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2280 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2281 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2282 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2279 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2280 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2281 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2282 :period (seconds 2) :length (seconds 0.067)))) (defpart 2280 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.4) (meters 0.8)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 32.0 96.0) - (:vel-y (meters 0.04) (meters 0.16)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-b -1.4222223) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 2283) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.4) (meters 0.8)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 32.0 96.0) + (:vel-y (meters 0.04) (meters 0.16)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-b -1.4222223) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 2283) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2283 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.0666667))) (defpart 2282 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 12)) - (:r 255.0) - (:g 196.0) - (:b 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 0.85333335)) - (:fade-g -3.2666667) - (:fade-b -1.0666667) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 12)) + (:r 255.0) + (:g 196.0) + (:b 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 0.85333335)) + (:fade-g -3.2666667) + (:fade-b -1.0666667) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2279 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 128.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 128.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2281 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 128.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.04)) - (:scalevel-x (meters 0.02)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2284) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 128.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.04)) + (:scalevel-x (meters 0.02)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2284) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3)))) (defpart 2284 - :init-specs ((:fade-r -1.0666667) - (:fade-g -1.0666667) - (:fade-b -2.1166666) - (:next-time (seconds 0.2)) - (:next-launcher 2285) - ) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-b -2.1166666) (:next-time (seconds 0.2)) (:next-launcher 2285))) (defpart 2285 - :init-specs ((:fade-r -0.5688889) - (:fade-g -0.28444445) - (:fade-b 0.0) - (:fade-a -0.21333334) - (:next-time (seconds 0.75)) - (:next-launcher 2286) - ) - ) + :init-specs + ((:fade-r -0.5688889) + (:fade-g -0.28444445) + (:fade-b 0.0) + (:fade-a -0.21333334) + (:next-time (seconds 0.75)) + (:next-launcher 2286))) (defpart 2286 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 2229 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.00033333333)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.4) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 1.5)) - (:flags (bit0 bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.00033333333)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.4) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 1.5)) + (:flags (bit0 bit2 bit3 bit14)))) diff --git a/goal_src/jak1/levels/racer_common/racer-states.gc b/goal_src/jak1/levels/racer_common/racer-states.gc index dd1c11c34b..d803c39579 100644 --- a/goal_src/jak1/levels/racer_common/racer-states.gc +++ b/goal_src/jak1/levels/racer_common/racer-states.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/racer_common/target-racer.gc") (require "engine/common-obs/babak.gc") (require "engine/target/target.gc") @@ -18,1408 +17,1043 @@ ;; DECOMP BEGINS (defstate target-racing-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'racer - ) - ((and (= message 'get-pickup) (= (-> block param 0) 3)) - (if (time-elapsed? (-> self racer boost-time) (seconds 1)) - (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> block param 1))))) - ) - ) - (else - (case message - (('end-mode) - (go target-racing-get-off (process->handle proc)) - ) - (('touched) - (send-event proc 'attack (-> block param 0) 'racer 0 0) - (when (and (type-type? (-> proc type) babak) (< 40960.0 (-> self control unknown-float01))) - (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) - (go target-racing-jump f0-5 f0-5 #f) - ) - ) - ) - (('attack 'attack-or-shove 'attack-invinc) - (let ((v1-27 (the-as attack-info (-> block param 1)))) - (if (not (and (logtest? (-> v1-27 mask) (attack-mask mode)) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup))) - ) - (target-attacked - message - (the-as attack-info (-> block param 1)) - proc - (the-as touching-shapes-entry (-> block param 0)) - (the-as (state symbol attack-info target) target-racing-hit) - ) - ) - ) - ) - (('heat) - (set! (-> self racer heat) - (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> block param 0))) (-> *RACER-bank* heat-max))) - ) - ) - (('boost) - (sound-play "get-blue-eco") - (set! (-> self racer boost-sound-id) (sound-play "zoom-boost")) - (set-time! (-> self racer boost-time)) - (set! (-> self racer boost-level) (seek - (-> self racer boost-level) - (-> *RACER-bank* boost-level-max) - (* (-> *RACER-bank* boost-level-inc) (the-as float (-> block param 0))) - ) - ) - ) - (('smack) - (go target-racing-smack (-> self control unknown-float01) #t) - ) - (('jump) - (go target-racing-jump (the-as float (-> block param 0)) (the-as float (-> block param 1)) #f) - ) - (('change-mode) - (case (-> block param 0) - (('grab) - (go target-racing-grab) - ) - ) - ) - (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-racing) - (= (-> self next-state name) 'target-racing-jump) - (= (-> self next-state name) 'target-racing-bounce) - (= (-> self next-state name) 'target-racing-hit) - (= (-> self next-state name) 'target-racing-death) - (= (-> self next-state name) 'target-racing-smack) - (= (-> self next-state name) 'target-racing-falling) - (= (-> self next-state name) 'target-racing-get-on) - (= (-> self next-state name) 'target-racing-get-off) - (= (-> self next-state name) 'target-racing-get-off-jump) - (= (-> self next-state name) 'target-racing-grab) - (= (-> self next-state name) 'target-racing-clone-anim) - ) - ) - (let ((v1-25 (-> self manipy))) - (when v1-25 - (deactivate (-> v1-25 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (let ((v1-29 (-> *hud-parts* bike-speed))) - (when v1-29 - (set! (-> v1-29 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-29) 'hide-quick) - ) - ) - (let ((v1-32 (-> *hud-parts* bike-heat))) - (when v1-32 - (set! (-> v1-32 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-32) 'hide-quick) - ) - ) - (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) - (set! (-> *hud-parts* power 0 next-y-offset) 0) - (set! (-> *hud-parts* buzzers 0 y-sgn) 1) - (set! (-> *hud-parts* power 0 y-sgn) 1) - (logclear! (-> self control root-prim prim-core action) (collide-action racer racer-unused)) - (set! (-> self control unknown-surface00) *walk-mods*) - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (send-event *camera* 'clear-slave-option #x6000) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (let ((v1-60 (-> self node-list data))) - (set! (-> v1-60 0 param0) cspace<-transformq+trans!) - (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-60 0 param2) (the-as basic (-> self control unknown-vector12))) - ) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (sound-stop (-> self racer engine-sound-id)) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) - (remove-setting! 'sound-flava) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'racer) + ((and (= message 'get-pickup) (= (-> block param 0) 3)) + (if (time-elapsed? (-> self racer boost-time) (seconds 1)) + (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> block param 1))))))) + (else + (case message + (('end-mode) (go target-racing-get-off (process->handle proc))) + (('touched) + (send-event proc 'attack (-> block param 0) 'racer 0 0) + (when (and (type-type? (-> proc type) babak) (< 40960.0 (-> self control unknown-float01))) + (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) + (go target-racing-jump f0-5 f0-5 #f)))) + (('attack 'attack-or-shove 'attack-invinc) + (let ((v1-27 (the-as attack-info (-> block param 1)))) + (if (not (and (logtest? (-> v1-27 mask) (attack-mask mode)) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup)))) + (target-attacked message + (the-as attack-info (-> block param 1)) + proc + (the-as touching-shapes-entry (-> block param 0)) + (the-as (state symbol attack-info target) target-racing-hit))))) + (('heat) + (set! (-> self racer heat) + (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> block param 0))) (-> *RACER-bank* heat-max))))) + (('boost) + (sound-play "get-blue-eco") + (set! (-> self racer boost-sound-id) (sound-play "zoom-boost")) + (set-time! (-> self racer boost-time)) + (set! (-> self racer boost-level) + (seek (-> self racer boost-level) + (-> *RACER-bank* boost-level-max) + (* (-> *RACER-bank* boost-level-inc) (the-as float (-> block param 0)))))) + (('smack) (go target-racing-smack (-> self control unknown-float01) #t)) + (('jump) (go target-racing-jump (the-as float (-> block param 0)) (the-as float (-> block param 1)) #f)) + (('change-mode) + (case (-> block param 0) + (('grab) (go target-racing-grab)))) + (('clone-anim) (go target-racing-clone-anim (process->handle (the-as process (-> block param 0))))) + (else (target-generic-event-handler proc argc message block)))))) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-racing) + (= (-> self next-state name) 'target-racing-jump) + (= (-> self next-state name) 'target-racing-bounce) + (= (-> self next-state name) 'target-racing-hit) + (= (-> self next-state name) 'target-racing-death) + (= (-> self next-state name) 'target-racing-smack) + (= (-> self next-state name) 'target-racing-falling) + (= (-> self next-state name) 'target-racing-get-on) + (= (-> self next-state name) 'target-racing-get-off) + (= (-> self next-state name) 'target-racing-get-off-jump) + (= (-> self next-state name) 'target-racing-grab) + (= (-> self next-state name) 'target-racing-clone-anim))) + (let ((v1-25 (-> self manipy))) + (when v1-25 + (deactivate (-> v1-25 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (let ((v1-29 (-> *hud-parts* bike-speed))) + (when v1-29 + (set! (-> v1-29 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-29) 'hide-quick))) + (let ((v1-32 (-> *hud-parts* bike-heat))) + (when v1-32 + (set! (-> v1-32 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-32) 'hide-quick))) + (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) + (set! (-> *hud-parts* power 0 next-y-offset) 0) + (set! (-> *hud-parts* buzzers 0 y-sgn) 1) + (set! (-> *hud-parts* power 0 y-sgn) 1) + (logclear! (-> self control root-prim prim-core action) (collide-action racer racer-unused)) + (set! (-> self control unknown-surface00) *walk-mods*) + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (send-event *camera* 'clear-slave-option #x6000) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (let ((v1-60 (-> self node-list data))) + (set! (-> v1-60 0 param0) cspace<-transformq+trans!) + (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-60 0 param2) (the-as basic (-> self control unknown-vector12)))) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (sound-stop (-> self racer engine-sound-id)) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) + (remove-setting! 'sound-flava) + (target-exit))) + :code + (behavior ((arg0 handle)) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set-setting! 'sound-flava #f 30.0 (music-flava racer)) - (if (zero? (-> self racer)) - (set! (-> self racer) (new 'process 'racer-info)) - ) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-frame) 0.0) - (set! (-> self racer turn-anim-vel) 0.0) - (set! (-> self racer tail-anim-vel) 0.0) - (set! (-> self racer tail-anim-frame) 0.0) - (set! (-> self racer rudd-anim-vel) 0.0) - (set! (-> self racer rudd-anim-frame) 0.0) - (set! (-> self racer stick-lock) #f) - (set! (-> self racer stick-off) #f) - (set! (-> self racer heavy) #f) - (set-time! (-> self racer unstuck-time)) - (set! (-> self racer stuck-count) 0) - (set! (-> self racer cushion-base) 10240.0) - (set! (-> self racer shock-offset) 0.0) - (set! (-> self racer shock-offsetv) 0.0) - (set! (-> self racer shock-rotx) 0.0) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) - (set! (-> self racer scrape-sound-id) (new-sound-id)) - (set! (-> self racer entity) #f) - (let ((v1-28 (handle->process arg0))) - (if v1-28 - (set! (-> self racer entity) (-> v1-28 entity)) - ) - ) - (set! (-> self control surf) *race-track-surface*) - (set! (-> self control reaction) racer-collision-reaction) - (vector-reset! (-> self racer rot)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (target-collide-set! 'racer 0.0) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) (collide-action racer)) - (set! (-> self control unknown-surface00) *racer-mods*) - (set! (-> self racer lean-rotx) 0.0) - (vector-reset! (-> self racer rotv)) - (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) - (quaternion-identity! (the-as quaternion (-> self racer surface-quat-smooth))) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer bottom-rot) 0.0) - (let ((v1-56 (-> self node-list data))) - (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) - (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12))) - ) - (set! (-> self control unknown-float81) 1.0) - (set! (-> self racer hop?) #f) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) 0.0) - (set! (-> self racer bob-period) 900.0) - (set! (-> self racer bob-mult-rot) 0.0) - (set! (-> self racer bob-mult-trans) 0.0) - (set! (-> self racer bob-meta-timer) 0.0) - (set! (-> self racer bob-meta-meta-timer) 0.0) - (set! (-> self racer bob-hit-ground-time) 0) - (set! (-> self racer cushion-bob) 0.0) - (set! (-> self racer cushion-bob-old) 0.0) - (set! (-> self racer hill-value) 0.0) - (set! (-> self racer hill-ground-value) 0.0) - (set! (-> self racer hill-offset) 0.0) - (set! (-> self racer hill-boost) 0.0) - (set! (-> self racer cur-rotx) 0.0) - (set! (-> self racer targ-rotx) 0.0) - (set! (-> self racer hill-rotx) 0.0) - (set! (-> self racer mult-rotx) 0.0) - (set! (-> self racer speed-rotx) 0.25) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - (set! (-> self racer boost-duration) (-> *RACER-bank* boost-duration)) - (set! (-> self racer heat) 0.0) - (set! (-> self racer slide-mode) 0) - (set! (-> self racer slide-amp) 0.0) - (set! (-> self racer slide-down-time 0) 0) - (set! (-> self racer slide-down-time 1) 0) - (set! (-> self racer slide-interp) 0.0) - (set! (-> self racer surface-y) (-> self control trans y)) - (let ((s5-0 (-> self entity))) - (set! (-> self entity) (-> self racer entity)) - (set! (-> self manipy) - (manipy-spawn (-> self control trans) (-> self entity) *racer-sg* #f :from *8k-dead-pool* :to self) - ) - (set! (-> self entity) s5-0) - ) - (when (-> self manipy) - (send-event - (ppointer->process (-> self manipy)) - 'trans-hook - (lambda :behavior manipy - () - (let ((v1-0 (ppointer->process (-> self parent)))) - (set! (-> self root trans quad) (-> (the-as target v1-0) racer bike-trans quad)) - (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) - (set! (-> self root quat vec quad) a0-4) - ) - (set! (-> self root scale quad) (-> (the-as target v1-0) racer bike-scale quad)) - (set! (-> self draw light-index) (the-as uint 255)) - (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) - (set! (-> self draw color-mult quad) a0-9) - ) - (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) - (set! (-> self draw color-emissive quad) a0-11) - ) - (set! (-> self draw secondary-interp) (-> (the-as target v1-0) draw secondary-interp)) - ) - ) - ) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "racer-get-on" 0.0) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior manipy - () - (set! (-> self clone-copy-trans) #f) - (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1) - ) - (set! (-> self draw shadow-ctrl) *racer-shadow-control*) - (let ((gp-0 (-> self parent))) - (set! (-> (the-as target (-> gp-0 0)) racer front-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4) - ) - (set! (-> (the-as target (-> gp-0 0)) racer bottom-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10) - ) - (let ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7))) - (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) - v0-2 - ) - ) - ) - ) - ) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (remove-exit) - (go target-racing-get-on arg0) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set-setting! 'sound-flava #f 30.0 (music-flava racer)) + (if (zero? (-> self racer)) (set! (-> self racer) (new 'process 'racer-info))) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-frame) 0.0) + (set! (-> self racer turn-anim-vel) 0.0) + (set! (-> self racer tail-anim-vel) 0.0) + (set! (-> self racer tail-anim-frame) 0.0) + (set! (-> self racer rudd-anim-vel) 0.0) + (set! (-> self racer rudd-anim-frame) 0.0) + (set! (-> self racer stick-lock) #f) + (set! (-> self racer stick-off) #f) + (set! (-> self racer heavy) #f) + (set-time! (-> self racer unstuck-time)) + (set! (-> self racer stuck-count) 0) + (set! (-> self racer cushion-base) 10240.0) + (set! (-> self racer shock-offset) 0.0) + (set! (-> self racer shock-offsetv) 0.0) + (set! (-> self racer shock-rotx) 0.0) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) + (set! (-> self racer scrape-sound-id) (new-sound-id)) + (set! (-> self racer entity) #f) + (let ((v1-28 (handle->process arg0))) (if v1-28 (set! (-> self racer entity) (-> v1-28 entity)))) + (set! (-> self control surf) *race-track-surface*) + (set! (-> self control reaction) racer-collision-reaction) + (vector-reset! (-> self racer rot)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (target-collide-set! 'racer 0.0) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action racer)) + (set! (-> self control unknown-surface00) *racer-mods*) + (set! (-> self racer lean-rotx) 0.0) + (vector-reset! (-> self racer rotv)) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat-smooth))) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer bottom-rot) 0.0) + (let ((v1-56 (-> self node-list data))) + (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) + (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12)))) + (set! (-> self control unknown-float81) 1.0) + (set! (-> self racer hop?) #f) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) 0.0) + (set! (-> self racer bob-period) 900.0) + (set! (-> self racer bob-mult-rot) 0.0) + (set! (-> self racer bob-mult-trans) 0.0) + (set! (-> self racer bob-meta-timer) 0.0) + (set! (-> self racer bob-meta-meta-timer) 0.0) + (set! (-> self racer bob-hit-ground-time) 0) + (set! (-> self racer cushion-bob) 0.0) + (set! (-> self racer cushion-bob-old) 0.0) + (set! (-> self racer hill-value) 0.0) + (set! (-> self racer hill-ground-value) 0.0) + (set! (-> self racer hill-offset) 0.0) + (set! (-> self racer hill-boost) 0.0) + (set! (-> self racer cur-rotx) 0.0) + (set! (-> self racer targ-rotx) 0.0) + (set! (-> self racer hill-rotx) 0.0) + (set! (-> self racer mult-rotx) 0.0) + (set! (-> self racer speed-rotx) 0.25) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + (set! (-> self racer boost-duration) (-> *RACER-bank* boost-duration)) + (set! (-> self racer heat) 0.0) + (set! (-> self racer slide-mode) 0) + (set! (-> self racer slide-amp) 0.0) + (set! (-> self racer slide-down-time 0) 0) + (set! (-> self racer slide-down-time 1) 0) + (set! (-> self racer slide-interp) 0.0) + (set! (-> self racer surface-y) (-> self control trans y)) + (let ((s5-0 (-> self entity))) + (set! (-> self entity) (-> self racer entity)) + (set! (-> self manipy) + (manipy-spawn (-> self control trans) (-> self entity) *racer-sg* #f :from *8k-dead-pool* :to self)) + (set! (-> self entity) s5-0)) + (when (-> self manipy) + (send-event (ppointer->process (-> self manipy)) + 'trans-hook + (lambda :behavior manipy () + (let ((v1-0 (ppointer->process (-> self parent)))) + (set! (-> self root trans quad) (-> (the-as target v1-0) racer bike-trans quad)) + (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) (set! (-> self root quat vec quad) a0-4)) + (set! (-> self root scale quad) (-> (the-as target v1-0) racer bike-scale quad)) + (set! (-> self draw light-index) (the-as uint 255)) + (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) (set! (-> self draw color-mult quad) a0-9)) + (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) (set! (-> self draw color-emissive quad) a0-11)) + (set! (-> self draw secondary-interp) (-> (the-as target v1-0) draw secondary-interp))))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "racer-get-on" 0.0) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior manipy () + (set! (-> self clone-copy-trans) #f) + (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) + (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1)) + (set! (-> self draw shadow-ctrl) *racer-shadow-control*) + (let ((gp-0 (-> self parent))) + (set! (-> (the-as target (-> gp-0 0)) racer front-blade) (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4)) + (set! (-> (the-as target (-> gp-0 0)) racer bottom-blade) + (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10)) + (let ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7))) + (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) + v0-2))))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (remove-exit) + (go target-racing-get-on arg0)) + :post target-post) (defbehavior target-racing-smack-check target () (if (and (< 20480.0 (-> self control unknown-float01)) (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< (-> self control surface-angle) 0.5) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector70) (-> self control trans))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> self control unknown-vector10 quad)) (set! (-> gp-1 y) 0.0) (set! (-> s5-0 y) 0.0) (vector-xz-normalize! gp-1 1.0) (vector-xz-normalize! s5-0 1.0) - (< 0.87 (vector-dot gp-1 s5-0)) - ) - ) - ) - (go target-racing-smack (-> self control unknown-float01) #t) - ) - (none) - ) + (< 0.87 (vector-dot gp-1 s5-0))))) + (go target-racing-smack (-> self control unknown-float01) #t)) + (none)) (defstate target-racing (target) - :event (-> target-racing-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *racer-mods*) - ) - :exit (behavior () - (target-racing-center-anim) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.1))) - (< (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - 4096.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) - ) - (target-racing-smack-check) - (let* ((f30-0 (target-height-above-ground)) - (v1-28 (time-to-ground - (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) - (-> self control dynam gravity-length) - f30-0 - ) - ) - ) - (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - (or (time-elapsed? (-> self control unknown-dword11) (* (-> *TARGET-bank* ground-timeout) 2)) (< 75 v1-28)) - (< 30 v1-28) - (< 4096.0 f30-0) - ) - (go target-racing-falling) - ) - ) - (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) - (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x))))) - ) - :code (behavior () - (cond - ((ja-group? eichar-racer-get-on-ja) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - ((let ((v1-16 (ja-group))) - (or (or (= v1-16 eichar-racer-jump-small-ja) (= v1-16 eichar-racer-jump-small-loop-ja)) - (> (-> self racer bounce) 0) - ) - ) - (let ((s5-0 #f) - (gp-0 #f) - ) - (when (and (< (fabs (-> self racer bob-mult-trans)) 0.2) - (and (time-elapsed? (-> self racer racing-time) (seconds 0.15)) - (< 16384.0 (-> self control ground-impact-vel)) - ) - ) - (when (>= (-> self control unknown-float01) 40960.0) - (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) - (launch-particles (-> *part-id-table* 2225) (-> self control trans)) - ) - (target-land-effect) - (when (and (>= (-> self control ground-impact-vel) 61440.0) (zero? (-> self racer bounce))) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) (-> self control ground-impact-vel)) - ) - (when (< (-> self racer bounce-hit) 73728.0) - (set! (-> self racer bounce) 0) - 0 - ) - (set! (-> self racer bob-timer) 90.0) - (let ((f0-14 (lerp-scale 2.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (set! (-> self racer bob-meta-meta-timer) f0-14) - (set! (-> self racer bob-meta-timer) f0-14) - ) - (set! (-> self racer bob-mult-trans) (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0)) - (set-time! (-> self racer bob-hit-ground-time)) - (set-time! (-> self racer bob-meta-time)) - (cond - ((or s5-0 (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2))) - (+! (-> self racer bounce) 1) - (let* ((v1-73 (-> self racer bounce)) - (a1-6 (cond - ((= v1-73 1) - (lerp-scale 4096.0 8192.0 (-> self racer bounce-hit) 61440.0 81920.0) - ) - ((= v1-73 2) - 2048.0 - ) - ) - ) - ) - (go target-racing-bounce a1-6 a1-6 gp-0) - ) - ) - ((>= (-> self racer slide-mode) 0) - ) - (else - (target-racing-land-anim gp-0) - ) - ) - ) - ) - ) - ) - (when (!= (-> self racer slide-shift-x) 0.0) - (if (rand-vu-percent? 0.5) - (sound-play "zoomer-rev1" :vol 80) - (sound-play "zoomer-rev2" :vol 80) - ) - ) - (set! (-> self racer bounce) 0) - (loop - (let ((gp-3 (current-time))) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (while (not (time-elapsed? gp-3 (seconds 1))) - (if (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) - ) - ) - (set! gp-3 (current-time)) - ) - (target-racing-turn-anim) + :event + (-> target-racing-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *racer-mods*)) + :exit + (behavior () + (target-racing-center-anim) + ((-> target-racing-start exit))) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.1))) + (< (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))) + 4096.0))) + (go target-racing-jump 2048.0 5324.8 #t)) + (target-racing-smack-check) + (let* ((f30-0 (target-height-above-ground)) + (v1-28 (time-to-ground (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) + (-> self control dynam gravity-length) + f30-0))) + (if (and (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) + (or (time-elapsed? (-> self control unknown-dword11) (* (-> *TARGET-bank* ground-timeout) 2)) (< 75 v1-28)) + (< 30 v1-28) + (< 4096.0 f30-0)) + (go target-racing-falling))) + (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) + (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x)))))) + :code + (behavior () + (cond + ((ja-group? eichar-racer-get-on-ja) (ja-no-eval :num! (seek!)) (while (not (ja-done? 0)) (suspend) (ja-eval))) + ((let ((v1-16 (ja-group))) + (or (or (= v1-16 eichar-racer-jump-small-ja) (= v1-16 eichar-racer-jump-small-loop-ja)) (> (-> self racer bounce) 0))) + (let ((s5-0 #f) + (gp-0 #f)) + (when (and (< (fabs (-> self racer bob-mult-trans)) 0.2) + (and (time-elapsed? (-> self racer racing-time) (seconds 0.15)) (< 16384.0 (-> self control ground-impact-vel)))) + (when (>= (-> self control unknown-float01) 40960.0) + (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) + (launch-particles (-> *part-id-table* 2225) (-> self control trans))) + (target-land-effect) + (when (and (>= (-> self control ground-impact-vel) 61440.0) (zero? (-> self racer bounce))) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) (-> self control ground-impact-vel))) + (when (< (-> self racer bounce-hit) 73728.0) + (set! (-> self racer bounce) 0) + 0) + (set! (-> self racer bob-timer) 90.0) + (let ((f0-14 (lerp-scale 2.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) + (set! (-> self racer bob-meta-meta-timer) f0-14) + (set! (-> self racer bob-meta-timer) f0-14)) + (set! (-> self racer bob-mult-trans) (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0)) + (set-time! (-> self racer bob-hit-ground-time)) + (set-time! (-> self racer bob-meta-time)) + (cond + ((or s5-0 (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2))) + (+! (-> self racer bounce) 1) + (let* ((v1-73 (-> self racer bounce)) + (a1-6 (cond + ((= v1-73 1) (lerp-scale 4096.0 8192.0 (-> self racer bounce-hit) 61440.0 81920.0)) + ((= v1-73 2) 2048.0)))) + (go target-racing-bounce a1-6 a1-6 gp-0))) + ((>= (-> self racer slide-mode) 0)) + (else (target-racing-land-anim gp-0))))))) + (when (!= (-> self racer slide-shift-x) 0.0) + (if (rand-vu-percent? 0.5) (sound-play "zoomer-rev1" :vol 80) (sound-play "zoomer-rev2" :vol 80))) + (set! (-> self racer bounce) 0) + (loop (let ((gp-3 (current-time))) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (while (not (time-elapsed? gp-3 (seconds 1))) + (if (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) (>= (fabs (-> self racer turn-anim-frame)) 1.0))) + (set! gp-3 (current-time))) + (target-racing-turn-anim) + (suspend))) + (when (not (ja-group? eichar-racer-stance-ja)) + (ja-channel-push! 1 (seconds 0.4)) + (ja :group! eichar-racer-stance-ja :num! min)) + (while (not (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) (>= (fabs (-> self racer turn-anim-frame)) 1.0)))) (suspend) - ) - ) - (when (not (ja-group? eichar-racer-stance-ja)) - (ja-channel-push! 1 (seconds 0.4)) - (ja :group! eichar-racer-stance-ja :num! min) - ) - (while (not (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (or (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1 x) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) - ) - ) - ) - (suspend) - (ja :num! (loop!)) - ) - ) - ) - :post (behavior () - (if (= (-> self next-state name) 'target-racing) - (set-time! (-> self racer racing-time)) - ) - (target-racing-post) - ) - ) + (ja :num! (loop!))))) + :post + (behavior () + (if (= (-> self next-state name) 'target-racing) (set-time! (-> self racer racing-time))) + (target-racing-post))) (defstate target-racing-jump (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (set! (-> self racer shock-offsetv) 0.0) - (sound-play "zoomer-jump") - (set-time! (-> self state-time)) - (when arg2 - (when (>= (-> self racer hill-ground-value) 0.11) - (set! (-> self racer hill-boost) (* 40960.0 (-> self racer hill-ground-value))) - (vector-normalize! (-> self control transv) (+ (-> self control unknown-float01) (-> self racer hill-boost))) - ) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (< 16384.0 (-> self control transv y))) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (set! (-> self racer shock-offsetv) 0.0) + (sound-play "zoomer-jump") + (set-time! (-> self state-time)) + (when arg2 + (when (>= (-> self racer hill-ground-value) 0.11) + (set! (-> self racer hill-boost) (* 40960.0 (-> self racer hill-ground-value))) + (vector-normalize! (-> self control transv) (+ (-> self control unknown-float01) (-> self racer hill-boost))))) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) (< 16384.0 (-> self control transv y))) (set! (-> self racer hop?) #f) - (set! (-> self racer hop?) arg2) - ) - (set! (-> self racer hop-start-y) (-> self control trans y)) - (racer-calc-gravity) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - (if (< (-> self racer slide-mode) 0) + (set! (-> self racer hop?) arg2)) + (set! (-> self racer hop-start-y) (-> self control trans y)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))))) + (if (< (-> self racer slide-mode) 0) (set! (-> self racer slide-down-time 0) - (the-as time-frame (if (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) - (the-as int (current-time)) - 0 - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - (set! (-> self racer hop?) #f) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (cond - ((cpad-pressed? (-> self control unknown-cpad-info00 number) l1 r1) - (set-time! (-> self racer slide-down-time 0)) - ) - ((not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-down-time 0) 0) - 0 - ) - ((and (time-elapsed? (-> self racer slide-down-time 0) (the-as time-frame (-> *RACER-bank* slide-hold-time))) - (< (-> self racer slide-mode) 0) - (or (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - (< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - ) - ) - (set! (-> self racer slide-mode) - (if (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - 0 - 1 - ) - ) - (set-time! (-> self racer slide-enter-time)) - (set! (-> self racer slide-amp) 1.0) - (set! (-> self racer slide-grip-mult) 0.0) - ) - ((>= (-> self racer slide-mode) 0) - (cond - ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) - (set! (-> self racer slide-mode) 0) - 0 - ) - ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - (set! (-> self racer slide-mode) 1) - ) - ) - ) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go target-racing) - ) - (if (or (< (-> self control trans y) (-> self racer hop-start-y)) - (< 10240.0 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - ) - ) - (set! (-> self racer hop?) #f) - ) - (target-racing-smack-check) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) - (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) - (racer-buzz 0.4) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) - 'jump - ) - ) - ) - (target-racing-jump-anim a0-1 (seconds 0.2)) - ) - ) - :post (-> target-racing post) - ) + (the-as time-frame (if (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (the-as int (current-time)) 0))))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + (set! (-> self racer hop?) #f) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (cond + ((cpad-pressed? (-> self control unknown-cpad-info00 number) l1 r1) (set-time! (-> self racer slide-down-time 0))) + ((not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-down-time 0) 0) 0) + ((and (time-elapsed? (-> self racer slide-down-time 0) (the-as time-frame (-> *RACER-bank* slide-hold-time))) + (< (-> self racer slide-mode) 0) + (or (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)))) + (set! (-> self racer slide-mode) + (if (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) 0 1)) + (set-time! (-> self racer slide-enter-time)) + (set! (-> self racer slide-amp) 1.0) + (set! (-> self racer slide-grip-mult) 0.0)) + ((>= (-> self racer slide-mode) 0) + (cond + ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (set! (-> self racer slide-mode) 0) + 0) + ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) + (set! (-> self racer slide-mode) 1))))) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go target-racing)) + (if (or (< (-> self control trans y) (-> self racer hop-start-y)) + (< 10240.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))))) + (set! (-> self racer hop?) #f)) + (target-racing-smack-check) + (if (time-elapsed? (-> self state-time) (seconds 1)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded))) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) + (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) + (racer-buzz 0.4)) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) 'jump))) (target-racing-jump-anim a0-1 (seconds 0.2)))) + :post + (-> target-racing + post)) (defstate target-racing-bounce (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - (sound-play "zoomer-jump") - (set-time! (-> self state-time)) - (racer-calc-gravity) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-float123) - (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) - ) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) - ) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) - (< (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - 8192.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) - ) - (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (go target-racing) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) - (target-racing-smack-check) - (racer-buzz 0.4) - ) - :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (target-racing-land-anim arg2) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (loop - (target-racing-turn-anim) - (suspend) - ) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + (sound-play "zoomer-jump") + (set-time! (-> self state-time)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self control unknown-float123) + (fmax (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) + (< (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos))) + 8192.0))) + (go target-racing-jump 2048.0 5324.8 #t)) + (if (and (logtest? (-> self control status) (cshape-moving-flags onsurf)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (go target-racing)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (-> self control transv)) + (target-racing-smack-check) + (racer-buzz 0.4)) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (target-racing-land-anim arg2) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (loop (target-racing-turn-anim) + (suspend))) + :post + (-> target-racing + post)) (defstate target-racing-smack (target) - :event (-> target-racing-start event) - :enter (behavior ((arg0 float) (arg1 symbol)) - (sound-play "smack-surface") - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) - (set! (-> self racer heavy) arg1) - (vector-! (-> self control transv) (-> self control unknown-vector70) (-> self control trans)) - (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) - (if (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (set! f0-0 (* 2.0 f0-0)) - ) - (vector-normalize! (-> self control transv) f0-0) - ) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - 0 - ) - :exit (behavior () - (set! (-> self racer heavy) #f) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (set! (-> self racer turn-anim-targ) 0.0) - ) - :code (behavior ((arg0 float) (arg1 symbol)) - (sound-play "zoomer-crash-2") - (ja-channel-push! 2 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!)) - (ja :chan 1 - :group! eichar-racer-idle-ja - :num! (identity (ja-aframe 0.0 0)) - :frame-interp (lerp-scale 1.0 0.25 arg0 0.0 122880.0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max (lerp-scale 2.0 1.0 arg0 0.0 163840.0))) - ) - (go target-racing) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior ((arg0 float) (arg1 symbol)) + (sound-play "smack-surface") + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5)) + (set! (-> self racer heavy) arg1) + (vector-! (-> self control transv) (-> self control unknown-vector70) (-> self control trans)) + (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) + (if (cpad-hold? (-> self control unknown-cpad-info00 number) x) (set! f0-0 (* 2.0 f0-0))) + (vector-normalize! (-> self control transv) f0-0)) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + 0) + :exit + (behavior () + (set! (-> self racer heavy) #f) + ((-> target-racing-start exit))) + :trans + (behavior () + (set! (-> self racer turn-anim-targ) 0.0)) + :code + (behavior ((arg0 float) (arg1 symbol)) + (sound-play "zoomer-crash-2") + (ja-channel-push! 2 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!)) + (ja :chan 1 + :group! + eichar-racer-idle-ja + :num! + (identity (ja-aframe 0.0 0)) + :frame-interp + (lerp-scale 1.0 0.25 arg0 0.0 122880.0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (lerp-scale 2.0 1.0 arg0 0.0 163840.0)))) + (go target-racing)) + :post + (-> target-racing + post)) (defstate target-racing-falling (target) - :event (-> target-racing-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ((-> target-racing-start exit)) - ) - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-racing) - ) - (target-racing-smack-check) - (racer-buzz 0.3) - (if (time-elapsed? (-> self state-time) (seconds 1)) - (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - ) - :code (behavior () - (target-racing-jump-anim #f (seconds 0.1)) - ) - :post (-> target-racing post) - ) + :event + (-> target-racing-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set-time! (-> self state-time))) + :exit + (behavior () + (logclear! (-> self control root-prim prim-core action) (collide-action racer-grounded)) + ((-> target-racing-start exit))) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-racing)) + (target-racing-smack-check) + (racer-buzz 0.3) + (if (time-elapsed? (-> self state-time) (seconds 1)) + (logior! (-> self control root-prim prim-core action) (collide-action racer-grounded)))) + :code + (behavior () + (target-racing-jump-anim #f (seconds 0.1))) + :post + (-> target-racing + post)) (defstate target-racing-hit (target) :event target-generic-event-handler - :enter (behavior ((arg0 handle) (arg1 attack-info)) - (let ((v1-0 (-> self attack-info))) - (set! (-> v1-0 attacker) arg0) - (set! (-> v1-0 mode) 'generic) - (set! (-> v1-0 shove-back) 6144.0) - (set! (-> v1-0 shove-up) 4915.2) - (set! (-> v1-0 angle) #f) - ) - (set! (-> self attack-info trans quad) (the-as uint128 0)) - (combine! (-> self attack-info) arg1) - (case (-> self attack-info mode) - (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) - (pickup-collectable! (-> self fact) (pickup-type eco-green) -1000.0 (the-as handle #f)) - ) - (else - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - ) - ) - ) - :exit (behavior () - (if (!= (-> self next-state name) 'target-racing-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - ((-> target-racing-start exit)) - ) - :code (behavior ((arg0 handle) (arg1 attack-info)) - (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) - (when (!= (-> self attack-info mode) 'endlessfall) - (effect-control-method-10 (-> self skel effect) 'group-target-hit -1.0 -1) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) - (sound-play "oof") - ) - (set-time! (-> self game hit-time)) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) 0) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-racing-death (-> self attack-info mode)) - ) - (case (-> self attack-info mode) - (('endlessfall) - ) - (('darkeco) - (let ((s5-1 (new 'stack-no-clear 'vector))) - (set! (-> s5-1 quad) (-> self control transv quad)) - (let ((a2-3 (vector-xz-normalize! - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self attack-info intersection)) - 1.0 - ) - ) - ) - (set! (-> a2-3 y) 0.0) - (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) - (f30-0 (vector-xz-length s5-1)) - ) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 1.0) - (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) - (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) - (if (< 16384.0 (fabs f28-0)) - (set! f28-0 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1)))) - ) - (set! (-> self racer rotv y) (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max)))) - ) - ) - ) - ) - ) - (else - (set! (-> self post-hook) target-racing-post) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go target-racing) - ) - :post target-no-stick-post - ) + :enter + (behavior ((arg0 handle) (arg1 attack-info)) + (let ((v1-0 (-> self attack-info))) + (set! (-> v1-0 attacker) arg0) + (set! (-> v1-0 mode) 'generic) + (set! (-> v1-0 shove-back) 6144.0) + (set! (-> v1-0 shove-up) 4915.2) + (set! (-> v1-0 angle) #f)) + (set! (-> self attack-info trans quad) (the-as uint128 0)) + (combine! (-> self attack-info) arg1) + (case (-> self attack-info mode) + (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) + (pickup-collectable! (-> self fact) (pickup-type eco-green) -1000.0 (the-as handle #f))) + (else + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f))))) + :exit + (behavior () + (if (!= (-> self next-state name) 'target-racing-death) + (logclear! (-> self state-flags) (state-flags being-attacked dying))) + ((-> target-racing-start exit))) + :code + (behavior ((arg0 handle) (arg1 attack-info)) + (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) + (when (!= (-> self attack-info mode) 'endlessfall) + (effect-control-method-10 (-> self skel effect) 'group-target-hit -1.0 -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)) + (sound-play "oof")) + (set-time! (-> self game hit-time)) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) 0) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-racing-death (-> self attack-info mode))) + (case (-> self attack-info mode) + (('endlessfall)) + (('darkeco) + (let ((s5-1 (new 'stack-no-clear 'vector))) + (set! (-> s5-1 quad) (-> self control transv quad)) + (let ((a2-3 (vector-xz-normalize! (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self attack-info intersection)) + 1.0))) + (set! (-> a2-3 y) 0.0) + (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) + (f30-0 (vector-xz-length s5-1))) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 1.0) + (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) + (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) + (if (< 16384.0 (fabs f28-0)) (set! f28-0 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1))))) + (set! (-> self racer rotv y) (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max))))))))) + (else + (set! (-> self post-hook) target-racing-post) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-smack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go target-racing)) + :post target-no-stick-post) (defstate target-racing-death (target) - :event (-> target-death event) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags dying)) - (send-event (ppointer->process (-> self manipy)) 'draw #t) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (target-timed-invulnerable-off self) - (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) - (restore-collide-with-as (-> self control)) - ((-> target-racing-start exit)) - (target-exit) - (set! (-> self racer stick-off) #f) - ) - :code (behavior ((arg0 symbol)) - (local-vars (v1-154 symbol)) - (set! (-> self racer stick-off) #t) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (logior! (-> self state-flags) (state-flags dying)) - (case (-> self attack-info mode) - (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) - ((-> target-racing-start exit)) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'draw #f) - (sound-play "zoomer-explode") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 116) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior racer - () - (let ((s5-0 (-> self parent-override)) - (gp-0 (new 'stack 'joint-exploder-tuning 1)) - ) - (let* ((f0-0 (vector-length (-> s5-0 0 control transv))) - (f30-0 (fmin 1.0 (* 0.000008138021 f0-0))) - ) - (set! (-> gp-0 duration) (seconds 5)) - (set! (-> gp-0 fountain-rand-transv-hi x) (fmax 24576.0 f0-0)) - (set! (-> gp-0 fountain-rand-transv-hi y) (+ 81920.0 f0-0)) - (set! (-> gp-0 fountain-rand-transv-hi z) 20480.0) - (set! (-> gp-0 fountain-rand-transv-hi w) 36864.0) - (vector-negate! (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control transv)) - (vector-normalize! (-> gp-0 fountain-rand-transv-lo) (* 12288.0 f30-0)) - ) - (vector+! (-> gp-0 fountain-rand-transv-lo) (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control trans)) - (process-spawn - joint-exploder - *racer-explode-sg* - 24 - gp-0 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) - (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1) - ) - ) - :to self - ) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) - (case (-> self attack-info mode) - (('balloonlurker) - (create-splash (-> self water) 2.0 (-> self control trans) 1 (-> self control transv)) - (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek! (ja-aframe 240.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) - (send-event *camera* 'joystick 0.0 1.0) - (suspend) - (ja :num! (seek! (ja-aframe 240.0 0))) - ) - ) - (else - (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (send-event *camera* 'joystick 0.0 1.0) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) - (if (>= (ja-aframe-num 0) 245.0) - (set-forward-vel (* 0.5 (-> self control unknown-float01))) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - (('melt) - (sound-play "zoomer-melt") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 32) - -1 - #f - #f - #f - (-> self control trans) - :to *entity-pool* - ) - (clear-collide-with-as (-> self control)) - (set! (-> self post-hook) target-no-ja-move-post) - (ja-channel-set! 0) - (ja-post) - (let ((gp-6 (current-time))) - (until (time-elapsed? gp-6 (seconds 2)) - (suspend) - ) - ) - ) - (('endlessfall) - (sound-play "death-fall") - (camera-change-to (the-as string cam-endlessfall) 30 #f) - (set! (-> self control pat-ignore-mask unknown-bit) 1) - (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) - (let ((gp-8 (new-stack-vector0))) - (let ((f0-28 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-8 (-> self control transv) (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28)) - ) - (let* ((f0-29 (vector-length gp-8)) - (f1-9 f0-29) - (f2-2 f30-0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) - (vector-float*! gp-8 gp-8 (/ f0-29 f1-9)) - ) - ) - ) - (let ((gp-9 (current-time))) - (until (time-elapsed? gp-9 (seconds 0.75)) - (vector-seek! (-> self draw color-mult) *zero-vector* (* 1.5 (seconds-per-frame))) - (set-forward-vel (* 0.96 (-> self control unknown-float01))) - (let ((s5-3 (new-stack-vector0)) - (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) + :event + (-> target-death + event) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags dying)) + (send-event (ppointer->process (-> self manipy)) 'draw #t) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (target-timed-invulnerable-off self) + (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :noentity #x1)) + (restore-collide-with-as (-> self control)) + ((-> target-racing-start exit)) + (target-exit) + (set! (-> self racer stick-off) #f)) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-154 symbol)) + (set! (-> self racer stick-off) #t) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (logior! (-> self state-flags) (state-flags dying)) + (case (-> self attack-info mode) + (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) + ((-> target-racing-start exit)) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'draw #f) + (sound-play "zoomer-explode") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 116) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (send-event (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior racer () + (let ((s5-0 (-> self parent-override)) + (gp-0 (new 'stack 'joint-exploder-tuning 1))) + (let* ((f0-0 (vector-length (-> s5-0 0 control transv))) + (f30-0 (fmin 1.0 (* 0.000008138021 f0-0)))) + (set! (-> gp-0 duration) (seconds 5)) + (set! (-> gp-0 fountain-rand-transv-hi x) (fmax 24576.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi y) (+ 81920.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi z) 20480.0) + (set! (-> gp-0 fountain-rand-transv-hi w) 36864.0) + (vector-negate! (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control transv)) + (vector-normalize! (-> gp-0 fountain-rand-transv-lo) (* 12288.0 f30-0))) + (vector+! (-> gp-0 fountain-rand-transv-lo) (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control trans)) + (process-spawn joint-exploder + *racer-explode-sg* + 24 + gp-0 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1))) + :to + self)))) + (ja-channel-push! 1 (seconds 0.1)) + (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) + (case (-> self attack-info mode) + (('balloonlurker) + (create-splash (-> self water) 2.0 (-> self control trans) 1 (-> self control transv)) + (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek! (ja-aframe 240.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) + (send-event *camera* 'joystick 0.0 1.0) + (suspend) + (ja :num! (seek! (ja-aframe 240.0 0))))) + (else + (ja-no-eval :group! eichar-racer-death-explode-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (send-event *camera* 'joystick 0.0 1.0) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (seconds-per-frame))) + (if (>= (ja-aframe-num 0) 245.0) (set-forward-vel (* 0.5 (-> self control unknown-float01)))) + (suspend) + (ja :num! (seek!)))))) + (('melt) + (sound-play "zoomer-melt") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 32) + -1 + #f + #f + #f + (-> self control trans) + :to + *entity-pool*) + (clear-collide-with-as (-> self control)) + (set! (-> self post-hook) target-no-ja-move-post) + (ja-channel-set! 0) + (ja-post) + (let ((gp-6 (current-time))) (until (time-elapsed? gp-6 (seconds 2)) (suspend)))) + (('endlessfall) + (sound-play "death-fall") + (camera-change-to (the-as string cam-endlessfall) 30 #f) + (set! (-> self control pat-ignore-mask unknown-bit) 1) + (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) + (let ((gp-8 (new-stack-vector0))) + (let ((f0-28 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) 0.0 - (vector-! s5-3 (-> self control transv) (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0)) - (let* ((f0-38 (vector-length s5-3)) - (f1-12 f0-38) - ) - (if (< f30-0 f28-0) - (set! f28-0 f30-0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) - (vector-float*! s5-3 s5-3 (/ f0-38 f1-12)) - ) - ) - ) - (suspend) - ) - ) - ) - (camera-change-to (the-as string 'base) 0 #f) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (set! (-> self post-hook) target-no-stick-post) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (until v1-154 - (suspend) - (set! v1-154 (and (time-elapsed? (-> self state-time) (seconds 1)) - (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie))) - ) - ) - ) - (go target-stance) - ) - :post target-racing-post - ) + (vector-! gp-8 (-> self control transv) (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28))) + (let* ((f0-29 (vector-length gp-8)) + (f1-9 f0-29) + (f2-2 f30-0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-8 gp-8 (/ f0-29 f1-9))))) + (let ((gp-9 (current-time))) + (until (time-elapsed? gp-9 (seconds 0.75)) + (vector-seek! (-> self draw color-mult) *zero-vector* (* 1.5 (seconds-per-frame))) + (set-forward-vel (* 0.96 (-> self control unknown-float01))) + (let ((s5-3 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! s5-3 (-> self control transv) (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0)) + (let* ((f0-38 (vector-length s5-3)) + (f1-12 f0-38)) + (if (< f30-0 f28-0) (set! f28-0 f30-0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! s5-3 s5-3 (/ f0-38 f1-12))))) + (suspend)))) + (camera-change-to (the-as string 'base) 0 #f))) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (set! (-> self post-hook) target-no-stick-post) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (until v1-154 + (suspend) + (set! v1-154 + (and (time-elapsed? (-> self state-time) (seconds 1)) + (not (logtest? (-> *kernel-context* prevent-from-run) (process-mask movie)))))) + (go target-stance)) + :post target-racing-post) (defstate target-racing-get-on (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) - (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) - (set-time! (-> self state-time)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s3-0 (handle->process arg0)) - (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - (the-as racer s3-0) - ) - ) - ) - (when s4-1 - (set! (-> s5-0 quad) (-> s4-1 root trans quad)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> s4-1 root quat)) - (send-event s4-1 'trans (-> self racer bike-trans)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s4-1 root quat)) - (set! (-> self racer bike-scale quad) (-> s4-1 root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) - (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)) - ) - ) - (let ((s5-1 #f) - (gp-1 #f) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-get-on-ja :num! (seek! (ja-aframe 77.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (set! s5-1 #t) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (when (< 50.0 (ja-aframe-num 0)) - (when (not gp-1) - (sound-play "zoomer-start") - (set! gp-1 #t) - ) - (set! (-> self racer front-rotv) 65536.0) - (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) - (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - ) - (suspend) - (ja :num! (seek! (ja-aframe 77.0 0))) - ) - ) - (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) - (send-event *camera* 'set-slave-option #x6000) - (set! (-> self control transv quad) (the-as uint128 0)) - (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) - (rot->dir-targ! (-> self control)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (when *target* - (when (or (= (-> *target* current-level name) 'lavatube) - (= (-> *target* current-level name) 'firecanyon) - (= (-> *target* current-level name) 'citadel) - ) - (set! (-> *hud-parts* bike-heat) (process-spawn hud-bike-heat :init hud-init-by-other 0 :to self)) - (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) - (set! (-> *hud-parts* buzzers 0 y-sgn) 0) - 0 - ) - (set! (-> *hud-parts* bike-speed) (process-spawn hud-bike-speed :init hud-init-by-other 0 :to self)) - (set! (-> *hud-parts* power 0 next-y-offset) -120) - (set! (-> *hud-parts* power 0 y-sgn) 0) - 0 - ) - (go target-racing) - ) - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time)))))) - ) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - ) - (let ((f30-1 (fmax 0.0 (fmin 1.0 (* 0.010528533 (+ -279.99 (the float (- (current-time) (-> self state-time)))))))) - ) - (set! (-> self control unknown-vector11 y) - (lerp (the-as float (-> self control unknown-uint20)) (-> self racer cushion-base) f30-1) - ) - (set! (-> self racer bike-trans y) (lerp - (the-as float (-> self control unknown-uint30)) - (+ 4096.0 (the-as float (-> self control unknown-uint30))) - f30-1 - ) - ) - ) - (hide-hud-quick) - (target-no-move-post) - ) - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) + (logior! (-> self state-flags) (state-flags use-alt-cam-pos)) + (set-time! (-> self state-time)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s3-0 (handle->process arg0)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) (the-as racer s3-0)))) + (when s4-1 + (set! (-> s5-0 quad) (-> s4-1 root trans quad)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s4-1 root quat)) + (send-event s4-1 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s4-1 root quat)) + (set! (-> self racer bike-scale quad) (-> s4-1 root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) + (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)))) + (let ((s5-1 #f) + (gp-1 #f)) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-get-on-ja :num! (seek! (ja-aframe 77.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (set! s5-1 #t)) + (set! (-> self control transv quad) (the-as uint128 0)) + (when (< 50.0 (ja-aframe-num 0)) + (when (not gp-1) + (sound-play "zoomer-start") + (set! gp-1 #t)) + (set! (-> self racer front-rotv) 65536.0) + (set! (-> self racer front-rot) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) + (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot)))) + (suspend) + (ja :num! (seek! (ja-aframe 77.0 0))))) + (logclear! (-> self state-flags) (state-flags use-alt-cam-pos)) + (send-event *camera* 'set-slave-option #x6000) + (set! (-> self control transv quad) (the-as uint128 0)) + (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) + (rot->dir-targ! (-> self control)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (when *target* + (when (or (= (-> *target* current-level name) 'lavatube) + (= (-> *target* current-level name) 'firecanyon) + (= (-> *target* current-level name) 'citadel)) + (set! (-> *hud-parts* bike-heat) (process-spawn hud-bike-heat :init hud-init-by-other 0 :to self)) + (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) + (set! (-> *hud-parts* buzzers 0 y-sgn) 0) + 0) + (set! (-> *hud-parts* bike-speed) (process-spawn hud-bike-speed :init hud-init-by-other 0 :to self)) + (set! (-> *hud-parts* power 0 next-y-offset) -120) + (set! (-> *hud-parts* power 0 y-sgn) 0) + 0) + (go target-racing)) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (current-time) (-> self state-time))))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0)) + (let ((f30-1 (fmax 0.0 (fmin 1.0 (* 0.010528533 (+ -279.99 (the float (- (current-time) (-> self state-time))))))))) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) (-> self racer cushion-base) f30-1)) + (set! (-> self racer bike-trans y) + (lerp (the-as float (-> self control unknown-uint30)) (+ 4096.0 (the-as float (-> self control unknown-uint30))) f30-1))) + (hide-hud-quick) + (target-no-move-post))) (defstate target-racing-get-off (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *racer-mods*) - (let ((a0-2 (-> *hud-parts* bike-speed))) - (if a0-2 - (set! (-> a0-2 0 deactivate-when-hidden) #t) - ) - ) - (let ((a0-4 (-> *hud-parts* bike-heat))) - (if a0-4 - (set! (-> a0-4 0 deactivate-when-hidden) #t) - ) - ) - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 0.5)) - (set! (-> self racer stick-lock) #t) - (set-forward-vel (* 0.9 (-> self control unknown-float01))) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-targ) 0.0) - (target-racing-turn-anim) - (seek! (-> self control unknown-vector11 y) 6144.0 (* 3.0 (seconds-per-frame))) - (suspend) - ) - ) - (go target-racing-get-off-jump arg0) - ) - :post target-racing-post - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *racer-mods*) + (let ((a0-2 (-> *hud-parts* bike-speed))) (if a0-2 (set! (-> a0-2 0 deactivate-when-hidden) #t))) + (let ((a0-4 (-> *hud-parts* bike-heat))) (if a0-4 (set! (-> a0-4 0 deactivate-when-hidden) #t))) + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (let ((s5-1 (current-time))) + (until (time-elapsed? s5-1 (seconds 0.5)) + (set! (-> self racer stick-lock) #t) + (set-forward-vel (* 0.9 (-> self control unknown-float01))) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-targ) 0.0) + (target-racing-turn-anim) + (seek! (-> self control unknown-vector11 y) 6144.0 (* 3.0 (seconds-per-frame))) + (suspend))) + (go target-racing-get-off-jump arg0)) + :post target-racing-post) (defstate target-racing-get-off-jump (target) :event target-generic-event-handler - :exit (-> target-racing-start exit) - :code (behavior ((arg0 handle)) - (sound-play "zoomer-stop") - (set-time! (-> self state-time)) - (set! (-> self control transv quad) (the-as uint128 0)) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self control trans quad)) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (set! (-> s4-1 quad) (-> self control trans quad)) - (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) - (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (let* ((s2-0 (handle->process arg0)) - (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) - (the-as racer s2-0) - ) - ) - ) - (when s3-0 - (set! (-> s4-1 quad) (-> s3-0 root trans quad)) - (set-yaw-angle-clear-roll-pitch! (-> s3-0 root) (quaternion-y-angle (-> self control quat))) - (quaternion-copy! (-> self control unknown-quaternion03) (-> s3-0 root quat)) - (send-event s3-0 'trans (-> self racer bike-trans)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s3-0 root quat)) - (set! (-> self racer bike-scale quad) (-> s3-0 root scale quad)) - (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) - (set! (-> self control unknown-vector103 quad) (-> s4-1 quad)) - ) - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! eichar-racer-get-off-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process arg0) 'draw) - (set-yaw-angle-clear-roll-pitch! - (-> self control) - (quaternion-y-angle (-> self control unknown-quaternion03)) - ) - (rot->dir-targ! (-> self control)) - (ja-post) - (vector<-cspace! gp-1 (joint-node eichar-lod0-jg main)) - (+! (-> gp-1 y) -5896.192) - (move-to-point! (-> self control) gp-1) - ) - (send-event *camera* 'ease-in) - (ja-channel-set! 0) - (go target-racing-get-off-hit-ground #f) - ) - :post (behavior () - (let* ((f0-2 (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) - (f0-5 (if (< 0.0 f0-2) - (fmax 5461.3335 (* 4.0 f0-2)) - 54613.332 - ) - ) - ) - (seek! (-> self racer front-rotv) f0-5 (* 54613.332 (seconds-per-frame))) - ) - (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) - (when (and (< (fabs (deg-diff (-> *RACER-bank* default-front-blade) (-> self racer front-rot))) 1820.4445) - (= (-> self racer front-rotv) 5461.3335) - ) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - ) - (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) - (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) - (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 (fmax 0.0 (fmin 1.0 (* 0.004761905 (+ -150.0 (the float (- (current-time) (-> self state-time)))))))) - ) - (fmax 0.0 (fmin 1.0 (* 0.006666667 (+ -225.0 (the float (- (current-time) (-> self state-time))))))) - (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) - (set! (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))) - ) - ) - (move-to-point! (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - (set! (-> self control unknown-vector11 y) - (lerp (the-as float (-> self control unknown-uint20)) 6144.0 (fmin 1.0 (* 2.0 f30-0))) - ) - ) - (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (hide-hud) - (target-no-move-post) - ) - ) + :exit + (-> target-racing-start + exit) + :code + (behavior ((arg0 handle)) + (sound-play "zoomer-stop") + (set-time! (-> self state-time)) + (set! (-> self control transv quad) (the-as uint128 0)) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self control trans quad)) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (set! (-> s4-1 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s2-0 (handle->process arg0)) + (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) (the-as racer s2-0)))) + (when s3-0 + (set! (-> s4-1 quad) (-> s3-0 root trans quad)) + (set-yaw-angle-clear-roll-pitch! (-> s3-0 root) (quaternion-y-angle (-> self control quat))) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s3-0 root quat)) + (send-event s3-0 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s3-0 root quat)) + (set! (-> self racer bike-scale quad) (-> s3-0 root scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))))) + (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) + (set! (-> self control unknown-vector103 quad) (-> s4-1 quad))) + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! eichar-racer-get-off-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process arg0) 'draw) + (set-yaw-angle-clear-roll-pitch! (-> self control) (quaternion-y-angle (-> self control unknown-quaternion03))) + (rot->dir-targ! (-> self control)) + (ja-post) + (vector<-cspace! gp-1 (joint-node eichar-lod0-jg main)) + (+! (-> gp-1 y) -5896.192) + (move-to-point! (-> self control) gp-1)) + (send-event *camera* 'ease-in) + (ja-channel-set! 0) + (go target-racing-get-off-hit-ground #f)) + :post + (behavior () + (let* ((f0-2 (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) + (f0-5 (if (< 0.0 f0-2) (fmax 5461.3335 (* 4.0 f0-2)) 54613.332))) + (seek! (-> self racer front-rotv) f0-5 (* 54613.332 (seconds-per-frame)))) + (set! (-> self racer front-rot) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) + (when (and (< (fabs (deg-diff (-> *RACER-bank* default-front-blade) (-> self racer front-rot))) 1820.4445) + (= (-> self racer front-rotv) 5461.3335)) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) + (+! (-> self racer bottom-rot) (* 364088.88 (seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmax 0.0 (fmin 1.0 (* 0.004761905 (+ -150.0 (the float (- (current-time) (-> self state-time))))))))) + (fmax 0.0 (fmin 1.0 (* 0.006666667 (+ -225.0 (the float (- (current-time) (-> self state-time))))))) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax 0.0 (fmin 1.0 (* 0.0044444446 (the float (+ (- (seconds -0.5) (-> self state-time)) (current-time)))))))) + (move-to-point! (-> self control) gp-0) + (quaternion-slerp! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) 6144.0 (fmin 1.0 (* 2.0 f30-0))))) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (hide-hud) + (target-no-move-post))) (defstate target-racing-get-off-hit-ground (target) :event target-standard-event-handler - :enter (-> target-hit-ground enter) - :trans (behavior () - (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - ((-> target-hit-ground trans)) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-set! 1) - (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe 42.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go target-stance) - ) - :post (behavior () - (hide-hud) - (target-post) - ) - ) + :enter + (-> target-hit-ground + enter) + :trans + (behavior () + (logior! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + ((-> target-hit-ground trans))) + :code + (behavior ((arg0 symbol)) + (ja-channel-set! 1) + (ja-no-eval :group! eichar-jump-land-ja :num! (seek!) :frame-num (ja-aframe 42.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go target-stance)) + :post + (behavior () + (hide-hud) + (target-post))) (defstate target-racing-grab (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - (-> self state name) - ) - (else - (case message - (('end-mode) - (go target-racing) - ) - (('clone-anim) - (go target-racing-clone-anim (process->handle (the-as process (-> block param 0)))) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self control unknown-surface00) *grab-mods*) - (set! (-> self neck flex-blend) 0.0) - (logior! (-> self state-flags) (state-flags invulnerable grabbed)) - (set! (-> self racer stick-off) #t) - ) - :exit (behavior () - (set! (-> self racer stick-off) #f) - (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) - (logclear! (-> self water flags) (water-flags wt16)) - ((-> target-racing-start exit)) - ) - :code (behavior () - (when (not (ja-group? eichar-racer-turn-ja)) - (ja-channel-push! 4 (seconds 0.1)) - (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) - (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) - (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) - (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0)) - ) - (loop - (target-racing-turn-anim) - (set-forward-vel 0.0) - (suspend) - ) - ) - :post target-racing-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) (-> self state name)) + (else + (case message + (('end-mode) (go target-racing)) + (('clone-anim) (go target-racing-clone-anim (process->handle (the-as process (-> block param 0))))) + (else (target-generic-event-handler proc argc message block)))))) + :enter + (behavior () + (set! (-> self control unknown-surface00) *grab-mods*) + (set! (-> self neck flex-blend) 0.0) + (logior! (-> self state-flags) (state-flags invulnerable grabbed)) + (set! (-> self racer stick-off) #t)) + :exit + (behavior () + (set! (-> self racer stick-off) #f) + (logclear! (-> self state-flags) (state-flags invulnerable grabbed)) + (logclear! (-> self water flags) (water-flags wt16)) + ((-> target-racing-start exit))) + :code + (behavior () + (when (not (ja-group? eichar-racer-turn-ja)) + (ja-channel-push! 4 (seconds 0.1)) + (ja :group! eichar-racer-turn-ja :num! (identity (ja-aframe (-> self racer turn-anim-frame) 0))) + (ja :chan 1 :group! eichar-racer-turn2-ja :num! (chan 0)) + (ja :chan 2 :group! eichar-racer-dig-ja :num! (chan 0)) + (ja :chan 3 :group! eichar-racer-dig2-ja :num! (chan 0))) + (loop (target-racing-turn-anim) + (set-forward-vel 0.0) + (suspend))) + :post target-racing-post) (defstate target-racing-clone-anim (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (= message 'trans) (= (-> block param 0) 'restore)) - (set! (-> self control unknown-uint20) (the-as uint #f)) - ) - ((-> target-racing-grab event) proc argc message block) - ) - :enter (-> target-clone-anim enter) - :exit (behavior () - (set! (-> self control unknown-vector11 y) (the-as float (-> self control unknown-uint20))) - (set! (-> self control unknown-vector12 y) (-> self control unknown-vector11 y)) - (send-event (ppointer->process (-> self sidekick)) 'matrix #f) - ((-> target-clone-anim exit)) - ((-> target-racing-start exit)) - (vector-reset! (-> self control transv)) - ) - :code (behavior ((arg0 handle)) - (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) - (set! (-> self control unknown-vector11 y) 0.0) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (clone-anim arg0 33 #t "") - (go target-racing) - ) - :post (behavior () - (racer-sounds) - (seek! (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (seconds-per-frame))) - (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) - (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (target-no-ja-move-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (= message 'trans) (= (-> block param 0) 'restore)) (set! (-> self control unknown-uint20) (the-as uint #f))) + ((-> target-racing-grab event) proc argc message block)) + :enter + (-> target-clone-anim + enter) + :exit + (behavior () + (set! (-> self control unknown-vector11 y) (the-as float (-> self control unknown-uint20))) + (set! (-> self control unknown-vector12 y) (-> self control unknown-vector11 y)) + (send-event (ppointer->process (-> self sidekick)) 'matrix #f) + ((-> target-clone-anim exit)) + ((-> target-racing-start exit)) + (vector-reset! (-> self control transv))) + :code + (behavior ((arg0 handle)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (set! (-> self control unknown-vector11 y) 0.0) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (clone-anim arg0 33 #t "") + (go target-racing)) + :post + (behavior () + (racer-sounds) + (seek! (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (seconds-per-frame))) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (target-no-ja-move-post))) diff --git a/goal_src/jak1/levels/racer_common/racer.gc b/goal_src/jak1/levels/racer_common/racer.gc index 3f64edd6ca..1338a62bd4 100644 --- a/goal_src/jak1/levels/racer_common/racer.gc +++ b/goal_src/jak1/levels/racer_common/racer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/common/blocking-plane.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") @@ -12,424 +11,286 @@ ;; dgos: L1, FIC, LAV, MIS, OGR, RACERP, ROL (define-extern blocking-plane-destroy (function none)) + (define-extern blocking-plane-spawn (function curve-control none :behavior process)) ;; DECOMP BEGINS -(if (not (nmember "racerp" *kernel-packages*)) - (set! *kernel-packages* (cons "racerp" *kernel-packages*)) - ) +(if (not (nmember "racerp" *kernel-packages*)) (set! *kernel-packages* (cons "racerp" *kernel-packages*))) (deftype racer (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer target) :overlay-at parent) - (extra-trans vector :inline) - (condition int32) - (cell handle) - (path-data path-control 2) - (path-target curve-control :overlay-at (-> path-data 0)) - (path-racer path-control :overlay-at (-> path-data 1)) - (auto-get-off symbol) - (shadow-backup shadow-geo) - ) + ((root collide-shape-moving :override) + (parent-override (pointer target) :overlay-at parent) + (extra-trans vector :inline) + (condition int32) + (cell handle) + (path-data path-control 2) + (path-target curve-control :overlay-at (-> path-data 0)) + (path-racer path-control :overlay-at (-> path-data 1)) + (auto-get-off symbol) + (shadow-backup shadow-geo)) (:state-methods - wait-for-start - idle - (pickup (state collectable)) - wait-for-return - ) - ) - + wait-for-start + idle + (pickup (state collectable)) + wait-for-return)) (defmethod relocate ((this racer) (arg0 int)) (countdown (v1-0 2) - (if (-> this path-data v1-0) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (the-as racer ((method-of-type process-drawable relocate) this arg0)) - ) + (if (-> this path-data v1-0) (&+! (-> this path-data v1-0) arg0))) + (the-as racer ((method-of-type process-drawable relocate) this arg0))) -(defskelgroup *racer-sg* racer racer-geo-jg racer-racer-idle-ja - ((racer-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - :shadow racer-shadow-mg - :sort 1 - ) +(defskelgroup *racer-sg* + racer + racer-geo-jg + racer-racer-idle-ja + ((racer-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5) + :shadow racer-shadow-mg + :sort 1) -(defskelgroup *racer-explode-sg* racer racer-explode-lod0-jg racer-explode-idle-ja - ((racer-explode-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.5) - ) +(defskelgroup *racer-explode-sg* + racer + racer-explode-lod0-jg + racer-explode-idle-ja + ((racer-explode-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.5)) (define *racer-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 81920.0) - :top-plane (new 'static 'plane :y 1.0 :w 2048.0) - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 81920.0) + :top-plane + (new 'static 'plane :y 1.0 :w 2048.0)))) (defbehavior racer-effect racer () (when (!= (-> self condition) 4) (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) + (update! (-> self sound))) 0 - (none) - ) + (none)) (defstate wait-for-start (racer) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-1 structure)) - (case message - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('notify) - (set! v0-1 #t) - (set! (-> self auto-get-off) (the-as symbol v0-1)) - v0-1 - ) - (('shadow) - (cond - ((-> block param 0) - (set! v0-1 (-> self shadow-backup)) - (set! (-> self draw shadow) (the-as shadow-geo v0-1)) - v0-1 - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :exit (behavior () - (set! (-> self root root-prim prim-core action) (collide-action)) - (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) - 0 - ) - :code (behavior () - (label cfg-0) - (case (-> self condition) - ((2) - (let ((gp-0 (get-task-control (-> self entity extra perm task)))) - (if (and *cheat-mode* (cpad-hold? 0 l3)) - (goto cfg-77) - ) - (first-any gp-0 #t) - (case (current-status gp-0) - (((task-status need-reward-speech)) - (ja-channel-set! 1) - (ja :group! racer-racer-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (ja-post) - ) - (((task-status invalid)) - (goto cfg-77) - ) - ) - ) - ) - ((6) - (if (or (task-closed? (game-task village2-levitator) (task-status need-hint)) - (and *cheat-mode* (cpad-hold? 0 l3)) - (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - ) - (goto cfg-77) - ) - ) - ((5) - (cond - ((and *cheat-mode* (cpad-hold? 0 l3)) - (goto cfg-77) - ) - ((>= (-> *game-info* fuel) 72.0) - (goto cfg-77) - ) - ) - ) - ((3) - (cond - ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) - (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-1 structure)) + (case message + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('notify) (set! v0-1 #t) (set! (-> self auto-get-off) (the-as symbol v0-1)) v0-1) + (('shadow) + (cond + ((-> block param 0) (set! v0-1 (-> self shadow-backup)) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1) + (else (set! (-> self draw shadow) #f) #f))))) + :exit + (behavior () + (set! (-> self root root-prim prim-core action) (collide-action)) + (set! (-> self root root-prim prim-core offense) (collide-offense no-offense)) + 0) + :code + (behavior () + (label cfg-0) + (case (-> self condition) + ((2) + (let ((gp-0 (get-task-control (-> self entity extra perm task)))) + (if (and *cheat-mode* (cpad-hold? 0 l3)) (goto cfg-77)) + (first-any gp-0 #t) + (case (current-status gp-0) + (((task-status need-reward-speech)) + (ja-channel-set! 1) + (ja :group! racer-racer-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (ja-post)) + (((task-status invalid)) (goto cfg-77))))) + ((6) + (if (or (task-closed? (game-task village2-levitator) (task-status need-hint)) + (and *cheat-mode* (cpad-hold? 0 l3)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) + (goto cfg-77))) + ((5) + (cond + ((and *cheat-mode* (cpad-hold? 0 l3)) (goto cfg-77)) + ((>= (-> *game-info* fuel) 72.0) (goto cfg-77)))) + ((3) + (cond + ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) + (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + (set! (-> self auto-get-off) #f) + (go-virtual pickup (the-as (state collectable) (method-of-object self idle)))) (set! (-> self auto-get-off) #f) - (go-virtual pickup (the-as (state collectable) (method-of-object self idle))) - ) - (set! (-> self auto-get-off) #f) - (goto cfg-77) - ) - ((not (handle->process (-> self cell))) - (set! (-> self cell) - (ppointer->handle - (birth-pickup-at-point - (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) - ) - ) - ) - ) - ) - ((4) - (if (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) - (goto cfg-77) - ) - ) - (else - (goto cfg-77) - ) - ) - (racer-effect) - (suspend) - (b! #t cfg-0 :delay (nop!)) - (label cfg-77) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (goto cfg-77)) + ((not (handle->process (-> self cell))) + (set! (-> self cell) + (ppointer->handle (birth-pickup-at-point (vector+! (new 'stack-no-clear 'vector) (-> self root trans) (new 'static 'vector :y 8192.0 :w 1.0)) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (-> self fact))))))) + ((4) + (if (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) (goto cfg-77))) + (else (goto cfg-77))) + (racer-effect) + (suspend) + (b! #t cfg-0 :delay (nop!)) + (label cfg-77) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) (go-virtual wait-for-return) - (go-virtual idle) - ) - ) - ) + (go-virtual idle)))) (defstate idle (racer) :virtual #t - :event (-> (method-of-type racer wait-for-start) event) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (-> self path-target)) - ) - :exit (-> (method-of-type racer wait-for-start) exit) - :code (behavior () - (ja-channel-set! 1) - (ja :group! racer-racer-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - 0.0 - (let ((f30-0 (if (= (-> self condition) 4) - 61440.0 - 20480.0 - ) - ) - ) - (loop - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (go-virtual wait-for-return) - ) - (when (and (and *target* (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (not (movie?)) (not (level-hint-displayed?))) - ) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) (can-grab-display? self)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-24 gp-0)) - (set! (-> v1-24 width) (the float 440)) - ) - (let ((v1-25 gp-0)) - (set! (-> v1-25 height) (the float 80)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - (if (and (or (cpad-pressed? 0 circle) (= (-> self condition) 4)) (send-event *target* 'change-mode 'racing self)) - (go-virtual pickup (the-as (state collectable) (method-of-object self wait-for-return))) - ) - ) - ) - (racer-effect) - (suspend) - ) - ) - ) - :post ja-post - ) + :event + (-> (method-of-type racer wait-for-start) + event) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (-> self path-target))) + :exit + (-> (method-of-type racer wait-for-start) + exit) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! racer-racer-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + 0.0 + (let ((f30-0 (if (= (-> self condition) 4) 61440.0 20480.0))) + (loop (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (go-virtual wait-for-return)) + (when (and (and *target* (>= f30-0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (not (movie?)) (not (level-hint-displayed?)))) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint () '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? self)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-24 gp-0)) (set! (-> v1-24 width) (the float 440))) + (let ((v1-25 gp-0)) (set! (-> v1-25 height) (the float 80))) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)) + (if (and (or (cpad-pressed? 0 circle) (= (-> self condition) 4)) (send-event *target* 'change-mode 'racing self)) + (go-virtual pickup (the-as (state collectable) (method-of-object self wait-for-return)))))) + (racer-effect) + (suspend)))) + :post ja-post) (defstate pickup (racer) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('draw) - (ja-channel-set! 1) - (ja :group! racer-racer-idle-ja) - (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) - (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) - (transform-post) - ) - (('trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - (('touch 'attack) - #f - ) - (('shadow) - (cond - ((-> block param 0) - (let ((v0-1 (the-as object (-> self shadow-backup)))) - (set! (-> self draw shadow) (the-as shadow-geo v0-1)) - v0-1 - ) - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :enter (behavior ((arg0 (state collectable))) - ((the-as (function none :behavior racer) (-> arg0 enter))) - ) - :code (behavior ((arg0 (state collectable))) - (ja-channel-set! 0) - (ja-post) - (while (zero? (ja-group-size)) - (when (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (when (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (case (-> (level-get-target-inside *level*) name) - (('misty) - (close-specific-task! (game-task misty-bike) (task-status need-reminder-a)) - (level-hint-spawn (text-id misty-bike-hint) "sksp0062" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - ) - (go arg0) - ) - (racer-effect) - (suspend) - ) - (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (racer-effect) - (suspend) - ) - (let ((s5-0 (current-time))) - (until (time-elapsed? s5-0 (seconds 1)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('draw) + (ja-channel-set! 1) + (ja :group! racer-racer-idle-ja) + (set! (-> self root root-prim prim-core action) (collide-action solid attackable-unused)) + (set! (-> self root root-prim prim-core offense) (collide-offense indestructible)) + (transform-post)) + (('trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + (('touch 'attack) #f) + (('shadow) + (cond + ((-> block param 0) + (let ((v0-1 (the-as object (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-1)) v0-1)) + (else (set! (-> self draw shadow) #f) #f))))) + :enter + (behavior ((arg0 (state collectable))) + ((the-as (function none :behavior racer) (-> arg0 enter)))) + :code + (behavior ((arg0 (state collectable))) + (ja-channel-set! 0) + (ja-post) + (while (zero? (ja-group-size)) + (when (or (not *target*) (< 24576.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (when (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (case (-> (level-get-target-inside *level*) name) + (('misty) + (close-specific-task! (game-task misty-bike) (task-status need-reminder-a)) + (level-hint-spawn (text-id misty-bike-hint) "sksp0062" (the-as entity #f) *entity-pool* (game-task none))))) + (go arg0)) (racer-effect) - (suspend) - ) - ) - (go arg0) - ) - ) + (suspend)) + (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (racer-effect) + (suspend)) + (let ((s5-0 (current-time))) (until (time-elapsed? s5-0 (seconds 1)) (racer-effect) (suspend))) + (go arg0))) (defstate wait-for-return (racer) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (if (and (or (= message 'touch) (= message 'attack)) - (and (!= (-> self condition) 4) (send-event *target* 'end-mode)) - ) - (go-virtual pickup (the-as (state collectable) (method-of-object self idle))) - ) - (cond - ((= message 'trans) - (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans)) - ) - ((= message 'shadow) - (cond - ((-> block param 0) - (let ((v0-3 (the-as structure (-> self shadow-backup)))) - (set! (-> self draw shadow) (the-as shadow-geo v0-3)) - v0-3 - ) - ) - (else - (set! (-> self draw shadow) #f) - #f - ) - ) - ) - ) - ) - :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-racer))) - ) - :code (behavior () - (ja-channel-set! 0) - (ja-post) - (loop - (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) - (go-virtual idle) - ) - (racer-effect) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (if (and (or (= message 'touch) (= message 'attack)) (and (!= (-> self condition) 4) (send-event *target* 'end-mode))) + (go-virtual pickup (the-as (state collectable) (method-of-object self idle)))) + (cond + ((= message 'trans) (vector+! (the-as vector (-> block param 0)) (-> self root trans) (-> self extra-trans))) + ((= message 'shadow) + (cond + ((-> block param 0) + (let ((v0-3 (the-as structure (-> self shadow-backup)))) (set! (-> self draw shadow) (the-as shadow-geo v0-3)) v0-3)) + (else (set! (-> self draw shadow) #f) #f))))) + :enter + (behavior () + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-racer)))) + :code + (behavior () + (ja-channel-set! 0) + (ja-post) + (loop (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)))) + (go-virtual idle)) + (racer-effect) + (suspend)))) (defmethod init-from-entity! ((this racer) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set-yaw-angle-clear-roll-pitch! (-> this root) (res-lump-float arg0 'rotoffset)) - (initialize-skeleton this *racer-sg* '()) + (initialize-skeleton this *racer-sg* ()) (set! (-> this shadow-backup) (-> this draw shadow)) (set! (-> this draw shadow-ctrl) *racer-shadow-control*) (let ((v1-23 (-> this node-list data))) (set! (-> v1-23 0 param0) cspace<-transformq+trans!) (set! (-> v1-23 0 param1) (the-as basic (-> this root trans))) - (set! (-> v1-23 0 param2) (the-as basic (-> this extra-trans))) - ) + (set! (-> v1-23 0 param2) (the-as basic (-> this extra-trans)))) (set! (-> this condition) (res-lump-value arg0 'index int)) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 115) this)) (dotimes (s5-1 2) (let ((v1-32 (new 'process 'curve-control this 'path (the float (+ s5-1 1))))) (set! (-> this path-data s5-1) v1-32) - (if v1-32 - (logior! (-> v1-32 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) - ) + (if v1-32 (logior! (-> v1-32 flags) (path-control-flag display draw-line draw-point draw-text))))) (set! (-> this path) (-> this path-target)) (set-vector! (-> this extra-trans) 0.0 6144.0 0.0 1.0) (set! (-> this auto-get-off) #f) (move-to-ground (-> this root) 40960.0 40960.0 #t (collide-kind background)) (set! (-> this cell) (the-as handle #f)) - (blocking-plane-spawn - (the-as - curve-control - (if (or (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) - (= (-> this condition) 3) - ) - (-> this path-racer) - (-> this path-target) - ) - ) - ) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans)) - ) + (blocking-plane-spawn (the-as curve-control + (if (or (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action racer))) + (= (-> this condition) 3)) + (-> this path-racer) + (-> this path-target)))) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "zoom-teleport" :fo-max 30) (-> this root trans))) (go (method-of-object this wait-for-start)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/racer_common/target-racer-h.gc b/goal_src/jak1/levels/racer_common/target-racer-h.gc index c9ea1d3dd4..e960b73db6 100644 --- a/goal_src/jak1/levels/racer_common/target-racer-h.gc +++ b/goal_src/jak1/levels/racer_common/target-racer-h.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "engine/math/vector-h.gc") (require "engine/collide/surface-h.gc") (require "engine/data/art-h.gc") @@ -11,164 +10,166 @@ ;; dgos: FIC, LAV, MIS, OGR, ROL (define-extern target-racing-center-anim (function none :behavior target)) + (define-extern racer-buzz (function float none :behavior target)) + (define-extern target-racing-post (function none :behavior target)) + (define-extern target-racing-land-anim (function symbol none :behavior target)) + (define-extern target-racing-turn-anim (function none :behavior target)) + (define-extern racer-calc-gravity (function vector :behavior target)) + (define-extern target-racing-jump-anim (function basic time-frame none :behavior target)) + (define-extern racer-sounds (function object :behavior target)) + (define-extern *racer-air-mods* surface) ;; DECOMP BEGINS (deftype racer-info (basic) - ((entity entity-actor) - (bike-trans vector :inline) - (bike-quat vector :inline) - (bike-scale vector :inline) - (mod-x float) - (rot vector :inline) - (rot-old vector :inline) - (rotv vector :inline) - (lean-rotx degrees) - (change-roty degrees) - (change-roty-old degrees) - (quat vector :inline) - (surface-y meters) - (surface-vy meters) - (surface-quat vector :inline) - (surface-quat-smooth vector :inline) - (cushion-base meters) - (cushion-offset meters) - (cushion-bob meters) - (cushion-bob-old meters) - (cushion-smush smush-control :inline) - (shock-offset meters) - (shock-offsetv meters) - (shock-rotx meters) - (hill-value float) - (hill-ground-value float) - (hill-offset meters) - (hill-rotx degrees) - (hill-boost meters) - (bob-timer float) - (bob-meta-timer float) - (bob-meta-meta-timer float) - (bob-mult-rot float) - (bob-mult-trans float) - (bob-period float) - (bob-meta-time time-frame) - (bob-hit-ground-time time-frame) - (cur-rotx degrees) - (targ-rotx degrees) - (speed-rotx float) - (mult-rotx degrees) - (front-blade joint-mod) - (front-rot degrees) - (front-rotv degrees) - (bottom-blade joint-mod) - (bottom-rot degrees) - (front joint-mod) - (front-turn degrees) - (tail joint-mod) - (tail-tilt degrees) - (transv-max meters) - (slide-down-time time-frame 2) - (slide-enter-time time-frame) - (slide-mode int32) - (slide-amp float) - (slide-grip-mult float) - (slide-shift-x float) - (slide-interp float) - (heat float) - (boost-time time-frame) - (boost-duration time-frame) - (boost-curve float) - (boost-level float) - (boost-target float) - (boost-output float) - (hop? symbol) - (hop-start-y float) - (bounce int32) - (bounce-hit float) - (engine-sound-id sound-id) - (boost-sound-id sound-id) - (engine-sound-pitch float) - (turn-anim-targ float) - (turn-anim-frame float) - (turn-anim-vel float) - (tail-anim-vel float) - (tail-anim-frame float) - (rudd-anim-vel float) - (rudd-anim-frame float) - (racing-time time-frame) - (stick-lock symbol) - (stick-off symbol) - (heavy symbol) - (unstuck-time time-frame) - (stuck-count int32) - (scrape-sound-id sound-id) - (heat-sound-time time-frame) - ) - ) - + ((entity entity-actor) + (bike-trans vector :inline) + (bike-quat vector :inline) + (bike-scale vector :inline) + (mod-x float) + (rot vector :inline) + (rot-old vector :inline) + (rotv vector :inline) + (lean-rotx degrees) + (change-roty degrees) + (change-roty-old degrees) + (quat vector :inline) + (surface-y meters) + (surface-vy meters) + (surface-quat vector :inline) + (surface-quat-smooth vector :inline) + (cushion-base meters) + (cushion-offset meters) + (cushion-bob meters) + (cushion-bob-old meters) + (cushion-smush smush-control :inline) + (shock-offset meters) + (shock-offsetv meters) + (shock-rotx meters) + (hill-value float) + (hill-ground-value float) + (hill-offset meters) + (hill-rotx degrees) + (hill-boost meters) + (bob-timer float) + (bob-meta-timer float) + (bob-meta-meta-timer float) + (bob-mult-rot float) + (bob-mult-trans float) + (bob-period float) + (bob-meta-time time-frame) + (bob-hit-ground-time time-frame) + (cur-rotx degrees) + (targ-rotx degrees) + (speed-rotx float) + (mult-rotx degrees) + (front-blade joint-mod) + (front-rot degrees) + (front-rotv degrees) + (bottom-blade joint-mod) + (bottom-rot degrees) + (front joint-mod) + (front-turn degrees) + (tail joint-mod) + (tail-tilt degrees) + (transv-max meters) + (slide-down-time time-frame 2) + (slide-enter-time time-frame) + (slide-mode int32) + (slide-amp float) + (slide-grip-mult float) + (slide-shift-x float) + (slide-interp float) + (heat float) + (boost-time time-frame) + (boost-duration time-frame) + (boost-curve float) + (boost-level float) + (boost-target float) + (boost-output float) + (hop? symbol) + (hop-start-y float) + (bounce int32) + (bounce-hit float) + (engine-sound-id sound-id) + (boost-sound-id sound-id) + (engine-sound-pitch float) + (turn-anim-targ float) + (turn-anim-frame float) + (turn-anim-vel float) + (tail-anim-vel float) + (tail-anim-frame float) + (rudd-anim-vel float) + (rudd-anim-frame float) + (racing-time time-frame) + (stick-lock symbol) + (stick-off symbol) + (heavy symbol) + (unstuck-time time-frame) + (stuck-count int32) + (scrape-sound-id sound-id) + (heat-sound-time time-frame))) (deftype racer-bank (basic) - ((slide-hold-time seconds) - (heat-max float) - (hotcoals-heat-inc float) - (lava-heat-inc float) - (lava-air-heat-inc float) - (surface-heat-inc float) - (jump-heat-inc float) - (lavatube-hotcoals-heat-inc float) - (lavatube-lava-heat-inc float) - (lavatube-lava-air-heat-inc float) - (lavatube-surface-heat-inc float) - (lavatube-jump-heat-inc float) - (boost-curve-max meters) - (boost-level-max meters) - (boost-level-inc meters) - (boost-duration seconds) - (default-front-blade degrees) - (yellow-projectile-speed meters) - ) - ) + ((slide-hold-time seconds) + (heat-max float) + (hotcoals-heat-inc float) + (lava-heat-inc float) + (lava-air-heat-inc float) + (surface-heat-inc float) + (jump-heat-inc float) + (lavatube-hotcoals-heat-inc float) + (lavatube-lava-heat-inc float) + (lavatube-lava-air-heat-inc float) + (lavatube-surface-heat-inc float) + (lavatube-jump-heat-inc float) + (boost-curve-max meters) + (boost-level-max meters) + (boost-level-inc meters) + (boost-duration seconds) + (default-front-blade degrees) + (yellow-projectile-speed meters))) - -(define *RACER-bank* (new 'static 'racer-bank - :slide-hold-time (seconds 0.2) - :heat-max 100.0 - :hotcoals-heat-inc 3.0 - :lava-heat-inc 20.0 - :lava-air-heat-inc 4.0 - :surface-heat-inc 1.0 - :jump-heat-inc 2.0 - :lavatube-hotcoals-heat-inc 2.0 - :lavatube-lava-heat-inc 4.5 - :lavatube-lava-air-heat-inc 4.0 - :lavatube-surface-heat-inc 1.0 - :lavatube-jump-heat-inc 10.0 - :boost-curve-max (meters 5) - :boost-level-max (meters 12.5) - :boost-level-inc (meters 2) - :boost-duration (seconds 2.5) - :yellow-projectile-speed (meters 80) - ) - ) +(define *RACER-bank* + (new 'static + 'racer-bank + :slide-hold-time (seconds 0.2) + :heat-max 100.0 + :hotcoals-heat-inc 3.0 + :lava-heat-inc 20.0 + :lava-air-heat-inc 4.0 + :surface-heat-inc 1.0 + :jump-heat-inc 2.0 + :lavatube-hotcoals-heat-inc 2.0 + :lavatube-lava-heat-inc 4.5 + :lavatube-lava-air-heat-inc 4.0 + :lavatube-surface-heat-inc 1.0 + :lavatube-jump-heat-inc 10.0 + :boost-curve-max (meters 5) + :boost-level-max (meters 12.5) + :boost-level-inc (meters 2) + :boost-duration (seconds 2.5) + :yellow-projectile-speed (meters 80))) ;; og:preserve-this PAL patch here -(defskelgroup *balloon-sg* balloon balloon-lod0-jg balloon-idle-ja - ((balloon-lod0-mg (meters 20)) (balloon-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0.3 0 6.3) - ) +(defskelgroup *balloon-sg* + balloon + balloon-lod0-jg + balloon-idle-ja + ((balloon-lod0-mg (meters 20)) (balloon-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0.3 0 6.3)) ;; added for convenience (#when PC_PORT -(defun zoomer-get-heat () - (-> *target* racer heat)) -(defun zoomer-get-heat-max () - (-> *RACER-bank* heat-max)) -) - + (defun zoomer-get-heat () + (-> *target* racer heat)) + (defun zoomer-get-heat-max () + (-> *RACER-bank* heat-max))) diff --git a/goal_src/jak1/levels/racer_common/target-racer.gc b/goal_src/jak1/levels/racer_common/target-racer.gc index 2864f88be3..5b08755a2a 100644 --- a/goal_src/jak1/levels/racer_common/target-racer.gc +++ b/goal_src/jak1/levels/racer_common/target-racer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "FIC.DGO" "LAV.DGO" "MIS.DGO" "OGR.DGO" "ROL.DGO") - (require "levels/racer_common/target-racer-h.gc") (require "engine/game/projectiles-h.gc") (require "levels/racer_common/racer.gc") @@ -14,652 +13,421 @@ ;; DECOMP BEGINS -(define *racer-mods* (new 'static 'surface - :name 'racer - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 163840.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags allow-look-around) - ) - ) +(define *racer-mods* + (new 'static + 'surface + :name 'racer + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 163840.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags allow-look-around))) -(define *racer-air-mods* (new 'static 'surface - :name 'racer - :turnv 131072.0 - :turnvv 524288.0 - :tiltv 65536.0 - :tiltvv 131072.0 - :transv-max 122880.0 - :target-speed 163840.0 - :seek0 0.3 - :seek90 0.3 - :seek180 0.3 - :fric 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags allow-look-around jump) - ) - ) +(define *racer-air-mods* + (new 'static + 'surface + :name 'racer + :turnv 131072.0 + :turnvv 524288.0 + :tiltv 65536.0 + :tiltvv 131072.0 + :transv-max 122880.0 + :target-speed 163840.0 + :seek0 0.3 + :seek90 0.3 + :seek180 0.3 + :fric 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags allow-look-around jump))) -(let ((v1-2 (new 'static 'surface - :name '*race-track-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 1.0 - :target-speed 1.0 - :seek0 153600.0 - :seek90 153600.0 - :seek180 256000.0 - :fric 0.98 - :slope-down-factor 10240.0 - :slope-slip-angle 8192.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) - ) +(let ((v1-2 (new 'static + 'surface + :name '*race-track-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 1.0 + :target-speed 1.0 + :seek0 153600.0 + :seek90 153600.0 + :seek180 256000.0 + :fric 0.98 + :slope-down-factor 10240.0 + :slope-slip-angle 8192.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0))) (set! *race-track-surface* v1-2) (set! (-> v1-2 touch-hook) nothing) - (set! (-> v1-2 active-hook) nothing) - ) + (set! (-> v1-2 active-hook) nothing)) (defbehavior racer-on-ground? racer () - (logtest? (-> self root status) (cshape-moving-flags onsurf)) - ) + (logtest? (-> self root status) (cshape-moving-flags onsurf))) (defbehavior racer-calc-gravity target () (let ((f0-8 (cond - ((or (-> self racer stick-lock) (-> self racer heavy)) - 409600.0 - ) + ((or (-> self racer stick-lock) (-> self racer heavy)) 409600.0) ((= (-> self next-state name) 'target-racing-bounce) - (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)) - ) + (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max))) ((or (-> self racer hop?) (= (-> self next-state name) 'target-racing-bounce)) - (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) + (lerp-scale 81920.0 163840.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) ((time-elapsed? (-> self control unknown-dword11) (seconds 0.6)) - (lerp-scale 81920.0 122880.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (else - (lerp-scale 245760.0 81920.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)) - ) - ) - ) - ) + (lerp-scale 81920.0 122880.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (else (lerp-scale 245760.0 81920.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))))) (set! (-> self control dynam gravity-max) (* 8.0 f0-8)) - (set! (-> self control dynam gravity-length) f0-8) - ) - (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) - ) + (set! (-> self control dynam gravity-length) f0-8)) + (vector-float*! (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length)))) (defbehavior racer-service-slide target () (let ((v1-1 (-> self racer slide-mode))) (cond ((zero? v1-1) - (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-mode) -1) - ) - ) + (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-mode) -1))) ((= v1-1 1) - (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) - (set! (-> self racer slide-mode) -1) - ) - ) - ) - ) + (if (not (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1)) (set! (-> self racer slide-mode) -1))))) (when (>= (-> self racer slide-mode) 0) (cond ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) (set! (-> self racer slide-mode) 0) - 0 - ) + 0) ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) - (set! (-> self racer slide-mode) 1) - ) - ) - ) + (set! (-> self racer slide-mode) 1)))) (seek! (-> self racer slide-amp) 0.0 (* 0.3 (seconds-per-frame))) - (if (= (-> self racer slide-amp) 0.0) - (set! (-> self racer slide-mode) -1) - ) + (if (= (-> self racer slide-amp) 0.0) (set! (-> self racer slide-mode) -1)) 0 - (none) - ) + (none)) (defbehavior racer-xz target ((arg0 float) (arg1 float)) (set! (-> self racer slide-shift-x) arg1) (seek! (-> self racer slide-interp) 0.0 (seconds-per-frame)) - (let ((f30-1 - (if (or (< (* arg1 arg0) 0.0) (not (racer-on-ground?))) - 1.0 - (+ 1.0 (* (fabs arg1) (lerp-scale 0.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - ) - ) - (f28-1 - (lerp-scale 32768.0 20024.889 (-> self control unknown-float01) 0.0 (* 0.5 (-> self racer transv-max))) - ) - (f0-18 - (lerp-scale 91022.22 236657.78 (-> self control unknown-float01) 0.0 (* 0.125 (-> self racer transv-max))) - ) - ) - (seek! (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (seconds-per-frame))) - ) + (let ((f30-1 (if (or (< (* arg1 arg0) 0.0) (not (racer-on-ground?))) + 1.0 + (+ 1.0 (* (fabs arg1) (lerp-scale 0.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))))) + (f28-1 (lerp-scale 32768.0 20024.889 (-> self control unknown-float01) 0.0 (* 0.5 (-> self racer transv-max)))) + (f0-18 (lerp-scale 91022.22 236657.78 (-> self control unknown-float01) 0.0 (* 0.125 (-> self racer transv-max))))) + (seek! (-> self racer rotv y) (* arg0 f30-1 (- f28-1)) (* f0-18 (seconds-per-frame)))) (set! (-> self racer rotv y) - (* (-> self racer rotv y) - (lerp-scale 0.99 0.9 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - ) + (* (-> self racer rotv y) (lerp-scale 0.99 0.9 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) (let ((f30-3 (vector-y-angle (-> self control unknown-vector00))) - (s5-1 (racer-on-ground?)) - ) + (s5-1 (racer-on-ground?))) (cond - ((= arg1 0.0) - (set! (-> self racer slide-grip-mult) 1.0) - ) - (s5-1 - (seek! (-> self racer slide-grip-mult) 1.0 (seconds-per-frame)) - ) - ) + ((= arg1 0.0) (set! (-> self racer slide-grip-mult) 1.0)) + (s5-1 (seek! (-> self racer slide-grip-mult) 1.0 (seconds-per-frame)))) (let ((f30-4 (* (deg-diff f30-3 0.0) (-> self racer slide-grip-mult)))) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - (-> self control transv) - (meters 0.000061035156) - (new 'static 'rgba :r #xff :a #x80) - ) - (if (and (< 409.6 (vector-xz-length (-> self control unknown-vector00))) - s5-1 - (= (-> self next-state name) 'target-racing) - ) - (vector-rotate-y! - (-> self control unknown-vector00) - (-> self control unknown-vector00) - (fmax (fmin f30-4 (* 10922.667 (seconds-per-frame))) (* -10922.667 (seconds-per-frame))) - ) - ) - ) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + (-> self control transv) + (meters 0.000061035156) + (new 'static 'rgba :r #xff :a #x80)) + (if (and (< 409.6 (vector-xz-length (-> self control unknown-vector00))) s5-1 (= (-> self next-state name) 'target-racing)) + (vector-rotate-y! (-> self control unknown-vector00) + (-> self control unknown-vector00) + (fmax (fmin f30-4 (* 10922.667 (seconds-per-frame))) (* -10922.667 (seconds-per-frame))))))) (let ((gp-1 (new-stack-vector0))) (vector-matrix*! gp-1 (-> self control unknown-vector00) (-> self control unknown-matrix01)) (set! (-> gp-1 y) 0.0) (vector-float*! gp-1 gp-1 0.5) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - gp-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + gp-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "ltransv" + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector-matrix*! gp-1 (new 'static 'vector :z 40960.0 :w 1.0) (-> self control unknown-matrix01)) (vector-float*! gp-1 gp-1 0.5) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "nose" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "nose" + (new 'static 'rgba :r #xff :g #xff :a #x80))) 0 - (none) - ) + (none)) (defbehavior racer-thrust target ((arg0 basic) (arg1 float)) - (let ((f0-0 - (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - 1.0 - 0.0 - ) - ) - ) + (let ((f0-0 (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) + (not (-> self racer stick-lock)) + (not (-> self racer stick-off))) + 1.0 + 0.0))) (when (< 0.0 f0-0) - (let ((f1-4 - (* f0-0 - (+ (-> self control unknown-surface01 target-speed) (-> self racer boost-output) (-> self racer hill-boost)) - ) - ) - ) - (+! (-> self control unknown-vector00 z) (* f1-4 (seconds-per-frame))) - ) - ) - (seek! - (-> self racer front-rotv) - (+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1)))) - (* 364088.88 (seconds-per-frame)) - ) - ) + (let ((f1-4 (* f0-0 (+ (-> self control unknown-surface01 target-speed) (-> self racer boost-output) (-> self racer hill-boost))))) + (+! (-> self control unknown-vector00 z) (* f1-4 (seconds-per-frame))))) + (seek! (-> self racer front-rotv) (+ 65536.0 (* 364088.88 (+ f0-0 (* 0.1 arg1)))) (* 364088.88 (seconds-per-frame)))) (set! (-> self racer front-rot) - (the float - (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48) - ) - ) + (the float (sar (shl (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (seconds-per-frame)))) 48) 48))) (let* ((f1-12 (-> self control unknown-surface01 fric)) - (f0-13 (- 1.0 (* (- 1.0 f1-12) (-> *display* time-adjust-ratio)))) - ) + (f0-13 (- 1.0 (* (- 1.0 f1-12) (-> *display* time-adjust-ratio))))) (set! f0-13 (cond ((and (not (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0))) - (cpad-hold? (-> self control unknown-cpad-info00 number) square) - ) + (cpad-hold? (-> self control unknown-cpad-info00 number) square)) (if (and (cpad-hold? (-> self control unknown-cpad-info00 number) x) (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - ;; og:preserve-this changed for high fps - (* (- 1.0 (* 0.0125 DISPLAY_FPS_RATIO)) f0-13) - (* (- 0.5 (* 0.00625 DISPLAY_FPS_RATIO)) (+ 1.0 f0-13)) - ) - ) + (not (-> self racer stick-off))) + ;; og:preserve-this changed for high fps + (* (- 1.0 (* 0.0125 DISPLAY_FPS_RATIO)) f0-13) + (* (- 0.5 (* 0.00625 DISPLAY_FPS_RATIO)) (+ 1.0 f0-13)))) (else - (cond - ((and (cpad-hold? (-> self control unknown-cpad-info00 number) x) - (not (-> self racer stick-lock)) - (not (-> self racer stick-off)) - ) - ) - (else - (set! f0-13 (* 0.5 (+ 1.0 f0-13))) - ) - ) - f0-13 - ) - ) - ) + (cond + ((and (cpad-hold? (-> self control unknown-cpad-info00 number) x) + (not (-> self racer stick-lock)) + (not (-> self racer stick-off)))) + (else (set! f0-13 (* 0.5 (+ 1.0 f0-13))))) + f0-13))) (set! (-> self control unknown-vector00 x) (* (-> self control unknown-vector00 x) f0-13)) - (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-13)) - ) + (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-13))) (let ((f30-0 (-> self racer transv-max))) (if (>= (vector-xz-length (-> self control unknown-vector00)) f30-0) - (vector-xz-normalize! (-> self control unknown-vector00) f30-0) - ) - ) + (vector-xz-normalize! (-> self control unknown-vector00) f30-0))) (+! (-> self racer bottom-rot) - (* (+ 364088.88 (* 0.32 (fabs (-> self control unknown-vector00 y)))) (seconds-per-frame)) - ) + (* (+ 364088.88 (* 0.32 (fabs (-> self control unknown-vector00 y)))) (seconds-per-frame))) 0 - (none) - ) + (none)) (defbehavior racer-cushion target ((arg0 float)) (let ((f30-0 (-> self racer bob-period))) (let ((f28-0 1.0)) (seek! (-> self racer bob-meta-timer) (-> self racer bob-meta-meta-timer) (* 4.0 (seconds-per-frame))) (let* ((f0-8 (sin (/ (* 65536.0 (-> self racer bob-timer)) f30-0))) - (f0-9 (* 1228.8 (-> self racer bob-mult-trans) f28-0 f0-8)) - ) + (f0-9 (* 1228.8 (-> self racer bob-mult-trans) f28-0 f0-8))) (set! (-> self racer cushion-bob-old) (-> self racer cushion-bob)) - (set! (-> self racer cushion-bob) f0-9) - ) - ) + (set! (-> self racer cushion-bob) f0-9))) (let ((a2-1 (new-stack-vector0))) (set! (-> a2-1 quad) (-> self control trans quad)) (+! (-> a2-1 y) (-> self racer cushion-bob)) - (add-debug-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - a2-1 - 819.2 - (new 'static 'rgba :r #xff :b #xff :a #x80) - ) - ) + (add-debug-sphere *display-target-marks* (bucket-id debug-no-zbuf) a2-1 819.2 (new 'static 'rgba :r #xff :b #xff :a #x80))) (let ((f0-13 (* (-> self racer speed-rotx) (-> *display* time-adjust-ratio)))) (set! (-> self racer cur-rotx) - (lerp (-> self racer cur-rotx) (+ (-> self racer hill-rotx) (-> self racer targ-rotx)) f0-13) - ) - ) - (set! (-> self racer shock-rotx) - (lerp (-> self racer shock-rotx) (* -0.6666667 (-> self racer shock-offset)) 0.1) - ) + (lerp (-> self racer cur-rotx) (+ (-> self racer hill-rotx) (-> self racer targ-rotx)) f0-13))) + (set! (-> self racer shock-rotx) (lerp (-> self racer shock-rotx) (* -0.6666667 (-> self racer shock-offset)) 0.1)) (set! (-> self racer shock-rotx) 0.0) - (sin (+ 16384.0 (/ (* 65536.0 (the float (mod (the int (-> self racer bob-timer)) (the int f30-0)))) f30-0))) - ) - (quaternion-rotate-x! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (+ arg0 (-> self racer shock-rotx) (* (-> self racer mult-rotx) (-> self racer cur-rotx))) - ) - (let ((f30-1 (* (-> self control unknown-float61) (/ (-> self control unknown-float01) (-> self racer transv-max)))) - ) + (sin (+ 16384.0 (/ (* 65536.0 (the float (mod (the int (-> self racer bob-timer)) (the int f30-0)))) f30-0)))) + (quaternion-rotate-x! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (+ arg0 (-> self racer shock-rotx) (* (-> self racer mult-rotx) (-> self racer cur-rotx)))) + (let ((f30-1 (* (-> self control unknown-float61) (/ (-> self control unknown-float01) (-> self racer transv-max))))) (set! (-> self racer hill-value) f30-1) (if (and (racer-on-ground?) (begin (set! (-> self racer hill-ground-value) f30-1) (< 0.0 f30-1))) - (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) (fmax -4096.0 (* -16384.0 f30-1)) 0.05)) - (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) 0.0 0.05)) - ) - ) + (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) (fmax -4096.0 (* -16384.0 f30-1)) 0.05)) + (set! (-> self racer hill-offset) (lerp (-> self racer hill-offset) 0.0 0.05)))) (seek! (-> self racer hill-boost) 0.0 (* 81920.0 (seconds-per-frame))) (set! (-> self racer hill-offset) 0.0) 0 - (none) - ) + (none)) (defbehavior racer-collision target () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self control transv quad)) (let ((f30-0 0.8)) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (+! (-> self racer shock-offsetv) (* (- (-> gp-0 y) (-> self control transv y)) f30-0)) (+! (-> self racer shock-offsetv) (+ (* -20.0 (seconds-per-frame) (-> self racer shock-offset)) - (if (racer-on-ground?) - (* (-> self control dynam gravity-length) (seconds-per-frame) f30-0) - 0.0 - ) - ) - ) - ) - (if (and (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) - (< (-> self racer shock-offset) 0.0) - ) - (!= (-> self control unknown-surface00 mode) 'air) - ) - (+! (-> self racer shock-offset) (* (-> self racer shock-offsetv) (seconds-per-frame))) - ) + (if (racer-on-ground?) (* (-> self control dynam gravity-length) (seconds-per-frame) f30-0) 0.0)))) + (if (and (or (not (time-elapsed? (-> self control unknown-dword11) (seconds 0.2))) (< (-> self racer shock-offset) 0.0)) + (!= (-> self control unknown-surface00 mode) 'air)) + (+! (-> self racer shock-offset) (* (-> self racer shock-offsetv) (seconds-per-frame)))) (set! (-> self racer shock-offset) - (* (-> self racer shock-offset) (lerp-scale 0.99 0.98 (-> self control unknown-float01) 0.0 28672.0)) - ) + (* (-> self racer shock-offset) (lerp-scale 0.99 0.98 (-> self control unknown-float01) 0.0 28672.0))) (cond ((< 81920.0 (-> self racer shock-offset)) (set! (-> self racer shock-offset) 81920.0) - (set! (-> self racer shock-offsetv) 0.0) - ) + (set! (-> self racer shock-offsetv) 0.0)) ((< (-> self racer shock-offset) -8192.0) (set! (-> self racer shock-offset) -8192.0) (set! (-> self racer shock-offsetv) 0.0) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 13) - -1 - #f - #f - #f - (-> self control trans) - :to self - ) - (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1) - ) - ) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 13) + -1 + #f + #f + #f + (-> self control trans) + :to + self) + (effect-control-method-10 (-> self skel effect) 'effect-land -1.0 -1))) (deg-diff (vector-y-angle gp-0) (vector-y-angle (-> self control transv))) (let ((f30-2 (vector-xz-length gp-0))) (when (and (logtest? (-> self control status) (cshape-moving-flags twall)) (< 20480.0 f30-2) - (and (< (fabs (-> self racer mod-x)) 0.5) (!= (-> self next-state name) 'target-racing-smack)) - ) + (and (< (fabs (-> self racer mod-x)) 0.5) (!= (-> self next-state name) 'target-racing-smack))) (let ((s5-3 (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector70)))) (vector-normalize! s5-3 1.0) (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) gp-0 s5-3))) (set! (-> gp-1 y) 0.0) (vector-normalize! gp-1 1.0) (let ((f28-1 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) - (if (< 16384.0 (fabs f28-1)) - (set! f28-1 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1)))) - ) - (set! (-> self racer rotv y) (* f28-1 (lerp-scale 2.0 7.0 f30-2 4096.0 (-> self racer transv-max)))) - ) - ) - ) - ) - ) - ) + (if (< 16384.0 (fabs f28-1)) (set! f28-1 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1))))) + (set! (-> self racer rotv y) (* f28-1 (lerp-scale 2.0 7.0 f30-2 4096.0 (-> self racer transv-max)))))))))) (set! (-> self control surf) *race-track-surface*) 0 - (none) - ) + (none)) (defbehavior racer-integrate target () - (quaternion-rotate-y! - (the-as quaternion (-> self racer quat)) - (quaternion-identity! (new-stack-quaternion0)) - (-> self racer rot y) - ) - (forward-up-nopitch->quaternion - (the-as quaternion (-> self racer surface-quat)) - *null-vector* - (-> self control local-normal) - ) - (quaternion-slerp! - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer surface-quat)) - 0.05 - ) - (quaternion-normalize! - (quaternion*! - (-> self control unknown-quaternion00) - (the-as quaternion (-> self racer surface-quat-smooth)) - (the-as quaternion (-> self racer quat)) - ) - ) - (quaternion-rotate-z! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion00) - (-> self racer rot z) - ) + (quaternion-rotate-y! (the-as quaternion (-> self racer quat)) + (quaternion-identity! (new-stack-quaternion0)) + (-> self racer rot y)) + (forward-up-nopitch->quaternion (the-as quaternion (-> self racer surface-quat)) + *null-vector* + (-> self control local-normal)) + (quaternion-slerp! (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer surface-quat)) + 0.05) + (quaternion-normalize! (quaternion*! (-> self control unknown-quaternion00) + (the-as quaternion (-> self racer surface-quat-smooth)) + (the-as quaternion (-> self racer quat)))) + (quaternion-rotate-z! (-> self control unknown-quaternion00) + (-> self control unknown-quaternion00) + (-> self racer rot z)) (racer-cushion (-> self racer lean-rotx)) (if (!= (-> self next-state name) 'target-racing-death) - (set! (-> self control unknown-vector11 y) - (+ (-> self racer cushion-base) (-> self racer cushion-offset) (-> self racer shock-offset)) - ) - ) + (set! (-> self control unknown-vector11 y) + (+ (-> self racer cushion-base) (-> self racer cushion-offset) (-> self racer shock-offset)))) (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) - (if (and (= *cheat-mode* 'debug) - (and (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*)) - ) - (vector-reset! (-> self control transv)) - ) + (if (and (= *cheat-mode* 'debug) (and (cpad-hold? (-> self control unknown-cpad-info00 number) r2) (not *pause-lock*))) + (vector-reset! (-> self control transv))) 0 - (none) - ) + (none)) (defbehavior racer-bend-gravity target () - (set! (-> self control unknown-float82) (if (racer-on-ground?) - 32.0 - 2.0 - ) - ) - (let ((f0-2 - (if (or (and (logtest? (-> self control status) (cshape-moving-flags twall)) - (not (logtest? (-> self control status) (cshape-moving-flags onsurf))) - ) - (logtest? (-> self state-flags) (state-flags dying)) - ) - 0.0 - (-> self control unknown-float81) - ) - ) - ) - (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (seconds-per-frame))) - ) - (vector-deg-slerp - (-> self control dynam gravity-normal) - (-> self control unknown-dynamics00 gravity-normal) - (-> self control ground-poly-normal) - (-> self control unknown-float80) - ) - (vector-float*! - (-> self control dynam gravity) - (-> self control dynam gravity-normal) - (the-as float (-> self control dynam gravity-length)) - ) + (set! (-> self control unknown-float82) (if (racer-on-ground?) 32.0 2.0)) + (let ((f0-2 (if (or (and (logtest? (-> self control status) (cshape-moving-flags twall)) + (not (logtest? (-> self control status) (cshape-moving-flags onsurf)))) + (logtest? (-> self state-flags) (state-flags dying))) + 0.0 + (-> self control unknown-float81)))) + (seek! (-> self control unknown-float80) f0-2 (* (-> self control unknown-float82) (seconds-per-frame)))) + (vector-deg-slerp (-> self control dynam gravity-normal) + (-> self control unknown-dynamics00 gravity-normal) + (-> self control ground-poly-normal) + (-> self control unknown-float80)) + (vector-float*! (-> self control dynam gravity) + (-> self control dynam gravity-normal) + (the-as float (-> self control dynam gravity-length))) 0 - (none) - ) + (none)) (defbehavior racer-sounds target () - (if (zero? (-> self racer engine-sound-id)) - (set! (-> self racer engine-sound-id) (new-sound-id)) - ) + (if (zero? (-> self racer engine-sound-id)) (set! (-> self racer engine-sound-id) (new-sound-id))) (let ((f0-1 (* 0.0000009155274 (-> self racer front-rotv)))) 100.0 - (let ((f0-6 - (+ (* 2.0 f0-1) - (if (< 4096.0 (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) - ) - ) - 0.7 - 0.0 - ) - (lerp-scale 0.0 0.5 (-> self racer boost-level) 0.0 (-> *RACER-bank* boost-level-max)) - ) - ) - ) - (if (< 2.5 f0-6) - (set! f0-6 2.5) - ) - (seek! (-> self racer engine-sound-pitch) f0-6 (* 4.0 (seconds-per-frame))) - ) - ) + (let ((f0-6 (+ (* 2.0 f0-1) + (if (< 4096.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)))) + 0.7 + 0.0) + (lerp-scale 0.0 0.5 (-> self racer boost-level) 0.0 (-> *RACER-bank* boost-level-max))))) + (if (< 2.5 f0-6) (set! f0-6 2.5)) + (seek! (-> self racer engine-sound-pitch) f0-6 (* 4.0 (seconds-per-frame))))) (let ((f0-11 (lerp-scale 100.0 60.0 (-> self racer engine-sound-pitch) 0.8 2.0))) - (sound-play - "zoomer-loop" - :id (-> self racer engine-sound-id) - :vol f0-11 - :pitch (-> self racer engine-sound-pitch) - :position (the-as symbol (-> self control trans)) - ) - ) + (sound-play "zoomer-loop" + :id (-> self racer engine-sound-id) + :vol + f0-11 + :pitch (-> self racer engine-sound-pitch) + :position + (the-as symbol (-> self control trans)))) (cond - ((and (!= (-> self current-level name) 'ogre) (!= (-> self current-level name) 'lavatube)) - #f - ) + ((and (!= (-> self current-level name) 'ogre) (!= (-> self current-level name) 'lavatube)) #f) ((or (logtest? (-> self control status) (cshape-moving-flags onground)) - (< 12288.0 (vector-length (-> self control transv))) - ) - (let ((v0-5 (the-as object (current-time)))) - (set! (-> self racer unstuck-time) (the-as time-frame v0-5)) - v0-5 - ) - ) + (< 12288.0 (vector-length (-> self control transv)))) + (let ((v0-5 (the-as object (current-time)))) (set! (-> self racer unstuck-time) (the-as time-frame v0-5)) v0-5)) ((time-elapsed? (-> self racer unstuck-time) (seconds 5)) - (send-event self 'attack #f (static-attack-info ((mode 'heat)))) - ) + (send-event self 'attack #f (static-attack-info ((mode 'heat))))) ((and (time-elapsed? (-> self racer unstuck-time) (seconds 3)) - (time-elapsed? (-> self racer heat-sound-time) (seconds 1)) - ) + (time-elapsed? (-> self racer heat-sound-time) (seconds 1))) (set-time! (-> self racer heat-sound-time)) - (sound-play "warning") - ) - ) - ) + (sound-play "warning")))) (defbehavior racer-buzz target ((arg0 float)) (let ((f1-0 (lerp-scale 0.2 1.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 (fmin 1.0 (* arg0 f1-0)))) (seconds 0.05)) - ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 (the int (* 255.0 (fmin 1.0 (* arg0 f1-0)))) (seconds 0.05))) 0 - (none) - ) + (none)) (defbehavior racer-find-prop-point target ((arg0 vector) (arg1 vector)) (let ((s4-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)))) (let ((a2-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat)))) - (vector-flatten! arg0 (vector-! (new 'stack-no-clear 'vector) arg1 s4-0) a2-0) - ) + (vector-flatten! arg0 (vector-! (new 'stack-no-clear 'vector) arg1 s4-0) a2-0)) (vector-normalize! arg0 4915.2) - (vector+! arg0 arg0 s4-0) - ) - arg0 - ) + (vector+! arg0 arg0 s4-0)) + arg0) (defbehavior racer-effects target () (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88) - ) + (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88)) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3)))) - ) + (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3))))) (when (< 0.0 (-> *part-id-table* 2212 init-specs 11 initial-valuef)) (set! (-> *part-id-table* 2212 init-specs 14 initial-valuef) (the-as float gp-0)) (set! (-> *part-id-table* 2212 init-specs 3 initial-valuef) 15155.2) - (launch-particles - :system *sp-particle-system-3d* - (-> *part-id-table* 2212) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)) - ) - ) - ) + (launch-particles :system + *sp-particle-system-3d* + (-> *part-id-table* 2212) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4))))) (let ((gp-2 (vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00)))) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88) - ) + (lerp-scale 0.0 64.0 (-> self racer front-rotv) 18204.445 364088.88)) (set! (-> *part-id-table* 2212 init-specs 11 initial-valuef) - (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3)))) - ) + (- (-> *part-id-table* 2212 init-specs 11 initial-valuef) (* 16.0 (the float (rand-vu-int-range 0 3))))) (when (< 0.0 (-> *part-id-table* 2212 init-specs 11 initial-valuef)) (set! (-> *part-id-table* 2212 init-specs 14 initial-valuef) (the-as float gp-2)) (set! (-> *part-id-table* 2212 init-specs 3 initial-valuef) 10240.0) - (launch-particles - :system *sp-particle-system-3d* - (-> *part-id-table* 2212) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10)) - ) - ) - ) + (launch-particles :system + *sp-particle-system-3d* + (-> *part-id-table* 2212) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))))) (when (and (racer-on-ground?) (< (-> self control unknown-float01) 90112.0)) (let* ((gp-4 #f) (s5-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))) @@ -669,191 +437,105 @@ (when (and (logtest? (-> self draw status) (draw-status was-drawn)) (zero? (-> self draw cur-lod))) (let ((f1-3 (y-angle (-> self control))) (f0-17 (-> self control unknown-float01)) - (s4-2 s5-2) - ) + (s4-2 s5-2)) (set! (-> s4-2 y) (-> self water height)) (set! (-> *part-id-table* 2275 init-specs 4 initial-valuef) (+ 24576.0 f1-3)) (set! (-> *part-id-table* 2275 init-specs 19 initial-valuef) (+ 49152.0 f1-3)) (set! (-> *part-id-table* 2275 init-specs 1 initial-valuef) (* 0.0000036621095 f0-17)) (set! (-> *part-id-table* 2275 init-specs 2 initial-valuef) (* 0.1 f0-17)) (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2275) s4-2) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2276) s4-2) - ) - ) - (-> *part-id-table* 2208) - ) - ((= v1-61 (pat-material lava)) - (-> *part-id-table* 2213) - ) - ((= v1-61 (pat-material hotcoals)) - (-> *part-id-table* 2214) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2276) s4-2))) + (-> *part-id-table* 2208)) + ((= v1-61 (pat-material lava)) (-> *part-id-table* 2213)) + ((= v1-61 (pat-material hotcoals)) (-> *part-id-table* 2214)) ((or (= v1-61 (pat-material pcmetal)) (= v1-61 (pat-material metal)) (= v1-61 (pat-material tube)) - (= v1-61 (pat-material rotate)) - ) - (-> *part-id-table* 2215) - ) - ((= v1-61 (pat-material grass)) - (-> *part-id-table* 2207) - ) + (= v1-61 (pat-material rotate))) + (-> *part-id-table* 2215)) + ((= v1-61 (pat-material grass)) (-> *part-id-table* 2207)) ((or (= v1-61 (pat-material dirt)) (= v1-61 (pat-material sand)) (= v1-61 (pat-material straw)) - (= v1-61 (pat-material gravel)) - ) - (-> *part-id-table* 2216) - ) - ((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood))) - (-> *part-id-table* 2217) - ) - ((= v1-61 (pat-material stone)) - (-> *part-id-table* 2831) - ) - (else - (-> *part-id-table* 2211) - ) - ) - ) - ) + (= v1-61 (pat-material gravel))) + (-> *part-id-table* 2216)) + ((or (= v1-61 (pat-material wood)) (= v1-61 (pat-material crwood))) (-> *part-id-table* 2217)) + ((= v1-61 (pat-material stone)) (-> *part-id-table* 2831)) + (else (-> *part-id-table* 2211))))) (set! (-> s5-2 y) (-> self control shadow-pos y)) - (if (nonzero? a1-13) - (launch-particles - :system (if gp-4 - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - a1-13 - s5-2 - ) - ) - ) + (if (nonzero? a1-13) (launch-particles :system (if gp-4 *sp-particle-system-3d* *sp-particle-system-2d*) a1-13 s5-2))) (let* ((gp-5 #f) (v1-102 (-> self control ground-pat material)) (s5-3 (cond - ((= v1-102 (pat-material waterbottom)) - (-> *part-id-table* 2218) - ) - ((= v1-102 (pat-material lava)) - (-> *part-id-table* 2219) - ) - ((= v1-102 (pat-material hotcoals)) - (-> *part-id-table* 2220) - ) - ((= v1-102 (pat-material grass)) - (-> *part-id-table* 2221) - ) - (else - 0 - ) - ) - ) - (a2-7 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10))) - ) + ((= v1-102 (pat-material waterbottom)) (-> *part-id-table* 2218)) + ((= v1-102 (pat-material lava)) (-> *part-id-table* 2219)) + ((= v1-102 (pat-material hotcoals)) (-> *part-id-table* 2220)) + ((= v1-102 (pat-material grass)) (-> *part-id-table* 2221)) + (else 0))) + (a2-7 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 10)))) (set! (-> a2-7 y) (-> self control shadow-pos y)) (if (nonzero? s5-3) - (launch-particles - :system (if gp-5 - *sp-particle-system-3d* - *sp-particle-system-2d* - ) - (the-as sparticle-launcher s5-3) - a2-7 - ) - ) - ) - ) + (launch-particles :system + (if gp-5 *sp-particle-system-3d* *sp-particle-system-2d*) + (the-as sparticle-launcher s5-3) + a2-7)))) (when (and (and (= (-> self fact eco-type) (pickup-type eco-yellow)) (>= (-> self fact eco-level) 1.0)) (cpad-pressed? (-> self control unknown-cpad-info00 number) circle square) (time-elapsed? (-> self control unknown-dword82) (seconds 0.25)) - (not (logtest? (-> self state-flags) (state-flags being-attacked dying))) - ) + (not (logtest? (-> self state-flags) (state-flags being-attacked dying)))) (let ((gp-6 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))) - (s5-4 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4))) - ) + (s5-4 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 4)))) (set! (-> gp-6 y) 0.0) (vector-normalize! gp-6 (-> *RACER-bank* yellow-projectile-speed)) (vector+! gp-6 gp-6 (-> self control transv)) - (process-spawn - projectile-yellow - :init projectile-init-by-other - (-> self entity) - s5-4 - gp-6 - (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) - 152 - 136 - ) - #f - :to self - ) - ) - (set-time! (-> self control unknown-dword82)) - ) + (process-spawn projectile-yellow + :init + projectile-init-by-other + (-> self entity) + s5-4 + gp-6 + (if (>= (-> self fact eco-level) (-> *FACT-bank* eco-level-max)) 152 136) + #f + :to + self)) + (set-time! (-> self control unknown-dword82))) (let ((f22-0 (-> *RACER-bank* hotcoals-heat-inc)) (f24-0 (-> *RACER-bank* lava-heat-inc)) (f28-2 (-> *RACER-bank* lava-air-heat-inc)) (f26-0 (-> *RACER-bank* surface-heat-inc)) - (f30-2 (-> *RACER-bank* jump-heat-inc)) - ) + (f30-2 (-> *RACER-bank* jump-heat-inc))) (case (-> self current-level name) (('lavatube) (set! f22-0 (-> *RACER-bank* lavatube-hotcoals-heat-inc)) (set! f24-0 (-> *RACER-bank* lavatube-lava-heat-inc)) (set! f28-2 (-> *RACER-bank* lavatube-lava-air-heat-inc)) (set! f26-0 (-> *RACER-bank* lavatube-surface-heat-inc)) - (set! f30-2 (-> *RACER-bank* lavatube-jump-heat-inc)) - ) - ) + (set! f30-2 (-> *RACER-bank* lavatube-jump-heat-inc)))) (let* ((f20-0 (get-health-percent-lost *game-info* #f)) (f22-1 (lerp-scale f22-0 (* 0.5 f22-0) f20-0 0.0 1.0)) - (f24-1 (lerp-scale f24-0 (* 0.33333334 f24-0) f20-0 0.0 1.0)) - ) + (f24-1 (lerp-scale f24-0 (* 0.33333334 f24-0) f20-0 0.0 1.0))) (case (-> self control poly-pat material) - (((pat-material hotcoals)) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (seconds-per-frame))) - ) + (((pat-material hotcoals)) (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f22-1 (seconds-per-frame)))) (((pat-material lava)) (if (racer-on-ground?) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (seconds-per-frame))) - (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (seconds-per-frame))) - ) - ) - (else - (if (not (racer-on-ground?)) - (seek! (-> self racer heat) 0.0 (* f26-0 (seconds-per-frame))) - ) - ) - ) - ) + (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f24-1 (seconds-per-frame))) + (seek! (-> self racer heat) (-> *RACER-bank* heat-max) (* f28-2 (seconds-per-frame))))) + (else (if (not (racer-on-ground?)) (seek! (-> self racer heat) 0.0 (* f26-0 (seconds-per-frame))))))) (let ((v1-189 (- (current-time) (-> self control unknown-dword11)))) - (if (and (>= v1-189 (seconds 0.9)) (>= (seconds 3) v1-189)) - (seek! (-> self racer heat) 0.0 (* f30-2 (seconds-per-frame))) - ) - ) - ) + (if (and (>= v1-189 (seconds 0.9)) (>= (seconds 3) v1-189)) (seek! (-> self racer heat) 0.0 (* f30-2 (seconds-per-frame)))))) (if (and (>= (-> self racer heat) (-> *RACER-bank* heat-max)) (= (-> self game mode) 'play)) - (send-event self 'attack #f (static-attack-info ((mode 'heat)))) - ) + (send-event self 'attack #f (static-attack-info ((mode 'heat))))) ;; og:preserve-this allow boost with debug segment enabled - (if (and *cheat-mode* (or *debug-segment* PC_PORT) (cpad-pressed? 0 l2)) - (send-event self 'boost 1.0) - ) + (if (and *cheat-mode* (or *debug-segment* PC_PORT) (cpad-pressed? 0 l2)) (send-event self 'boost 1.0)) (let ((v1-218 (- (current-time) (-> self racer boost-time)))) (if (< v1-218 (-> self racer boost-duration)) - (set! (-> self racer boost-curve) - (* (-> *RACER-bank* boost-curve-max) - (sin (* 32768.0 (/ (the float v1-218) (the float (-> self racer boost-duration))))) - ) - ) - (set! (-> self racer boost-curve) 0.0) - ) - ) + (set! (-> self racer boost-curve) + (* (-> *RACER-bank* boost-curve-max) + (sin (* 32768.0 (/ (the float v1-218) (the float (-> self racer boost-duration))))))) + (set! (-> self racer boost-curve) 0.0))) (when (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) x)) (< (-> self control unknown-float01) 4096.0) - (= (-> self racer boost-level) 0.0) - ) + (= (-> self racer boost-level) 0.0)) (when (nonzero? (-> self racer boost-sound-id)) (let ((v1-241 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> v1-241 command) (sound-command set-param)) @@ -862,91 +544,58 @@ (set! (-> v1-241 auto-time) 120) (set! (-> v1-241 auto-from) 2) (set! (-> v1-241 parms mask) (sound-mask volume time)) - (-> v1-241 id) - ) + (-> v1-241 id)) (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) - 0 - ) - (set! (-> self racer boost-level) 0.0) - ) + 0) + (set! (-> self racer boost-level) 0.0)) (set! (-> self racer boost-target) (+ (-> self racer boost-curve) (-> self racer boost-level))) (seek! (-> self racer boost-output) (-> self racer boost-target) (* 40960.0 (seconds-per-frame))) (when (!= (-> self racer boost-output) 0.0) (dotimes (gp-7 8) (let ((v1-258 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))) - (launch-particles - (-> *part-id-table* 2229) - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-258)) - ) - ) - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1)) - ) + (launch-particles (-> *part-id-table* 2229) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-258))))) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1))) (when (logtest? (-> self control status) (cshape-moving-flags twall)) (let* ((gp-8 (racer-find-prop-point (new 'stack-no-clear 'vector) (-> self control unknown-vector70))) (v1-274 (-> self control wall-pat material)) - (a1-54 - (cond - ((or (= v1-274 (pat-material metal)) (= v1-274 (pat-material pcmetal))) - (set! (-> *part-id-table* 2226 init-specs 1 initial-valuef) - (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (-> *part-id-table* 2226) - ) - (else - (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) - (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)) - ) - (-> *part-id-table* 2225) - ) - ) - ) - ) - (launch-particles a1-54 gp-8) - ) + (a1-54 (cond + ((or (= v1-274 (pat-material metal)) (= v1-274 (pat-material pcmetal))) + (set! (-> *part-id-table* 2226 init-specs 1 initial-valuef) + (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (-> *part-id-table* 2226)) + (else + (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) + (lerp-scale 0.2 10.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) + (-> *part-id-table* 2225))))) + (launch-particles a1-54 gp-8)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 0 51 (seconds 0.05)) - (sound-play-by-name - (sound-name-with-material 'zoom-hit (-> self control wall-pat) "") - (-> self racer scrape-sound-id) - 1024 - 0 - 0 - (sound-group sfx) - #t - ) - ) + (sound-play-by-name (sound-name-with-material 'zoom-hit (-> self control wall-pat) "") + (-> self racer scrape-sound-id) + 1024 + 0 + 0 + (sound-group sfx) + #t)) (when (and (< (-> self racer heat) (-> *RACER-bank* heat-max)) (and (< (* 0.8 (-> *RACER-bank* heat-max)) (-> self racer heat)) - (time-elapsed? - (-> self racer heat-sound-time) - (the int (* 3000.0 (- 1.0 (/ (-> self racer heat) (-> *RACER-bank* heat-max))))) - ) - ) - ) + (time-elapsed? (-> self racer heat-sound-time) + (the int (* 3000.0 (- 1.0 (/ (-> self racer heat) (-> *RACER-bank* heat-max)))))))) (set-time! (-> self racer heat-sound-time)) - (sound-play "warning") - ) + (sound-play "warning")) (when (rand-vu-percent? (/ (-> self racer heat) (-> *RACER-bank* heat-max))) - (let ((a2-28 (process-drawable-random-point! - (the-as process-drawable (ppointer->process (-> self manipy))) - (new 'stack-no-clear 'vector) - ) - ) - ) - (launch-particles (-> *part-id-table* 2227) a2-28) - ) - ) + (let ((a2-28 (process-drawable-random-point! (the-as process-drawable (ppointer->process (-> self manipy))) + (new 'stack-no-clear 'vector)))) + (launch-particles (-> *part-id-table* 2227) a2-28))) 0 - (none) - ) + (none)) (defbehavior target-racing-center-anim target () (set! (-> self racer turn-anim-frame) 0.0) (set! (-> self racer tail-anim-frame) 0.0) (set! (-> self racer rudd-anim-frame) 0.0) 0 - (none) - ) + (none)) (defbehavior target-racing-turn-anim target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -955,103 +604,63 @@ (set! (-> self control unknown-int40) s5-0) (set! (-> self racer turn-anim-targ) (fmax -16.0 (fmin 16.0 (-> self racer turn-anim-targ)))) (or (not (>= (* (-> self racer turn-anim-targ) (-> self racer turn-anim-frame)) 0.0)) - (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) - ) + (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ)))) (+! (-> self racer turn-anim-vel) (* (- (-> self racer turn-anim-targ) (-> self racer turn-anim-frame)) - (lerp-scale - 20.0 - (if (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) - 30.0 - 60.0 - ) - (-> self control unknown-float01) - 0.0 - (* 0.3 (-> self racer transv-max)) - ) - (seconds-per-frame) - ) - ) + (lerp-scale 20.0 + (if (< (fabs (-> self racer turn-anim-frame)) (fabs (-> self racer turn-anim-targ))) 30.0 60.0) + (-> self control unknown-float01) + 0.0 + (* 0.3 (-> self racer transv-max))) + (seconds-per-frame))) (set! (-> self racer turn-anim-vel) - (fmax - -100.0 - (fmin - 100.0 - (* (-> self racer turn-anim-vel) - (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 (* 0.3 (-> self racer transv-max))) - ) - ) - ) - ) + (fmax -100.0 + (fmin 100.0 + (* (-> self racer turn-anim-vel) + (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 (* 0.3 (-> self racer transv-max))))))) (+! (-> self racer turn-anim-frame) (* (-> self racer turn-anim-vel) (seconds-per-frame))) (set! (-> self racer turn-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer turn-anim-frame)))) (cond ((and (>= (-> self racer turn-anim-frame) 20.0) (>= (-> self racer turn-anim-vel) 0.0)) - (set! (-> self racer turn-anim-vel) 0.0) - ) + (set! (-> self racer turn-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer turn-anim-frame)) (>= 0.0 (-> self racer turn-anim-vel))) - (set! (-> self racer turn-anim-vel) 0.0) - ) - ) + (set! (-> self racer turn-anim-vel) 0.0))) (+! (-> self racer tail-anim-vel) (* -50.0 (seconds-per-frame) - (- (-> self racer tail-anim-frame) - (* -0.0091552725 (- (-> self racer change-roty) (-> self racer change-roty-old))) - ) - ) - ) + (- (-> self racer tail-anim-frame) (* -0.0091552725 (- (-> self racer change-roty) (-> self racer change-roty-old)))))) (set! (-> self racer tail-anim-vel) (fmax -100.0 (fmin 100.0 (* 0.8 (-> self racer tail-anim-vel))))) (+! (-> self racer tail-anim-frame) (* (-> self racer tail-anim-vel) (seconds-per-frame))) (set! (-> self racer tail-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer tail-anim-frame)))) (cond ((and (>= (-> self racer tail-anim-frame) 20.0) (>= (-> self racer tail-anim-vel) 0.0)) - (set! (-> self racer tail-anim-vel) 0.0) - ) + (set! (-> self racer tail-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer tail-anim-frame)) (>= 0.0 (-> self racer tail-anim-vel))) - (set! (-> self racer tail-anim-vel) 0.0) - ) - ) + (set! (-> self racer tail-anim-vel) 0.0))) (+! (-> self racer rudd-anim-vel) - (* 40.0 (seconds-per-frame) (- (-> self racer tail-anim-frame) (-> self racer rudd-anim-frame))) - ) + (* 40.0 (seconds-per-frame) (- (-> self racer tail-anim-frame) (-> self racer rudd-anim-frame)))) (set! (-> self racer rudd-anim-vel) (fmax -100.0 (fmin 100.0 (* 0.96 (-> self racer rudd-anim-vel))))) (+! (-> self racer rudd-anim-frame) (* (-> self racer rudd-anim-vel) (seconds-per-frame))) (set! (-> self racer rudd-anim-frame) (fmax -20.0 (fmin 20.0 (-> self racer rudd-anim-frame)))) (cond ((and (>= (-> self racer rudd-anim-frame) 20.0) (>= (-> self racer rudd-anim-vel) 0.0)) - (set! (-> self racer rudd-anim-vel) 0.0) - ) + (set! (-> self racer rudd-anim-vel) 0.0)) ((and (>= -20.0 (-> self racer rudd-anim-frame)) (>= 0.0 (-> self racer rudd-anim-vel))) - (set! (-> self racer rudd-anim-vel) 0.0) - ) - ) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self racer rudd-anim-vel) 0.0)))) + (set-time-ratios *display* (the float gp-0))) (when #f (format *stdcon* "~%~%~%z:~r vy:~r~%" (-> self racer rot z) (-> self racer rotv y)) - (format - *stdcon* - "t:~6,,2f v:~6,,2f p:~6,,2f~%" - (-> self racer turn-anim-targ) - (-> self racer turn-anim-vel) - (-> self racer turn-anim-frame) - ) - (format - *stdcon* - "t:~6,,2f v:~6,,2f p:~6,,2f~%" - (-> self racer turn-anim-targ) - (-> self racer tail-anim-vel) - (-> self racer tail-anim-frame) - ) - ) - (set-twist! - (-> self racer tail) - (the-as float #f) - (the-as float #f) - (* -273.06668 (-> self racer tail-anim-frame)) - ) + (format *stdcon* + "t:~6,,2f v:~6,,2f p:~6,,2f~%" + (-> self racer turn-anim-targ) + (-> self racer turn-anim-vel) + (-> self racer turn-anim-frame)) + (format *stdcon* + "t:~6,,2f v:~6,,2f p:~6,,2f~%" + (-> self racer turn-anim-targ) + (-> self racer tail-anim-vel) + (-> self racer tail-anim-frame))) + (set-twist! (-> self racer tail) (the-as float #f) (the-as float #f) (* -273.06668 (-> self racer tail-anim-frame))) (let ((f30-2 (fmin 1.0 (* 2.0 (fabs (-> self racer slide-shift-x)))))) (ja :num-func num-func-identity :frame-num (ja-aframe (-> self racer turn-anim-frame) 0)) (ja :chan 1 :num! (chan 0) :frame-interp (+ 0.5 (* 0.025 (-> self racer tail-anim-frame)))) @@ -1059,115 +668,75 @@ ;; og:preserve-this changed for high fps (let ((f0-82 (lerp (-> self racer slide-interp) f30-2 (* DISPLAY_FPS_RATIO 0.125)))) (set! (-> self racer slide-interp) f0-82) - (set! (-> gp-2 frame-interp) f0-82) - ) + (set! (-> gp-2 frame-interp) f0-82)) (set! (-> gp-2 param 0) 0.0) - (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-chan) - ) - ) + (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-chan))) (ja :chan 3 - :num! (chan 0) - :frame-interp (* (-> self racer slide-interp) (+ 0.5 (* 0.025 (-> self racer tail-anim-frame)))) - ) + :num! + (chan 0) + :frame-interp + (* (-> self racer slide-interp) (+ 0.5 (* 0.025 (-> self racer tail-anim-frame))))) 0 - (none) - ) + (none)) (defbehavior target-racing-jump-anim target ((arg0 basic) (arg1 time-frame)) (let ((s4-0 'nothing) - (f30-0 0.0) - ) + (f30-0 0.0)) (until (ja-done? 0) - (let ((f0-0 (target-height-above-ground))) - (if (< 8192.0 f0-0) - 'jump - ) - ) + (let ((f0-0 (target-height-above-ground))) (if (< 8192.0 f0-0) 'jump)) (let ((s5-0 #f)) (when (!= s5-0 s4-0) - (if (= s4-0 'nothing) - (ja-channel-push! 1 arg1) - (ja-channel-push! 1 (seconds 0.125)) - ) + (if (= s4-0 'nothing) (ja-channel-push! 1 arg1) (ja-channel-push! 1 (seconds 0.125))) (ja-no-eval :group! eichar-racer-jump-small-ja :num! (seek!) :frame-num f30-0) - (set! s4-0 s5-0) - ) - ) + (set! s4-0 s5-0))) (suspend) (let ((f0-4 (lerp-scale 2.0 1.0 (ja-aframe-num 0) 0.0 22.0))) - (if (= (-> self next-state name) 'target-racing-falling) - (set! f0-4 (* 0.5 f0-4)) - ) - (ja :num! (seek! max f0-4)) - ) + (if (= (-> self next-state name) 'target-racing-falling) (set! f0-4 (* 0.5 f0-4))) + (ja :num! (seek! max f0-4))) (set! f30-0 (ja-aframe-num 0)) - (ja-blend-eval) - ) - ) + (ja-blend-eval))) (ja-channel-set! 2) (ja :group! eichar-racer-jump-small-loop-ja :num! min) (ja :chan 1 :group! eichar-racer-jump-small-land-ja :num! (identity (ja-aframe 44.0 0))) (let ((f30-1 0.0)) - (loop - (suspend) + (loop (suspend) (let ((gp-3 (-> self skel root-channel 1))) (set! f30-1 (seek f30-1 1.0 (seconds-per-frame))) - (set! (-> gp-3 frame-interp) f30-1) - ) - ) - ) + (set! (-> gp-3 frame-interp) f30-1)))) (the-as none 0) - (none) - ) + (none)) (defbehavior target-racing-land-anim target ((arg0 symbol)) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (ja-channel-push! 1 (seconds 0.07)) (cond ((= arg0 'high-jump) (ja-no-eval :group! eichar-racer-jump-high-land-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) ((= arg0 'jump) (ja-no-eval :group! eichar-racer-jump-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) (suspend) - (ja :num! (seek!)) - ) - ) + (ja :num! (seek!)))) (else - (ja-no-eval :group! eichar-racer-jump-small-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) - (until (ja-done? 0) - (if (>= (-> self racer slide-mode) 0) - (goto cfg-23) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) + (ja-no-eval :group! eichar-racer-jump-small-land-ja :num! (seek!) :frame-num (ja-aframe 44.0 0)) + (until (ja-done? 0) + (if (>= (-> self racer slide-mode) 0) (goto cfg-23)) + (suspend) + (ja :num! (seek!))))) (label cfg-23) 0 - (none) - ) + (none)) (defbehavior target-racing-post target () (set! (-> self control reaction) racer-collision-reaction) (set! (-> self control surf) *race-track-surface*) (set! (-> self racer transv-max) - (+ (-> self control unknown-surface01 transv-max) (-> self racer boost-output) (-> self racer hill-boost)) - ) + (+ (-> self control unknown-surface01 transv-max) (-> self racer boost-output) (-> self racer hill-boost))) (let ((gp-0 (the int (-> *display* time-ratio)))) (set-time-ratios *display* 1.0) (countdown (s5-0 gp-0) @@ -1179,106 +748,53 @@ (set! (-> self racer mod-x) f30-0) (let* ((f28-0 (-> self racer slide-amp)) (v1-17 (-> self racer slide-mode)) - (f28-1 - (* f28-0 - (cond - ((zero? v1-17) - (- (fmax - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - ) - ) - ) - ((= v1-17 1) - (fmax - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - (analog-input - (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) - 0.0 - 32.0 - 255.0 - 1.0 - ) - ) - ) - (else - 0.0 - ) - ) - ) - ) - ) + (f28-1 (* f28-0 + (cond + ((zero? v1-17) + (- (fmax (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) + 0.0 + 32.0 + 255.0 + 1.0) + (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) + 0.0 + 32.0 + 255.0 + 1.0)))) + ((= v1-17 1) + (fmax (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 8)) + 0.0 + 32.0 + 255.0 + 1.0) + (analog-input (the-as int (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 9)) + 0.0 + 32.0 + 255.0 + 1.0))) + (else 0.0))))) (let ((f26-2 (analog-input (the-as int (-> self control unknown-cpad-info00 lefty)) 128.0 32.0 110.0 1.0))) (when (-> self racer stick-off) (set! f30-0 0.0) - (set! f26-2 0.0) - ) + (set! f26-2 0.0)) (+! (-> self racer front-turn) (* 0.0625 (deg-diff (-> self racer front-turn) (* 3640.889 f30-0)))) - (+! (-> self racer tail-tilt) (* 0.0625 (deg-diff (-> self racer tail-tilt) (* -3640.889 f26-2)))) - ) - (let* ((f26-3 - (* f30-0 (lerp-scale 5461.3335 7281.778 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) - ) - (f0-29 - (* f28-1 (lerp-scale 546.13336 3640.889 (-> self control unknown-float01) 0.0 (-> self racer transv-max))) - ) + (+! (-> self racer tail-tilt) (* 0.0625 (deg-diff (-> self racer tail-tilt) (* -3640.889 f26-2))))) + (let* ((f26-3 (* f30-0 (lerp-scale 5461.3335 7281.778 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) + (f0-29 (* f28-1 (lerp-scale 546.13336 3640.889 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) (f1-3 (* -0.8 (-> self racer rotv y))) (f0-33 (+ (cond - ((< (* f1-3 f26-3) 0.0) - 0.0 - ) - (else - (let ((f2-3 (+ 910.2222 (fabs f1-3)))) - (fmax (fmin f26-3 f2-3) (- f2-3)) - ) - ) - ) + ((< (* f1-3 f26-3) 0.0) 0.0) + (else (let ((f2-3 (+ 910.2222 (fabs f1-3)))) (fmax (fmin f26-3 f2-3) (- f2-3))))) (cond - ((< (* f1-3 f0-29) 0.0) - 0.0 - ) - (else - (let ((f1-5 (+ 910.2222 (fabs f1-3)))) - (fmax (fmin f0-29 f1-5) (- f1-5)) - ) - ) - ) - ) - ) - ) - (+! (-> self racer rot z) (* 0.05 (deg-diff (-> self racer rot z) (fmax -7281.778 (fmin 7281.778 f0-33))))) - ) + ((< (* f1-3 f0-29) 0.0) 0.0) + (else (let ((f1-5 (+ 910.2222 (fabs f1-3)))) (fmax (fmin f0-29 f1-5) (- f1-5)))))))) + (+! (-> self racer rot z) (* 0.05 (deg-diff (-> self racer rot z) (fmax -7281.778 (fmin 7281.778 f0-33)))))) (racer-xz f30-0 f28-1) - (racer-thrust (the-as basic f30-0) f28-1) - ) - ) + (racer-thrust (the-as basic f30-0) f28-1))) (racer-calc-gravity) (add-gravity) (reverse-conversions (-> self control transv)) - (let ((f30-1 - (/ (* (-> self racer tail-tilt) (+ 20480.0 (-> self control unknown-float01))) - (+ 20480.0 (-> self racer transv-max)) - ) - ) - ) + (let ((f30-1 (/ (* (-> self racer tail-tilt) (+ 20480.0 (-> self control unknown-float01))) (+ 20480.0 (-> self racer transv-max))))) (cond ((racer-on-ground?) (seek! (-> self control unknown-float81) 1.0 (* 8.0 (seconds-per-frame))) @@ -1288,142 +804,77 @@ (set! (-> self racer speed-rotx) 0.25) (let ((f0-52 (-> self racer bob-timer))) (let ((f1-16 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) - (f2-12 (-> self racer bob-period)) - ) - (set! (-> self racer bob-timer) (- f1-16 (* (the float (the int (/ f1-16 f2-12))) f2-12))) - ) + (f2-12 (-> self racer bob-period))) + (set! (-> self racer bob-timer) (- f1-16 (* (the float (the int (/ f1-16 f2-12))) f2-12)))) (when (!= (the int (/ f0-52 (* 0.5 (-> self racer bob-period)))) - (the int (/ (-> self racer bob-timer) (* 0.5 (-> self racer bob-period)))) - ) + (the int (/ (-> self racer bob-timer) (* 0.5 (-> self racer bob-period))))) (seek! (-> self racer bob-mult-trans) 1.0 0.75) - (if (< 1.5 (-> self racer bob-meta-meta-timer)) - (seek! (-> self racer bob-meta-meta-timer) 1.0 0.5) - ) + (if (< 1.5 (-> self racer bob-meta-meta-timer)) (seek! (-> self racer bob-meta-meta-timer) 1.0 0.5)) (when (time-elapsed? (-> self racer bob-meta-time) (seconds 2.2)) (set-time! (-> self racer bob-meta-time)) - (set! (-> self racer bob-meta-meta-timer) (rand-vu-float-range 0.8 1.2)) - ) - ) - ) + (set! (-> self racer bob-meta-meta-timer) (rand-vu-float-range 0.8 1.2))))) (let ((f0-63 (lerp-scale -1.0 -0.33 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) - (seek! (-> self racer bob-mult-rot) f0-63 (* 8.0 (seconds-per-frame))) - ) - (if (< 0.0 f30-1) - (set! f30-1 0.0) - ) - (set! (-> self racer stick-lock) #f) - ) + (seek! (-> self racer bob-mult-rot) f0-63 (* 8.0 (seconds-per-frame)))) + (if (< 0.0 f30-1) (set! f30-1 0.0)) + (set! (-> self racer stick-lock) #f)) (else - (seek! (-> self control unknown-float81) 0.0 (* 2.0 (seconds-per-frame))) - (seek! (-> self racer mult-rotx) 1.0 (* 16.0 (seconds-per-frame))) - (let ((f0-77 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (the-as vector (-> self control trans-old))) - (let* ((v1-128 (-> self racer bounce)) - (f1-36 (cond - ((= v1-128 1) - (* -0.08888889 f0-77) - ) - ((= v1-128 2) - (* -0.035555556 f0-77) - ) - ((= v1-128 3) - (* -0.017777778 f0-77) - ) - (else - (* -0.13333334 f0-77) - ) - ) - ) - ) - (if (-> self racer hop?) - (set! f1-36 (* 0.5 f1-36)) - ) - (if (= (-> self control unknown-surface00 mode) 'air) - (set! (-> self racer targ-rotx) (fmax -2730.6667 (fmin 5461.3335 f1-36))) - ) - ) + (seek! (-> self control unknown-float81) 0.0 (* 2.0 (seconds-per-frame))) + (seek! (-> self racer mult-rotx) 1.0 (* 16.0 (seconds-per-frame))) + (let ((f0-77 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (the-as vector (-> self control trans-old))) + (let* ((v1-128 (-> self racer bounce)) + (f1-36 (cond + ((= v1-128 1) (* -0.08888889 f0-77)) + ((= v1-128 2) (* -0.035555556 f0-77)) + ((= v1-128 3) (* -0.017777778 f0-77)) + (else (* -0.13333334 f0-77))))) + (if (-> self racer hop?) (set! f1-36 (* 0.5 f1-36))) + (if (= (-> self control unknown-surface00 mode) 'air) + (set! (-> self racer targ-rotx) (fmax -2730.6667 (fmin 5461.3335 f1-36))))) + (cond + ((>= f0-77 -32768.0) + (cond + ((or (= (-> self next-state name) 'target-racing-jump) + (and (= (-> self next-state name) 'target-racing-bounce) (= (-> self racer bounce) 1))) + (set! (-> self racer speed-rotx) 0.5) + (when (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) + (seek! (-> self racer hill-rotx) 0.0 (* 65536.0 (seconds-per-frame))) + (set! (-> self racer speed-rotx) 0.6))) + (else (set! (-> self racer speed-rotx) 0.25))) + (seek! (-> self racer mult-rotx) 1.0 (* 64.0 (seconds-per-frame)))) + (else (set! (-> self racer speed-rotx) 0.025)))) + (let ((f0-91 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) + (f1-44 (-> self racer bob-period))) + (set! (-> self racer bob-timer) (- f0-91 (* (the float (the int (/ f0-91 f1-44))) f1-44)))) + (seek! (-> self racer bob-mult-rot) 0.0 (* 16.0 (seconds-per-frame))) + (seek! (-> self racer bob-mult-trans) 0.0 (* 16.0 (seconds-per-frame))) + (set! f30-1 (lerp-scale f30-1 1820.4445 (the float (- (current-time) (-> self control unknown-dword11))) 0.0 900.0)) + (cond + ((and (logtest? (-> self control status) (cshape-moving-flags twall)) + (and (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) + (or (-> self racer stick-lock) (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0)) + (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))))) (cond - ((>= f0-77 -32768.0) - (cond - ((or (= (-> self next-state name) 'target-racing-jump) - (and (= (-> self next-state name) 'target-racing-bounce) (= (-> self racer bounce) 1)) - ) - (set! (-> self racer speed-rotx) 0.5) - (when (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) - (seek! (-> self racer hill-rotx) 0.0 (* 65536.0 (seconds-per-frame))) - (set! (-> self racer speed-rotx) 0.6) - ) - ) - (else - (set! (-> self racer speed-rotx) 0.25) - ) - ) - (seek! (-> self racer mult-rotx) 1.0 (* 64.0 (seconds-per-frame))) - ) - (else - (set! (-> self racer speed-rotx) 0.025) - ) - ) - ) - (let ((f0-91 (+ (-> self racer bob-timer) (* (-> self racer bob-meta-timer) (-> *display* time-adjust-ratio)))) - (f1-44 (-> self racer bob-period)) - ) - (set! (-> self racer bob-timer) (- f0-91 (* (the float (the int (/ f0-91 f1-44))) f1-44))) - ) - (seek! (-> self racer bob-mult-rot) 0.0 (* 16.0 (seconds-per-frame))) - (seek! (-> self racer bob-mult-trans) 0.0 (* 16.0 (seconds-per-frame))) - (set! f30-1 - (lerp-scale f30-1 1820.4445 (the float (- (current-time) (-> self control unknown-dword11))) 0.0 900.0) - ) - (cond - ((and (logtest? (-> self control status) (cshape-moving-flags twall)) - (and (time-elapsed? (-> self control unknown-dword11) (seconds 0.1)) - (or (-> self racer stick-lock) (< (target-move-dist (-> *TARGET-bank* stuck-time)) 4096.0)) - (not (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))) - ) - ) - (cond - ((and (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control last-known-safe-ground)) - ) - ) - (logtest? (-> self control root-prim prim-core action) (collide-action racer-grounded)) - ) - (+! (-> self racer stuck-count) 1) - (go target-racing-smack 122880.0 #f) - ) - (else - (set! (-> self racer stick-lock) #t) - ) - ) - ) - (else - (set! (-> self racer stick-lock) #f) - ) - ) - ) - ) - (+! (-> self racer lean-rotx) (* 0.1 (deg-diff (-> self racer lean-rotx) f30-1))) - ) + ((and (< 0.0 + (vector-dot (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control last-known-safe-ground)))) + (logtest? (-> self control root-prim prim-core action) (collide-action racer-grounded))) + (+! (-> self racer stuck-count) 1) + (go target-racing-smack 122880.0 #f)) + (else (set! (-> self racer stick-lock) #t)))) + (else (set! (-> self racer stick-lock) #f))))) + (+! (-> self racer lean-rotx) (* 0.1 (deg-diff (-> self racer lean-rotx) f30-1)))) (set! (-> self racer lean-rotx) 0.0) (set! (-> self racer rot-old quad) (-> self racer rot quad)) (set! (-> self racer change-roty-old) (-> self racer change-roty)) (set! (-> self racer rot y) - (the float - (sar (shl (the int (+ (-> self racer rot y) (* (-> self racer rotv y) (seconds-per-frame)))) 48) 48) - ) - ) + (the float (sar (shl (the int (+ (-> self racer rot y) (* (-> self racer rotv y) (seconds-per-frame)))) 48) 48))) (set! (-> self racer change-roty) - (* (deg-diff (-> self racer rot-old y) (-> self racer rot y)) (-> *display* frames-per-second)) - ) + (* (deg-diff (-> self racer rot-old y) (-> self racer rot y)) (-> *display* frames-per-second))) (racer-collision) (racer-integrate) - (post-flag-setup) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (post-flag-setup)) + (set-time-ratios *display* (the float gp-0))) (target-compute-slopes *up-vector*) (racer-effects) (racer-sounds) @@ -1437,8 +888,6 @@ (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) (set! (-> self racer bike-scale quad) (-> self control scale quad)) (let ((v1-240 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-240) - ) + (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-240)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/robocave/cave-trap.gc b/goal_src/jak1/levels/robocave/cave-trap.gc index 4e33b2b4a7..c46a3494ab 100644 --- a/goal_src/jak1/levels/robocave/cave-trap.gc +++ b/goal_src/jak1/levels/robocave/cave-trap.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "levels/maincave/baby-spider.gc") ;; name: cave-trap.gc @@ -13,62 +12,43 @@ ;; DECOMP BEGINS (deftype cave-trap (process-drawable) - ((root collide-shape :override) - (spider-count int32) - (alt-actors (array entity-actor)) - (spawn-delay time-frame) - (last-spawn-time time-frame) - (debug-targ-pos vector :inline) - ) + ((root collide-shape :override) + (spider-count int32) + (alt-actors (array entity-actor)) + (spawn-delay time-frame) + (last-spawn-time time-frame) + (debug-targ-pos vector :inline)) (:methods - (cave-trap-method-20 (_type_) symbol) - ) + (cave-trap-method-20 (_type_) symbol)) (:states - cave-trap-active - cave-trap-give-up - cave-trap-idle - ) - ) - + cave-trap-active + cave-trap-give-up + cave-trap-idle)) (deftype spider-vent (process-drawable) - ((last-spawn-time time-frame) - ) + ((last-spawn-time time-frame)) (:states - spider-vent-idle - ) - ) - + spider-vent-idle)) (defstate spider-vent-idle (spider-vent) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('can-spawn?) - (return (time-elapsed? (-> self last-spawn-time) (seconds 1))) - v0-0 - ) - (('notify-spawned) - (set! v0-0 (current-time)) - (set! (-> self last-spawn-time) (the-as time-frame v0-0)) - v0-0 - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('can-spawn?) (return (time-elapsed? (-> self last-spawn-time) (seconds 1))) v0-0) + (('notify-spawned) (set! v0-0 (current-time)) (set! (-> self last-spawn-time) (the-as time-frame v0-0)) v0-0))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this spider-vent) (arg0 entity-actor)) (set! (-> this last-spawn-time) 0) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go spider-vent-idle) - (none) - ) + (none)) (defbehavior cave-trap-default-event-handler cave-trap ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -76,30 +56,15 @@ (when (= (-> arg0 type) baby-spider) (let ((v0-0 (the-as object (max 0 (+ (-> self spider-count) -1))))) (set! (-> self spider-count) (the-as int v0-0)) - v0-0 - ) - ) - ) - (('notify) - (if (and (= (-> arg0 type) spider-egg) (= (-> self next-state name) 'cave-trap-idle)) - (go cave-trap-active) - ) - ) - ) - ) + v0-0))) + (('notify) (if (and (= (-> arg0 type) spider-egg) (= (-> self next-state name) 'cave-trap-idle)) (go cave-trap-active))))) (deftype spawn-baby-spider-best (structure) - ((index int32) - (dist float) - ) - ) - + ((index int32) + (dist float))) (deftype spawn-baby-spider-work (structure) - ((best spawn-baby-spider-best 4 :inline) - ) - ) - + ((best spawn-baby-spider-best 4 :inline))) (defmethod cave-trap-method-20 ((this cave-trap)) (set-time! (-> this last-spawn-time)) @@ -107,8 +72,7 @@ (let ((s5-0 (new 'stack-no-clear 'spawn-baby-spider-work))) (let ((s4-0 (new 'stack-no-clear 'vector))) (dotimes (v1-2 4) - (set! (-> s5-0 best v1-2 index) -1) - ) + (set! (-> s5-0 best v1-2 index) -1)) (set! (-> s4-0 quad) (-> (matrix-local->world #f #f) vector 2 quad)) (set! (-> s4-0 y) 0.0) (vector-normalize! s4-0 102400.0) @@ -116,73 +80,41 @@ (set! (-> s4-0 y) (-> (target-pos 0) y)) (dotimes (s3-2 (-> this alt-actors length)) (let* ((v1-10 (-> this alt-actors s3-2)) - (s1-0 (if v1-10 - (-> v1-10 extra process) - ) - ) - (s2-2 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) - s1-0 - ) - ) - ) + (s1-0 (if v1-10 (-> v1-10 extra process))) + (s2-2 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) process-drawable)) s1-0))) (when s2-2 (when (send-event s2-2 'can-spawn?) (let ((f30-0 (vector-vector-distance s4-0 (-> (the-as process-drawable s2-2) root trans))) - (a0-12 (new 'stack-no-clear 'sphere)) - ) + (a0-12 (new 'stack-no-clear 'sphere))) (let ((v1-16 (-> s5-0 best 3))) (when (or (< (-> v1-16 index) 0) (< f30-0 (-> v1-16 dist))) (set! (-> v1-16 index) s3-2) - (set! (-> v1-16 dist) f30-0) - ) - ) + (set! (-> v1-16 dist) f30-0))) (set! (-> a0-12 quad) (-> (the-as process-drawable s2-2) root trans quad)) (set! (-> a0-12 w) 4096.0) (when (sphere-in-view-frustum? a0-12) (let ((v1-18 (-> s5-0 best 2))) (when (or (< (-> v1-18 index) 0) (< f30-0 (-> v1-18 dist))) (set! (-> v1-18 index) s3-2) - (set! (-> v1-18 dist) f30-0) - ) - ) + (set! (-> v1-18 dist) f30-0))) (when (>= 40960.0 f30-0) (let ((v1-19 (-> s5-0 best 1))) (when (or (< (-> v1-19 index) 0) (< f30-0 (-> v1-19 dist))) (set! (-> v1-19 index) s3-2) - (set! (-> v1-19 dist) f30-0) - ) - ) + (set! (-> v1-19 dist) f30-0))) (when (= (-> s2-2 type) spider-egg) (let ((v1-21 (-> s5-0 best))) (when (or (< (-> v1-21 0 index) 0) (< f30-0 (-> v1-21 0 dist))) (set! (-> v1-21 0 index) s3-2) - (set! (-> v1-21 0 dist) f30-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (set! (-> v1-21 0 dist) f30-0)))))))))))) (dotimes (s4-1 4) (let ((v1-29 (-> s5-0 best s4-1 index))) (when (>= v1-29 0) (let* ((v1-32 (-> this alt-actors v1-29)) - (s2-3 (if v1-32 - (-> v1-32 extra process) - ) - ) - (s3-3 (if (and (nonzero? s2-3) (type-type? (-> s2-3 type) process-drawable)) - s2-3 - ) - ) + (s2-3 (if v1-32 (-> v1-32 extra process))) + (s3-3 (if (and (nonzero? s2-3) (type-type? (-> s2-3 type) process-drawable)) s2-3)) (s2-4 (new 'stack-no-clear 'vector)) - (s1-1 (new 'stack-no-clear 'baby-spider-spawn-params)) - ) + (s1-1 (new 'stack-no-clear 'baby-spider-spawn-params))) (vector-! s2-4 (target-pos 0) (-> (the-as process-drawable s3-3) root trans)) (vector-normalize! s2-4 1.0) (init! s1-1 (= (-> s3-3 type) spider-egg) #t #t #t 7 1 'untrigger) @@ -191,91 +123,62 @@ (set! (-> (the-as baby-spider (-> v1-40 0)) die-if-not-visible?) #t) (+! (-> this spider-count) 1) (send-event s3-3 'notify-spawned) - (return #f) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (return #f)))))))) + #f) (defstate cave-trap-idle (cave-trap) :event cave-trap-default-event-handler - :trans (behavior () - (when *target* - (let* ((gp-0 (target-pos 0)) - (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - (f1-1 (- (-> gp-0 y) (-> self root trans y))) - ) - (when (and (>= 61440.0 f1-1) (>= f1-1 -16384.0)) - (when (>= 274432.0 f0-0) - (when (or (>= 188416.0 f0-0) (send-event *target* 'query 'powerup (pickup-type eco-yellow))) - (level-hint-spawn (text-id cave-trap-nest-hint) "sksp0341" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (game-task cave-spider-tunnel) (task-status need-hint)) - (go cave-trap-active) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :trans + (behavior () + (when *target* + (let* ((gp-0 (target-pos 0)) + (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + (f1-1 (- (-> gp-0 y) (-> self root trans y)))) + (when (and (>= 61440.0 f1-1) (>= f1-1 -16384.0)) + (when (>= 274432.0 f0-0) + (when (or (>= 188416.0 f0-0) (send-event *target* 'query 'powerup (pickup-type eco-yellow))) + (level-hint-spawn (text-id cave-trap-nest-hint) "sksp0341" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (game-task cave-spider-tunnel) (task-status need-hint)) + (go cave-trap-active))))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate cave-trap-active (cave-trap) :event cave-trap-default-event-handler - :enter (behavior () - (set! (-> self spawn-delay) (seconds 0.5)) - ) - :trans (behavior () - (cond - (*target* - (let* ((gp-0 (target-pos 0)) - (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - (f1-1 (- (-> gp-0 y) (-> self root trans y))) - ) - (if (or (< 73728.0 f1-1) (< f1-1 -24576.0) (< 368640.0 f0-0)) - (go cave-trap-give-up) - ) - ) - (if (and (< (-> self spider-count) 8) (time-elapsed? (-> self last-spawn-time) (-> self spawn-delay))) - (cave-trap-method-20 self) - ) - ) - (else - (go cave-trap-give-up) - ) - ) - 0 - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :enter + (behavior () + (set! (-> self spawn-delay) (seconds 0.5))) + :trans + (behavior () + (cond + (*target* + (let* ((gp-0 (target-pos 0)) + (f0-0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + (f1-1 (- (-> gp-0 y) (-> self root trans y)))) + (if (or (< 73728.0 f1-1) (< f1-1 -24576.0) (< 368640.0 f0-0)) (go cave-trap-give-up))) + (if (and (< (-> self spider-count) 8) (time-elapsed? (-> self last-spawn-time) (-> self spawn-delay))) + (cave-trap-method-20 self))) + (else (go cave-trap-give-up))) + 0) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate cave-trap-give-up (cave-trap) :event cave-trap-default-event-handler - :code (behavior () - (suspend) - (go cave-trap-idle) - ) - ) + :code + (behavior () + (suspend) + (go cave-trap-idle))) (defmethod relocate ((this cave-trap) (arg0 int)) - (if (nonzero? (-> this alt-actors)) - (&+! (-> this alt-actors) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this alt-actors)) (&+! (-> this alt-actors) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this cave-trap) (arg0 entity-actor)) (set! (-> this spider-count) 0) @@ -285,12 +188,10 @@ (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) @@ -301,9 +202,6 @@ (let ((s4-1 (entity-actor-count arg0 'alt-actor))) (set! (-> this alt-actors) (new 'process 'boxed-array entity-actor s4-1)) (dotimes (s3-1 s4-1) - (set! (-> this alt-actors s3-1) (entity-actor-lookup arg0 'alt-actor s3-1)) - ) - ) + (set! (-> this alt-actors s3-1) (entity-actor-lookup arg0 'alt-actor s3-1)))) (go cave-trap-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/robocave/robocave-part.gc b/goal_src/jak1/levels/robocave/robocave-part.gc index 81ab1e03c4..9ef91f4f86 100644 --- a/goal_src/jak1/levels/robocave/robocave-part.gc +++ b/goal_src/jak1/levels/robocave/robocave-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") @@ -13,167 +12,155 @@ ;; DECOMP BEGINS -(deftype robocave-part (part-spawner) - () - ) - +(deftype robocave-part (part-spawner) ()) (defpartgroup group-part-robocave-torch :id 506 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 729 :fade-after (meters 150) :falloff-to (meters 180)) - (sp-item 730 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 731 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2) :length (seconds 0.3)) - (sp-item 732 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 733 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 734 :fade-after (meters 30) :falloff-to (meters 30)) - ) - ) + :parts + ((sp-item 729 :fade-after (meters 150) :falloff-to (meters 180)) + (sp-item 730 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 731 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2) :length (seconds 0.3)) + (sp-item 732 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 733 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 734 :fade-after (meters 30) :falloff-to (meters 30)))) (defpart 734 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 735) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 735) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 735 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 729 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.4 1 0.5) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.4 1 0.5) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 736 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 731 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 732 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 733 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 736) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 736))) (defpart 730 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/robocave/spider-egg.gc b/goal_src/jak1/levels/robocave/spider-egg.gc index c9abf31c8d..29832ed372 100644 --- a/goal_src/jak1/levels/robocave/spider-egg.gc +++ b/goal_src/jak1/levels/robocave/spider-egg.gc @@ -1,205 +1,156 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROB.DGO") - (require "engine/common-obs/generic-obs.gc") ;; name: spider-egg.gc ;; name in dgo: spider-egg ;; dgos: L1, ROB - ;; DECOMP BEGINS (deftype spider-egg (process-drawable) - ((root collide-shape-moving :override) - (notify-actor entity-actor) - (broken-look lod-set :inline) - ) + ((root collide-shape-moving :override) + (notify-actor entity-actor) + (broken-look lod-set :inline)) (:states - spider-egg-die - spider-egg-hatch - (spider-egg-idle symbol) - ) - ) + spider-egg-die + spider-egg-hatch + (spider-egg-idle symbol))) +(defskelgroup *spider-egg-unbroken-sg* + spider-egg + spider-egg-unbroken-lod0-jg + -1 + ((spider-egg-unbroken-lod0-mg (meters 20)) + (spider-egg-unbroken-lod1-mg (meters 40)) + (spider-egg-unbroken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2)) -(defskelgroup *spider-egg-unbroken-sg* spider-egg spider-egg-unbroken-lod0-jg -1 - ((spider-egg-unbroken-lod0-mg (meters 20)) - (spider-egg-unbroken-lod1-mg (meters 40)) - (spider-egg-unbroken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - ) - -(defskelgroup *spider-egg-broken-sg* spider-egg spider-egg-broken-lod0-jg -1 - ((spider-egg-broken-lod0-mg (meters 20)) - (spider-egg-broken-lod1-mg (meters 40)) - (spider-egg-broken-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 2) - ) +(defskelgroup *spider-egg-broken-sg* + spider-egg + spider-egg-broken-lod0-jg + -1 + ((spider-egg-broken-lod0-mg (meters 20)) + (spider-egg-broken-lod1-mg (meters 40)) + (spider-egg-broken-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 2)) (defstate spider-egg-idle (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - (('can-spawn?) - (return #t) - v0-0 - ) - (('notify-spawned) - (go spider-egg-hatch) - ) - (('attack) - (go spider-egg-die) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - ) - :code (behavior ((arg0 symbol)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (cond - (arg0 - (ja-channel-set! 1) - (ja-no-eval :group! spider-egg-idle-ja - :num! (seek! max f30-0) - :frame-num (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)) + (('can-spawn?) (return #t) v0-0) + (('notify-spawned) (go spider-egg-hatch)) + (('attack) (go spider-egg-die)))) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time))) + :code + (behavior ((arg0 symbol)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (cond + (arg0 + (ja-channel-set! 1) + (ja-no-eval :group! + spider-egg-idle-ja + :num! (seek! max f30-0) + :frame-num + (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (else (ja-channel-push! 1 (seconds 0.2)))) + (loop (let ((gp-2 (rand-vu-int-range 2 6))) + (dotimes (s5-0 gp-2) + (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! spider-egg-twitch-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - (loop - (let ((gp-2 (rand-vu-int-range 2 6))) - (dotimes (s5-0 gp-2) - (ja-no-eval :group! spider-egg-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! spider-egg-twitch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post ja-post) (defstate spider-egg-hatch (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('can-spawn?) - (return (the-as object #f)) - v0-0 - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (logclear! (-> self mask) (process-mask actor-pause)) - (clear-collide-with-as (-> self root)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 324) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('can-spawn?) (return (the-as object #f)) v0-0))) + :code + (behavior () + (cleanup-for-death self) + (logclear! (-> self mask) (process-mask actor-pause)) + (clear-collide-with-as (-> self root)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 324) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! spider-egg-crack-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defstate spider-egg-die (spider-egg) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('can-spawn?) - (return (the-as object #f)) - v0-0 - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (logclear! (-> self mask) (process-mask actor-pause)) - (when (-> self notify-actor) - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'notify) - (set! (-> a1-0 param 0) (the-as uint 'die)) - (let ((t9-1 send-event-function) - (v1-9 (-> self notify-actor)) - ) - (t9-1 - (if v1-9 - (-> v1-9 extra process) - ) - a1-0 - ) - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 325) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-channel-push! 1 (seconds 0.1)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('can-spawn?) (return (the-as object #f)) v0-0))) + :code + (behavior () + (cleanup-for-death self) + (logclear! (-> self mask) (process-mask actor-pause)) + (when (-> self notify-actor) + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'notify) + (set! (-> a1-0 param 0) (the-as uint 'die)) + (let ((t9-1 send-event-function) + (v1-9 (-> self notify-actor))) + (t9-1 (if v1-9 (-> v1-9 extra process)) a1-0)))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 325) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-channel-push! 1 (seconds 0.1)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! spider-egg-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this spider-egg) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) @@ -207,48 +158,34 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 4096.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *spider-egg-unbroken-sg* '()) + (initialize-skeleton this *spider-egg-unbroken-sg* ()) (setup-lods! (-> this broken-look) *spider-egg-broken-sg* (-> this draw art-group) (-> this entity)) (set-vector! (-> this root scale) 0.4 0.4 0.4 1.0) (if (not (move-to-ground (-> this root) 12288.0 40960.0 #t (collide-kind background))) - (go process-drawable-art-error "no ground") - ) + (go process-drawable-art-error "no ground")) (+! (-> this root trans y) -409.6) (let ((s4-1 (new 'stack-no-clear 'vector))) (set! (-> s4-1 quad) (-> this root surface-normal quad)) (+! (-> s4-1 x) (rand-vu-float-range -0.2 0.2)) (+! (-> s4-1 z) (rand-vu-float-range -0.2 0.2)) (vector-normalize! s4-1 1.0) - (quaternion-axis-angle! - (-> this root quat) - (-> s4-1 x) - (-> s4-1 y) - (-> s4-1 z) - (rand-vu-float-range 0.0 65536.0) - ) - ) + (quaternion-axis-angle! (-> this root quat) (-> s4-1 x) (-> s4-1 y) (-> s4-1 z) (rand-vu-float-range 0.0 65536.0))) (update-transforms! (-> this root)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (if (> (entity-actor-count arg0 'alt-actor) 0) - (set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> this notify-actor) #f) - ) + (set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> this notify-actor) #f)) (go spider-egg-idle #t) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc b/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc index acd89ccf0b..7aa57057ca 100644 --- a/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc +++ b/goal_src/jak1/levels/rolling/rolling-lightning-mole.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: rolling-lightning-mole.gc @@ -13,97 +12,50 @@ (defun find-adjacent-bounds-one ((arg0 nav-mesh) (arg1 nav-poly) (arg2 int) (arg3 (array int8)) (arg4 (array int8)) (arg5 vector)) (local-vars (v0-2 object) (v1-2 int) (v1-30 int) (a0-2 int) (a0-12 int) (sv-16 nav-poly) (sv-32 int)) - (let ((v1-1 (+ arg2 1))) - (let ((a0-1 2)) - (set-on-less-than a0-2 a0-1 v1-1) - ) - (move-if-not-zero v1-2 0 a0-2 v1-1) - ) + (let ((v1-1 (+ arg2 1))) (let ((a0-1 2)) (set-on-less-than a0-2 a0-1 v1-1)) (move-if-not-zero v1-2 0 a0-2 v1-1)) (let ((v1-4 (-> arg1 adj-poly v1-2))) (cond - ((= v1-4 255) - ) + ((= v1-4 255)) ((not (logtest? (-> arg0 poly v1-4 pat) 1)) (format 0 "ERROR: find-adjacent-bounds-one given a non-boundary edge to start~%") - (return #f) - ) - ) - ) + (return #f)))) (let ((s0-0 (-> arg1 vertex (-> arg3 arg2)))) (set! sv-16 arg1) - (while (begin (label cfg-28) #t) + (while (begin + (label cfg-28) + #t) (set! sv-32 0) (while (< sv-32 3) (cond - ((and (= sv-32 arg2) (= sv-16 arg1)) - ) + ((and (= sv-32 arg2) (= sv-16 arg1))) ((= s0-0 (-> sv-16 vertex (-> arg4 sv-32))) (vector+! arg5 (-> arg0 origin) (the-as vector (-> arg0 vertex (-> sv-16 vertex (-> arg3 sv-32))))) (let ((v1-29 (+ sv-32 1))) - (let ((a0-11 2)) - (set-on-less-than a0-12 a0-11 v1-29) - ) - (move-if-not-zero v1-30 0 a0-12 v1-29) - ) + (let ((a0-11 2)) (set-on-less-than a0-12 a0-11 v1-29)) + (move-if-not-zero v1-30 0 a0-12 v1-29)) (let ((v1-32 (-> sv-16 adj-poly v1-30))) - (if (= v1-32 255) - (return #t) - ) + (if (= v1-32 255) (return #t)) (let ((v1-35 (-> arg0 poly v1-32))) - (set! v0-2 (cond - ((= arg1 v1-35) - (format 0 "ERROR: find-adjacent-bounds-one given tried to go back~%") - ) - (else - (cond - ((logtest? (-> v1-35 pat) 1) - (return #t) - ) - (else - (set! arg1 sv-16) - (set! sv-16 v1-35) - (goto cfg-28) - ) - ) - v0-2 - ) - ) - ) - ) - ) - ) - ) - (set! sv-32 (+ sv-32 1)) - ) + (set! v0-2 + (cond + ((= arg1 v1-35) (format 0 "ERROR: find-adjacent-bounds-one given tried to go back~%")) + (else + (cond + ((logtest? (-> v1-35 pat) 1) (return #t)) + (else (set! arg1 sv-16) (set! sv-16 v1-35) (goto cfg-28))) + v0-2))))))) + (set! sv-32 (+ sv-32 1))) (format 0 "ERROR: abnormal exit from find-adjacent-bounds-one~%") - (return #f) - ) - ) - #f - ) + (return #f))) + #f) ;; WARN: Function find-adjacent-bounds has a return type of none, but the expression builder found a return statement. (defun find-adjacent-bounds ((arg0 nav-mesh) (arg1 clip-travel-vector-to-mesh-return-info)) (when (!= (-> arg1 found-boundary) #t) (format 0 "ERROR: find-adjacent-bounds passed info which doesn't specify a boundary edge~%") - (return #f) - ) - (find-adjacent-bounds-one - arg0 - (-> arg1 poly) - (-> arg1 edge) - *edge-vert0-table* - *edge-vert1-table* - (-> arg1 vert-prev) - ) - (find-adjacent-bounds-one - arg0 - (-> arg1 poly) - (-> arg1 edge) - *edge-vert1-table* - *edge-vert0-table* - (-> arg1 vert-next) - ) + (return #f)) + (find-adjacent-bounds-one arg0 (-> arg1 poly) (-> arg1 edge) *edge-vert0-table* *edge-vert1-table* (-> arg1 vert-prev)) + (find-adjacent-bounds-one arg0 (-> arg1 poly) (-> arg1 edge) *edge-vert1-table* *edge-vert0-table* (-> arg1 vert-next)) (vector-reset! (-> arg1 prev-normal)) (vector-reset! (-> arg1 next-normal)) (set! (-> arg1 prev-normal x) (- (-> arg1 vert-prev z) (-> arg1 vert-0 z))) @@ -124,48 +76,39 @@ (camera-line-rel-len s5-1 (-> arg1 boundary-normal) 8192.0 (new 'static 'vector4w :y #xff :w #x80)) (vector+! s5-1 (-> arg1 vert-1) (-> arg1 vert-next)) (vector-float*! s5-1 s5-1 0.5) - (camera-line-rel-len s5-1 (-> arg1 next-normal) 8192.0 (new 'static 'vector4w :z #xff :w #x80)) - ) - (none) - ) + (camera-line-rel-len s5-1 (-> arg1 next-normal) 8192.0 (new 'static 'vector4w :z #xff :w #x80))) + (none)) (deftype fleeing-nav-enemy-info (structure) - ((min-reflect-angle float) - (max-reflect-angle float) - (max-boundary-deflection float) - (deflection-min-dist float) - (deflection-max-dist float) - (reflection-time int32) - (travel-rotate-speed float) - (blend_interp_angle float) - (min-speed-adjust float) - (max-speed-adjust float) - (speed-adjust-center float) - (speed-adjust-range float) - (abort-notice-distance float) - (min-notice-dist float) - (max-notice-dist float) - (min-stop-chase-dist float) - (max-stop-chase-dist float) - (max-flee-rotation float) - ) - :allow-misaligned - ) - + ((min-reflect-angle float) + (max-reflect-angle float) + (max-boundary-deflection float) + (deflection-min-dist float) + (deflection-max-dist float) + (reflection-time int32) + (travel-rotate-speed float) + (blend_interp_angle float) + (min-speed-adjust float) + (max-speed-adjust float) + (speed-adjust-center float) + (speed-adjust-range float) + (abort-notice-distance float) + (min-notice-dist float) + (max-notice-dist float) + (min-stop-chase-dist float) + (max-stop-chase-dist float) + (max-flee-rotation float)) + :allow-misaligned) (deftype fleeing-nav-enemy (nav-enemy) - ((last-reflection-time time-frame) - (run-blend-interp float) - (desired-travel vector :inline) - (saved-travel vector :inline) - (speed-adjust float) - (flee-info fleeing-nav-enemy-info :inline) - ) + ((last-reflection-time time-frame) + (run-blend-interp float) + (desired-travel vector :inline) + (saved-travel vector :inline) + (speed-adjust float) + (flee-info fleeing-nav-enemy-info :inline)) (:states - fleeing-nav-enemy-debug - ) - ) - + fleeing-nav-enemy-debug)) (defbehavior fleeing-nav-enemy-adjust-nav-info fleeing-nav-enemy () (let ((f30-0 (vector-vector-distance (-> *camera* tpos-curr-adj) (-> *camera* tpos-old-adj)))) @@ -175,34 +118,26 @@ ;; max distance. Since this is called more often above 60 FPS, the distance is skewed to the ;; lower end. This scales the distance back up based on the FPS ratio. (set! f30-0 (/ f30-0 DISPLAY_FPS_RATIO)) - (set! (-> self nav-info notice-distance) (lerp-clamp - (-> self flee-info min-notice-dist) - (-> self flee-info max-notice-dist) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - (set! (-> self nav-info stop-chase-distance) (lerp-clamp - (-> self flee-info min-stop-chase-dist) - (-> self flee-info max-stop-chase-dist) - (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))) - ) - ) - ) - ) + (set! (-> self nav-info notice-distance) + (lerp-clamp (-> self flee-info min-notice-dist) + (-> self flee-info max-notice-dist) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))) + (set! (-> self nav-info stop-chase-distance) + (lerp-clamp (-> self flee-info min-stop-chase-dist) + (-> self flee-info max-stop-chase-dist) + (parameter-ease-sin-clamp (* 0.00081380206 (+ -409.6 f30-0))))))) (defun fleeing-nav-enemy-clip-travel ((arg0 fleeing-nav-enemy) (arg1 vector)) (local-vars (sv-224 vector) (sv-240 vector) (sv-256 vector) (sv-272 vector) (sv-288 vector)) (let ((s2-0 (new 'stack 'clip-travel-vector-to-mesh-return-info)) (gp-0 (new 'stack-no-clear 'vector)) - (s1-0 #f) - ) + (s1-0 #f)) (set! (-> gp-0 quad) (-> arg0 nav travel quad)) (set! (-> arg0 nav travel quad) (-> arg1 quad)) (nav-control-method-24 (-> arg0 nav) (-> arg0 flee-info deflection-max-dist) s2-0) (when (-> s2-0 found-boundary) (let ((s0-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) 0.0 0.0 (vector-! s0-0 (-> s2-0 intersection) (-> arg0 collide-info trans)) @@ -215,89 +150,48 @@ (cond ((< (-> arg0 flee-info deflection-min-dist) f28-0) (let* ((f0-9 (/ (- f28-0 (-> arg0 flee-info deflection-min-dist)) - (- (-> arg0 flee-info deflection-max-dist) (-> arg0 flee-info deflection-min-dist)) - ) - ) + (- (-> arg0 flee-info deflection-max-dist) (-> arg0 flee-info deflection-min-dist)))) (f0-10 (fmin 1.0 f0-9)) - (f28-1 (* (- 1.0 f0-10) (-> arg0 flee-info max-boundary-deflection))) - ) + (f28-1 (* (- 1.0 f0-10) (-> arg0 flee-info max-boundary-deflection)))) (cond ((< (cos f28-1) f30-0) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) - (let ((s0-1 vector-normalize!)) - (set! sv-224 s3-0) - (let ((a1-7 (sin f28-1))) - (s0-1 sv-224 a1-7) - ) - ) + (let ((s0-1 vector-normalize!)) (set! sv-224 s3-0) (let ((a1-7 (sin f28-1))) (s0-1 sv-224 a1-7))) (let ((s0-2 vector+float*!)) (set! sv-240 s3-0) (set! sv-256 s3-0) (let ((s2-1 (-> s2-0 boundary-normal)) - (a3-1 (cos f28-1)) - ) - (s0-2 sv-240 sv-256 s2-1 a3-1) - ) - ) - ) - (else - (let ((v1-15 s3-0)) - (set! (-> v1-15 quad) (-> s0-0 quad)) - v1-15 - ) - ) - ) - ) - ) + (a3-1 (cos f28-1))) + (s0-2 sv-240 sv-256 s2-1 a3-1)))) + (else (let ((v1-15 s3-0)) (set! (-> v1-15 quad) (-> s0-0 quad)) v1-15))))) ((< (cos (-> arg0 flee-info min-reflect-angle)) f30-0) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) (vector-normalize! s3-0 (sin (-> arg0 flee-info min-reflect-angle))) (let ((s1-2 vector--float*!) - (s0-4 s3-0) - ) + (s0-4 s3-0)) (set! sv-272 s3-0) (let ((s2-2 (-> s2-0 boundary-normal)) - (a3-3 (cos (-> arg0 flee-info min-reflect-angle))) - ) - (s1-2 s0-4 sv-272 s2-2 a3-3) - ) - ) - (set! s1-0 #t) - ) + (a3-3 (cos (-> arg0 flee-info min-reflect-angle)))) + (s1-2 s0-4 sv-272 s2-2 a3-3))) + (set! s1-0 #t)) ((< f30-0 (cos (-> arg0 flee-info max-reflect-angle))) (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) f30-0) (vector-normalize! s3-0 (sin (-> arg0 flee-info max-reflect-angle))) (let ((s1-4 vector--float*!) - (s0-6 s3-0) - ) + (s0-6 s3-0)) (set! sv-288 s3-0) (let ((s2-3 (-> s2-0 boundary-normal)) - (a3-5 (cos (-> arg0 flee-info max-reflect-angle))) - ) - (s1-4 s0-6 sv-288 s2-3 a3-5) - ) - ) - (set! s1-0 #t) - ) - (else - (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) (* 2.0 f30-0)) - (set! s1-0 #t) - ) - ) - ) - ) - (vector-normalize-copy! arg1 s3-0 (-> arg0 flee-info deflection-max-dist)) - ) - ) + (a3-5 (cos (-> arg0 flee-info max-reflect-angle)))) + (s1-4 s0-6 sv-288 s2-3 a3-5))) + (set! s1-0 #t)) + (else (vector--float*! s3-0 s0-0 (-> s2-0 boundary-normal) (* 2.0 f30-0)) (set! s1-0 #t))))) + (vector-normalize-copy! arg1 s3-0 (-> arg0 flee-info deflection-max-dist)))) (set! (-> arg0 nav travel quad) (-> gp-0 quad)) - s1-0 - ) - ) + s1-0)) (defun fleeing-nav-enemy-adjust-travel ((arg0 fleeing-nav-enemy) (arg1 object)) (let ((s3-0 (new 'stack-no-clear 'matrix)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s4-0 quad) (-> arg0 saved-travel quad)) (set! (-> s4-0 y) 0.0) @@ -305,19 +199,15 @@ (set! (-> s5-0 y) 0.0) (vector-normalize! s4-0 1.0) (vector-normalize! s5-0 1.0) - (matrix-from-two-vectors-max-angle-partial! s3-0 s4-0 s5-0 (-> arg0 flee-info travel-rotate-speed) 0.2) - ) - (vector-matrix*! (-> arg0 saved-travel) s4-0 s3-0) - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 s4-0 s5-0 (-> arg0 flee-info travel-rotate-speed) 0.2)) + (vector-matrix*! (-> arg0 saved-travel) s4-0 s3-0)) (vector-float*! (-> arg0 saved-travel) (-> arg0 saved-travel) (-> arg0 flee-info deflection-max-dist)) (set! (-> arg0 nav travel quad) (-> arg0 saved-travel quad)) - (vector+! (-> arg0 nav target-pos) (-> arg0 collide-info trans) (-> arg0 nav travel)) - ) + (vector+! (-> arg0 nav target-pos) (-> arg0 collide-info trans) (-> arg0 nav travel))) (defbehavior fleeing-nav-enemy-chase-post-func fleeing-nav-enemy () (let ((gp-0 (new 'stack-no-clear 'matrix)) - (s5-0 (new 'stack-no-clear 'matrix)) - ) + (s5-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix gp-0 (-> self collide-info quat)) (set! (-> self collide-info old-y-angle-diff) 0.0) (nav-enemy-travel-post) @@ -325,199 +215,173 @@ (set! (-> self run-blend-interp) (acos (vector-dot (-> s5-0 vector 2) (-> gp-0 vector 2)))) (set! (-> self run-blend-interp) (/ (-> self run-blend-interp) (-> self flee-info blend_interp_angle))) (if (< (vector-dot (-> s5-0 vector 2) (the-as vector (-> gp-0 vector))) 0.0) - (set! (-> self run-blend-interp) (- (-> self run-blend-interp))) - ) - ) - ) + (set! (-> self run-blend-interp) (- (-> self run-blend-interp)))))) (defbehavior fleeing-nav-enemy-chase-post fleeing-nav-enemy () (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 (-> self collide-info trans) (target-pos 0)) (let* ((f0-1 (vector-dot (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self desired-travel) 1.0) gp-0)) (f0-3 (/ (- (-> self flee-info speed-adjust-center) f0-1) (-> self flee-info speed-adjust-range))) - (f1-3 (+ 1.0 f0-3)) - ) + (f1-3 (+ 1.0 f0-3))) (set! (-> self target-speed) (* (fmax (-> self flee-info min-speed-adjust) (fmin (-> self flee-info max-speed-adjust) f1-3)) - (-> self nav-info run-travel-speed) - ) - ) - ) + (-> self nav-info run-travel-speed)))) (when (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) (let ((s3-0 (new 'stack-no-clear 'matrix)) - (s5-2 (new 'stack-no-clear 'vector)) - ) + (s5-2 (new 'stack-no-clear 'vector))) (let ((s4-1 (new 'stack-no-clear 'vector))) (set! (-> s5-2 quad) (-> self desired-travel quad)) (set! (-> s5-2 y) 0.0) (set! (-> s4-1 quad) (-> gp-0 quad)) (set! (-> s4-1 y) 0.0) - (if (= (vector-normalize-ret-len! s5-2 1.0) 0.0) - (set! (-> s5-2 quad) (-> s4-1 quad)) - ) + (if (= (vector-normalize-ret-len! s5-2 1.0) 0.0) (set! (-> s5-2 quad) (-> s4-1 quad))) (vector-normalize-ret-len! s4-1 1.0) - (matrix-from-two-vectors-max-angle-partial! s3-0 s5-2 s4-1 (-> self flee-info max-flee-rotation) 0.25) - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 s5-2 s4-1 (-> self flee-info max-flee-rotation) 0.25)) (vector-matrix*! s5-2 s5-2 s3-0) - (vector-float*! (-> self desired-travel) s5-2 (-> self flee-info deflection-max-dist)) - ) - ) - ) - (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (set-time! (-> self last-reflection-time)) - ) + (vector-float*! (-> self desired-travel) s5-2 (-> self flee-info deflection-max-dist))))) + (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) (set-time! (-> self last-reflection-time))) (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) (fleeing-nav-enemy-chase-post-func) 0 - (none) - ) + (none)) (defstate nav-enemy-patrol (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-patrol) enter) - :exit (-> (method-of-type nav-enemy nav-enemy-patrol) exit) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-patrol) code) - :post (-> (method-of-type nav-enemy nav-enemy-patrol) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-patrol) + enter) + :exit + (-> (method-of-type nav-enemy nav-enemy-patrol) + exit) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-patrol) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-patrol) + post)) (defstate nav-enemy-notice (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-notice) enter) - :trans (behavior () - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 1.0 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek-toward-heading-vec! - (-> self collide-info) - (-> self nav travel) - (-> self rotate-speed) - (-> self turn-time) - ) - (if (and *target* (>= (-> self flee-info abort-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go-virtual nav-enemy-chase) - ) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post (-> (method-of-type nav-enemy nav-enemy-notice) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-notice) + enter) + :trans + (behavior () + (fleeing-nav-enemy-adjust-nav-info)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 1.0 1.2))) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (seek-toward-heading-vec! (-> self collide-info) (-> self nav travel) (-> self rotate-speed) (-> self turn-time)) + (if (and *target* + (>= (-> self flee-info abort-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-chase)) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post + (-> (method-of-type nav-enemy nav-enemy-notice) + post)) (defstate nav-enemy-chase (fleeing-nav-enemy) :virtual #t - :enter (behavior () - (logior! (-> self nav flags) (nav-control-flags navcf12)) - ((-> (method-of-type nav-enemy nav-enemy-chase) enter)) - ) - :exit (behavior () - (logclear! (-> self nav flags) (nav-control-flags navcf12)) - ) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-chase) code) - :post (-> (method-of-type nav-enemy nav-enemy-chase) post) - ) + :enter + (behavior () + (logior! (-> self nav flags) (nav-control-flags navcf12)) + ((-> (method-of-type nav-enemy nav-enemy-chase) enter))) + :exit + (behavior () + (logclear! (-> self nav flags) (nav-control-flags navcf12))) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-chase) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-chase) + post)) (defstate nav-enemy-stop-chase (fleeing-nav-enemy) :virtual #t - :enter (-> (method-of-type nav-enemy nav-enemy-stop-chase) enter) - :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-stop-chase) trans)) - (fleeing-nav-enemy-adjust-nav-info) - ) - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - :post (-> (method-of-type nav-enemy nav-enemy-stop-chase) post) - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + enter) + :trans + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-stop-chase) trans)) + (fleeing-nav-enemy-adjust-nav-info)) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code) + :post + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + post)) (defstate fleeing-nav-enemy-debug (fleeing-nav-enemy) - :enter (-> (method-of-type nav-enemy nav-enemy-chase) enter) - :code (behavior () - (let ((gp-0 (new-stack-vector0)) - (s5-0 (new-stack-vector0)) - ) - (set! (-> gp-0 x) 1.0) - (set! (-> s5-0 x) 1.0) - (loop - (when (cpad-pressed? 1 r3) - (suspend) - (go fleeing-nav-enemy-debug) - ) - (let ((s2-0 (new-stack-vector0)) - (s4-0 (new-stack-vector0)) - ) - (let ((s3-0 (new-stack-matrix0))) - (clmf-input s2-0 s4-0 1) - (vector-float*! s2-0 s2-0 409.6) - (vector-float*! s4-0 s4-0 1820.4445) - (matrix-axis-angle! s3-0 (-> *camera* local-down) (-> s2-0 y)) - (vector-matrix*! gp-0 gp-0 s3-0) - ) - (if *target* - (vector-! gp-0 (-> self collide-info trans) (target-pos 0)) - ) - (vector-normalize! gp-0 (-> self flee-info deflection-max-dist)) - (let ((s3-3 (new 'stack-no-clear 'vector))) - (set! (-> s3-3 quad) (-> self nav travel quad)) - (set! (-> self nav travel quad) (-> s5-0 quad)) - (set! (-> self desired-travel quad) (-> gp-0 quad)) - (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) - (set! (-> s5-0 quad) (-> self nav travel quad)) - (set! (-> self nav travel quad) (-> s3-3 quad)) - ) - (vector+! (-> self nav target-pos) (-> self collide-info trans) s4-0) - ) - (suspend) - ) - ) - ) - :post nav-enemy-travel-post - ) + :enter + (-> (method-of-type nav-enemy nav-enemy-chase) + enter) + :code + (behavior () + (let ((gp-0 (new-stack-vector0)) + (s5-0 (new-stack-vector0))) + (set! (-> gp-0 x) 1.0) + (set! (-> s5-0 x) 1.0) + (loop (when (cpad-pressed? 1 r3) + (suspend) + (go fleeing-nav-enemy-debug)) + (let ((s2-0 (new-stack-vector0)) + (s4-0 (new-stack-vector0))) + (let ((s3-0 (new-stack-matrix0))) + (clmf-input s2-0 s4-0 1) + (vector-float*! s2-0 s2-0 409.6) + (vector-float*! s4-0 s4-0 1820.4445) + (matrix-axis-angle! s3-0 (-> *camera* local-down) (-> s2-0 y)) + (vector-matrix*! gp-0 gp-0 s3-0)) + (if *target* (vector-! gp-0 (-> self collide-info trans) (target-pos 0))) + (vector-normalize! gp-0 (-> self flee-info deflection-max-dist)) + (let ((s3-3 (new 'stack-no-clear 'vector))) + (set! (-> s3-3 quad) (-> self nav travel quad)) + (set! (-> self nav travel quad) (-> s5-0 quad)) + (set! (-> self desired-travel quad) (-> gp-0 quad)) + (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) + (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) + (set! (-> s5-0 quad) (-> self nav travel quad)) + (set! (-> self nav travel quad) (-> s3-3 quad))) + (vector+! (-> self nav target-pos) (-> self collide-info trans) s4-0)) + (suspend)))) + :post nav-enemy-travel-post) (define *lightning-mole-hole* (new 'static 'vector :x -241664.0 :y 106496.0 :z -6393856.0)) (deftype lightning-mole (fleeing-nav-enemy) - ((debug-vector vector :inline) - (alt-actor entity-actor) - ) + ((debug-vector vector :inline) + (alt-actor entity-actor)) (:states - lightning-mole-debug-blend - lightning-mole-debug-run - lightning-mole-dive - lightning-mole-gone - lightning-mole-head-for-hole - lightning-mole-hiding - lightning-mole-yelp - ) - ) + lightning-mole-debug-blend + lightning-mole-debug-run + lightning-mole-dive + lightning-mole-gone + lightning-mole-head-for-hole + lightning-mole-hiding + lightning-mole-yelp)) - -(defskelgroup *lightning-mole-sg* lightning-mole lightning-mole-lod0-jg lightning-mole-idle-ja - ((lightning-mole-lod0-mg (meters 20)) - (lightning-mole-lod1-mg (meters 40)) - (lightning-mole-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 8) - :shadow lightning-mole-shadow-mg - ) +(defskelgroup *lightning-mole-sg* + lightning-mole + lightning-mole-lod0-jg + lightning-mole-idle-ja + ((lightning-mole-lod0-mg (meters 20)) (lightning-mole-lod1-mg (meters 40)) (lightning-mole-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8) + :shadow lightning-mole-shadow-mg) (defbehavior lightning-mole-task-complete? lightning-mole () (local-vars (sv-16 symbol)) @@ -527,429 +391,323 @@ (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (process-spawn-function - process - (lambda :behavior lightning-mole - () - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (level-hint-spawn - (text-id rolling-moles-resolution) - "sksp0112" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (none) - ) - :to self - ) - (format #t "lightning-mole task is complete~%") - ) - (else - ) - ) - sv-16 - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (process-spawn-function process + (lambda :behavior lightning-mole () + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (level-hint-spawn (text-id rolling-moles-resolution) "sksp0112" (the-as entity #f) *entity-pool* (game-task none)) + (none)) + :to + self) + (format #t "lightning-mole task is complete~%")) + (else)) + sv-16)) (defbehavior lightning-mole-hole-post lightning-mole () (set! (-> self nav target-pos quad) (-> *lightning-mole-hole* quad)) (nav-enemy-travel-post) 0 - (none) - ) + (none)) (defbehavior lightning-mole-run-code lightning-mole () (when (!= (ja-group) lightning-mole-run-ja) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! lightning-mole-run-ja) - ) - (loop - (ja :num! (loop! (-> self speed-adjust))) - (suspend) - ) - (none) - ) + (ja :group! lightning-mole-run-ja)) + (loop (ja :num! (loop! (-> self speed-adjust))) + (suspend)) + (none)) (defstate lightning-mole-debug-blend (lightning-mole) - :trans (behavior () - (let ((gp-0 (new-stack-vector0))) - (let ((a1-0 (new-stack-vector0))) - (clmf-input gp-0 a1-0 1) - ) - (set! (-> self run-blend-interp) (-> gp-0 y)) - ) - (set! (-> self speed-adjust) 1.0) - ) + :trans + (behavior () + (let ((gp-0 (new-stack-vector0))) + (let ((a1-0 (new-stack-vector0))) (clmf-input gp-0 a1-0 1)) + (set! (-> self run-blend-interp) (-> gp-0 y))) + (set! (-> self speed-adjust) 1.0)) :code lightning-mole-run-code - :post ja-post - ) + :post ja-post) (defstate lightning-mole-debug-run (lightning-mole) - :enter (behavior () - (set! (-> self speed-adjust) 1.0) - (set-vector! (-> self debug-vector) 0.0 0.0 1.0 1.0) - (set! (-> self saved-travel quad) (-> self debug-vector quad)) - ((-> (method-of-type nav-enemy nav-enemy-chase) enter)) - ) - :trans (behavior () - (when (cpad-pressed? 1 r3) - (logclear! (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r3)) - (logclear! (-> *cpad-list* cpads 1 button0-rel 0) (pad-buttons r3)) - (go lightning-mole-debug-run) - ) - ) + :enter + (behavior () + (set! (-> self speed-adjust) 1.0) + (set-vector! (-> self debug-vector) 0.0 0.0 1.0 1.0) + (set! (-> self saved-travel quad) (-> self debug-vector quad)) + ((-> (method-of-type nav-enemy nav-enemy-chase) enter))) + :trans + (behavior () + (when (cpad-pressed? 1 r3) + (logclear! (-> *cpad-list* cpads 1 button0-abs 0) (pad-buttons r3)) + (logclear! (-> *cpad-list* cpads 1 button0-rel 0) (pad-buttons r3)) + (go lightning-mole-debug-run))) :code lightning-mole-run-code - :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((s4-0 (new-stack-vector0)) - (a1-0 (new-stack-vector0)) - (s5-0 (new-stack-matrix0)) - ) - (clmf-input s4-0 a1-0 1) - (vector-float*! s4-0 s4-0 1820.4445) - (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) - (vector-matrix*! (-> self debug-vector) (-> self debug-vector) s5-0) - ) - (vector-normalize! (-> self debug-vector) (-> self flee-info deflection-max-dist)) - (camera-line-rel - (-> self collide-info trans) - (-> self debug-vector) - (new 'static 'vector4w :x #x80 :y #x80 :w #x80) - ) - (set! (-> gp-0 quad) (-> self debug-vector quad)) - (set! (-> self target-speed) (-> self nav-info run-travel-speed)) - (format *stdcon* "tgt-speed ~M defmd ~M~%" (-> self target-speed) (-> self flee-info deflection-max-dist)) - (if (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) - (vector-normalize-copy! (-> self desired-travel) gp-0 (-> self flee-info deflection-max-dist)) - ) - ) - (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) - (set-time! (-> self last-reflection-time)) - ) - (set! (-> self debug-vector quad) (-> self desired-travel quad)) - (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) - (fleeing-nav-enemy-chase-post-func) - (camera-line-rel - (-> self collide-info trans) - (-> self desired-travel) - (new 'static 'vector4w :x #x80 :w #x80) - ) - (camera-line-rel (-> self collide-info trans) (-> self nav travel) (new 'static 'vector4w :z #x80 :w #x80)) - (camera-line (-> self collide-info trans) (-> self nav target-pos) (new 'static 'vector4w :z #x80 :w #x80)) - ) - ) + :post + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((s4-0 (new-stack-vector0)) + (a1-0 (new-stack-vector0)) + (s5-0 (new-stack-matrix0))) + (clmf-input s4-0 a1-0 1) + (vector-float*! s4-0 s4-0 1820.4445) + (matrix-axis-angle! s5-0 (-> *camera* local-down) (-> s4-0 y)) + (vector-matrix*! (-> self debug-vector) (-> self debug-vector) s5-0)) + (vector-normalize! (-> self debug-vector) (-> self flee-info deflection-max-dist)) + (camera-line-rel (-> self collide-info trans) (-> self debug-vector) (new 'static 'vector4w :x #x80 :y #x80 :w #x80)) + (set! (-> gp-0 quad) (-> self debug-vector quad)) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (format *stdcon* "tgt-speed ~M defmd ~M~%" (-> self target-speed) (-> self flee-info deflection-max-dist)) + (if (time-elapsed? (-> self last-reflection-time) (-> self flee-info reflection-time)) + (vector-normalize-copy! (-> self desired-travel) gp-0 (-> self flee-info deflection-max-dist)))) + (if (fleeing-nav-enemy-clip-travel self (-> self desired-travel)) (set-time! (-> self last-reflection-time))) + (set! (-> self debug-vector quad) (-> self desired-travel quad)) + (fleeing-nav-enemy-adjust-travel self (-> self desired-travel)) + (fleeing-nav-enemy-chase-post-func) + (camera-line-rel (-> self collide-info trans) (-> self desired-travel) (new 'static 'vector4w :x #x80 :w #x80)) + (camera-line-rel (-> self collide-info trans) (-> self nav travel) (new 'static 'vector4w :z #x80 :w #x80)) + (camera-line (-> self collide-info trans) (-> self nav target-pos) (new 'static 'vector4w :z #x80 :w #x80)))) (defstate lightning-mole-gone (lightning-mole) - :code (behavior () - (cleanup-for-death self) - (ja-channel-set! 0) - (ja-post) - (while (-> self child) - (suspend) - ) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (ja-channel-set! 0) + (ja-post) + (while (-> self child) + (suspend)) + (deactivate self))) (defstate lightning-mole-hiding (lightning-mole) - :enter (behavior () - (ja-channel-set! 0) - (clear-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (task-closed? (-> self entity extra perm task) (task-status need-introduction)) - (ja-channel-set! 1) - (ja :group! lightning-mole-idle-ja) - (restore-collide-with-as (-> self collide-info)) - (go-virtual nav-enemy-idle) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :enter + (behavior () + (ja-channel-set! 0) + (clear-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (task-closed? (-> self entity extra perm task) (task-status need-introduction)) + (ja-channel-set! 1) + (ja :group! lightning-mole-idle-ja) + (restore-collide-with-as (-> self collide-info)) + (go-virtual nav-enemy-idle))) + :code + (behavior () + (loop (suspend)))) (defstate lightning-mole-dive (lightning-mole) - :trans (behavior () - (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.0) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'hide) - (let ((t9-1 send-event-function) - (v1-2 (-> self alt-actor)) - ) - (t9-1 - (if v1-2 - (-> v1-2 extra process) - ) - a1-1 - ) - ) - ) - ) - ) - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector+! gp-0 *lightning-mole-hole* (new 'static 'vector :x 81920.0 :y 40960.0)) - (hide-hud-quick) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (ambient-hint-spawn "gamcam20" (the-as vector #f) *entity-pool* 'camera) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! lightning-mole-dive-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> *camera-other-fov* data) 11650.845) - (vector-! s5-0 *lightning-mole-hole* gp-0) - (vector-normalize! s5-0 1.0) - (forward-down->inv-matrix *camera-other-matrix* s5-0 (-> *camera* local-down)) - ) - (set! (-> *camera-other-trans* quad) (-> gp-0 quad)) - (set! (-> *camera-other-root* quad) (-> *lightning-mole-hole* quad)) - (set! *camera-look-through-other* 2) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (lightning-mole-task-complete?) - (if *target* - (logclear! (-> *target* mask) (process-mask sleep)) - ) - (go lightning-mole-gone) - ) - :post lightning-mole-hole-post - ) + :trans + (behavior () + (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.0) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'hide) + (let ((t9-1 send-event-function) + (v1-2 (-> self alt-actor))) + (t9-1 (if v1-2 (-> v1-2 extra process)) a1-1))))) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector+! gp-0 *lightning-mole-hole* (new 'static 'vector :x 81920.0 :y 40960.0)) + (hide-hud-quick) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (ambient-hint-spawn "gamcam20" (the-as vector #f) *entity-pool* 'camera) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! lightning-mole-dive-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> *camera-other-fov* data) 11650.845) + (vector-! s5-0 *lightning-mole-hole* gp-0) + (vector-normalize! s5-0 1.0) + (forward-down->inv-matrix *camera-other-matrix* s5-0 (-> *camera* local-down))) + (set! (-> *camera-other-trans* quad) (-> gp-0 quad)) + (set! (-> *camera-other-root* quad) (-> *lightning-mole-hole* quad)) + (set! *camera-look-through-other* 2) + (suspend) + (ja :num! (seek! max f30-0)))) + (lightning-mole-task-complete?) + (if *target* (logclear! (-> *target* mask) (process-mask sleep))) + (go lightning-mole-gone)) + :post lightning-mole-hole-post) (defstate lightning-mole-head-for-hole (lightning-mole) - :enter (behavior () - (clear-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.0) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'hide) - (let ((t9-1 send-event-function) - (v1-3 (-> self alt-actor)) - ) - (t9-1 - (if v1-3 - (-> v1-3 extra process) - ) - a1-1 - ) - ) - ) - ) - (if (< (vector-vector-distance (-> self collide-info trans) *lightning-mole-hole*) 40960.0) - (go lightning-mole-dive) - ) - ) - :code (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) code) - :post lightning-mole-hole-post - ) + :enter + (behavior () + (clear-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (< (vector-vector-xz-distance *lightning-mole-hole* (-> self collide-info trans)) 61440.0) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'hide) + (let ((t9-1 send-event-function) + (v1-3 (-> self alt-actor))) + (t9-1 (if v1-3 (-> v1-3 extra process)) a1-1)))) + (if (< (vector-vector-distance (-> self collide-info trans) *lightning-mole-hole*) 40960.0) (go lightning-mole-dive))) + :code + (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) + code) + :post lightning-mole-hole-post) (defstate lightning-mole-yelp (lightning-mole) - :enter (behavior () - (clear-collide-with-as (-> self collide-info)) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter)) - ) - :exit (behavior () - (restore-collide-with-as (-> self collide-info)) - ) - :trans (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (ja-no-eval :group! lightning-mole-yelp-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (clear-collide-with-as (-> self collide-info)) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter))) + :exit + (behavior () + (restore-collide-with-as (-> self collide-info))) + :trans + (-> (method-of-type fleeing-nav-enemy nav-enemy-chase) + trans) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (ja-no-eval :group! lightning-mole-yelp-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate nav-enemy-stop-chase (lightning-mole) :virtual #t :code lightning-mole-run-code - :post fleeing-nav-enemy-chase-post - ) + :post fleeing-nav-enemy-chase-post) (defstate nav-enemy-chase (lightning-mole) :virtual #t - :enter (behavior () - (set! (-> self speed-adjust) 1.0) - (set! (-> self run-blend-interp) 0.0) - (vector-! (-> self saved-travel) (-> self collide-info trans) (target-pos 0)) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter)) - ) - :trans (behavior () - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - 0.0 - 0.0 - (let ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) + :enter + (behavior () + (set! (-> self speed-adjust) 1.0) + (set! (-> self run-blend-interp) 0.0) + (vector-! (-> self saved-travel) (-> self collide-info trans) (target-pos 0)) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) enter))) + :trans + (behavior () + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) 0.0 0.0 - (let ((s5-1 (new 'stack-no-clear 'vector))) - (vector-! s3-0 *lightning-mole-hole* (-> self collide-info trans)) - (vector-! s4-0 (-> self collide-info trans) (target-pos 0)) - (vector-! gp-0 *lightning-mole-hole* (target-pos 0)) - (let ((f26-0 (vector-normalize-ret-len! s3-0 1.0)) - (f28-0 (vector-normalize-ret-len! s4-0 1.0)) - ) - (vector-normalize! gp-0 1.0) - (set! (-> s5-1 quad) (-> *camera* tgt-face-mat vector 2 quad)) - (set! (-> s5-1 y) 0.0) - (vector-normalize! s5-1 1.0) - (let ((f24-0 (vector-dot s5-1 s4-0))) - (when (< f26-0 61440.0) - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 0) - (set! (-> a1-7 message) 'hide) - (let ((t9-8 send-event-function) - (v1-10 (-> self alt-actor)) - ) - (t9-8 - (if v1-10 - (-> v1-10 extra process) - ) - a1-7 - ) - ) - ) - ) - (if (and (< 40960.0 f26-0) - (< f26-0 81920.0) - (< f30-0 204800.0) - (< (+ 20480.0 f26-0) f28-0) - (< (cos 7281.778) (vector-dot s5-1 gp-0)) - (< (cos 7281.778) f24-0) - ) - (go lightning-mole-head-for-hole) - ) - ) - ) - ) - ) - ) - ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans)) - ) + (let ((f30-0 (vector-vector-distance (-> self collide-info trans) (target-pos 0)))) + 0.0 + 0.0 + (let ((s5-1 (new 'stack-no-clear 'vector))) + (vector-! s3-0 *lightning-mole-hole* (-> self collide-info trans)) + (vector-! s4-0 (-> self collide-info trans) (target-pos 0)) + (vector-! gp-0 *lightning-mole-hole* (target-pos 0)) + (let ((f26-0 (vector-normalize-ret-len! s3-0 1.0)) + (f28-0 (vector-normalize-ret-len! s4-0 1.0))) + (vector-normalize! gp-0 1.0) + (set! (-> s5-1 quad) (-> *camera* tgt-face-mat vector 2 quad)) + (set! (-> s5-1 y) 0.0) + (vector-normalize! s5-1 1.0) + (let ((f24-0 (vector-dot s5-1 s4-0))) + (when (< f26-0 61440.0) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 0) + (set! (-> a1-7 message) 'hide) + (let ((t9-8 send-event-function) + (v1-10 (-> self alt-actor))) + (t9-8 (if v1-10 (-> v1-10 extra process)) a1-7)))) + (if (and (< 40960.0 f26-0) + (< f26-0 81920.0) + (< f30-0 204800.0) + (< (+ 20480.0 f26-0) f28-0) + (< (cos 7281.778) (vector-dot s5-1 gp-0)) + (< (cos 7281.778) f24-0)) + (go lightning-mole-head-for-hole))))))) + ((-> (method-of-type fleeing-nav-enemy nav-enemy-chase) trans))) :code lightning-mole-run-code - :post fleeing-nav-enemy-chase-post - ) + :post fleeing-nav-enemy-chase-post) (defmethod attack-handler ((this lightning-mole) (arg0 process) (arg1 event-message-block)) (send-event arg0 'get-attack-count 1) (when (!= (-> this state) lightning-mole-yelp) (send-event arg0 'jump 32768.0 32768.0) - (go lightning-mole-yelp) - ) - #t - ) + (go lightning-mole-yelp)) + #t) (defmethod touch-handler ((this lightning-mole) (arg0 process) (arg1 event-message-block)) (when (!= (-> this state) lightning-mole-yelp) (send-event arg0 'jump 32768.0 32768.0) - (go lightning-mole-yelp) - ) - #t - ) + (go lightning-mole-yelp)) + #t) -(define *lightning-mole-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 7 - :turn-anim -1 - :notice-anim 6 - :run-anim 7 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 12 - :taunt-anim -1 - :die-anim -1 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 30) - :run-rotate-speed (degrees 3000) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 30) - :walk-rotate-speed (degrees 3000) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 35) - :stop-chase-distance (meters 45) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #t - :hover-if-no-ground #t - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *lightning-mole-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 7 + :turn-anim -1 + :notice-anim 6 + :run-anim 7 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 12 + :taunt-anim -1 + :die-anim -1 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 30) + :run-rotate-speed (degrees 3000) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 30) + :walk-rotate-speed (degrees 3000) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 35) + :stop-chase-distance (meters 45) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #t + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this lightning-mole) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 10240.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *lightning-mole-sg* '()) + (initialize-skeleton this *lightning-mole-sg* ()) (init-defaults! this *lightning-mole-nav-enemy-info*) (logclear! (-> this nav flags) (nav-control-flags navcf5 navcf6 navcf7)) (set! (-> this draw origin-joint-index) (the-as uint 3)) @@ -978,317 +736,250 @@ (set! (-> this flee-info max-flee-rotation) 364.0889) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go lightning-mole-gone) - ) + (go lightning-mole-gone)) ((task-closed? (-> this entity extra perm task) (task-status need-introduction)) - (go (method-of-object this nav-enemy-idle)) - ) - (else - (go lightning-mole-hiding) - ) - ) - (none) - ) + (go (method-of-object this nav-enemy-idle))) + (else (go lightning-mole-hiding))) + (none)) (defpartgroup group-peeper :id 456 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1768) - (sp-item 1769 :period (seconds 0.4) :length (seconds 0.1)) - (sp-item 1770 :period (seconds 0.4) :length (seconds 0.2)) - ) - ) + :parts + ((sp-item 1768) + (sp-item 1769 :period (seconds 0.4) :length (seconds 0.1)) + (sp-item 1770 :period (seconds 0.4) :length (seconds 0.2)))) (defpart 1768 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.25) - (:x (meters -2) (meters 4)) - (:y (meters -2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.04) (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.21333334) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.25) + (:x (meters -2) (meters 4)) + (:y (meters -2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.04) (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.21333334) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)))) (defpart 1769 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -2) (meters 4)) - (:y (meters -2)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.04) (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.21333334) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -2) (meters 4)) + (:y (meters -2)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.04) (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.21333334) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)))) (defpart 1770 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 5.0) - (:x (meters -1) (meters 2)) - (:y (meters 0)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.25) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:userdata 106496.0) - (:func 'check-drop-level-rolling-dirt) - (:conerot-x (degrees 0) (degrees 20)) - (:conerot-y (degrees 180) (degrees 180)) - (:conerot-radius (meters 0) (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 5.0) + (:x (meters -1) (meters 2)) + (:y (meters 0)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.25) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:userdata 106496.0) + (:func 'check-drop-level-rolling-dirt) + (:conerot-x (degrees 0) (degrees 20)) + (:conerot-y (degrees 180) (degrees 180)) + (:conerot-radius (meters 0) (meters 2)))) (defpart 1771 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0 1.0) - (:y (meters 0)) - (:scale-x (meters 0.15) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 128.0) - (:vel-y (meters 0.033333335) (meters 0.016666668)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:userdata 106496.0) - (:func 'check-drop-level-rolling-dirt-finish) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0 1.0) + (:y (meters 0)) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 128.0) + (:vel-y (meters 0.033333335) (meters 0.016666668)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:userdata 106496.0) + (:func 'check-drop-level-rolling-dirt-finish) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1772 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:scale-x (meters 0.15) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0 32.0) - (:b 64.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.14222223) - (:friction 0.9) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:scale-x (meters 0.15) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0 32.0) + (:b 64.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.14222223) + (:friction 0.9) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-rolling-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1771) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1771) gp-0))) + (none)) (defun check-drop-level-rolling-dirt-finish ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.05) - (sound-play "land-grass") - ) + (if (< (rand-float-gen) 0.05) (sound-play "land-grass")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1772) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1772) gp-0))) + (none)) -(deftype peeper (process-drawable) - () +(deftype peeper (process-drawable) () (:states - peeper-down - peeper-hide - peeper-up - peeper-wait - ) - ) - + peeper-down + peeper-hide + peeper-up + peeper-wait)) (defstate peeper-wait (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (let ((v0-0 (current-time))) - (set! (-> self state-time) v0-0) - v0-0 - ) - ) - ) - ) - :enter (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (seconds 1)) - (not (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) - ) - (go peeper-up) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (loop - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (let ((v0-0 (current-time))) (set! (-> self state-time) v0-0) v0-0)))) + :enter + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (seconds 1)) + (not (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))))) + (go peeper-up))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (loop (suspend))) + :post ja-post) (defstate peeper-hide (peeper) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (ja-no-eval :num! (seek! max 2.0)) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (logior! (-> self draw status) (draw-status hidden)) - (go peeper-wait) - ) - :post ja-post - ) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (ja-no-eval :num! (seek! max 2.0)) + (while (not (ja-done? 0)) + (suspend) + (ja-eval)) + (logior! (-> self draw status) (draw-status hidden)) + (go peeper-wait)) + :post ja-post) (defstate peeper-down (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go peeper-wait) - ) - ) - ) - :trans (behavior () - (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go peeper-wait) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - (let* ((f30-0 2.0) - (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-11 (the-as number (logior #x3f800000 v1-10))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-11)))) 1)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - (set-time! (-> self state-time)) - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (suspend) - ) - ) - ) - (go peeper-up) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go peeper-wait)))) + :trans + (behavior () + (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go peeper-wait))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)) + (let* ((f30-0 2.0) + (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-11 (the-as number (logior #x3f800000 v1-10)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-11)))) 1)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (spawn (-> self part) (-> self root trans)) + (suspend)) + (set-time! (-> self state-time)) + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (suspend)))) + (go peeper-up)) + :post ja-post) (defstate peeper-up (peeper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go peeper-hide) - ) - ) - ) - :enter (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go peeper-hide) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! lightning-mole-peep-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go peeper-down) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go peeper-hide)))) + :enter + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (if (and *target* (>= 61440.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go peeper-hide))) + :code + (behavior () + (loop (ja-no-eval :group! lightning-mole-peep-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go peeper-down))) + :post ja-post) (defmethod init-from-entity! ((this peeper) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *lightning-mole-sg* '()) + (initialize-skeleton this *lightning-mole-sg* ()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 456) this)) (set! (-> this sound) (new 'process 'ambient-sound arg0 (-> this root trans))) (go peeper-up) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-obs.gc b/goal_src/jak1/levels/rolling/rolling-obs.gc index 998f089423..5ea57458d1 100644 --- a/goal_src/jak1/levels/rolling/rolling-obs.gc +++ b/goal_src/jak1/levels/rolling/rolling-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/util/sync-info.gc") (require "engine/game/task/task-control.gc") (require "engine/common-obs/ticky.gc") @@ -14,60 +13,45 @@ ;; DECOMP BEGINS -(deftype rolling-part (part-spawner) - () - ) +(deftype rolling-part (part-spawner) ()) +(deftype rollingcam (process-hidden) ()) -(deftype rollingcam (process-hidden) - () - ) - - -(defskelgroup *rollingcam-sg* rollingcam rollingcam-lod0-jg rollingcam-anim-ja - ((rollingcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *rollingcam-sg* + rollingcam + rollingcam-lod0-jg + rollingcam-anim-ja + ((rollingcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (deftype pusher-base (process-drawable) - ((root collide-shape-moving :override) - (max-frame float) - ) - ) - + ((root collide-shape-moving :override) + (max-frame float))) (deftype pusher (pusher-base) - ((sync sync-info-paused :inline) - (cyl cylinder :inline) - ) + ((sync sync-info-paused :inline) + (cyl cylinder :inline)) (:states - pusher-idle - ) - ) - + pusher-idle)) (deftype gorge-pusher (pusher-base) - ((min-frame float) - ) + ((min-frame float)) (:states - gorge-pusher-idle - ) - ) + gorge-pusher-idle)) - -(defskelgroup *pusher-sg* pusher pusher-lod0-jg pusher-idle-ja - ((pusher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *pusher-sg* + pusher + pusher-lod0-jg + pusher-idle-ja + ((pusher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defbehavior pusher-base-init pusher-base () (logior! (-> self mask) (process-mask enemy platform)) (let ((gp-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-others)))) (set! (-> gp-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> gp-0 reaction) default-collision-reaction) - (set! (-> gp-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> gp-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s5-0 (new 'process 'collide-shape-prim-group gp-0 (the-as uint 1) 0))) (set! (-> s5-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s5-0 collide-with) (collide-kind target)) @@ -82,42 +66,31 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 8192.0 0.0 0.0 28672.0) - (append-prim s5-0 s4-0) - ) - ) + (append-prim s5-0 s4-0))) (set! (-> gp-0 nav-radius) (* 0.75 (-> gp-0 root-prim local-sphere w))) (backup-collide-with-as gp-0) (set! (-> self root) gp-0) - gp-0 - ) - ) + gp-0)) (defstate pusher-idle (pusher) :trans rider-trans - :code (behavior () - (loop - (let ((f0-0 -1.0)) - (when (and *target* *camera*) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (camera-pos)) - (set! f0-0 (ray-capsule-intersect (-> self cyl) (camera-pos) gp-0)) - ) - ) - (if (< f0-0 0.0) - (ja :num! (seek! (get-current-value-with-mirror (-> self sync) (-> self max-frame)))) - (ja :num! (seek! 0.0)) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop (let ((f0-0 -1.0)) + (when (and *target* *camera*) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (camera-pos)) + (set! f0-0 (ray-capsule-intersect (-> self cyl) (camera-pos) gp-0)))) + (if (< f0-0 0.0) + (ja :num! (seek! (get-current-value-with-mirror (-> self sync) (-> self max-frame)))) + (ja :num! (seek! 0.0)))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this pusher) (arg0 entity-actor)) (pusher-base-init) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *pusher-sg* '()) + (initialize-skeleton this *pusher-sg* ()) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this max-frame) (res-lump-float arg0 'max-frame :default (the float (ja-num-frames 0)))) (set! (-> this cyl origin quad) (-> this root trans quad)) @@ -126,27 +99,22 @@ (set! (-> this cyl length) 36864.0) (set! (-> this cyl radius) 20480.0) (go pusher-idle) - (none) - ) + (none)) (defstate gorge-pusher-idle (gorge-pusher) :trans rider-trans - :code (behavior () - (loop - (if (task-closed? (game-task rolling-race) (task-status need-introduction)) - (ja :num! (seek! (-> self min-frame))) - (ja :num! (seek! (-> self max-frame))) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop (if (task-closed? (game-task rolling-race) (task-status need-introduction)) + (ja :num! (seek! (-> self min-frame))) + (ja :num! (seek! (-> self max-frame)))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this gorge-pusher) (arg0 entity-actor)) (pusher-base-init) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *pusher-sg* '()) + (initialize-skeleton this *pusher-sg* ()) (set! (-> this max-frame) (res-lump-float arg0 'max-frame :default 1.0)) (set! (-> this max-frame) (* (-> this max-frame) (the float (ja-num-frames 0)))) (set! (-> this min-frame) (res-lump-float arg0 'min-frame)) @@ -155,434 +123,303 @@ ((task-closed? (game-task rolling-race) (task-status need-introduction)) (let ((v1-6 (-> this skel root-channel 0))) (set! (-> v1-6 num-func) num-func-identity) - (set! (-> v1-6 frame-num) (-> this min-frame)) - ) - ) + (set! (-> v1-6 frame-num) (-> this min-frame)))) (else - (let ((v1-10 (-> this skel root-channel 0))) - (set! (-> v1-10 num-func) num-func-identity) - (set! (-> v1-10 frame-num) (-> this max-frame)) - ) - ) - ) + (let ((v1-10 (-> this skel root-channel 0))) + (set! (-> v1-10 num-func) num-func-identity) + (set! (-> v1-10 frame-num) (-> this max-frame))))) (go gorge-pusher-idle) - (none) - ) + (none)) (deftype dark-plant (process-drawable) - ((num-alts int32) - (alts entity-actor 4) - ) + ((num-alts int32) + (alts entity-actor 4)) (:states - dark-plant-death - dark-plant-gone - dark-plant-idle - dark-plant-sprout - dark-plant-startup - ) - ) + dark-plant-death + dark-plant-gone + dark-plant-idle + dark-plant-sprout + dark-plant-startup)) - -(defskelgroup *dark-plant-sg* dark-plant dark-plant-lod0-jg dark-plant-idle-ja - ((dark-plant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2.25 0 6) - ) +(defskelgroup *dark-plant-sg* + dark-plant + dark-plant-lod0-jg + dark-plant-idle-ja + ((dark-plant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2.25 0 6)) (defun dark-plant-check-target ((arg0 dark-plant)) - (the-as symbol (and *target* (and (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) - (send-event *target* 'query 'powerup (pickup-type eco-green)) - ) - ) - ) - ) + (the-as symbol + (and *target* + (and (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) + (send-event *target* 'query 'powerup (pickup-type eco-green)))))) (defun dark-plant-randomize ((arg0 dark-plant)) (quaternion-axis-angle! (-> arg0 root quat) 0.0 1.0 0.0 (rand-vu-float-range 0.0 65536.0)) (let ((s5-1 (new 'stack-no-clear 'vector))) (set-vector! s5-1 (rand-vu-float-range -1024.0 1024.0) 0.0 (rand-vu-float-range -1024.0 1024.0) 1.0) - (vector+! (-> arg0 root trans) (-> arg0 entity extra trans) s5-1) - ) - ) + (vector+! (-> arg0 root trans) (-> arg0 entity extra trans) s5-1))) (defun dark-plants-all-done ((arg0 dark-plant)) - (loop - (if (!= (-> arg0 state) dark-plant-gone) - (return #f) - ) - (if (zero? (-> arg0 num-alts)) - (return #t) - ) + (loop (if (!= (-> arg0 state) dark-plant-gone) (return #f)) + (if (zero? (-> arg0 num-alts)) (return #t)) (let ((v1-9 (-> arg0 alts 0 extra process))) - (if (not v1-9) - (return #t) - ) - (if (= v1-9 arg0) - (return #t) - ) - (set! arg0 (the-as dark-plant v1-9)) - ) - ) - (the-as symbol #f) - ) + (if (not v1-9) (return #t)) + (if (= v1-9 arg0) (return #t)) + (set! arg0 (the-as dark-plant v1-9)))) + (the-as symbol #f)) (defun dark-plant-has-bad-neighbor ((arg0 dark-plant)) (dotimes (v1-0 (-> arg0 num-alts)) - (let ((a1-4 (-> arg0 alts v1-0 extra process))) - (if (and a1-4 (!= (-> a1-4 state) dark-plant-gone)) - (return #t) - ) - ) - ) - #f - ) + (let ((a1-4 (-> arg0 alts v1-0 extra process))) (if (and a1-4 (!= (-> a1-4 state) dark-plant-gone)) (return #t)))) + #f) (defbehavior dark-plant-trans dark-plant () - (if (dark-plant-check-target self) - (go dark-plant-death) - ) - (none) - ) + (if (dark-plant-check-target self) (go dark-plant-death)) + (none)) (defstate dark-plant-sprout (dark-plant) :trans dark-plant-trans - :code (behavior () - (dark-plant-randomize self) - (logclear! (-> self draw status) (draw-status hidden)) - (sound-play "darkvine-grow") - (ja-no-eval :group! dark-plant-sprout-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-idle) - ) - :post ja-post - ) + :code + (behavior () + (dark-plant-randomize self) + (logclear! (-> self draw status) (draw-status hidden)) + (sound-play "darkvine-grow") + (ja-no-eval :group! dark-plant-sprout-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-idle)) + :post ja-post) (defstate dark-plant-gone (dark-plant) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (let* ((f30-0 1500.0) - (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-5 (the-as number (logior #x3f800000 v1-4))) - (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-5)))) 3000)) - ) - (set-time! (-> self state-time)) - (loop - (when (and (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) - (!= (get-task-status (game-task rolling-plants)) 7) - ) - (cond - ((time-elapsed? (-> self state-time) gp-0) - (go dark-plant-sprout) - ) - ((dark-plant-check-target self) - (set-time! (-> self state-time)) - ) - ((not (dark-plant-has-bad-neighbor self)) - (set-time! (-> self state-time)) - ) - (else - ) - ) - ) - (suspend) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (let* ((f30-0 1500.0) + (v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-5 (the-as number (logior #x3f800000 v1-4))) + (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-5)))) 3000))) + (set-time! (-> self state-time)) + (loop (when (and (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) + (!= (get-task-status (game-task rolling-plants)) 7)) + (cond + ((time-elapsed? (-> self state-time) gp-0) (go dark-plant-sprout)) + ((dark-plant-check-target self) (set-time! (-> self state-time))) + ((not (dark-plant-has-bad-neighbor self)) (set-time! (-> self state-time))) + (else))) + (suspend)))) + :post ja-post) (defstate dark-plant-death (dark-plant) - :code (behavior () - (spawn (-> self part) (-> self root trans)) - (ja-channel-push! 1 (seconds 0.2)) - (sound-play "darkvine-kill") - (ja-no-eval :group! dark-plant-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-gone) - ) - :post ja-post - ) + :code + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-channel-push! 1 (seconds 0.2)) + (sound-play "darkvine-kill") + (ja-no-eval :group! dark-plant-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-gone)) + :post ja-post) (defstate dark-plant-idle (dark-plant) :trans dark-plant-trans - :code (behavior () - (loop - (when (and (logtest? (-> self draw status) (draw-status was-drawn)) - *target* - (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (if (rand-vu-percent? 0.3) - (sound-play "darkvine-move") - ) - (when (task-closed? (game-task rolling-plants) (task-status need-hint)) - (level-hint-spawn (text-id rolling-plants-hint) "sksp0113" (the-as entity #f) *entity-pool* (game-task none)) - (if (not (send-event *target* 'query 'powerup (pickup-type eco-green))) - (level-hint-spawn - (text-id rolling-plants-hint-eco-green) - "sksp0114" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) - (set! (-> gp-1 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) - (let ((f30-1 0.9) - (f28-0 0.25) - ) - (set! (-> gp-1 param 1) (+ f30-1 (* f28-0 (rand-float-gen)))) - ) - (set! (-> gp-1 frame-num) 0.0) - (joint-control-channel-group! gp-1 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-2 (-> self skel root-channel 0))) - (set! (-> gp-2 param 0) (the float (+ (-> gp-2 frame-group data 0 length) -1))) - (let ((f30-2 0.9) - (f28-1 0.25) - ) - (set! (-> gp-2 param 1) (+ f30-2 (* f28-1 (rand-float-gen)))) - ) - (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (when (and (logtest? (-> self draw status) (draw-status was-drawn)) + *target* + (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (if (rand-vu-percent? 0.3) (sound-play "darkvine-move")) + (when (task-closed? (game-task rolling-plants) (task-status need-hint)) + (level-hint-spawn (text-id rolling-plants-hint) "sksp0113" (the-as entity #f) *entity-pool* (game-task none)) + (if (not (send-event *target* 'query 'powerup (pickup-type eco-green))) + (level-hint-spawn (text-id rolling-plants-hint-eco-green) "sksp0114" (the-as entity #f) *entity-pool* (game-task none))))) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) + (set! (-> gp-1 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) + (let ((f30-1 0.9) + (f28-0 0.25)) + (set! (-> gp-1 param 1) (+ f30-1 (* f28-0 (rand-float-gen))))) + (set! (-> gp-1 frame-num) 0.0) + (joint-control-channel-group! gp-1 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)) + (until (ja-done? 0) + (suspend) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 param 0) (the float (+ (-> gp-2 frame-group data 0 length) -1))) + (let ((f30-2 0.9) + (f28-1 0.25)) + (set! (-> gp-2 param 1) (+ f30-2 (* f28-1 (rand-float-gen))))) + (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-seek!))))) + :post ja-post) (defstate dark-plant-startup (dark-plant) :trans dark-plant-trans - :code (behavior () - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) - (set! (-> gp-0 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) - (set! (-> gp-0 param 1) 1.0) - (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) - (joint-control-channel-group! gp-0 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go dark-plant-idle) - ) - :post ja-post - ) + :code + (behavior () + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim dark-plant-idle-ja)) + (set! (-> gp-0 param 0) (the float (+ (-> (the-as art-joint-anim dark-plant-idle-ja) data 0 length) -1))) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) (* (rand-float-gen) (the float (ja-num-frames 0)))) + (joint-control-channel-group! gp-0 (the-as art-joint-anim dark-plant-idle-ja) num-func-seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go dark-plant-idle)) + :post ja-post) (defpartgroup group-dark-plant :id 455 :duration (seconds 0.14) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1764) (sp-item 2356)) - ) + :parts ((sp-item 1764) (sp-item 2356))) (defpart 2356 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 192.0 64.0) - (:b 0.0 32.0) - (:a 96.0) - (:fade-g -3.0) - (:fade-a -2.4) - (:timer (seconds 0.14)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 192.0 64.0) + (:b 0.0 32.0) + (:a 96.0) + (:fade-g -3.0) + (:fade-a -2.4) + (:timer (seconds 0.14)) + (:flags (bit2 bit3 bit14)))) (defpart 1764 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 128.0) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0 128.0) - (:g 192.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0) (meters 0.02)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0) (meters 0.0013333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 45)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4.5)) - (:rotate-y (degrees -15) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 128.0) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0 128.0) + (:g 192.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0) (meters 0.02)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0) (meters 0.0013333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 45)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4.5)) + (:rotate-y (degrees -15) (degrees 30)))) (defmethod init-from-entity! ((this dark-plant) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *dark-plant-sg* '()) + (initialize-skeleton this *dark-plant-sg* ()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 455) this)) (set! (-> this num-alts) (min 4 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s5-3 (-> this num-alts)) - (set! (-> this alts s5-3) (entity-actor-lookup (-> this entity) 'alt-actor s5-3)) - ) - (if (zero? (-> this num-alts)) - (format 0 "ERROR: ~S has no alternates~%" (-> this name)) - ) + (set! (-> this alts s5-3) (entity-actor-lookup (-> this entity) 'alt-actor s5-3))) + (if (zero? (-> this num-alts)) (format 0 "ERROR: ~S has no alternates~%" (-> this name))) (dark-plant-randomize this) (case (get-task-status (game-task rolling-plants)) - (((task-status invalid) (task-status need-resolution)) - (go dark-plant-gone) - ) - (else - (go dark-plant-startup) - ) - ) - (none) - ) + (((task-status invalid) (task-status need-resolution)) (go dark-plant-gone)) + (else (go dark-plant-startup))) + (none)) (deftype happy-plant (process-drawable) - ((root collide-shape :override) - (alt-actor entity-actor) - ) + ((root collide-shape :override) + (alt-actor entity-actor)) (:states - happy-plant-init - happy-plant-opened - happy-plant-opening - ) - ) + happy-plant-init + happy-plant-opened + happy-plant-opening)) - -(defskelgroup *happy-plant-sg* happy-plant happy-plant-lod0-jg happy-plant-init-ja - ((happy-plant-lod0-mg (meters 20)) (happy-plant-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.25 0 6) - ) +(defskelgroup *happy-plant-sg* + happy-plant + happy-plant-lod0-jg + happy-plant-init-ja + ((happy-plant-lod0-mg (meters 20)) (happy-plant-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.25 0 6)) (defstate happy-plant-opened (happy-plant) - :code (behavior () - (loop - (ja-no-eval :group! happy-plant-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (ja-no-eval :group! happy-plant-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate happy-plant-opening (happy-plant) - :exit (behavior () - (when *target* - (logclear! (-> *target* mask) (process-mask sleep)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) - :code (behavior () - (close-specific-task! (game-task rolling-plants) (task-status need-reminder)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self mask) (process-mask actor-pause)) - (while (and *target* (< (vector-vector-distance (-> self root trans) (target-pos 0)) 24576.0)) - (suspend) - ) - (let ((gp-2 - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *rollingcam-sg* #f :to self)) - ) - ) - (let ((s5-1 (get-process *default-dead-pool* othercam #x4000))) - (ppointer->handle (when s5-1 - (let ((t9-8 (method-of-type othercam activate))) - (t9-8 (the-as othercam s5-1) (-> gp-2 process 0) 'othercam (the-as pointer #x70004000)) - ) - (run-now-in-process s5-1 othercam-init-by-other (-> gp-2 process 0) 4 #f #t) - (-> s5-1 ppointer) - ) - ) - ) - (let ((s5-3 - (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 55 :to self)) - ) - ) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (send-event (-> gp-2 process 0) 'anim-mode 'clone-anim) - (ja-play-spooled-anim - (new 'static 'spool-anim - :name "happy-plant-open" - :index 5 - :parts 2 - :command-list '((0 send-event target draw #f) (10000 send-event target draw #t)) - ) - (the-as art-joint-anim #f) - (the-as art-joint-anim happy-plant-idle-ja) - (the-as (function process-drawable symbol) false-func) - ) - (ja-channel-set! 1) - (ja :group! happy-plant-idle-ja) - (if (handle->process (the-as int gp-2)) - (deactivate (-> gp-2 process 0)) - ) - (let ((gp-3 (handle->process s5-3))) - (when gp-3 - (send-event gp-3 'stop-cloning) - (let ((s5-4 (new-stack-vector0))) - (vector<-cspace! s5-4 (joint-node happy-plant-lod0-jg fuelcell)) - (send-event gp-3 'trans s5-4) - ) - ) - ) - ) - ) - (restore-collide-with-as (-> self root)) - (go happy-plant-opened) - ) - :post transform-post - ) + :exit + (behavior () + (when *target* + (logclear! (-> *target* mask) (process-mask sleep)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause)))) + :code + (behavior () + (close-specific-task! (game-task rolling-plants) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self mask) (process-mask actor-pause)) + (while (and *target* (< (vector-vector-distance (-> self root trans) (target-pos 0)) 24576.0)) + (suspend)) + (let ((gp-2 (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *rollingcam-sg* #f :to self)))) + (let ((s5-1 (get-process *default-dead-pool* othercam #x4000))) + (ppointer->handle (when s5-1 + (let ((t9-8 (method-of-type othercam activate))) + (t9-8 (the-as othercam s5-1) (-> gp-2 process 0) 'othercam (the-as pointer #x70004000))) + (run-now-in-process s5-1 othercam-init-by-other (-> gp-2 process 0) 4 #f #t) + (-> s5-1 ppointer)))) + (let ((s5-3 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) 55 :to self)))) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (send-event (-> gp-2 process 0) 'anim-mode 'clone-anim) + (ja-play-spooled-anim (new 'static + 'spool-anim + :name "happy-plant-open" + :index 5 + :parts 2 + :command-list + '((0 send-event target draw #f) (10000 send-event target draw #t))) + (the-as art-joint-anim #f) + (the-as art-joint-anim happy-plant-idle-ja) + (the-as (function process-drawable symbol) false-func)) + (ja-channel-set! 1) + (ja :group! happy-plant-idle-ja) + (if (handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0))) + (let ((gp-3 (handle->process s5-3))) + (when gp-3 + (send-event gp-3 'stop-cloning) + (let ((s5-4 (new-stack-vector0))) + (vector<-cspace! s5-4 (joint-node happy-plant-lod0-jg fuelcell)) + (send-event gp-3 'trans s5-4)))))) + (restore-collide-with-as (-> self root)) + (go happy-plant-opened)) + :post transform-post) (defstate happy-plant-init (happy-plant) - :trans (behavior () - (when (-> self alt-actor) - (spool-push *art-control* "happy-plant-open" 0 self -99.0) - (let* ((gp-0 (-> self alt-actor extra process)) - (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) dark-plant)) - gp-0 - ) - ) - ) - (when a0-2 - (if (dark-plants-all-done (the-as dark-plant a0-2)) - (go happy-plant-opening) - ) - ) - ) - ) - ) - :code (behavior () - (clear-collide-with-as (-> self root)) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (when (-> self alt-actor) + (spool-push *art-control* "happy-plant-open" 0 self -99.0) + (let* ((gp-0 (-> self alt-actor extra process)) + (a0-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) dark-plant)) gp-0))) + (when a0-2 + (if (dark-plants-all-done (the-as dark-plant a0-2)) (go happy-plant-opening)))))) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this happy-plant) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -593,60 +430,43 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *happy-plant-sg* '()) + (initialize-skeleton this *happy-plant-sg* ()) (set! (-> this alt-actor) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (case (get-task-status (game-task rolling-plants)) (((task-status invalid)) (let ((v1-19 (-> this skel root-channel 0))) - (set! (-> v1-19 frame-group) (the-as art-joint-anim (-> this draw art-group data 4))) - ) - (go happy-plant-opened) - ) + (set! (-> v1-19 frame-group) (the-as art-joint-anim (-> this draw art-group data 4)))) + (go happy-plant-opened)) (((task-status need-resolution)) (let ((s5-1 (new 'stack-no-clear 'vector))) (let ((v1-23 (-> this skel root-channel 0))) - (set! (-> v1-23 frame-group) (the-as art-joint-anim (-> this draw art-group data 4))) - ) + (set! (-> v1-23 frame-group) (the-as art-joint-anim (-> this draw art-group data 4)))) (logior! (-> this skel status) (janim-status inited)) (ja-post) (logclear! (-> this skel status) (janim-status inited)) (vector<-cspace! s5-1 (-> this node-list data 25)) - (birth-pickup-at-point s5-1 (pickup-type fuel-cell) 55.0 #f this (the-as fact-info #f)) - ) - (go happy-plant-opened) - ) - (else - (go happy-plant-init) - ) - ) - (none) - ) + (birth-pickup-at-point s5-1 (pickup-type fuel-cell) 55.0 #f this (the-as fact-info #f))) + (go happy-plant-opened)) + (else (go happy-plant-init))) + (none)) (deftype race-time (structure) - ((digit int8 5) - ) - :pack-me - ) - + ((digit int8 5)) + :pack-me) (defun race-time-copy! ((arg0 race-time) (arg1 race-time)) (dotimes (v1-0 5) - (set! (-> arg0 digit v1-0) (-> arg1 digit v1-0)) - ) - #f - ) + (set! (-> arg0 digit v1-0) (-> arg1 digit v1-0))) + #f) (defun seconds->race-time ((arg0 race-time) (arg1 time-frame)) (let* ((v1-1 (max 0 (min #x2bf1d arg1))) - (f0-1 (* 0.0033333334 (the float v1-1))) - ) + (f0-1 (* 0.0033333334 (the float v1-1)))) (set! (-> arg0 digit 0) (the int (* 0.016666668 f0-1))) (let ((f0-2 (- f0-1 (* 60.0 (the float (-> arg0 digit 0)))))) (set! (-> arg0 digit 1) (the int (* 0.1 f0-2))) @@ -654,337 +474,212 @@ (set! (-> arg0 digit 2) (the int f0-3)) (let ((f0-4 (- f0-3 (the float (-> arg0 digit 2))))) (set! (-> arg0 digit 3) (the int (* 10.0 f0-4))) - (let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))) - (set! (-> arg0 digit 4) (the int (* 100.0 f0-5))) - ) - ) - ) - ) - ) - (none) - ) + (let ((f0-5 (- f0-4 (* 0.1 (the float (-> arg0 digit 3)))))) (set! (-> arg0 digit 4) (the int (* 100.0 f0-5)))))))) + (none)) (defun race-time->seconds ((arg0 race-time)) (let ((f0-5 (+ (the float (* 60 (-> arg0 digit 0))) (the float (* 10 (-> arg0 digit 1))) (the float (-> arg0 digit 2)) (* 0.1 (the float (-> arg0 digit 3))) - (* 0.01 (the float (-> arg0 digit 4))) - ) - ) - ) - (the int (* 300.0 f0-5)) - ) - ) + (* 0.01 (the float (-> arg0 digit 4)))))) + (the int (* 300.0 f0-5)))) (defun race-time-less-than ((arg0 race-time) (arg1 race-time)) (dotimes (v1-0 5) (cond - ((< (-> arg0 digit v1-0) (-> arg1 digit v1-0)) - (return #t) - ) - ((< (-> arg1 digit v1-0) (-> arg0 digit v1-0)) - (return #f) - ) - ) - ) - #f - ) + ((< (-> arg0 digit v1-0) (-> arg1 digit v1-0)) (return #t)) + ((< (-> arg1 digit v1-0) (-> arg0 digit v1-0)) (return #f)))) + #f) (defun race-time-save ((arg0 race-time) (arg1 task-control)) (dotimes (s4-0 5) - (save-reminder arg1 (-> arg0 digit s4-0) s4-0) - ) - #f - ) + (save-reminder arg1 (-> arg0 digit s4-0) s4-0)) + #f) (defun race-time-read ((arg0 race-time) (arg1 task-control) (arg2 time-frame)) (dotimes (s3-0 5) - (set! (-> arg0 digit s3-0) (get-reminder arg1 s3-0)) - ) + (set! (-> arg0 digit s3-0) (get-reminder arg1 s3-0))) (let ((a1-3 (new 'stack 'race-time))) (set! (-> a1-3 digit 4) 1) - (if (race-time-less-than arg0 a1-3) - (seconds->race-time arg0 arg2) - ) - ) - (none) - ) + (if (race-time-less-than arg0 a1-3) (seconds->race-time arg0 arg2))) + (none)) -(defskelgroup *rolling-start-whole-sg* rolling-start rolling-start-whole-lod0-jg rolling-start-idle-ja - ((rolling-start-whole-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *rolling-start-whole-sg* + rolling-start + rolling-start-whole-lod0-jg + rolling-start-idle-ja + ((rolling-start-whole-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) -(defskelgroup *rolling-start-broken-sg* rolling-start rolling-start-broken-lod0-jg rolling-start-idle-ja - ((rolling-start-broken-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 30) - ) +(defskelgroup *rolling-start-broken-sg* + rolling-start + rolling-start-broken-lod0-jg + rolling-start-idle-ja + ((rolling-start-broken-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 30)) (deftype rolling-start (process-drawable) - ((whole-look lod-set :inline) - (broken-look lod-set :inline) - ) - (:states - (rolling-start-break symbol) - rolling-start-whole - ) - ) - + ((whole-look lod-set :inline) + (broken-look lod-set :inline)) + (:states (rolling-start-break symbol) + rolling-start-whole)) (defstate rolling-start-break (rolling-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('unbreak) - (go rolling-start-whole) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (ja-no-eval :group! rolling-start-break-whole-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (lods-assign! (-> self draw) (-> self broken-look)) - (ja-no-eval :group! rolling-start-break-broken-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (ja-no-eval :group! rolling-start-broken-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('unbreak) (go rolling-start-whole)))) + :code + (behavior ((arg0 symbol)) + (ja-no-eval :group! rolling-start-break-whole-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (if arg0 - (deactivate self) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (lods-assign! (-> self draw) (-> self broken-look)) + (ja-no-eval :group! rolling-start-break-broken-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop (ja-no-eval :group! rolling-start-broken-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if arg0 (deactivate self)))) + :post ja-post) (defstate rolling-start-whole (rolling-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('break) - (sound-play "cool-rolling-st") - (go rolling-start-break #f) - ) - (('break-and-die) - (go rolling-start-break #t) - ) - ) - ) - :code (behavior () - (lods-assign! (-> self draw) (-> self whole-look)) - (loop - (ja-no-eval :group! rolling-start-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('break) (sound-play "cool-rolling-st") (go rolling-start-break #f)) + (('break-and-die) (go rolling-start-break #t)))) + :code + (behavior () + (lods-assign! (-> self draw) (-> self whole-look)) + (loop (ja-no-eval :group! rolling-start-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defbehavior rolling-start-init-by-other rolling-start ((arg0 vector) (arg1 float)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) - (initialize-skeleton self *rolling-start-whole-sg* '()) + (initialize-skeleton self *rolling-start-whole-sg* ()) (setup-lods! (-> self whole-look) *rolling-start-whole-sg* (-> self draw art-group) (-> self entity)) (setup-lods! (-> self broken-look) *rolling-start-broken-sg* (-> self draw art-group) (-> self entity)) - (let ((s5-1 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-1 arg1) - (matrix->quaternion (-> self root quat) s5-1) - ) + (let ((s5-1 (new 'stack-no-clear 'matrix))) (matrix-rotate-y! s5-1 arg1) (matrix->quaternion (-> self root quat) s5-1)) (go rolling-start-whole) - (none) - ) + (none)) (deftype gorge (process-drawable) - ((root collide-shape-moving :override) - (coord matrix :inline) - (radius float) - (thickness float) - ) - ) - + ((root collide-shape-moving :override) + (coord matrix :inline) + (radius float) + (thickness float))) (defbehavior gorge-init gorge ((arg0 vector) (arg1 vector) (arg2 float) (arg3 float)) (forward-down->inv-matrix (-> self coord) arg1 (new 'static 'vector :y -1.0)) (matrix-transpose! (-> self coord) (-> self coord)) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-matrix*! s3-0 arg0 (-> self coord)) - (vector-negate! (-> self coord vector 3) s3-0) - ) + (vector-negate! (-> self coord vector 3) s3-0)) (set! (-> self coord vector 3 w) 1.0) (set! (-> self radius) arg2) - (set! (-> self thickness) arg3) - ) + (set! (-> self thickness) arg3)) (deftype gorge-start (gorge) - ((tasks task-control) - (record-time race-time :inline) - (this-time race-time :inline) - (start-banner handle) - (end-banner handle) - (timer-pos-offset int32) - (ticker ticky :inline) - ) + ((tasks task-control) + (record-time race-time :inline) + (this-time race-time :inline) + (start-banner handle) + (end-banner handle) + (timer-pos-offset int32) + (ticker ticky :inline)) (:states - gorge-start-idle - gorge-start-race-aborted - gorge-start-race-finished - gorge-start-racing - gorge-start-ready - ) - ) - + gorge-start-idle + gorge-start-race-aborted + gorge-start-race-finished + gorge-start-racing + gorge-start-ready)) (deftype gorge-finish (gorge) - ((alt-actor entity-actor) - ) + ((alt-actor entity-actor)) (:states - gorge-finish-idle - ) - ) + gorge-finish-idle)) - -(deftype gorge-abort (gorge) - () +(deftype gorge-abort (gorge) () (:states - gorge-abort-idle - ) - ) - + gorge-abort-idle)) (defun gorge-behind ((arg0 gorge)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((gp-0 (new-stack-vector0))) (vector-matrix*! gp-0 (target-pos 0) (-> arg0 coord)) - (and (< (fabs (-> gp-0 x)) (-> arg0 radius)) - (< (-> gp-0 y) (-> arg0 radius)) - (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) - ) - ) - ) + (and (< (fabs (-> gp-0 x)) (-> arg0 radius)) (< (-> gp-0 y) (-> arg0 radius)) (< 0.0 (-> gp-0 y)) (< (-> gp-0 z) 0.0)))) (defun gorge-in-front ((arg0 gorge)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new-stack-vector0))) (vector-matrix*! s5-0 (target-pos 0) (-> arg0 coord)) (and (< (fabs (-> s5-0 x)) (-> arg0 radius)) (< (-> s5-0 y) (-> arg0 radius)) (< 0.0 (-> s5-0 y)) (< 0.0 (-> s5-0 z)) - (< (-> s5-0 z) (-> arg0 thickness)) - ) - ) - ) + (< (-> s5-0 z) (-> arg0 thickness))))) (defun gorge-trans () - (none) - ) + (none)) (defstate gorge-abort-idle (gorge-abort) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (if (gorge-behind self) - (send-event (ppointer->process (-> self parent)) 'aborted) - ) - ) - ) - ) + :code + (behavior () + (loop (suspend) + (if (gorge-behind self) (send-event (ppointer->process (-> self parent)) 'aborted))))) (defbehavior gorge-abort-init-by-other gorge-abort ((arg0 vector) (arg1 vector) (arg2 float)) (set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv))) (set! (-> self root trans quad) (-> arg0 quad)) (gorge-init arg0 arg1 arg2 8192.0) (go gorge-abort-idle) - (none) - ) + (none)) (defstate gorge-finish-idle (gorge-finish) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (if (gorge-in-front self) - (send-event (ppointer->process (-> self parent)) 'finished) - ) - ) - ) - ) + :code + (behavior () + (loop (suspend) + (if (gorge-in-front self) (send-event (ppointer->process (-> self parent)) 'finished))))) (defbehavior gorge-finish-init-by-other gorge-finish ((arg0 vector) (arg1 vector) (arg2 float)) (set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv))) (set! (-> self root trans quad) (-> arg0 quad)) (gorge-init arg0 arg1 arg2 20480.0) (go gorge-finish-idle) - (none) - ) + (none)) (defun race-time->string ((arg0 race-time)) (cond ((zero? (-> arg0 digit 0)) - (format - (clear *temp-string*) - "~D~D.~D~D" - (-> arg0 digit 1) - (-> arg0 digit 2) - (-> arg0 digit 3) - (-> arg0 digit 4) - ) - *temp-string* - ) + (format (clear *temp-string*) "~D~D.~D~D" (-> arg0 digit 1) (-> arg0 digit 2) (-> arg0 digit 3) (-> arg0 digit 4)) + *temp-string*) (else - (format - (clear *temp-string*) - "~D:~D~D.~D~D" - (-> arg0 digit 0) - (-> arg0 digit 1) - (-> arg0 digit 2) - (-> arg0 digit 3) - (-> arg0 digit 4) - ) - *temp-string* - ) - ) - ) + (format (clear *temp-string*) + "~D:~D~D.~D~D" + (-> arg0 digit 0) + (-> arg0 digit 1) + (-> arg0 digit 2) + (-> arg0 digit 3) + (-> arg0 digit 4)) + *temp-string*))) (defbehavior gorge-start-draw-time gorge-start ((arg0 symbol) (arg1 symbol)) - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - 0 - 0 - 0.0 - (font-color progress-yellow) - (font-flags shadow kerning) - ) - ) - ) - (let ((v1-1 gp-0)) - (set! (-> v1-1 width) (the float 200)) - ) - (let ((v1-2 gp-0)) - (set! (-> v1-2 height) (the float 50)) - ) - (let ((v1-3 gp-0)) - (set! (-> v1-3 scale) 0.7) - ) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color progress-yellow) (font-flags shadow kerning)))) + (let ((v1-1 gp-0)) (set! (-> v1-1 width) (the float 200))) + (let ((v1-2 gp-0)) (set! (-> v1-2 height) (the float 50))) + (let ((v1-3 gp-0)) (set! (-> v1-3 scale) 0.7)) (set! (-> gp-0 origin x) (the float (+ (-> self timer-pos-offset) 392))) (set! (-> gp-0 origin y) (the float (- 10 (-> self timer-pos-offset)))) (set! (-> gp-0 flags) (font-flags shadow kerning right large)) @@ -1000,277 +695,189 @@ (set! (-> gp-0 flags) (font-flags shadow kerning large)) (print-game-text (race-time->string (-> self record-time)) gp-0 #f 128 22) (cond - ((not arg0) - ) + ((not arg0)) ((race-time-less-than (-> self this-time) (-> self record-time)) (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((v1-18 gp-0)) - (set! (-> v1-18 scale) 1.0) - ) + (let ((v1-18 gp-0)) (set! (-> v1-18 scale) 1.0)) (set! (-> gp-0 origin x) 156.0) (set! (-> gp-0 origin y) 80.0) (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (let ((a0-15 gp-0)) - (set! (-> a0-15 color) (font-color red)) - ) - (print-game-text (lookup-text! *common-text* (text-id new-record) #f) gp-0 #f 128 22) - ) + (let ((a0-15 gp-0)) (set! (-> a0-15 color) (font-color red))) + (print-game-text (lookup-text! *common-text* (text-id new-record) #f) gp-0 #f 128 22)) (when arg1 (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (level-hint-spawn - (text-id rolling-race-beat-record) - "sksp0109" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (race-time-save (-> self this-time) (-> self tasks)) - ) - ) + (level-hint-spawn (text-id rolling-race-beat-record) "sksp0109" (the-as entity #f) *entity-pool* (game-task none)) + (race-time-save (-> self this-time) (-> self tasks)))) (else - (if arg1 - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - ) - (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((v1-30 gp-0)) - (set! (-> v1-30 scale) 1.0) - ) - (set! (-> gp-0 origin x) 156.0) - (set! (-> gp-0 origin y) 80.0) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (let ((a0-23 gp-0)) - (set! (-> a0-23 color) (font-color red)) - ) - (print-game-text (lookup-text! *common-text* (text-id try-again) #f) gp-0 #f 128 22) - ) - ) - ) - ) - (none) - ) + (if arg1 (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger)) + (when (< (mod (-> *display* real-frame-counter) 90) 60) + (let ((v1-30 gp-0)) (set! (-> v1-30 scale) 1.0)) + (set! (-> gp-0 origin x) 156.0) + (set! (-> gp-0 origin y) 80.0) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (let ((a0-23 gp-0)) (set! (-> a0-23 color) (font-color red))) + (print-game-text (lookup-text! *common-text* (text-id try-again) #f) gp-0 #f 128 22))))) + (none)) (defbehavior gorge-start-launch-start-banner gorge-start () - (the-as handle (when (task-closed? (game-task rolling-race) (task-status need-introduction)) - (when (not (handle->process (-> self start-banner))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((v0-1 (ppointer->handle (process-spawn rolling-start gp-0 0.0 :to self)))) - (set! (-> self start-banner) (the-as handle v0-1)) - v0-1 - ) - ) - ) - ) - ) - ) + (the-as handle + (when (task-closed? (game-task rolling-race) (task-status need-introduction)) + (when (not (handle->process (-> self start-banner))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((v0-1 (ppointer->handle (process-spawn rolling-start gp-0 0.0 :to self)))) + (set! (-> self start-banner) (the-as handle v0-1)) + v0-1)))))) (defstate gorge-start-race-finished (gorge-start) - :trans (behavior () - (gorge-trans) - ) - :code (behavior () - (gorge-start-draw-time #t #t) - (suspend) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (seekl! (-> self timer-pos-offset) 100 (the int (* 3.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (gorge-start-draw-time #t #f) + :trans + (behavior () + (gorge-trans)) + :code + (behavior () + (gorge-start-draw-time #t #t) (suspend) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - (go gorge-start-idle) - ) - ) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (seekl! (-> self timer-pos-offset) 100 (the int (* 3.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (gorge-start-draw-time #t #f) + (suspend) + (if (gorge-in-front self) (go gorge-start-ready))) + (go gorge-start-idle))) (defstate gorge-start-race-aborted (gorge-start) - :trans (behavior () - (gorge-trans) - ) - :code (behavior () - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (when (< (mod (-> *display* real-frame-counter) 90) 60) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 156 80 0.0 (font-color red) (font-flags shadow kerning)) - ) - ) - (let ((v1-20 gp-0)) - (set! (-> v1-20 width) (the float 200)) - ) - (let ((v1-21 gp-0)) - (set! (-> v1-21 height) (the float 50)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id race-aborted) #f) gp-0 #f 128 22) - ) - ) - (suspend) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - (go gorge-start-idle) - ) - ) + :trans + (behavior () + (gorge-trans)) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (when (< (mod (-> *display* real-frame-counter) 90) 60) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 156 80 0.0 (font-color red) (font-flags shadow kerning)))) + (let ((v1-20 gp-0)) (set! (-> v1-20 width) (the float 200))) + (let ((v1-21 gp-0)) (set! (-> v1-21 height) (the float 50))) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id race-aborted) #f) gp-0 #f 128 22))) + (suspend) + (if (gorge-in-front self) (go gorge-start-ready))) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable) + (go gorge-start-idle))) (defstate gorge-start-racing (gorge-start) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('finished) - (go gorge-start-race-finished) - ) - (('aborted) - (go gorge-start-race-aborted) - ) - ) - ) - :enter (behavior () - (send-event (handle->process (-> self start-banner)) 'break) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'disable) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide) - (send-event (ppointer->process (-> *hud-parts* money)) 'disable) - (send-event (ppointer->process (-> *hud-parts* money)) 'hide) - (race-time-read (-> self record-time) (-> self tasks) (seconds 45)) - (set! (-> self end-banner) - (ppointer->handle - (process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self) - ) - ) - (process-spawn - gorge-finish - (new 'static 'vector :x -86016.0 :y 114688.0 :z -6303744.0) - (new 'static 'vector :x -1.0) - 57344.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -696320.0 :y 122880.0 :z -6828032.0) - (new 'static 'vector :x -0.707 :y 0.707) - 163840.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -847872.0 :y 143360.0 :z -6828032.0) - (new 'static 'vector :x 0.707 :y 0.707) - 163840.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -417792.0 :y 143360.0 :z -6004736.0) - (new 'static 'vector :x -0.5 :y 0.707 :z 0.3) - 266240.0 - :to self - ) - (process-spawn - gorge-abort - (new 'static 'vector :x -647168.0 :y 143360.0 :z -6025216.0) - (new 'static 'vector :x 0.5 :y 0.707 :z -0.3) - 163840.0 - :to self - ) - (sleep (-> self ticker) (seconds 6000)) - (set-setting! 'sound-flava #f 40.0 (music-flava rolling-gorge)) - ) - :exit (behavior () - (let* ((v1-0 (-> self child)) - (gp-0 (-> v1-0 0 brother)) - ) - (while v1-0 - (if (not (or (= v1-0 (-> self start-banner process)) (= v1-0 (-> self end-banner process)))) - (deactivate (-> v1-0 0)) - ) - (set! v1-0 gp-0) - (set! gp-0 (-> v1-0 0 brother)) - ) - ) - (send-event (handle->process (-> self end-banner)) 'break-and-die) - (send-event (handle->process (-> self start-banner)) 'unbreak) - (remove-setting! 'sound-flava) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('finished) (go gorge-start-race-finished)) + (('aborted) (go gorge-start-race-aborted)))) + :enter + (behavior () + (send-event (handle->process (-> self start-banner)) 'break) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'disable) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'hide) + (send-event (ppointer->process (-> *hud-parts* money)) 'disable) + (send-event (ppointer->process (-> *hud-parts* money)) 'hide) + (race-time-read (-> self record-time) (-> self tasks) (seconds 45)) + (set! (-> self end-banner) + (ppointer->handle (process-spawn rolling-start (new 'static 'vector :x -86016.0 :y 112640.0 :z -6309888.0) 16384.0 :to self))) + (process-spawn gorge-finish + (new 'static 'vector :x -86016.0 :y 114688.0 :z -6303744.0) + (new 'static 'vector :x -1.0) + 57344.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -696320.0 :y 122880.0 :z -6828032.0) + (new 'static 'vector :x -0.707 :y 0.707) + 163840.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -847872.0 :y 143360.0 :z -6828032.0) + (new 'static 'vector :x 0.707 :y 0.707) + 163840.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -417792.0 :y 143360.0 :z -6004736.0) + (new 'static 'vector :x -0.5 :y 0.707 :z 0.3) + 266240.0 + :to + self) + (process-spawn gorge-abort + (new 'static 'vector :x -647168.0 :y 143360.0 :z -6025216.0) + (new 'static 'vector :x 0.5 :y 0.707 :z -0.3) + 163840.0 + :to + self) + (sleep (-> self ticker) (seconds 6000)) + (set-setting! 'sound-flava #f 40.0 (music-flava rolling-gorge))) + :exit + (behavior () + (let* ((v1-0 (-> self child)) + (gp-0 (-> v1-0 0 brother))) + (while v1-0 + (if (not (or (= v1-0 (-> self start-banner process)) (= v1-0 (-> self end-banner process)))) (deactivate (-> v1-0 0))) + (set! v1-0 gp-0) + (set! gp-0 (-> v1-0 0 brother)))) + (send-event (handle->process (-> self end-banner)) 'break-and-die) + (send-event (handle->process (-> self start-banner)) 'unbreak) + (remove-setting! 'sound-flava)) :trans gorge-trans - :code (behavior () - (set! (-> self state-time) (-> *display* game-frame-counter)) - (loop - (seconds->race-time (-> self this-time) (- (-> *display* game-frame-counter) (-> self state-time))) - (seekl! (-> self timer-pos-offset) 0 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (completed? (-> self ticker)) - (gorge-start-draw-time #f #f) - (suspend) - (if (or (not *target*) (gorge-in-front self)) - (go gorge-start-ready) - ) - ) - ) - ) + :code + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (loop (seconds->race-time (-> self this-time) (- (-> *display* game-frame-counter) (-> self state-time))) + (seekl! (-> self timer-pos-offset) 0 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (completed? (-> self ticker)) + (gorge-start-draw-time #f #f) + (suspend) + (if (or (not *target*) (gorge-in-front self)) (go gorge-start-ready))))) (defstate gorge-start-ready (gorge-start) :trans gorge-trans - :code (behavior () - (loop - (suspend) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (gorge-start-draw-time #f #f) - (cond - ((gorge-in-front self) - ) - ((gorge-behind self) - (go gorge-start-racing) - ) - (else - (go gorge-start-idle) - ) - ) - ) - ) - ) + :code + (behavior () + (loop (suspend) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (gorge-start-draw-time #f #f) + (cond + ((gorge-in-front self)) + ((gorge-behind self) (go gorge-start-racing)) + (else (go gorge-start-idle)))))) (defstate gorge-start-idle (gorge-start) - :enter (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :exit (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - :trans (behavior () - (gorge-start-launch-start-banner) - (gorge-trans) - ) - :code (behavior () - (loop - (suspend) - (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) - (when (= (-> self timer-pos-offset) 100) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) - (send-event (ppointer->process (-> *hud-parts* money)) 'enable) - ) - (if (gorge-in-front self) - (go gorge-start-ready) - ) - ) - ) - ) + :enter + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :exit + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + :trans + (behavior () + (gorge-start-launch-start-banner) + (gorge-trans)) + :code + (behavior () + (loop (suspend) + (seekl! (-> self timer-pos-offset) 100 (the int (* 5.0 (-> *display* time-adjust-ratio)))) + (when (= (-> self timer-pos-offset) 100) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'enable) + (send-event (ppointer->process (-> *hud-parts* money)) 'enable)) + (if (gorge-in-front self) (go gorge-start-ready))))) (defmethod init-from-entity! ((this gorge-start) (arg0 entity-actor)) (set! (-> this root) (the-as collide-shape-moving (new 'process 'trsqv))) @@ -1278,48 +885,41 @@ (let ((a0-3 (new 'stack-no-clear 'vector))) (set! (-> a0-3 quad) (-> this root trans quad)) (+! (-> a0-3 y) -8192.0) - (gorge-init a0-3 (new 'static 'vector :z 1.0) 102400.0 40960.0) - ) + (gorge-init a0-3 (new 'static 'vector :z 1.0) 102400.0 40960.0)) (set! (-> this tasks) (get-task-control (-> this entity extra perm task))) (set! (-> this start-banner) (the-as handle #f)) (set! (-> this end-banner) (the-as handle #f)) (set! (-> this timer-pos-offset) 100) (go gorge-start-idle) - (none) - ) - -(deftype rolling-water (water-anim) - () - ) + (none)) +(deftype rolling-water (water-anim) ()) (define ripple-for-rolling-water - (the-as object (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) - ) + (the-as object + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave))))) (defmethod water-vol-method-22 ((this rolling-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this draw color-mult) 0.01 0.45 0.5 0.75) (set! (-> v1-2 global-scale) 3072.0) (set! (-> v1-2 close-fade-dist) 163840.0) (set! (-> v1-2 far-fade-dist) 245760.0) - (set! (-> v1-2 waveform) (the-as ripple-wave-set ripple-for-rolling-water)) - ) + (set! (-> v1-2 waveform) (the-as ripple-wave-set ripple-for-rolling-water))) (logclear! (-> this flags) (water-flags wt23)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-race-ring.gc b/goal_src/jak1/levels/rolling/rolling-race-ring.gc index c68f15b4f8..ecd847218f 100644 --- a/goal_src/jak1/levels/rolling/rolling-race-ring.gc +++ b/goal_src/jak1/levels/rolling/rolling-race-ring.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/collectables.gc") ;; name: rolling-race-ring.gc @@ -11,264 +10,233 @@ ;; DECOMP BEGINS (deftype race-ring (process-drawable) - ((rot-y float) - (face-vec vector :inline) - (part-track handle) - (keep-part-track-alive symbol) - (timeout time-frame) - (alt-actor entity-actor) - (alt-task uint8) - (cyl cylinder-flat :inline) - (old-hips vector :inline) - ) + ((rot-y float) + (face-vec vector :inline) + (part-track handle) + (keep-part-track-alive symbol) + (timeout time-frame) + (alt-actor entity-actor) + (alt-task uint8) + (cyl cylinder-flat :inline) + (old-hips vector :inline)) (:states - race-ring-active - race-ring-idle - race-ring-wait - ) - ) - + race-ring-active + race-ring-idle + race-ring-wait)) (defpartgroup group-rolling-ring :id 457 :linger-duration (seconds 0) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1773 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1774 :fade-after (meters 80)) - (sp-item 1775 :flags (is-3d)) - (sp-item 1776 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1773 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1774 :fade-after (meters 80)) + (sp-item 1775 :flags (is-3d)) + (sp-item 1776 :flags (is-3d)))) (defpart 1773 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0 2.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0 2.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1774 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1775 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1776 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 12)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 12)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpartgroup group-rolling-spawn-ring :id 458 :duration (seconds 0.017) :linger-duration (seconds 0.47) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1777 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1778 :flags (is-3d)) - (sp-item 1779 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1777 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1778 :flags (is-3d)) + (sp-item 1779 :flags (is-3d)))) (defpart 1777 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:vel-y (meters 0.03)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 0.5)) - (:flags (bit3)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1780) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:vel-y (meters 0.03)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 0.5)) + (:flags (bit3)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1780) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)) + (:rotate-y (degrees 0)))) (defpart 1780 - :init-specs ((:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1780) - ) - ) + :init-specs + ((:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1780))) (defpart 1778 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1781) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1781))) (defpart 1781 - :init-specs ((:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1781) - ) - ) + :init-specs ((:r 128.0 1 127.0) (:g 0.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1781))) (defpart 1779 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.08)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1782) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.08)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1782))) (defpart 1782 - :init-specs ((:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1782) - ) - ) + :init-specs ((:r 128.0 1 127.0) (:g 0.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1782))) (defpartgroup group-rolling-explode-ring :id 459 :duration (seconds 0.017) :linger-duration (seconds 0.5) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1783 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1784 :flags (is-3d))) - ) + :parts ((sp-item 1783 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1784 :flags (is-3d)))) (defpart 1783 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 64.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 1 64.0) - (:g 0.0) - (:b 64.0 1 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.1) (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.85333335) - (:friction 0.9) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 64.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 1 64.0) + (:g 0.0) + (:b 64.0 1 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.1) (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.85333335) + (:friction 0.9) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1784 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 2.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 128.0 1 127.0) - (:g 0.0) - (:b 128.0 1 127.0) - (:a 128.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 2.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 128.0 1 127.0) + (:g 0.0) + (:b 128.0 1 127.0) + (:a 128.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defun race-ring-set-particle-rotation-callback ((arg0 part-tracker)) (let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y))) @@ -280,252 +248,223 @@ (set! (-> *part-id-table* 1778 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1779 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1783 init-specs 17 initial-valuef) f0-0) - (set! (-> *part-id-table* 1784 init-specs 4 initial-valuef) f0-0) - ) + (set! (-> *part-id-table* 1784 init-specs 4 initial-valuef) f0-0)) 0 - (none) - ) + (none)) (defpartgroup group-rolling-ring-blue :id 460 :linger-duration (seconds 0) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1785 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1786 :fade-after (meters 80)) - (sp-item 1787 :flags (is-3d)) - (sp-item 1788 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1785 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1786 :fade-after (meters 80)) + (sp-item 1787 :flags (is-3d)) + (sp-item 1788 :flags (is-3d)))) (defpart 1785 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.0 2.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.0 2.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1786 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 64.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -1.4222221) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 64.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -1.4222221) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1787 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1788 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 12)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 12)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpartgroup group-rolling-spawn-ring-blue :id 461 :duration (seconds 0.017) :linger-duration (seconds 0.47) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1789 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1790 :flags (is-3d)) - (sp-item 1791 :flags (is-3d)) - ) - ) + :parts + ((sp-item 1789 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1790 :flags (is-3d)) + (sp-item 1791 :flags (is-3d)))) (defpart 1789 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 32.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:vel-y (meters 0.03)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 0.5)) - (:flags (bit3)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1792) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 32.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:vel-y (meters 0.03)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 0.5)) + (:flags (bit3)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1792) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)) + (:rotate-y (degrees 0)))) (defpart 1792 - :init-specs ((:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 0.0 63 1.0) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 1792) - ) - ) + :init-specs + ((:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 0.0 63 1.0) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 1792))) (defpart 1790 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1793) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1793))) (defpart 1793 - :init-specs ((:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1793) - ) - ) + :init-specs ((:r 0.0) (:g 128.0 1 127.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1793))) (defpart 1791 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees 0)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.08)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 1794) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees 0)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.08)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 1794))) (defpart 1794 - :init-specs ((:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 32.0 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 1794) - ) - ) + :init-specs ((:r 0.0) (:g 128.0 1 127.0) (:b 128.0 1 127.0) (:a 32.0 32.0) (:next-time (seconds 0.017)) (:next-launcher 1794))) (defpartgroup group-rolling-explode-ring-blue :id 462 :duration (seconds 0.017) :linger-duration (seconds 0.5) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1795 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1796 :flags (is-3d))) - ) + :parts ((sp-item 1795 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1796 :flags (is-3d)))) (defpart 1795 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 64.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0 1 64.0) - (:b 64.0 1 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.1) (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.85333335) - (:friction 0.9) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 64.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0 1 64.0) + (:b 64.0 1 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.1) (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.85333335) + (:friction 0.9) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpart 1796 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 2.0) - (:scale-x (meters 10)) - (:rot-x (degrees 0) (degrees 360)) - (:rot-y (degrees -1) (degrees 2)) - (:rot-z (degrees 90)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 128.0 1 127.0) - (:b 128.0 1 127.0) - (:a 128.0) - (:scalevel-x (meters 0.06666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 2.0) + (:scale-x (meters 10)) + (:rot-x (degrees 0) (degrees 360)) + (:rot-y (degrees -1) (degrees 2)) + (:rot-z (degrees 90)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 128.0 1 127.0) + (:b 128.0 1 127.0) + (:a 128.0) + (:scalevel-x (meters 0.06666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)))) (defun race-ring-blue-set-particle-rotation-callback ((arg0 part-tracker)) (let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y))) @@ -537,434 +476,278 @@ (set! (-> *part-id-table* 1790 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1791 init-specs 4 initial-valuef) f0-0) (set! (-> *part-id-table* 1795 init-specs 17 initial-valuef) f0-0) - (set! (-> *part-id-table* 1796 init-specs 4 initial-valuef) f0-0) - ) + (set! (-> *part-id-table* 1796 init-specs 4 initial-valuef) f0-0)) 0 - (none) - ) + (none)) -(defskelgroup *race-ring-sg* race-ring race-ring-lod0-jg race-ring-race-ring-idle-ja - ((race-ring-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *race-ring-sg* + race-ring + race-ring-lod0-jg + race-ring-race-ring-idle-ja + ((race-ring-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defun first-ring? ((arg0 race-ring)) - (not (-> arg0 alt-actor)) - ) + (not (-> arg0 alt-actor))) (defun last-ring? ((arg0 race-ring)) - (not (-> arg0 link next)) - ) + (not (-> arg0 link next))) (defstate race-ring-active (race-ring) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('notify) - (when (and (= (-> block param 0) 'die) (= proc (-> self part-track process 0))) - (cond - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 460) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! v0-0 #t) - (set! (-> self keep-part-track-alive) v0-0) - ) - (else - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 457) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! v0-0 #t) - (set! (-> self keep-part-track-alive) v0-0) - ) - ) - v0-0 - ) - ) - ) - ) - :enter (behavior () - (cond - ((first-ring? self) - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (else - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - ) - (set! (-> self keep-part-track-alive) #f) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 461) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 458) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - ) - (set! (-> self old-hips quad) (-> (target-pos 26) quad)) - (+! (-> self old-hips x) 1.0) - (set! (-> self state-time) (-> *display* game-frame-counter)) - ) - :exit (behavior () - (sound-play "close-racering") - (let ((a0-3 (handle->process (-> self part-track)))) - (if a0-3 - (deactivate a0-3) - ) - ) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 462) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 459) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - ) - (cond - ((first-ring? self) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - (else - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - ) - ) - :trans (behavior () - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (cond - ((handle->process (-> self part-track)) - (if (-> self keep-part-track-alive) - (set-time! (-> (the-as part-tracker (-> self part-track process 0)) start-time)) - ) - ) - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 460) - -1 - race-ring-blue-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self keep-part-track-alive) #t) - ) - (else - (set! (-> self part-track) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 457) - -1 - race-ring-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - ) - (set! (-> self keep-part-track-alive) #t) - ) - ) - (cond - ((not (last-ring? self)) - ) - ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (spool-push *art-control* "race-ring-second-anim" 0 self -99.0) - ) - (else - (spool-push *art-control* "race-ring-anim" 0 self -99.0) - ) - ) - ) - :code (behavior () - (loop - (suspend) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('notify) + (when (and (= (-> block param 0) 'die) (= proc (-> self part-track process 0))) + (cond + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 460) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! v0-0 #t) + (set! (-> self keep-part-track-alive) v0-0)) + (else + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 457) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! v0-0 #t) + (set! (-> self keep-part-track-alive) v0-0))) + v0-0)))) + :enter + (behavior () (cond ((first-ring? self) - ) - ((>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self timeout)) - (level-hint-spawn - (text-id rolling-ring-chase-fail) - "sksp0121" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'activate) - (let ((t9-3 send-event-function) - (v1-7 (-> self alt-actor)) - ) - (t9-3 - (if v1-7 - (-> v1-7 extra process) - ) - a1-2 - ) - ) - ) - (go race-ring-idle) - ) - ) - (when *target* - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self old-hips quad)) - (set! (-> self old-hips quad) (-> (target-pos 26) quad)) - (vector-! gp-0 gp-0 (-> self old-hips)) - (when (>= (ray-flat-cyl-intersect (-> self cyl) (-> self old-hips) gp-0) 0.0) - (level-hint-spawn - (text-id rolling-ring-chase-1-hint) - "sksp0119" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (level-hint-spawn - (text-id rolling-ring-chase-2-hint) - "sksp0120" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (cond - ((first-ring? self) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (entity-birth-no-kill (-> self link next)) - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 0) - (set! (-> a1-9 message) 'activate) - (let ((t9-12 send-event-function) - (v1-30 (-> self link next)) - ) - (t9-12 - (if v1-30 - (-> v1-30 extra process) - ) - a1-9 - ) - ) - ) - ) - ((last-ring? self) - (let ((gp-2 (ppointer->handle (process-spawn othercam self 4 #f #t :to self))) - (s5-2 (ppointer->handle (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to self - ) - ) - ) - ) - (if *target* - (logior! (-> *target* mask) (process-mask sleep)) - ) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status skip-bones)) - (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (ja-play-spooled-anim - (new 'static 'spool-anim :name "race-ring-anim" :index 3 :parts 2 :command-list '()) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - ) - (logclear! (-> self draw status) (draw-status skip-bones)) - (logior! (-> self draw status) (draw-status hidden)) - (cond - ((handle->process (the-as int gp-2)) - (deactivate (-> gp-2 process 0)) - ) - (else - ) - ) - (if *target* - (logclear! (-> *target* mask) (process-mask sleep)) - ) - (let ((a0-54 (handle->process s5-2))) - (if a0-54 - (send-event a0-54 'stop-cloning) - ) - ) - ) - ) - (else - (entity-birth-no-kill (-> self link next)) - (let ((a1-22 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-22 from) self) - (set! (-> a1-22 num-params) 0) - (set! (-> a1-22 message) 'activate) - (let ((t9-26 send-event-function) - (v1-86 (-> self link next)) - ) - (t9-26 - (if v1-86 - (-> v1-86 extra process) - ) - a1-22 - ) - ) - ) - ) - ) - (go race-ring-idle) - ) - ) - ) - ) - ) - :post ja-post - ) + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + (else (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t))) + (set! (-> self keep-part-track-alive) #f) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 461) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 458) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)))) + (set! (-> self old-hips quad) (-> (target-pos 26) quad)) + (+! (-> self old-hips x) 1.0) + (set! (-> self state-time) (-> *display* game-frame-counter))) + :exit + (behavior () + (sound-play "close-racering") + (let ((a0-3 (handle->process (-> self part-track)))) (if a0-3 (deactivate a0-3))) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 462) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 459) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)))) + (cond + ((first-ring? self) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + (else (logior! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #f)))) + :trans + (behavior () + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (cond + ((handle->process (-> self part-track)) + (if (-> self keep-part-track-alive) (set-time! (-> (the-as part-tracker (-> self part-track process 0)) start-time)))) + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 460) + -1 + race-ring-blue-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self keep-part-track-alive) #t)) + (else + (set! (-> self part-track) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 457) + -1 + race-ring-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self))) + (set! (-> self keep-part-track-alive) #t))) + (cond + ((not (last-ring? self))) + ((= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (spool-push *art-control* "race-ring-second-anim" 0 self -99.0)) + (else (spool-push *art-control* "race-ring-anim" 0 self -99.0)))) + :code + (behavior () + (loop (suspend) + (cond + ((first-ring? self)) + ((>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self timeout)) + (level-hint-spawn (text-id rolling-ring-chase-fail) "sksp0121" (the-as entity #f) *entity-pool* (game-task none)) + (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'activate) + (let ((t9-3 send-event-function) + (v1-7 (-> self alt-actor))) + (t9-3 (if v1-7 (-> v1-7 extra process)) a1-2))) + (go race-ring-idle))) + (when *target* + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self old-hips quad)) + (set! (-> self old-hips quad) (-> (target-pos 26) quad)) + (vector-! gp-0 gp-0 (-> self old-hips)) + (when (>= (ray-flat-cyl-intersect (-> self cyl) (-> self old-hips) gp-0) 0.0) + (level-hint-spawn (text-id rolling-ring-chase-1-hint) "sksp0119" (the-as entity #f) *entity-pool* (game-task none)) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (level-hint-spawn (text-id rolling-ring-chase-2-hint) "sksp0120" (the-as entity #f) *entity-pool* (game-task none))) + (cond + ((first-ring? self) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (entity-birth-no-kill (-> self link next)) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'activate) + (let ((t9-12 send-event-function) + (v1-30 (-> self link next))) + (t9-12 (if v1-30 (-> v1-30 extra process)) a1-9)))) + ((last-ring? self) + (let ((gp-2 (ppointer->handle (process-spawn othercam self 4 #f #t :to self))) + (s5-2 (ppointer->handle (process-spawn fuel-cell :init fuel-cell-init-as-clone (process->handle self) (-> self entity extra perm task) :to self)))) + (if *target* (logior! (-> *target* mask) (process-mask sleep))) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status skip-bones)) + (if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2)) + (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list ()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (ja-play-spooled-anim (new 'static 'spool-anim :name "race-ring-anim" :index 3 :parts 2 :command-list ()) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func))) + (logclear! (-> self draw status) (draw-status skip-bones)) + (logior! (-> self draw status) (draw-status hidden)) + (cond + ((handle->process (the-as int gp-2)) (deactivate (-> gp-2 process 0))) + (else)) + (if *target* (logclear! (-> *target* mask) (process-mask sleep))) + (let ((a0-54 (handle->process s5-2))) (if a0-54 (send-event a0-54 'stop-cloning))))) + (else + (entity-birth-no-kill (-> self link next)) + (let ((a1-22 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-22 from) self) + (set! (-> a1-22 num-params) 0) + (set! (-> a1-22 message) 'activate) + (let ((t9-26 send-event-function) + (v1-86 (-> self link next))) + (t9-26 (if v1-86 (-> v1-86 extra process)) a1-22))))) + (go race-ring-idle)))))) + :post ja-post) (defstate race-ring-wait (race-ring) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (loop - (suspend) - (when (= (get-task-status (the-as game-task (-> self alt-task))) (task-status invalid)) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go race-ring-active) - ) - ) - ) - ) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (loop (suspend) + (when (= (get-task-status (the-as game-task (-> self alt-task))) (task-status invalid)) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go race-ring-active))))) (defstate race-ring-idle (race-ring) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('activate) - (logclear! (-> self mask) (process-mask actor-pause)) - (go race-ring-active) - ) - ) - ) - :code (behavior () - (if (nonzero? (-> self sound)) - (stop! (-> self sound)) - ) - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('activate) (logclear! (-> self mask) (process-mask actor-pause)) (go race-ring-active)))) + :code + (behavior () + (if (nonzero? (-> self sound)) (stop! (-> self sound))) + (loop (suspend)))) (defmethod init-from-entity! ((this race-ring) (arg0 entity-actor)) - (let ((a0-1 arg0)) - (if (not (entity-actor-lookup a0-1 'next-actor 0)) - (stack-size-set! (-> this main-thread) 512) - ) - ) + (let ((a0-1 arg0)) (if (not (entity-actor-lookup a0-1 'next-actor 0)) (stack-size-set! (-> this main-thread) 512))) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *race-ring-sg* '()) + (initialize-skeleton this *race-ring-sg* ()) (set! (-> this root pause-adjust-distance) 122880.0) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this part-track) (the-as handle #f)) (set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0)) (logior! (-> this draw status) (draw-status hidden)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "loop-racering" :fo-max 40) (-> this root trans)) - ) - (let ((f0-1 (res-lump-float arg0 'timeout))) - (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-1)))) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "loop-racering" :fo-max 40) (-> this root trans))) + (let ((f0-1 (res-lump-float arg0 'timeout))) (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-1))))) (let ((s4-0 (new 'stack-no-clear 'vector))) (cond - ((-> this link next) - (vector-! (-> this face-vec) (-> this link next extra trans) (-> this root trans)) - ) - ((-> this link prev) - (vector-! (-> this face-vec) (-> this root trans) (-> this link prev extra trans)) - ) - ) + ((-> this link next) (vector-! (-> this face-vec) (-> this link next extra trans) (-> this root trans))) + ((-> this link prev) (vector-! (-> this face-vec) (-> this root trans) (-> this link prev extra trans)))) (vector-flatten! (-> this face-vec) (-> this face-vec) (new 'static 'vector :y 1.0)) (vector-normalize! (-> this face-vec) 1.0) (cond @@ -975,19 +758,11 @@ (vector+! s4-0 s4-0 (-> this face-vec)) (vector-normalize! s4-0 1.0) (set! (-> this rot-y) (acos (vector-dot s4-0 (new 'static 'vector :z 1.0)))) - (if (< (vector-dot s4-0 (new 'static 'vector :x 1.0)) 0.0) - (set! (-> this rot-y) (- (-> this rot-y))) - ) - ) + (if (< (vector-dot s4-0 (new 'static 'vector :x 1.0)) 0.0) (set! (-> this rot-y) (- (-> this rot-y))))) (else - (set! (-> this rot-y) (acos (vector-dot (-> this face-vec) (new 'static 'vector :z 1.0)))) - (if (< (vector-dot (-> this face-vec) (new 'static 'vector :x 1.0)) 0.0) - (set! (-> this rot-y) (- (-> this rot-y))) - ) - (+! (-> this rot-y) 16384.0) - ) - ) - ) + (set! (-> this rot-y) (acos (vector-dot (-> this face-vec) (new 'static 'vector :z 1.0)))) + (if (< (vector-dot (-> this face-vec) (new 'static 'vector :x 1.0)) 0.0) (set! (-> this rot-y) (- (-> this rot-y)))) + (+! (-> this rot-y) 16384.0)))) (+! (-> this rot-y) (res-lump-float arg0 'rotoffset)) (set-vector! (-> this cyl axis) (cos (-> this rot-y)) 0.0 (- (sin (-> this rot-y))) 1.0) (vector+float*! (the-as vector (-> this cyl)) (-> this root trans) (-> this cyl axis) -2048.0) @@ -996,36 +771,24 @@ (cond ((and (first-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid)) - (!= (get-task-status (-> this entity extra perm task)) 7) - ) + (!= (get-task-status (-> this entity extra perm task)) 7)) (set! (-> this alt-task) (res-lump-value (-> this entity) 'alt-task uint)) - (if (or (= (-> this alt-task) 0) - (= (get-task-status (the-as game-task (-> this alt-task))) (task-status invalid)) - ) - (go race-ring-active) - (go race-ring-wait) - ) - ) + (if (or (= (-> this alt-task) 0) (= (get-task-status (the-as game-task (-> this alt-task))) (task-status invalid))) + (go race-ring-active) + (go race-ring-wait))) ((and (last-ring? this) (= (get-task-status (-> this entity extra perm task)) (task-status need-resolution))) (let ((s5-2 (new 'stack-no-clear 'vector))) (logclear! (-> this draw status) (draw-status hidden)) (ja-post) (vector<-cspace! s5-2 (-> this node-list data 5)) (logior! (-> this draw status) (draw-status hidden)) - (birth-pickup-at-point - s5-2 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ((and (last-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid))) - ) - ) + (birth-pickup-at-point s5-2 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)))) + ((and (last-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid))))) (set! (-> this event-hook) (-> race-ring-idle event)) (go race-ring-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/rolling/rolling-robber.gc b/goal_src/jak1/levels/rolling/rolling-robber.gc index 79c6aae946..8c600e974a 100644 --- a/goal_src/jak1/levels/rolling/rolling-robber.gc +++ b/goal_src/jak1/levels/rolling/rolling-robber.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "ROL.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: rolling-robber.gc @@ -13,53 +12,39 @@ (defstate fuel-cell-spline-slider (fuel-cell) :trans hide-hud-quick - :code (behavior ((arg0 handle) (arg1 float) (arg2 float)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja :group! fuel-cell-idle-ja) - (if *target* - (process-grab? *target*) - ) - (hide-hud-quick) - (set! *camera-look-through-other* 2) - (set! (-> *camera-other-fov* data) 11650.845) - (set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad)) - (set! (-> *camera-other-root* quad) (-> *math-camera* trans quad)) - (set-time! (-> self state-time)) - (loop - (*! arg2 (- 1.0 (* 0.05 (-> *display* time-adjust-ratio)))) ;; og:preserve-this changed for high fps - (when (and (< (fabs arg2) 13.653334) (time-elapsed? (-> self state-time) (seconds 1.5))) - (if *target* - (process-release? *target*) - ) - (go-virtual wait) - ) - (set! arg1 (+ arg1 (/ (* arg2 (seconds-per-frame)) (path-distance (-> self path))))) - (cond - ((< 1.0 arg1) - (set! arg1 (+ -1.0 arg1)) - ) - ((< arg1 0.0) - (set! arg1 (+ 1.0 arg1)) - ) - ) - (eval-path-curve! (-> self path) (-> self root trans) arg1 'interp) - (+! (-> self root trans y) 8192.0) - (set! (-> self root trans y) (fmax 106496.0 (-> self root trans y))) - (set! (-> self base quad) (-> self root trans quad)) - (transform-post) - (animate self) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (vector-! s4-0 (-> self root trans) *camera-other-trans*) - (vector-normalize! s4-0 1.0) - (forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0)) - ) + :code + (behavior ((arg0 handle) (arg1 float) (arg2 float)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja :group! fuel-cell-idle-ja) + (if *target* (process-grab? *target*)) + (hide-hud-quick) (set! *camera-look-through-other* 2) - (set-letterbox-frames (seconds 0.035)) - (suspend) - (ja :num! (loop! 0.5)) - ) - ) - ) + (set! (-> *camera-other-fov* data) 11650.845) + (set! (-> *camera-other-trans* quad) (-> *math-camera* trans quad)) + (set! (-> *camera-other-root* quad) (-> *math-camera* trans quad)) + (set-time! (-> self state-time)) + (loop (*! arg2 (- 1.0 (* 0.05 (-> *display* time-adjust-ratio)))) ;; og:preserve-this changed for high fps + (when (and (< (fabs arg2) 13.653334) (time-elapsed? (-> self state-time) (seconds 1.5))) + (if *target* (process-release? *target*)) + (go-virtual wait)) + (set! arg1 (+ arg1 (/ (* arg2 (seconds-per-frame)) (path-distance (-> self path))))) + (cond + ((< 1.0 arg1) (set! arg1 (+ -1.0 arg1))) + ((< arg1 0.0) (set! arg1 (+ 1.0 arg1)))) + (eval-path-curve! (-> self path) (-> self root trans) arg1 'interp) + (+! (-> self root trans y) 8192.0) + (set! (-> self root trans y) (fmax 106496.0 (-> self root trans y))) + (set! (-> self base quad) (-> self root trans quad)) + (transform-post) + (animate self) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (vector-! s4-0 (-> self root trans) *camera-other-trans*) + (vector-normalize! s4-0 1.0) + (forward-down->inv-matrix *camera-other-matrix* s4-0 (new 'static 'vector :y -1.0 :w 1.0))) + (set! *camera-look-through-other* 2) + (set-letterbox-frames (seconds 0.035)) + (suspend) + (ja :num! (loop! 0.5))))) (defbehavior fuel-cell-init-as-spline-slider fuel-cell ((arg0 handle) (arg1 float) (arg2 float) (arg3 int)) (initialize self) @@ -72,53 +57,46 @@ (set! (-> self path) (new 'process 'curve-control self 'path -1000000000.0)) (set! (-> self movie-pos-index) -1) (go fuel-cell-spline-slider arg0 arg1 arg2) - (none) - ) + (none)) (deftype robber (process-drawable) - ((root collide-shape-moving :override) - (curve-position float) - (speed float) - (facing vector :inline) - (tangent vector :inline) - (run-blend-interp float) - (near-timer int32) - (far-time time-frame) - (y-offset float) - (y-offset-desired float) - (y-vel float) - (water-height float) - (timeout time-frame) - (last-ambient-time time-frame) - (time-to-next-ambient time-frame) - ) + ((root collide-shape-moving :override) + (curve-position float) + (speed float) + (facing vector :inline) + (tangent vector :inline) + (run-blend-interp float) + (near-timer int32) + (far-time time-frame) + (y-offset float) + (y-offset-desired float) + (y-vel float) + (water-height float) + (timeout time-frame) + (last-ambient-time time-frame) + (time-to-next-ambient time-frame)) (:states - robber-dead - robber-debug - robber-die - robber-flee - robber-got-away - robber-idle - robber-initial - robber-initial-notice - robber-tired - ) - ) + robber-dead + robber-debug + robber-die + robber-flee + robber-got-away + robber-idle + robber-initial + robber-initial-notice + robber-tired)) - -(defskelgroup *robber-sg* robber robber-lod0-jg robber-idle-hover-ja - ((robber-lod0-mg (meters 20)) (robber-lod1-mg (meters 40)) (robber-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow robber-shadow-mg - ) +(defskelgroup *robber-sg* + robber + robber-lod0-jg + robber-idle-hover-ja + ((robber-lod0-mg (meters 20)) (robber-lod1-mg (meters 40)) (robber-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow robber-shadow-mg) (defbehavior robber-event-handler robber ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (go robber-die) - ) - ) - ) + (('attack) (go robber-die)))) (defbehavior robber-task-complete? robber () (local-vars (sv-16 symbol)) @@ -128,70 +106,41 @@ (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (format #t "robber task is complete~%") - ) - (else - ) - ) - sv-16 - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (format #t "robber task is complete~%")) + (else)) + sv-16)) (defbehavior robber-find-ground robber () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self root trans quad)) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) (+! (-> gp-0 y) 8192.0) - (let ((f0-2 (fill-and-probe-using-line-sphere - *collide-cache* - gp-0 - (new 'static 'vector :y -81920.0 :w 1.0) - 40.96 - (collide-kind background) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - (v1-5 (new 'stack-no-clear 'vector)) - ) + (let ((f0-2 (fill-and-probe-using-line-sphere *collide-cache* + gp-0 + (new 'static 'vector :y -81920.0 :w 1.0) + 40.96 + (collide-kind background) + self + t2-0 + (new 'static 'pat-surface :noentity #x1))) + (v1-5 (new 'stack-no-clear 'vector))) (set! (-> v1-5 quad) (-> self root trans quad)) (set! (-> v1-5 y) (+ (-> gp-0 y) (* -81920.0 f0-2))) (cond ((and (>= f0-2 0.0) (< 204.8 (fabs (- (-> v1-5 y) (-> self water-height))))) - (set! (-> self y-offset-desired) - (- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root trans y) (-> self y-offset))) - ) - #t - ) - (else - (set! (-> self y-offset-desired) 0.0) - #f - ) - ) - ) - ) - ) - ) + (set! (-> self y-offset-desired) (- (+ (-> gp-0 y) (* -81920.0 f0-2)) (- (-> self root trans y) (-> self y-offset)))) + #t) + (else (set! (-> self y-offset-desired) 0.0) #f)))))) (defbehavior robber-rotate robber ((arg0 target) (arg1 float)) (let ((s5-0 (new 'stack-no-clear 'matrix)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) (cond - ((and arg0 *target*) - (vector-! gp-0 (-> self root trans) (target-pos 0)) - (vector-normalize! gp-0 1.0) - ) - ((< (-> self speed) 0.0) - (vector-negate! gp-0 (-> self tangent)) - ) - (else - (set! (-> gp-0 quad) (-> self tangent quad)) - ) - ) + ((and arg0 *target*) (vector-! gp-0 (-> self root trans) (target-pos 0)) (vector-normalize! gp-0 1.0)) + ((< (-> self speed) 0.0) (vector-negate! gp-0 (-> self tangent))) + (else (set! (-> gp-0 quad) (-> self tangent quad)))) (matrix-from-two-vectors-max-angle-partial! s5-0 (-> self facing) gp-0 arg1 0.25) (vector-matrix*! gp-0 (-> self facing) s5-0) (vector-normalize! gp-0 1.0) @@ -200,29 +149,16 @@ (set! (-> self run-blend-interp) (acos (vector-dot gp-0 (-> self facing)))) (set! (-> self run-blend-interp) (* 0.0002746582 (-> self run-blend-interp))) (if (< (vector-dot (-> self facing) (the-as vector (-> s5-0 vector))) 0.0) - (set! (-> self run-blend-interp) (- (-> self run-blend-interp))) - ) - (let ((v0-10 (-> self facing))) - (set! (-> v0-10 quad) (-> gp-0 quad)) - v0-10 - ) - ) - ) + (set! (-> self run-blend-interp) (- (-> self run-blend-interp)))) + (let ((v0-10 (-> self facing))) (set! (-> v0-10 quad) (-> gp-0 quad)) v0-10))) (defbehavior robber-move robber () (+! (-> self curve-position) (/ (the float (* (- (current-time) (-> *display* old-base-frame-counter)) (the int (-> self speed)))) - (path-distance (-> self path)) - ) - ) + (path-distance (-> self path)))) (cond - ((< 1.0 (-> self curve-position)) - (+! (-> self curve-position) -1.0) - ) - ((< (-> self curve-position) 0.0) - (+! (-> self curve-position) 1.0) - ) - ) + ((< 1.0 (-> self curve-position)) (+! (-> self curve-position) -1.0)) + ((< (-> self curve-position) 0.0) (+! (-> self curve-position) 1.0))) (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) (cond ((< (-> self y-offset-desired) (-> self y-offset)) @@ -231,21 +167,15 @@ (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset-desired) (-> self y-offset)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) ((< (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-vel) (* 0.5 (- (-> self y-offset-desired) (-> self y-offset)))) (set! (-> self y-vel) (fmin 13.653334 (-> self y-vel))) (+! (-> self y-offset) (-> self y-vel)) (when (>= (-> self y-offset) (-> self y-offset-desired)) (set! (-> self y-offset) (-> self y-offset-desired)) - (set! (-> self y-vel) 0.0) - ) - ) - ) - (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset))) - ) + (set! (-> self y-vel) 0.0)))) + (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset)))) (defbehavior robber-calc-speed robber ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 symbol)) (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0)))) @@ -253,379 +183,272 @@ (let* ((f2-1 (/ (- (vector-length gp-1) arg0) (- arg1 arg0))) (f0-4 (- 1.0 (fmax 0.0 (fmin 1.0 f2-1)))) (f0-5 (lerp arg3 arg2 f0-4)) - (f30-0 (* 0.0033333334 f0-5)) - ) + (f30-0 (* 0.0033333334 f0-5))) (cond - ((or (not arg4) (< arg0 (vector-length gp-1))) - (if (< (-> self speed) 0.0) - (set! f30-0 (- f30-0)) - ) - ) - ((< (vector-dot gp-1 (-> self tangent)) 0.0) - (set! f30-0 (- f30-0)) - ) - ) + ((or (not arg4) (< arg0 (vector-length gp-1))) (if (< (-> self speed) 0.0) (set! f30-0 (- f30-0)))) + ((< (vector-dot gp-1 (-> self tangent)) 0.0) (set! f30-0 (- f30-0)))) (set! (-> self speed) f30-0) - f30-0 - ) - ) - ) + f30-0))) (defbehavior robber-calc-anim-speed robber () (let* ((f0-1 (fabs (-> self speed))) (f0-2 (* 0.07324219 f0-1)) (f0-3 (+ -15.0 f0-2)) - (f1-3 (* 0.13333334 f0-3)) - ) - (fmin 1.5 (fmax 0.9 f1-3)) - ) - ) + (f1-3 (* 0.13333334 f0-3))) + (fmin 1.5 (fmax 0.9 f1-3)))) (defstate robber-debug (robber) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (clmf-input gp-0 a1-1 1) - ) - (format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) - (vector-float*! gp-0 gp-0 4096.0) - (+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path)))) - ) - (cond - ((< 1.0 (-> self curve-position)) - (+! (-> self curve-position) -1.0) - ) - ((< (-> self curve-position) 0.0) - (+! (-> self curve-position) 1.0) - ) - ) - (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) - (robber-rotate (the-as target #f) 1820.4445) - (robber-find-ground) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (let ((a1-1 (new 'stack-no-clear 'vector))) (clmf-input gp-0 a1-1 1)) + (format *stdcon* "rv ~f ~f ~f~%" (-> gp-0 x) (-> gp-0 y) (-> gp-0 z)) + (vector-float*! gp-0 gp-0 4096.0) + (+! (-> self curve-position) (/ (-> gp-0 y) (path-distance (-> self path))))) + (cond + ((< 1.0 (-> self curve-position)) (+! (-> self curve-position) -1.0)) + ((< (-> self curve-position) 0.0) (+! (-> self curve-position) 1.0))) + (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) + (robber-rotate (the-as target #f) 1820.4445) + (robber-find-ground) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate robber-dead (robber) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate robber-die (robber) :event process-drawable-death-event-handler - :code (behavior () - (let ((gp-0 #t)) - (when (robber-task-complete?) - (let ((v1-3 (-> self entity extra perm))) - (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (cond - ((zero? (-> v1-3 user-object 1)) - (set! (-> v1-3 user-object 1) 1) - (set! (-> v1-3 user-object 0) (-> self curve-position)) - (let ((f30-0 (if (>= (-> self speed) 0.0) - 163840.0 - -163840.0 - ) - ) - ) - (process-spawn - fuel-cell - :init fuel-cell-init-as-spline-slider - (process->handle self) - (-> self curve-position) - f30-0 - (-> self entity extra perm task) - :to self - ) - ) - ) - (else - (set! gp-0 #f) - (logior! (-> self draw status) (draw-status hidden)) - (let ((s5-1 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) - (+! (-> s5-1 y) 8192.0) - (birth-pickup-at-point - s5-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - ) - ) - ) - ) - ) - (when gp-0 - (ja-no-eval :group! robber-death-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (while (-> self child) - (suspend) - ) - (go robber-dead) - ) - :post transform-post - ) + :code + (behavior () + (let ((gp-0 #t)) + (when (robber-task-complete?) + (let ((v1-3 (-> self entity extra perm))) + (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) + (cond + ((zero? (-> v1-3 user-object 1)) + (set! (-> v1-3 user-object 1) 1) + (set! (-> v1-3 user-object 0) (-> self curve-position)) + (let ((f30-0 (if (>= (-> self speed) 0.0) 163840.0 -163840.0))) + (process-spawn fuel-cell + :init + fuel-cell-init-as-spline-slider + (process->handle self) + (-> self curve-position) + f30-0 + (-> self entity extra perm task) + :to + self))) + (else + (set! gp-0 #f) + (logior! (-> self draw status) (draw-status hidden)) + (let ((s5-1 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) s5-1 (the-as float (-> v1-3 user-object 0)) 'interp) + (+! (-> s5-1 y) 8192.0) + (birth-pickup-at-point s5-1 + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f))))))) + (when gp-0 + (ja-no-eval :group! robber-death-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 4096.0 8192.0 122880.0 122880.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))))) + (while (-> self child) + (suspend)) + (go robber-dead)) + :post transform-post) (defstate robber-got-away (robber) :event robber-event-handler - :trans (behavior () - (if (and (not (and *target* (>= 204800.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (robber-find-ground) - ) - (go robber-idle) - ) - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - ) - :code (behavior () - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (loop - (ja :num! (loop! (robber-calc-anim-speed))) - (if (< 27.306667 (fabs (-> self speed))) - (set! (-> self speed) (* 0.95 (-> self speed))) - ) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - ) - ) - :post transform-post - ) + :trans + (behavior () + (if (and (not (and *target* (>= 204800.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (robber-find-ground)) + (go robber-idle)) + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee))) + :code + (behavior () + (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (loop (ja :num! (loop! (robber-calc-anim-speed))) + (if (< 27.306667 (fabs (-> self speed))) (set! (-> self speed) (* 0.95 (-> self speed)))) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend))) + :post transform-post) (defstate robber-tired (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self y-offset-desired) -12288.0) - ) - :exit (behavior () - (set! (-> self y-offset-desired) 0.0) - ) - :trans (behavior () - (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (go robber-got-away) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (ja :num! (loop! (robber-calc-anim-speed))) - (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-ambient-time)) - (let* ((f30-0 300.0) - (f28-0 2.0) - (f26-0 2.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as number (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-ambient) - (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42))))))) - ) - ) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self y-offset-desired) -12288.0)) + :exit + (behavior () + (set! (-> self y-offset-desired) 0.0)) + :trans + (behavior () + (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (go robber-got-away))) + :code + (behavior () + (loop (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (ja :num! (loop! (robber-calc-anim-speed))) + (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 32768.0 122880.0 122060.8 20480.0 #f) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-ambient-time)) + (let* ((f30-0 300.0) + (f28-0 2.0) + (f26-0 2.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as number (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-ambient) + (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))))))) + :post transform-post) (defstate robber-flee (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self near-timer) 3000) - (set-time! (-> self far-time)) - (set! (-> self y-offset-desired) 0.0) - ) - :trans (behavior () - (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - ) - (go robber-got-away) - ) - (when (and *target* (>= 102400.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (set! (-> self near-timer) - (- (the-as time-frame (-> self near-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (<= (-> self near-timer) 0) - (go robber-tired) - ) + :enter + (behavior () + (set! (-> self near-timer) 3000) (set-time! (-> self far-time)) - ) - (if (time-elapsed? (-> self far-time) (seconds 3)) - (set! (-> self near-timer) (the-as int (-> self timeout))) - ) - ) - :code (behavior () - (loop - (when (not (ja-group? robber-fly-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! robber-fly-ja) - ) - (ja :num! (loop! (robber-calc-anim-speed))) - (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) - (robber-move) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek!)) - ) - (set-time! (-> self last-ambient-time)) - (let* ((f30-0 300.0) - (f28-0 3.0) - (f26-0 5.0) - (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-42 (the-as number (logior #x3f800000 v1-41))) - ) - (set! (-> self time-to-next-ambient) - (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42))))))) - ) - ) - ) - ) - ) - :post transform-post - ) + (set! (-> self y-offset-desired) 0.0)) + :trans + (behavior () + (if (not (and *target* (>= 163840.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans))))) + (go robber-got-away)) + (when (and *target* (>= 102400.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (set! (-> self near-timer) + (- (the-as time-frame (-> self near-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (<= (-> self near-timer) 0) (go robber-tired)) + (set-time! (-> self far-time))) + (if (time-elapsed? (-> self far-time) (seconds 3)) (set! (-> self near-timer) (the-as int (-> self timeout))))) + :code + (behavior () + (loop (when (not (ja-group? robber-fly-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! robber-fly-ja)) + (ja :num! (loop! (robber-calc-anim-speed))) + (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (when (time-elapsed? (-> self last-ambient-time) (-> self time-to-next-ambient)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! robber-ambient-look-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 61440.0 122880.0 204800.0 16384.0 #t) + (robber-move) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek!))) + (set-time! (-> self last-ambient-time)) + (let* ((f30-0 300.0) + (f28-0 3.0) + (f26-0 5.0) + (v1-41 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-42 (the-as number (logior #x3f800000 v1-41)))) + (set! (-> self time-to-next-ambient) + (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-42)))))))))))) + :post transform-post) (defstate robber-idle (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self speed) 0.0) - ) - :trans (behavior () - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - (robber-rotate (the-as target #t) 182.04445) - (robber-move) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-idle-hover-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self speed) 0.0)) + :trans + (behavior () + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee)) + (robber-rotate (the-as target #t) 182.04445) + (robber-move)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (loop (ja-no-eval :group! robber-idle-hover-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate robber-initial-notice (robber) :event robber-event-handler - :trans (behavior () - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id rolling-robbers-hint) "sksp0116" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (if (and *target* (>= 32768.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-flee) - ) - ) - :code (behavior () - (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) - (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) - (f0-1 6.826667) - ) - (set! (-> gp-1 y) 0.0) - (if (< (vector-dot gp-1 (-> self tangent)) 0.0) - (set! f0-1 (- f0-1)) - ) - (set! (-> self speed) f0-1) - ) - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-spots-ja :num! (seek! max 2.0) :frame-num 0.0) - (until (ja-done? 0) - (robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t) - (robber-rotate (the-as target #f) 1820.4445) - (suspend) - (ja :num! (seek! max 2.0)) - ) - (go robber-flee) - ) - ) - :post transform-post - ) + :trans + (behavior () + (when (logtest? (-> self draw status) (draw-status was-drawn)) + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id rolling-robbers-hint) "sksp0116" (the-as entity #f) *entity-pool* (game-task none)))) + (if (and *target* (>= 32768.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-flee))) + :code + (behavior () + (path-control-method-14 (-> self path) (-> self tangent) (-> self curve-position)) + (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) + (f0-1 6.826667)) + (set! (-> gp-1 y) 0.0) + (if (< (vector-dot gp-1 (-> self tangent)) 0.0) (set! f0-1 (- f0-1))) + (set! (-> self speed) f0-1)) + (ja-channel-push! 1 (seconds 0.2)) + (loop (ja-no-eval :group! robber-spots-ja :num! (seek! max 2.0) :frame-num 0.0) + (until (ja-done? 0) + (robber-calc-speed 61440.0 122880.0 2048.0 2048.0 #t) + (robber-rotate (the-as target #f) 1820.4445) + (suspend) + (ja :num! (seek! max 2.0))) + (go robber-flee))) + :post transform-post) (defstate robber-initial (robber) :event robber-event-handler - :enter (behavior () - (set! (-> self speed) 0.0) - ) - :trans (behavior () - (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) - (go robber-initial-notice) - ) - (robber-move) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! robber-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (set! (-> self speed) 0.0)) + :trans + (behavior () + (if (and *target* (>= 122880.0 (vector-vector-xz-distance (-> self root trans) (-> *target* control trans)))) + (go robber-initial-notice)) + (robber-move)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (loop (ja-no-eval :group! robber-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defmethod init-from-entity! ((this robber) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -633,21 +456,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *robber-sg* '()) + (initialize-skeleton this *robber-sg* ()) (set! (-> this root pause-adjust-distance) 122880.0) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this path) (new 'process 'curve-control this 'path -1000000000.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw origin-joint-index) (the-as uint 3)) (set! (-> this curve-position) (res-lump-float (-> this entity) 'initial-spline-pos)) (eval-path-curve! (-> this path) (-> this root trans) (-> this curve-position) 'interp) @@ -655,27 +474,20 @@ (set! (-> this facing quad) (-> this tangent quad)) (let ((s4-1 (new 'stack-no-clear 'matrix))) (forward-down->inv-matrix s4-1 (-> this facing) (new 'static 'vector :y -1.0)) - (matrix->quaternion (-> this root quat) s4-1) - ) + (matrix->quaternion (-> this root quat) s4-1)) (set! (-> this y-vel) 0.0) (set! (-> this water-height) (res-lump-float (-> this entity) 'water-height)) (robber-find-ground) (set! (-> this y-offset) (-> this y-offset-desired)) (let ((f0-14 (res-lump-float arg0 'timeout :default 10.0))) - (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-14)))) - ) + (set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-14))))) (set! (-> this last-ambient-time) 0) (set! (-> this time-to-next-ambient) 0) (set! (-> this speed) 0.0) (let ((v1-42 (-> this entity extra perm))) (logior! (-> v1-42 status) (entity-perm-status user-set-from-cstage)) - (if (nonzero? (-> v1-42 user-object 1)) - (go robber-die) - ) - ) + (if (nonzero? (-> v1-42 user-object 1)) (go robber-die))) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go robber-dead) - (go robber-initial) - ) - (none) - ) + (go robber-dead) + (go robber-initial)) + (none)) diff --git a/goal_src/jak1/levels/snow/ice-cube.gc b/goal_src/jak1/levels/snow/ice-cube.gc index c7e1a00711..5401ae5520 100644 --- a/goal_src/jak1/levels/snow/ice-cube.gc +++ b/goal_src/jak1/levels/snow/ice-cube.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "levels/sunken/double-lurker.gc") (require "engine/anim/joint-exploder.gc") @@ -11,358 +10,344 @@ ;; DECOMP BEGINS -(defskelgroup *ice-cube-break-sg* ice-cube-break ice-cube-break-lod0-jg -1 - ((ice-cube-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) +(defskelgroup *ice-cube-break-sg* + ice-cube-break + ice-cube-break-lod0-jg + -1 + ((ice-cube-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (deftype ice-cube (nav-enemy) - ((part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (part4 sparticle-launch-control) - (track-target? symbol) - (slow-down? symbol) - (tracking-player? symbol) - (force-spawn-pt int32) - (speed float) - (anim-blend float) - (prev-charge-angle-diff float) - (charge-angle float) - (ground-y float) - (cprims-type uint64) - (next-skid-sound-time time-frame) - (starting-pos vector :inline) - (target-pt vector :inline) - ) + ((part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (part4 sparticle-launch-control) + (track-target? symbol) + (slow-down? symbol) + (tracking-player? symbol) + (force-spawn-pt int32) + (speed float) + (anim-blend float) + (prev-charge-angle-diff float) + (charge-angle float) + (ground-y float) + (cprims-type uint64) + (next-skid-sound-time time-frame) + (starting-pos vector :inline) + (target-pt vector :inline)) (:methods - (ice-cube-method-51 (_type_ vector vector) symbol :overlay-at nav-enemy-method-51) - (ice-cube-method-53 (_type_ vector vector) symbol :overlay-at nav-enemy-method-53) - ) + (ice-cube-method-51 (_type_ vector vector) symbol :overlay-at nav-enemy-method-51) + (ice-cube-method-53 (_type_ vector vector) symbol :overlay-at nav-enemy-method-53)) (:states - ice-cube-appear - ice-cube-appear-land - ice-cube-become-mean - ice-cube-face-player - ice-cube-mean-charge - ice-cube-mean-charge-done - ice-cube-mean-turn-to-charge - ice-cube-retract-spikes - ice-cube-shatter - ice-cube-tired - ice-cube-trying-to-appear - ) - ) + ice-cube-appear + ice-cube-appear-land + ice-cube-become-mean + ice-cube-face-player + ice-cube-mean-charge + ice-cube-mean-charge-done + ice-cube-mean-turn-to-charge + ice-cube-retract-spikes + ice-cube-shatter + ice-cube-tired + ice-cube-trying-to-appear)) +(defskelgroup *ice-cube-sg* + ice-cube + ice-cube-lod0-jg + -1 + ((ice-cube-lod0-mg (meters 20)) (ice-cube-lod1-mg (meters 40)) (ice-cube-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3 0 3.6) + :shadow ice-cube-shadow-mg) -(defskelgroup *ice-cube-sg* ice-cube ice-cube-lod0-jg -1 - ((ice-cube-lod0-mg (meters 20)) (ice-cube-lod1-mg (meters 40)) (ice-cube-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3 0 3.6) - :shadow ice-cube-shadow-mg - ) - -(define *ice-cube-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim -1 - :notice-anim 7 - :run-anim 6 - :jump-anim 6 - :jump-land-anim 6 - :victory-anim 7 - :taunt-anim 7 - :die-anim 7 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 20) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1.5) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 35) - :stop-chase-distance (meters 45) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -3.5) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *ice-cube-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim -1 + :notice-anim 7 + :run-anim 6 + :jump-anim 6 + :jump-land-anim 6 + :victory-anim 7 + :taunt-anim 7 + :die-anim 7 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 20) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1.5) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 35) + :stop-chase-distance (meters 45) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -3.5) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-ice-cube-appear1 :id 507 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1887 :fade-after (meters 70) :falloff-to (meters 70)) - (sp-item 1888 :fade-after (meters 70) :falloff-to (meters 70)) - ) - ) + :parts + ((sp-item 1887 :fade-after (meters 70) :falloff-to (meters 70)) + (sp-item 1888 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1888 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.24) (meters 0.24)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0 64.0) - (:vel-y (meters 0.033333335) (meters 0.05)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.24) (meters 0.24)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0 64.0) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1887 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.05) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.05) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ice-cube-appear2 :id 508 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1889 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1889 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1889 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 1.0 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 1.0 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-ice-cube-foot-puff :id 567 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2325) (sp-item 2326) (sp-item 2327)) - ) + :parts ((sp-item 2325) (sp-item 2326) (sp-item 2327))) (defpart 2325 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2326 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2327 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 2.0 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 2.0 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpartgroup group-ice-cube-shatter :id 509 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1890) (sp-item 1891) (sp-item 1892)) - ) + :parts ((sp-item 1890) (sp-item 1891) (sp-item 1892))) (defpart 1892 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:y (meters 1)) - (:scale-x (meters 0.24) (meters 0.24)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 96.0 32.0) - (:vel-y (meters 0.033333335) (meters 0.13333334)) - (:accel-y (meters -0.000033333334)) - (:friction 0.99) - (:timer (seconds 0.2) (seconds 0.297)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 140)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:y (meters 1)) + (:scale-x (meters 0.24) (meters 0.24)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 96.0 32.0) + (:vel-y (meters 0.033333335) (meters 0.13333334)) + (:accel-y (meters -0.000033333334)) + (:friction 0.99) + (:timer (seconds 0.2) (seconds 0.297)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 140)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defpart 1891 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -2) (meters 4)) - (:y (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.28444445) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -2) (meters 4)) + (:y (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.28444445) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defpart 1890 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:vel-y (meters 0.13333334) (meters 0.033333335)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.35555556) - (:friction 0.99) - (:timer (seconds 0.6)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:vel-y (meters 0.13333334) (meters 0.033333335)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.35555556) + (:friction 0.99) + (:timer (seconds 0.6)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 1.5)))) (defbehavior ice-cube-default-event-handler ice-cube ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -370,105 +355,62 @@ (cond ((and (= (-> arg0 type) target) (= (-> self cprims-type) 2) - (not (send-event *target* 'query 'powerup (pickup-type eco-red))) - ) + (not (send-event *target* 'query 'powerup (pickup-type eco-red)))) (when (and (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) (else - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 4) - (set! (-> a1-3 message) 'attack) - (set! (-> a1-3 param 0) (-> arg3 param 0)) - (set! (-> a1-3 param 1) (the-as uint #f)) - (let ((v1-20 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-20) - (set! (-> a1-3 param 2) (the-as uint v1-20)) - ) - (set! (-> a1-3 param 3) (the-as uint 0)) - (send-event-function arg0 a1-3) - ) - ) - ) - (= (-> arg0 type) target) - ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 4) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (set! (-> a1-3 param 1) (the-as uint #f)) + (let ((v1-20 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-20) (set! (-> a1-3 param 2) (the-as uint v1-20))) + (set! (-> a1-3 param 3) (the-as uint 0)) + (send-event-function arg0 a1-3)))) + (= (-> arg0 type) target)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (level-hint-spawn (text-id snow-ice-cube-hint) "sksp0350" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (else - (nav-enemy-set-hit-from-direction arg0) - (go ice-cube-shatter) - ) - ) - ) + (level-hint-spawn (text-id snow-ice-cube-hint) "sksp0350" (the-as entity #f) *entity-pool* (game-task none)))) + (else (nav-enemy-set-hit-from-direction arg0) (go ice-cube-shatter)))) (('touch) (when (and (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) (else - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 4) - (set! (-> a1-7 message) 'attack) - (set! (-> a1-7 param 0) (-> arg3 param 0)) - (set! (-> a1-7 param 1) (the-as uint #f)) - (let ((v1-38 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-38) - (set! (-> a1-7 param 2) (the-as uint v1-38)) - ) - (set! (-> a1-7 param 3) (the-as uint 0)) - (send-event-function arg0 a1-7) - ) - ) - ) - (= (-> arg0 type) target) - ) + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 4) + (set! (-> a1-7 message) 'attack) + (set! (-> a1-7 param 0) (-> arg3 param 0)) + (set! (-> a1-7 param 1) (the-as uint #f)) + (let ((v1-38 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-38) (set! (-> a1-7 param 2) (the-as uint v1-38))) + (set! (-> a1-7 param 3) (the-as uint 0)) + (send-event-function arg0 a1-7)))) + (= (-> arg0 type) target)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (let ((v0-3 (the-as object (logior (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))))) (set! (-> self nav-enemy-flags) (the-as nav-enemy-flags v0-3)) - v0-3 - ) - ) - ) + v0-3))) (('touched) (when (!= (-> arg0 type) target) (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode #f)))) - ) + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode #f))))) (else - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 4) - (set! (-> a1-10 message) 'attack) - (set! (-> a1-10 param 0) (-> arg3 param 0)) - (set! (-> a1-10 param 1) (the-as uint #f)) - (let ((v1-54 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-54) - (set! (-> a1-10 param 2) (the-as uint v1-54)) - ) - (set! (-> a1-10 param 3) (the-as uint 0)) - (send-event-function arg0 a1-10) - ) - ) - ) - ) - ) - ) - ) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 4) + (set! (-> a1-10 message) 'attack) + (set! (-> a1-10 param 0) (-> arg3 param 0)) + (set! (-> a1-10 param 1) (the-as uint #f)) + (let ((v1-54 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-54) (set! (-> a1-10 param 2) (the-as uint v1-54))) + (set! (-> a1-10 param 3) (the-as uint 0)) + (send-event-function arg0 a1-10)))))))) (defmethod initialize-collision ((this ice-cube)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 5) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -481,53 +423,45 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 3276.8) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 5734.4 0.0 3276.8) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core action) (collide-action solid)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 0.0 3276.8) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 819.2 0.0 0.0 2048.0) - (append-prim s4-0 s3-3) - ) + (append-prim s4-0 s3-3)) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 2048.0 0.0 4505.6) - (append-prim s4-0 s3-4) - ) - ) + (append-prim s4-0 s3-4))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 1)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) (set! (-> this cprims-type) (the-as uint 0)) (set-root-prim-collide-with! (-> this collide-info) (collide-kind target)) (set! (-> this collide-info event-self) 'touched) (nav-enemy-method-57 this) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-57 ((this ice-cube)) (when (!= (-> this cprims-type) 1) @@ -535,11 +469,8 @@ (let ((v1-3 (-> this collide-info root-prim))) (set-vector! (-> v1-3 local-sphere) 0.0 12288.0 0.0 14745.6) (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 3 local-sphere) 819.2 0.0 0.0 2048.0) - (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 4505.6) - ) - ) - (none) - ) + (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 4505.6))) + (none)) (defmethod nav-enemy-method-58 ((this ice-cube)) (when (!= (-> this cprims-type) 2) @@ -547,49 +478,31 @@ (let ((v1-3 (-> this collide-info root-prim))) (set-vector! (-> v1-3 local-sphere) 0.0 12288.0 0.0 16384.0) (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 3 local-sphere) 819.2 0.0 0.0 4915.2) - (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 9420.8) - ) - ) - (none) - ) + (set-vector! (-> (the-as collide-shape-prim-group v1-3) prims 4 local-sphere) 0.0 2048.0 0.0 9420.8))) + (none)) (defmethod nav-enemy-method-48 ((this ice-cube)) (process-drawable-from-entity! this (-> this entity)) - (initialize-skeleton this *ice-cube-sg* '()) + (initialize-skeleton this *ice-cube-sg* ()) (init-defaults! this *ice-cube-nav-enemy-info*) (set! (-> this neck up) (the-as uint 0)) (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defmethod deactivate ((this ice-cube)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) - (if (nonzero? (-> this part4)) - (kill-and-free-particles (-> this part4)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) + (if (nonzero? (-> this part4)) (kill-and-free-particles (-> this part4))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ice-cube) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (if (nonzero? (-> this part4)) - (&+! (-> this part4) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (if (nonzero? (-> this part4)) (&+! (-> this part4) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this ice-cube) (arg0 entity-actor)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 507) this)) @@ -599,27 +512,18 @@ (initialize-collision this) (nav-enemy-method-48 this) (let ((s4-0 (-> this path curve num-cverts))) - (if (<= s4-0 0) - (go process-drawable-art-error "no path") - ) + (if (<= s4-0 0) (go process-drawable-art-error "no path")) (let ((v1-21 (res-lump-value arg0 'mode uint128 :default (the-as uint128 -1)))) (if (and (>= (the-as int v1-21) 0) (< (the-as int v1-21) s4-0)) - (set! (-> this force-spawn-pt) (the-as int v1-21)) - (set! (-> this force-spawn-pt) -1) - ) - ) - ) + (set! (-> this force-spawn-pt) (the-as int v1-21)) + (set! (-> this force-spawn-pt) -1)))) (go ice-cube-trying-to-appear) - (none) - ) + (none)) (defmethod nav-enemy-method-60 ((this ice-cube) (arg0 symbol)) (let ((gp-0 (new 'stack-no-clear 'vector))) (when (-> this tracking-player?) - (if (and *target* arg0) - (set! (-> this target-pt quad) (-> (target-pos 0) quad)) - ) - ) + (if (and *target* arg0) (set! (-> this target-pt quad) (-> (target-pos 0) quad)))) (vector-! gp-0 (-> this target-pt) (-> this collide-info trans)) (seek-toward-heading-vec! (-> this collide-info) gp-0 524288.0 (seconds 0.1)) (let ((v0-5 (< (fabs (deg- (quaternion-y-angle (-> this collide-info quat)) (vector-y-angle gp-0))) 364.0889))) @@ -627,41 +531,27 @@ (the-as none 0) (set! v0-5 (the-as symbol #f)) (label cfg-10) - v0-5 - ) - ) - ) + v0-5))) (defmethod ice-cube-method-51 ((this ice-cube) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let* ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (f0-0 40960.0) - (f30-0 (+ f0-0 40960.0)) - ) + (f30-0 (+ f0-0 40960.0))) (set! (-> s5-0 quad) (-> arg0 quad)) (+! (-> s5-0 y) f0-0) - (let ((f0-2 (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (collide-kind background) - (-> this collide-info process) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) + (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* + s5-0 + f30-0 + (collide-kind background) + (-> this collide-info process) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) ;; og:preserve-this yes this is bugged - (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) - (return #f) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) - ) - (set! (-> arg1 quad) (-> s5-0 quad)) - ) - #t - ) + (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) (return #f)) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))))) + (set! (-> arg1 quad) (-> s5-0 quad))) + #t) (defmethod nav-enemy-method-52 ((this ice-cube) (arg0 vector)) (when *target* @@ -670,724 +560,528 @@ (let ((a0-4 (new 'stack-no-clear 'vector))) (set! (-> a0-4 quad) (-> arg0 quad)) (set! (-> a0-4 w) (-> this collide-info root-prim local-sphere w)) - (if (sphere-in-view-frustum? (the-as sphere a0-4)) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (if (sphere-in-view-frustum? (the-as sphere a0-4)) (return #t)))))) + #f) (defmethod ice-cube-method-53 ((this ice-cube) (arg0 vector) (arg1 vector)) (local-vars (s1-0 int) (s2-0 int)) (let ((s3-0 (-> this path curve num-cverts))) - (if (<= s3-0 0) - (return #f) - ) + (if (<= s3-0 0) (return #f)) (cond - ((>= (-> this force-spawn-pt) 0) - (set! s1-0 (-> this force-spawn-pt)) - (set! s2-0 1) - ) - (else - (set! s1-0 (rand-vu-int-count s3-0)) - (set! s2-0 s3-0) - ) - ) + ((>= (-> this force-spawn-pt) 0) (set! s1-0 (-> this force-spawn-pt)) (set! s2-0 1)) + (else (set! s1-0 (rand-vu-int-count s3-0)) (set! s2-0 s3-0))) (while (> s2-0 0) (eval-path-curve-div! (-> this path) arg0 (the float s1-0) 'interp) (when (nav-enemy-method-52 this arg0) (let ((a1-3 (new 'stack-no-clear 'vector)) - (s3-1 (new 'stack-no-clear 'collide-tri-result)) - ) + (s3-1 (new 'stack-no-clear 'collide-tri-result))) (set! (-> a1-3 quad) (-> arg0 quad)) (+! (-> a1-3 y) 16384.0) - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-3 - (new 'static 'vector :y -32768.0 :w 1.0) - 409.6 - (collide-kind background) - this - s3-1 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (set! (-> arg0 quad) (-> s3-1 intersect quad)) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-3 + (new 'static 'vector :y -32768.0 :w 1.0) + 409.6 + (collide-kind background) + this + s3-1 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (set! (-> arg0 quad) (-> s3-1 intersect quad)))) (cond - (*target* - (vector-! arg1 (target-pos 0) arg0) - (set! (-> arg1 y) 0.0) - ) + (*target* (vector-! arg1 (target-pos 0) arg0) (set! (-> arg1 y) 0.0)) (else - (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) - (+! (-> arg1 x) 409.6) - ) - ) + (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) + (+! (-> arg1 x) 409.6))) (vector-normalize! arg1 1.0) - (return #t) - ) + (return #t)) (set! s1-0 (mod (+ s1-0 1) s3-0)) - (+! s2-0 -1) - ) - ) - #f - ) + (+! s2-0 -1))) + #f) (defstate ice-cube-trying-to-appear (ice-cube) - :enter (behavior () - (ja-channel-set! 0) - (ja-post) - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self collide-info)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self collide-info)) - ) - :trans (behavior () - (when (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (when (ice-cube-method-53 self s5-0 gp-0) - (set! (-> self collide-info trans quad) (-> s5-0 quad)) - (forward-up->quaternion (-> self collide-info quat) gp-0 *up-vector*) - (nav-enemy-method-57 self) - (go ice-cube-appear) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :enter + (behavior () + (ja-channel-set! 0) + (ja-post) + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self collide-info))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self collide-info))) + :trans + (behavior () + (when (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (when (ice-cube-method-53 self s5-0 gp-0) + (set! (-> self collide-info trans quad) (-> s5-0 quad)) + (forward-up->quaternion (-> self collide-info quat) gp-0 *up-vector*) + (nav-enemy-method-57 self) + (go ice-cube-appear))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate ice-cube-appear (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (nav-enemy-method-57 self) - (set! (-> self ground-y) (-> self collide-info trans y)) - (spawn (-> self part) (-> self collide-info trans)) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - (+! (-> self collide-info trans y) -12288.0) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0)) - ) - :trans (behavior () - (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) - (set! (-> self collide-info trans y) (-> self ground-y)) + :enter + (behavior () + (nav-enemy-method-57 self) + (set! (-> self ground-y) (-> self collide-info trans y)) + (spawn (-> self part) (-> self collide-info trans)) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) + (+! (-> self collide-info trans y) -12288.0) (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (go ice-cube-appear-land) - ) - (let* ((s5-0 (-> self node-list)) - (a0-2 (-> s5-0 length)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) - (spawn (-> self part2) gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-falling-post - ) + (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0))) + :trans + (behavior () + (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) + (set! (-> self collide-info trans y) (-> self ground-y)) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (go ice-cube-appear-land)) + (let* ((s5-0 (-> self node-list)) + (a0-2 (-> s5-0 length)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) + (spawn (-> self part2) gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop (suspend))) + :post nav-enemy-falling-post) (defstate ice-cube-appear-land (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-0) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-0) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (target-in-range? self (-> self nav-info notice-distance)) - (go ice-cube-become-mean) - (go-virtual nav-enemy-idle) - ) - ) - :post ja-post - ) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-0) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-0)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (target-in-range? self (-> self nav-info notice-distance)) (go ice-cube-become-mean) (go-virtual nav-enemy-idle))) + :post ja-post) (defstate nav-enemy-idle (ice-cube) :virtual #t :event ice-cube-default-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw force-lod) -1) - (logior! (-> self mask) (process-mask actor-pause)) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) (if t9-0 (t9-0))) + (set! (-> self draw force-lod) -1) + (logior! (-> self mask) (process-mask actor-pause)))) (defstate nav-enemy-patrol (ice-cube) :virtual #t :event ice-cube-default-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-patrol) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self draw force-lod) -1) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-patrol) enter))) (if t9-0 (t9-0))) + (set! (-> self draw force-lod) -1) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-notice (ice-cube) :virtual #t :enter #f :exit #f :trans #f - :code (behavior () - (nav-enemy-method-57 self) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (logclear! (-> self mask) (process-mask actor-pause)) - (go ice-cube-face-player) - ) - :post #f - ) + :code + (behavior () + (nav-enemy-method-57 self) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (logclear! (-> self mask) (process-mask actor-pause)) + (go ice-cube-face-player)) + :post #f) (defstate ice-cube-face-player (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-method-57 self) - (logclear! (-> self mask) (process-mask actor-pause)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go-virtual nav-enemy-patrol) - ) - (set! (-> self tracking-player?) #t) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - (nav-enemy-neck-control-look-at) - (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0) - ) - :code (behavior () - (local-vars (gp-0 symbol)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f30-0 (-> self collide-info transv y))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) - (if (< 0.0 f30-0) - (set! (-> self collide-info transv y) f30-0) - ) - ) - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) - (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)))) - ) - (set! gp-0 (nav-enemy-method-60 self (not v1-27))) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (let ((s5-0 - (and (>= 0.0 (-> self collide-info transv y)) - (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - ) - ) - ) - (set! gp-0 (and s5-0 gp-0)) - (if gp-0 - (goto cfg-26) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-method-57 self) + (logclear! (-> self mask) (process-mask actor-pause)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go-virtual nav-enemy-patrol)) + (set! (-> self tracking-player?) #t) + (set! (-> self target-pt quad) (-> (target-pos 0) quad)) + (nav-enemy-neck-control-look-at) + (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0)) + :code + (behavior () + (local-vars (gp-0 symbol)) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-appear-jump-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (-> self collide-info transv y))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (if (< 0.0 f30-0) (set! (-> self collide-info transv y) f30-0))) (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (set! gp-0 (nav-enemy-method-60 self (not s5-0))) - ) - (suspend) - ) - (label cfg-26) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-1) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-1) - ) - (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ice-cube-become-mean) - ) - :post nav-enemy-simple-post - ) + (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) + (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (nav-enemy-method-60 self (not v1-27)))) + (suspend) + (ja :num! (seek!))) + (loop (let ((s5-0 (and (>= 0.0 (-> self collide-info transv y)) (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (and s5-0 gp-0)) + (if gp-0 (goto cfg-26)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (set! gp-0 (nav-enemy-method-60 self (not s5-0)))) + (suspend)) + (label cfg-26) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-1) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-1)) + (ja-no-eval :group! ice-cube-appear-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ice-cube-become-mean)) + :post nav-enemy-simple-post) (defstate ice-cube-become-mean (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set! (-> self draw force-lod) 0) - (logclear! (-> self mask) (process-mask actor-pause)) - (nav-enemy-method-57 self) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((gp-0 #f)) - (ja-no-eval :group! ice-cube-extend-spikes-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 8.0)) - (set! gp-0 #t) - (nav-enemy-method-58 self) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go ice-cube-mean-turn-to-charge) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self draw force-lod) 0) + (logclear! (-> self mask) (process-mask actor-pause)) + (nav-enemy-method-57 self)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (let ((gp-0 #f)) + (ja-no-eval :group! ice-cube-extend-spikes-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 8.0)) + (set! gp-0 #t) + (nav-enemy-method-58 self)) + (suspend) + (ja :num! (seek!)))) + (go ice-cube-mean-turn-to-charge)) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-54 ((this ice-cube) (arg0 vector)) (let* ((s4-0 (-> this path curve num-cverts)) (s2-0 (nav-enemy-rnd-int-count s4-0)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (dotimes (s3-0 s4-0) (eval-path-curve-div! (-> this path) s5-0 (the float s2-0) 'interp) (when (>= (vector-vector-xz-distance s5-0 (-> this collide-info trans)) 32768.0) (when (ice-cube-method-51 this s5-0 s5-0) (set! (-> this target-pt quad) (-> s5-0 quad)) - (return #t) - ) - ) - (set! s2-0 (mod (+ s2-0 1) s4-0)) - ) - ) - #f - ) + (return #t))) + (set! s2-0 (mod (+ s2-0 1) s4-0)))) + #f) (defstate ice-cube-mean-turn-to-charge (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-method-58 self) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go ice-cube-retract-spikes) - ) - (set! (-> self tracking-player?) #t) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - (nav-enemy-neck-control-look-at) - (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0) - ) - :code (behavior () - (local-vars (gp-0 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! ice-cube-turn-on-player-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((f30-0 (-> self collide-info transv y))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) - (if (< 0.0 f30-0) - (set! (-> self collide-info transv y) f30-0) - ) - ) - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) - (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)))) - ) - (set! gp-0 (nav-enemy-method-60 self (not v1-27))) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (let ((s5-0 - (and (>= 0.0 (-> self collide-info transv y)) - (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - ) - ) - ) - (set! gp-0 (and s5-0 gp-0)) - (if gp-0 - (goto cfg-26) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 32768.0 - #f - #f - #f - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-method-58 self) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go ice-cube-retract-spikes)) + (set! (-> self tracking-player?) #t) + (set! (-> self target-pt quad) (-> (target-pos 0) quad)) + (nav-enemy-neck-control-look-at) + (set-vector! (-> self collide-info transv) 0.0 114688.0 0.0 1.0)) + :code + (behavior () + (local-vars (gp-0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! ice-cube-turn-on-player-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (-> self collide-info transv y))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (if (< 0.0 f30-0) (set! (-> self collide-info transv y) f30-0))) (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (set! gp-0 (nav-enemy-method-60 self (not s5-0))) - ) - (suspend) - ) - (label cfg-26) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-1) - (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-1) - ) - (ja-no-eval :group! ice-cube-turn-on-player-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ice-cube-mean-charge) - ) - :post nav-enemy-simple-post - ) + (let* ((v1-26 (>= 0.0 (-> self collide-info transv y))) + (v1-27 (and v1-26 (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (nav-enemy-method-60 self (not v1-27)))) + (suspend) + (ja :num! (seek!))) + (loop (let ((s5-0 (and (>= 0.0 (-> self collide-info transv y)) (logtest? (-> self collide-info status) (cshape-moving-flags onsurf))))) + (set! gp-0 (and s5-0 gp-0)) + (if gp-0 (goto cfg-26)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 32768.0 + #f + #f + #f) + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (set! gp-0 (nav-enemy-method-60 self (not s5-0)))) + (suspend)) + (label cfg-26) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-1) + (vector<-cspace! gp-1 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-1)) + (ja-no-eval :group! ice-cube-turn-on-player-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ice-cube-mean-charge)) + :post nav-enemy-simple-post) (defstate ice-cube-mean-charge (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (nav-enemy-method-58 self) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (set-time! (-> self next-skid-sound-time)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos))) - ) - (go ice-cube-retract-spikes) - ) - (set! (-> self target-speed) (-> self nav-info run-travel-speed)) - (set! (-> self acceleration) (-> self nav-info run-acceleration)) - (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) - (set! (-> self turn-time) (-> self nav-info run-turn-time)) - (logclear! (-> self nav flags) (nav-control-flags navcf8)) - (set-root-prim-collide-with! (-> self collide-info) (collide-kind cak-2 cak-3 target crate enemy)) - (set! (-> self track-target?) #t) - (set! (-> self slow-down?) #f) - (set! (-> self speed) 81920.0) - (set! (-> self prev-charge-angle-diff) 0.0) - (let ((a0-6 (-> self collide-info trans))) - (set! (-> self starting-pos quad) (-> a0-6 quad)) - ) - (set! (-> self charge-angle) (quaternion-y-angle (-> self collide-info quat))) - ) - :exit (behavior () - (logior! (-> self nav flags) (nav-control-flags navcf8)) - (set-root-prim-collide-with! (-> self collide-info) (collide-kind target)) - ) - :trans (behavior () - (when (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) - (cond - ((= (-> self speed) 0.0) - (go ice-cube-mean-charge-done) - ) - (else - (set! (-> self slow-down?) #t) - (set! (-> self track-target?) #f) - (set! (-> self tracking-player?) #f) - ) - ) - ) - (if (-> self tracking-player?) - (set! (-> self target-pt quad) (-> (target-pos 0) quad)) - ) - (let ((gp-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (vector-! gp-1 (-> self target-pt) (-> self starting-pos)) - (vector-! s5-0 (-> self collide-info trans) (-> self starting-pos)) - (let ((f30-0 (vector-xz-length gp-1)) - (f28-0 (vector-xz-length s5-0)) - ) - (if (< (+ 14336.0 f30-0) f28-0) - (set! (-> self slow-down?) #t) - ) - (let ((f0-5 (atan (-> gp-1 x) (-> gp-1 z))) - (gp-2 (-> self nav target-pos)) - ) - (if (< f30-0 (+ 8192.0 f28-0)) - (set! (-> self track-target?) #f) - ) - (cond - ((-> self track-target?) - (let ((f26-0 (deg-seek-smooth (-> self charge-angle) f0-5 (* 2730.6667 (seconds-per-frame)) 0.25))) - (set! (-> self prev-charge-angle-diff) (deg- f26-0 (-> self charge-angle))) - (set! (-> self charge-angle) f26-0) - ) - ) - (else - (let ((f0-11 (* 0.99 (-> self prev-charge-angle-diff)))) - (set! (-> self prev-charge-angle-diff) f0-11) - (+! (-> self charge-angle) f0-11) - ) - ) - ) - (set-vector! gp-2 0.0 0.0 (+ 15360.0 (fmax f30-0 f28-0)) 1.0) - (vector-rotate-around-y! gp-2 gp-2 (-> self charge-angle)) - (vector+! gp-2 gp-2 (-> self starting-pos)) - (nav-control-method-28 (-> self nav) (collide-kind wall-object ground-object)) - (nav-control-method-11 (-> self nav) gp-2) - ) - ) - ) - (set! (-> self nav travel y) 0.0) - (when (-> self slow-down?) - (set! (-> self speed) (seek-with-smooth (-> self speed) 0.0 (* 81920.0 (seconds-per-frame)) 0.8 1638.4)) - (if (>= 0.0 (-> self speed)) - (go ice-cube-mean-charge-done) - ) - (when (zero? (nav-enemy-rnd-int-count 45)) - (let ((gp-3 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Rball)) - (spawn (-> self part4) gp-3) - (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Lball)) - (spawn (-> self part4) gp-3) - ) - ) - (when (>= (current-time) (-> self next-skid-sound-time)) - (set! (-> self next-skid-sound-time) (+ (current-time) (nav-enemy-rnd-int-range 60 120))) - (sound-play "ice-stop" :vol (the float (the int (* 0.0012207031 (-> self speed))))) - ) - ) - (let ((f30-1 (* (vector-xz-length (-> self nav travel)) (-> *display* frames-per-second)))) - (if (< f30-1 13107.2) - (go ice-cube-mean-charge-done) - ) - (set! (-> self collide-info transv quad) (-> self nav travel quad)) - (if (< (-> self speed) f30-1) - (set! f30-1 (-> self speed)) - ) - (set! (-> self anim-blend) (fmin 1.0 (* 0.000016276043 f30-1))) - (vector-normalize! (-> self collide-info transv) f30-1) - ) - (+! (-> self collide-info transv y) -36864.0) - (quaternion-rotate-y-to-vector! - (-> self collide-info quat) - (-> self collide-info quat) - (the-as quaternion (-> self collide-info transv)) - (* 16384.0 (seconds-per-frame)) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ice-cube-invuln-run-ja :num! min) - (until (-> self slow-down?) - (suspend) - (ja :num! (loop!)) - ) - (ja-channel-push! 2 (seconds 0.07)) - (ja :group! ice-cube-invuln-stopping-upright-ja :num! min) - (ja :chan 1 :group! ice-cube-invuln-stopping-ja :num! (chan 0) :frame-interp (-> self anim-blend)) - (loop - (suspend) - (ja :num! (loop!)) - (ja :chan 1 :num! (chan 0) :frame-interp (-> self anim-blend)) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (nav-enemy-method-58 self) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (set-time! (-> self next-skid-sound-time)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)) + (not (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)))) + (go ice-cube-retract-spikes)) + (set! (-> self target-speed) (-> self nav-info run-travel-speed)) + (set! (-> self acceleration) (-> self nav-info run-acceleration)) + (set! (-> self rotate-speed) (-> self nav-info run-rotate-speed)) + (set! (-> self turn-time) (-> self nav-info run-turn-time)) + (logclear! (-> self nav flags) (nav-control-flags navcf8)) + (set-root-prim-collide-with! (-> self collide-info) (collide-kind cak-2 cak-3 target crate enemy)) + (set! (-> self track-target?) #t) + (set! (-> self slow-down?) #f) + (set! (-> self speed) 81920.0) + (set! (-> self prev-charge-angle-diff) 0.0) + (let ((a0-6 (-> self collide-info trans))) (set! (-> self starting-pos quad) (-> a0-6 quad))) + (set! (-> self charge-angle) (quaternion-y-angle (-> self collide-info quat)))) + :exit + (behavior () + (logior! (-> self nav flags) (nav-control-flags navcf8)) + (set-root-prim-collide-with! (-> self collide-info) (collide-kind target))) + :trans + (behavior () + (when (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) + (cond + ((= (-> self speed) 0.0) (go ice-cube-mean-charge-done)) + (else (set! (-> self slow-down?) #t) (set! (-> self track-target?) #f) (set! (-> self tracking-player?) #f)))) + (if (-> self tracking-player?) (set! (-> self target-pt quad) (-> (target-pos 0) quad))) + (let ((gp-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self target-pt) (-> self starting-pos)) + (vector-! s5-0 (-> self collide-info trans) (-> self starting-pos)) + (let ((f30-0 (vector-xz-length gp-1)) + (f28-0 (vector-xz-length s5-0))) + (if (< (+ 14336.0 f30-0) f28-0) (set! (-> self slow-down?) #t)) + (let ((f0-5 (atan (-> gp-1 x) (-> gp-1 z))) + (gp-2 (-> self nav target-pos))) + (if (< f30-0 (+ 8192.0 f28-0)) (set! (-> self track-target?) #f)) + (cond + ((-> self track-target?) + (let ((f26-0 (deg-seek-smooth (-> self charge-angle) f0-5 (* 2730.6667 (seconds-per-frame)) 0.25))) + (set! (-> self prev-charge-angle-diff) (deg- f26-0 (-> self charge-angle))) + (set! (-> self charge-angle) f26-0))) + (else + (let ((f0-11 (* 0.99 (-> self prev-charge-angle-diff)))) + (set! (-> self prev-charge-angle-diff) f0-11) + (+! (-> self charge-angle) f0-11)))) + (set-vector! gp-2 0.0 0.0 (+ 15360.0 (fmax f30-0 f28-0)) 1.0) + (vector-rotate-around-y! gp-2 gp-2 (-> self charge-angle)) + (vector+! gp-2 gp-2 (-> self starting-pos)) + (nav-control-method-28 (-> self nav) (collide-kind wall-object ground-object)) + (nav-control-method-11 (-> self nav) gp-2)))) + (set! (-> self nav travel y) 0.0) + (when (-> self slow-down?) + (set! (-> self speed) (seek-with-smooth (-> self speed) 0.0 (* 81920.0 (seconds-per-frame)) 0.8 1638.4)) + (if (>= 0.0 (-> self speed)) (go ice-cube-mean-charge-done)) + (when (zero? (nav-enemy-rnd-int-count 45)) + (let ((gp-3 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Rball)) + (spawn (-> self part4) gp-3) + (vector<-cspace! gp-3 (joint-node ice-cube-lod0-jg Lball)) + (spawn (-> self part4) gp-3))) + (when (>= (current-time) (-> self next-skid-sound-time)) + (set! (-> self next-skid-sound-time) (+ (current-time) (nav-enemy-rnd-int-range 60 120))) + (sound-play "ice-stop" :vol (the float (the int (* 0.0012207031 (-> self speed))))))) + (let ((f30-1 (* (vector-xz-length (-> self nav travel)) (-> *display* frames-per-second)))) + (if (< f30-1 13107.2) (go ice-cube-mean-charge-done)) + (set! (-> self collide-info transv quad) (-> self nav travel quad)) + (if (< (-> self speed) f30-1) (set! f30-1 (-> self speed))) + (set! (-> self anim-blend) (fmin 1.0 (* 0.000016276043 f30-1))) + (vector-normalize! (-> self collide-info transv) f30-1)) + (+! (-> self collide-info transv y) -36864.0) + (quaternion-rotate-y-to-vector! (-> self collide-info quat) + (-> self collide-info quat) + (the-as quaternion (-> self collide-info transv)) + (* 16384.0 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #f + #f + #f)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ice-cube-invuln-run-ja :num! min) + (until (-> self slow-down?) + (suspend) + (ja :num! (loop!))) + (ja-channel-push! 2 (seconds 0.07)) + (ja :group! ice-cube-invuln-stopping-upright-ja :num! min) + (ja :chan 1 :group! ice-cube-invuln-stopping-ja :num! (chan 0) :frame-interp (-> self anim-blend)) + (loop (suspend) + (ja :num! (loop!)) + (ja :chan 1 :num! (chan 0) :frame-interp (-> self anim-blend)))) + :post nav-enemy-simple-post) (defstate ice-cube-mean-charge-done (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (nav-enemy-method-58 self) - (nav-enemy-neck-control-inactive) - (go ice-cube-retract-spikes) - ) - ) + :code + (behavior () + (nav-enemy-method-58 self) + (nav-enemy-neck-control-inactive) + (go ice-cube-retract-spikes))) (defstate ice-cube-retract-spikes (ice-cube) :event ice-cube-default-event-handler - :code (behavior () - (nav-enemy-method-58 self) - (nav-enemy-neck-control-inactive) - (ja-channel-push! 1 (seconds 0.07)) - (let ((gp-0 #f)) - (ja-no-eval :group! ice-cube-retract-spikes-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-aframe-num 0) 3.0)) - (set! gp-0 #t) - (nav-enemy-method-57 self) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go ice-cube-tired) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (nav-enemy-method-58 self) + (nav-enemy-neck-control-inactive) + (ja-channel-push! 1 (seconds 0.07)) + (let ((gp-0 #f)) + (ja-no-eval :group! ice-cube-retract-spikes-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-aframe-num 0) 3.0)) + (set! gp-0 #t) + (nav-enemy-method-57 self)) + (suspend) + (ja :num! (seek!)))) + (go ice-cube-tired)) + :post nav-enemy-simple-post) (defstate ice-cube-tired (ice-cube) :event ice-cube-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 2)) - (cond - ((or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go ice-cube-face-player) - ) - (else - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ice-cube-head-wipe-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.2)) - (loop - (ja-no-eval :group! ice-cube-breathing-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 2)) + (cond + ((or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go ice-cube-face-player)) + (else (go-virtual nav-enemy-patrol))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ice-cube-head-wipe-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post nav-enemy-simple-post - ) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.2)) + (loop (ja-no-eval :group! ice-cube-breathing-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post nav-enemy-simple-post) (defstate ice-cube-shatter (ice-cube) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg main)) - (spawn (-> self part3) gp-0) - ) - (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) - (clear-collide-with-as (-> self collide-info)) - (cleanup-for-death self) - (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> gp-1 duration) (seconds 3)) - (set! (-> gp-1 gravity) -327680.0) - (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (target-pos 0) quad)) - (process-spawn - joint-exploder - *ice-cube-break-sg* - 2 - gp-1 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 28) - (new 'static 'joint-exploder-static-joint-params :joint-index 23) - (new 'static 'joint-exploder-static-joint-params :joint-index 8) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 26) - (new 'static 'joint-exploder-static-joint-params :joint-index 21) - (new 'static 'joint-exploder-static-joint-params :joint-index 24) - (new 'static 'joint-exploder-static-joint-params :joint-index 29) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 6) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 15) - (new 'static 'joint-exploder-static-joint-params :joint-index 16) - (new 'static 'joint-exploder-static-joint-params :joint-index 17) - (new 'static 'joint-exploder-static-joint-params :joint-index 18) - (new 'static 'joint-exploder-static-joint-params :joint-index 19) - (new 'static 'joint-exploder-static-joint-params :joint-index 3) - (new 'static 'joint-exploder-static-joint-params :joint-index 20) - ) - ) - :to self - ) - ) - (sound-play "ice-explode") - (suspend) - (ja-channel-set! 0) - (ja-post) - (until (not (-> self child)) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node ice-cube-lod0-jg main)) + (spawn (-> self part3) gp-0)) + (drop-pickup (-> self enemy-info) #t *entity-pool* (-> self enemy-info) 0) + (clear-collide-with-as (-> self collide-info)) + (cleanup-for-death self) + (let ((gp-1 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> gp-1 duration) (seconds 3)) + (set! (-> gp-1 gravity) -327680.0) + (set! (-> gp-1 fountain-rand-transv-lo quad) (-> (target-pos 0) quad)) + (process-spawn joint-exploder + *ice-cube-break-sg* + 2 + gp-1 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 28) + (new 'static 'joint-exploder-static-joint-params :joint-index 23) + (new 'static 'joint-exploder-static-joint-params :joint-index 8) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 26) + (new 'static 'joint-exploder-static-joint-params :joint-index 21) + (new 'static 'joint-exploder-static-joint-params :joint-index 24) + (new 'static 'joint-exploder-static-joint-params :joint-index 29) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 6) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 15) + (new 'static 'joint-exploder-static-joint-params :joint-index 16) + (new 'static 'joint-exploder-static-joint-params :joint-index 17) + (new 'static 'joint-exploder-static-joint-params :joint-index 18) + (new 'static 'joint-exploder-static-joint-params :joint-index 19) + (new 'static 'joint-exploder-static-joint-params :joint-index 3) + (new 'static 'joint-exploder-static-joint-params :joint-index 20))) + :to + self)) + (sound-play "ice-explode") (suspend) - ) - ) - ) + (ja-channel-set! 0) + (ja-post) + (until (not (-> self child)) + (suspend)))) diff --git a/goal_src/jak1/levels/snow/snow-ball.gc b/goal_src/jak1/levels/snow/snow-ball.gc index 19a5b6255b..6d6107ca6c 100644 --- a/goal_src/jak1/levels/snow/snow-ball.gc +++ b/goal_src/jak1/levels/snow/snow-ball.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") (require "engine/gfx/shadow/shadow-cpu.gc") @@ -12,110 +11,95 @@ ;; DECOMP BEGINS -(deftype snow-ball-shadow (process-drawable) - () +(deftype snow-ball-shadow (process-drawable) () (:states - snow-ball-shadow-idle - ) - ) - + snow-ball-shadow-idle)) (deftype snow-ball-junction (structure) - ((enter-time time-frame) - (exit-time time-frame) - ) - ) - + ((enter-time time-frame) + (exit-time time-frame))) (deftype snow-ball-path-info (structure) - ((hug-path? symbol) - (path-pos vector :inline) - ) - ) - + ((hug-path? symbol) + (path-pos vector :inline))) (deftype snow-ball-roller (process-drawable) - ((root collide-shape-moving :override) - (which-path int32) - (path-u float) - (path-speed float) - (path-length float) - (path-fall-u float) - (path-coming-out-u float) - (path-faded-up-u float) - (delay-til-bounce int32) - (rolling-sound-id sound-id) - (rolling-sound-enabled? symbol) - (last-bounce-time time-frame) - (hit-player-time time-frame) - (path-info snow-ball-path-info :inline) - (junctions snow-ball-junction 4 :inline) - ) + ((root collide-shape-moving :override) + (which-path int32) + (path-u float) + (path-speed float) + (path-length float) + (path-fall-u float) + (path-coming-out-u float) + (path-faded-up-u float) + (delay-til-bounce int32) + (rolling-sound-id sound-id) + (rolling-sound-enabled? symbol) + (last-bounce-time time-frame) + (hit-player-time time-frame) + (path-info snow-ball-path-info :inline) + (junctions snow-ball-junction 4 :inline)) (:methods - (follow-path (_type_) none) - (play-landing-sound (_type_ float) sound-id) - (snow-ball-roller-method-22 (_type_ process-drawable) none) - ) + (follow-path (_type_) none) + (play-landing-sound (_type_ float) sound-id) + (snow-ball-roller-method-22 (_type_ process-drawable) none)) (:states - snow-ball-roller-idle - ) - ) - + snow-ball-roller-idle)) (deftype snow-ball (process) - ((child-override (pointer snow-ball-roller) :overlay-at child) - (state-time time-frame) - (last-path-picked int32) - (same-path-picked-count int32) - (delay-til-next int32) - (path curve-control 2) - ) + ((child-override (pointer snow-ball-roller) :overlay-at child) + (state-time time-frame) + (last-path-picked int32) + (same-path-picked-count int32) + (delay-til-next int32) + (path curve-control 2)) (:methods - (snow-ball-method-14 (_type_ (inline-array snow-ball-junction) float int) symbol) - (snow-ball-method-15 (_type_ (inline-array snow-ball-junction) int) symbol) - ) + (snow-ball-method-14 (_type_ (inline-array snow-ball-junction) float int) symbol) + (snow-ball-method-15 (_type_ (inline-array snow-ball-junction) int) symbol)) (:states - snow-ball-idle - ) - ) + snow-ball-idle)) +(defskelgroup *snow-ball-sg* + snow-ball + snow-ball-lod0-jg + snow-ball-idle-ja + ((snow-ball-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(defskelgroup *snow-ball-sg* snow-ball snow-ball-lod0-jg snow-ball-idle-ja - ((snow-ball-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) - -(defskelgroup *snow-ball-shadow-sg* snow-ball snow-ball-shadow-lod0-jg -1 - ((snow-ball-shadow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1.5 0 2) - :shadow snow-ball-shadow-shadow-mg - ) +(defskelgroup *snow-ball-shadow-sg* + snow-ball + snow-ball-shadow-lod0-jg + -1 + ((snow-ball-shadow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1.5 0 2) + :shadow snow-ball-shadow-shadow-mg) (define *snow-ball-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags disable-fade shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 245760.0) - :bot-plane (new 'static 'plane :y 1.0 :w 26624.0) - :top-plane (new 'static 'plane :y 1.0) - :fade-dist 819200.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags disable-fade shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 245760.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 26624.0) + :top-plane + (new 'static 'plane :y 1.0) + :fade-dist 819200.0))) (defstate snow-ball-shadow-idle (snow-ball-shadow) - :trans (behavior () - (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) - (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - 0 - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post ja-post - ) + :trans + (behavior () + (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) + (update-direction-from-time-of-day (-> self draw shadow-ctrl)) + 0) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defbehavior snow-ball-shadow-init-by-other snow-ball-shadow () (stack-size-set! (-> self main-thread) 128) @@ -124,19 +108,17 @@ (set! (-> self root trans quad) (-> (the-as process-drawable (-> self parent 0)) root trans quad)) (quaternion-identity! (-> self root quat)) (vector-identity! (-> self root scale)) - (initialize-skeleton self *snow-ball-shadow-sg* '()) + (initialize-skeleton self *snow-ball-shadow-sg* ()) (ja-channel-set! 1) (ja :group! snow-ball-shadow-idle-ja :num! min) (set! (-> self draw shadow-ctrl) *snow-ball-shadow-control*) (go snow-ball-shadow-idle) - (none) - ) + (none)) (defbehavior snow-ball-roller-path-init snow-ball-roller () (set! (-> self path-u) 0.0) (set! (-> self path-length) (path-distance (-> self path))) - (none) - ) + (none)) (defmethod follow-path ((this snow-ball-roller)) (let ((s5-0 (-> this path-info))) @@ -147,45 +129,28 @@ (let ((f0-1 (-> this path-coming-out-u))) (when (< (-> this path-u) f0-1) (+! (-> s5-0 path-pos y) (- -20480.0 (* -20480.0 (/ (-> this path-u) f0-1)))) - (set! (-> s5-0 hug-path?) #t) - ) - ) + (set! (-> s5-0 hug-path?) #t))) (let ((f0-6 (-> this path-faded-up-u))) (cond ((< (-> this path-u) f0-6) (let* ((f0-7 (/ (-> this path-u) f0-6)) - (f0-8 (* f0-7 f0-7)) - ) - (set-vector! (-> this draw color-mult) f0-8 f0-8 f0-8 1.0) - ) - ) - (else - (vector-identity! (-> this draw color-mult)) - ) - ) - ) + (f0-8 (* f0-7 f0-7))) + (set-vector! (-> this draw color-mult) f0-8 f0-8 f0-8 1.0))) + (else (vector-identity! (-> this draw color-mult))))) (cond ((>= (-> this path-u) (-> this path-fall-u)) (set! (-> s5-0 path-pos y) -409600.0) (set! (-> s5-0 path-pos x) (+ (-> s4-0 x) (-> this root transv x))) (set! (-> s5-0 path-pos z) (+ (-> s4-0 z) (-> this root transv z))) - (set! (-> this rolling-sound-enabled?) #f) - ) + (set! (-> this rolling-sound-enabled?) #f)) (else - (set! (-> this root transv x) (- (-> s5-0 path-pos x) (-> s4-0 x))) - (set! (-> this root transv z) (- (-> s5-0 path-pos z) (-> s4-0 z))) - ) - ) - ) - ) - (none) - ) + (set! (-> this root transv x) (- (-> s5-0 path-pos x) (-> s4-0 x))) + (set! (-> this root transv z) (- (-> s5-0 path-pos z) (-> s4-0 z))))))) + (none)) (defmethod play-landing-sound ((this snow-ball-roller) (arg0 float)) (let ((f30-0 (* 0.0018780049 (fmin 53248.0 (fmax 0.0 (+ -4096.0 (fabs arg0))))))) - (sound-play "snowball-land" :vol f30-0) - ) - ) + (sound-play "snowball-land" :vol f30-0))) (defbehavior snow-ball-roller-path-update snow-ball-roller () (local-vars (f0-5 float)) @@ -194,116 +159,58 @@ (let ((f30-0 (+ f0-0 (* (-> self root transv y) (seconds-per-frame))))) (follow-path self) (let ((a1-0 (new 'stack-no-clear 'vector))) - (let ((a0-1 (-> self path-info))) - (set! (-> a1-0 quad) (-> a0-1 path-pos quad)) - ) + (let ((a0-1 (-> self path-info))) (set! (-> a1-0 quad) (-> a0-1 path-pos quad))) (+! (-> a1-0 y) 9216.0) (cond - ((-> self path-info hug-path?) - (move-to-point! (-> self root) a1-0) - (set! (-> self root transv y) 0.0) - ) - ((begin (set! f0-5 (- f30-0 (-> a1-0 y))) (< 0.0 f0-5)) - (+! (-> a1-0 y) f0-5) - (move-to-point! (-> self root) a1-0) - ) + ((-> self path-info hug-path?) (move-to-point! (-> self root) a1-0) (set! (-> self root transv y) 0.0)) + ((begin (set! f0-5 (- f30-0 (-> a1-0 y))) (< 0.0 f0-5)) (+! (-> a1-0 y) f0-5) (move-to-point! (-> self root) a1-0)) (else - (move-to-point! (-> self root) a1-0) - (let ((f0-7 (-> self root transv y))) - (cond - ((>= -40960.0 f0-7) - (set! (-> self root transv y) (* 0.4 (- f0-7))) - (play-landing-sound self (-> self root transv y)) - ) - (else - (set! (-> self root transv y) 0.0) - ) - ) - ) - (when (< (-> self path-u) (-> self path-fall-u)) - (when (time-elapsed? (-> self last-bounce-time) (-> self delay-til-bounce)) - (let ((f0-13 (rand-vu-float-range 8192.0 20480.0))) - (+! (-> self root transv y) f0-13) - (play-landing-sound self f0-13) - ) - (set-time! (-> self last-bounce-time)) - (set! (-> self delay-til-bounce) (rand-vu-int-range 300 2100)) - ) - ) - ) - ) - ) - ) - ) + (move-to-point! (-> self root) a1-0) + (let ((f0-7 (-> self root transv y))) + (cond + ((>= -40960.0 f0-7) (set! (-> self root transv y) (* 0.4 (- f0-7))) (play-landing-sound self (-> self root transv y))) + (else (set! (-> self root transv y) 0.0)))) + (when (< (-> self path-u) (-> self path-fall-u)) + (when (time-elapsed? (-> self last-bounce-time) (-> self delay-til-bounce)) + (let ((f0-13 (rand-vu-float-range 8192.0 20480.0))) (+! (-> self root transv y) f0-13) (play-landing-sound self f0-13)) + (set-time! (-> self last-bounce-time)) + (set! (-> self delay-til-bounce) (rand-vu-int-range 300 2100))))))))) (let ((s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> self path) s4-0 (-> self path-u)) (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'matrix))) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-negate! s3-0 (-> *standard-dynamics* gravity-normal)) - (forward-down->inv-matrix gp-0 s4-0 s3-0) - ) + (forward-down->inv-matrix gp-0 s4-0 s3-0)) (matrix-rotate-x! s5-0 (* 1.1317686 (-> self path-u) (-> self path-length))) - (matrix*! gp-0 s5-0 gp-0) - ) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix*! gp-0 s5-0 gp-0)) + (matrix->quaternion (-> self root quat) gp-0))) (+! (-> self path-u) (* (-> self path-speed) (seconds-per-frame))) - (if (< 1.0 (-> self path-u)) - (set! (-> self path-u) 1.0) - ) + (if (< 1.0 (-> self path-u)) (set! (-> self path-u) 1.0)) (let ((f0-23 (- 819200.0 (-> self root trans y)))) (when (>= f0-23 0.0) (cond - ((>= f0-23 245760.0) - (deactivate self) - ) + ((>= f0-23 245760.0) (deactivate self)) (else - (let ((f0-25 (- 1.0 (* 0.0000040690106 f0-23)))) - (set! (-> self root scale x) f0-25) - (set! (-> self root scale y) f0-25) - (set! (-> self root scale z) f0-25) - ) - ) - ) - ) - ) + (let ((f0-25 (- 1.0 (* 0.0000040690106 f0-23)))) + (set! (-> self root scale x) f0-25) + (set! (-> self root scale y) f0-25) + (set! (-> self root scale z) f0-25)))))) (let ((v1-54 (< (vector-vector-distance (-> self root trans) (math-camera-pos)) 163840.0))) (cond ((zero? (-> self rolling-sound-id)) (if (and v1-54 (-> self rolling-sound-enabled?)) - (set! (-> self rolling-sound-id) (sound-play "snowball-roll" :position (the-as symbol (-> self root trans)))) - ) - ) + (set! (-> self rolling-sound-id) (sound-play "snowball-roll" :position (the-as symbol (-> self root trans)))))) ((and v1-54 (-> self rolling-sound-enabled?)) - (sound-play "snowball-roll" :id (-> self rolling-sound-id) :position (the-as symbol (-> self root trans))) - ) - (else - (sound-stop (-> self rolling-sound-id)) - (set! (-> self rolling-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - ) - (none) - ) + (sound-play "snowball-roll" :id (-> self rolling-sound-id) :position (the-as symbol (-> self root trans)))) + (else (sound-stop (-> self rolling-sound-id)) (set! (-> self rolling-sound-id) (new 'static 'sound-id)) 0))) + (none)) (defmethod snow-ball-roller-method-22 ((this snow-ball-roller) (arg0 process-drawable)) (cond ((< (+ 4096.0 (-> arg0 root trans y)) (-> this root trans y)) - (let ((f0-2 81920.0)) - (+! (-> this root transv y) f0-2) - (play-landing-sound this f0-2) - ) - ) - (else - (let ((f0-3 24576.0)) - (+! (-> this root transv y) f0-3) - (play-landing-sound this f0-3) - ) - ) - ) + (let ((f0-2 81920.0)) (+! (-> this root transv y) f0-2) (play-landing-sound this f0-2))) + (else (let ((f0-3 24576.0)) (+! (-> this root transv y) f0-3) (play-landing-sound this f0-3)))) (let ((s4-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (-> arg0 root trans) (-> this root trans)) @@ -314,70 +221,47 @@ (vector-normalize! s3-0 1.0) (let* ((f28-0 (atan (-> s4-0 x) (-> s4-0 z))) (f30-0 (atan (-> s3-0 x) (-> s3-0 z))) - (f0-11 (deg- f28-0 f30-0)) - ) + (f0-11 (deg- f28-0 f30-0))) (when (< (fabs f0-11) 10922.667) - (let ((f30-1 (+ f30-0 (if (>= f0-11 0.0) - 10922.667 - -10922.667 - ) - ) - ) - ) - (set-vector! s4-0 (sin f30-1) 0.0 (cos f30-1) 1.0) - ) - ) - ) - ) + (let ((f30-1 (+ f30-0 (if (>= f0-11 0.0) 10922.667 -10922.667)))) (set-vector! s4-0 (sin f30-1) 0.0 (cos f30-1) 1.0))))) (vector-normalize! s4-0 25600.0) (vector+! s4-0 s4-0 (-> this root trans)) (vector-! s4-0 s4-0 (-> arg0 root trans)) (set! (-> s4-0 y) 0.0) (let ((f30-2 (vector-length s4-0))) (vector-normalize! s4-0 1.0) - (send-event arg0 'attack #f (static-attack-info ((vector s4-0) (shove-up (meters 3)) (shove-back f30-2)))) - ) - ) - (none) - ) + (send-event arg0 'attack #f (static-attack-info ((vector s4-0) (shove-up (meters 3)) (shove-back f30-2)))))) + (none)) (defstate snow-ball-roller-idle (snow-ball-roller) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (do-push-aways! (-> self root)) - (when (time-elapsed? (-> self hit-player-time) (seconds 0.5)) - (set-time! (-> self hit-player-time)) - (snow-ball-roller-method-22 self *target*) - ) - ) - ) - ) - ) - :enter (behavior () - (set-time! (-> self last-bounce-time)) - (snow-ball-roller-path-init) - ) - :exit (behavior () - (set! (-> self rolling-sound-enabled?) #f) - (when (nonzero? (-> self rolling-sound-id)) - (sound-stop (-> self rolling-sound-id)) - (set! (-> self rolling-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - :trans (behavior () - (snow-ball-roller-path-update) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (do-push-aways! (-> self root)) + (when (time-elapsed? (-> self hit-player-time) (seconds 0.5)) + (set-time! (-> self hit-player-time)) + (snow-ball-roller-method-22 self *target*)))))) + :enter + (behavior () + (set-time! (-> self last-bounce-time)) + (snow-ball-roller-path-init)) + :exit + (behavior () + (set! (-> self rolling-sound-enabled?) #f) + (when (nonzero? (-> self rolling-sound-id)) + (sound-stop (-> self rolling-sound-id)) + (set! (-> self rolling-sound-id) (new 'static 'sound-id)) + 0)) + :trans + (behavior () + (snow-ball-roller-path-update)) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post transform-post) (defbehavior snow-ball-roller-init-by-other snow-ball-roller ((arg0 entity-actor) (arg1 snow-ball) (arg2 float) (arg3 int) (arg4 (inline-array snow-ball-junction))) (set! (-> self rolling-sound-id) (new 'static 'sound-id)) @@ -387,29 +271,24 @@ (set! (-> self hit-player-time) 0) (set! (-> self entity) arg0) (dotimes (s3-0 4) - (mem-copy! (the-as pointer (-> self junctions s3-0)) (the-as pointer (-> arg4 s3-0)) 16) - ) + (mem-copy! (the-as pointer (-> self junctions s3-0)) (the-as pointer (-> arg4 s3-0)) 16)) (let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s4-1 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-1 reaction) default-collision-reaction) - (set! (-> s4-1 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-1 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s4-1 s3-1) - ) + (set-root-prim! s4-1 s3-1)) (set! (-> s4-1 nav-radius) (* 0.75 (-> s4-1 root-prim local-sphere w))) (backup-collide-with-as s4-1) - (set! (-> self root) s4-1) - ) + (set! (-> self root) s4-1)) (set-vector! (-> self root transv) 0.0 0.0 0.0 1.0) (process-drawable-from-entity! self arg0) - (initialize-skeleton self *snow-ball-sg* '()) + (initialize-skeleton self *snow-ball-sg* ()) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self path) (new 'process 'curve-control self 'path (the float (+ arg3 1)))) (logior! (-> self path flags) (path-control-flag display draw-line draw-point draw-text)) @@ -418,139 +297,87 @@ ((zero? v1-33) (set! (-> self path-fall-u) 0.8667) (set! (-> self path-coming-out-u) 0.05) - (set! (-> self path-faded-up-u) 0.075) - ) + (set! (-> self path-faded-up-u) 0.075)) ((= v1-33 1) (set! (-> self path-fall-u) 0.9105) (set! (-> self path-coming-out-u) 0.05) - (set! (-> self path-faded-up-u) 0.075) - ) - ) - ) + (set! (-> self path-faded-up-u) 0.075)))) (set! (-> self delay-til-bounce) (rand-vu-int-range 900 2100)) (process-spawn snow-ball-shadow :to self) (go snow-ball-roller-idle) - (none) - ) + (none)) (defmethod snow-ball-method-14 ((this snow-ball) (arg0 (inline-array snow-ball-junction)) (arg1 float) (arg2 int)) (local-vars (v1-0 (pointer float))) (if (zero? arg2) - (set! v1-0 (new 'static 'array float 8 0.3309 0.36 0.4691 0.5061 0.6904 0.7264 0.864 0.8667)) - (set! v1-0 (new 'static 'array float 8 0.3344 0.3528 0.4919 0.5246 0.6967 0.7272 0.8677 0.9105)) - ) + (set! v1-0 (new 'static 'array float 8 0.3309 0.36 0.4691 0.5061 0.6904 0.7264 0.864 0.8667)) + (set! v1-0 (new 'static 'array float 8 0.3344 0.3528 0.4919 0.5246 0.6967 0.7272 0.8677 0.9105))) (let ((a0-4 (* arg1 (seconds-per-frame))) (a1-1 (-> arg0 0)) - (a2-2 (current-time)) - ) + (a2-2 (current-time))) (dotimes (a3-1 4) (set! (-> a1-1 enter-time) (+ a2-2 (the int (/ (-> v1-0 0) a0-4)))) (set! (-> a1-1 exit-time) (+ a2-2 (the int (/ (-> v1-0 1) a0-4)))) (set! v1-0 (&-> v1-0 2)) - (&+! a1-1 16) - ) - ) - #f - ) + (&+! a1-1 16))) + #f) (defmethod snow-ball-method-15 ((this snow-ball) (arg0 (inline-array snow-ball-junction)) (arg1 int)) (local-vars (v0-0 symbol)) (let ((v1-0 (-> this child-override))) (while v1-0 (let ((a0-1 (-> arg0 0)) - (a3-1 (-> v1-0 0 junctions)) - ) + (a3-1 (-> v1-0 0 junctions))) (dotimes (t0-0 3) - (if (and (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (>= (-> a0-1 exit-time) (-> a3-1 0 enter-time))) - (return #f) - ) + (if (and (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (>= (-> a0-1 exit-time) (-> a3-1 0 enter-time))) (return #f)) (&+! a0-1 16) - (set! a3-1 (the-as (inline-array snow-ball-junction) (-> a3-1 1))) - ) + (set! a3-1 (the-as (inline-array snow-ball-junction) (-> a3-1 1)))) (when (= arg1 (-> v1-0 0 which-path)) - (if (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) - (return #f) - ) - ) - ) - (set! v1-0 (the-as (pointer snow-ball-roller) (-> v1-0 0 brother))) - ) - ) + (if (>= (-> a3-1 0 exit-time) (-> a0-1 enter-time)) (return #f)))) + (set! v1-0 (the-as (pointer snow-ball-roller) (-> v1-0 0 brother))))) (return #t) - v0-0 - ) + v0-0) (defstate snow-ball-idle (snow-ball) - :code (behavior () - (local-vars (gp-0 int)) - (set-time! (-> self state-time)) - (set! (-> self delay-til-next) 0) - (label cfg-1) - (when (time-elapsed? (-> self state-time) (-> self delay-til-next)) - (set! gp-0 (cond - ((>= (-> self same-path-picked-count) 2) - (if (zero? (-> self last-path-picked)) - (set! gp-0 1) - (set! gp-0 0) - ) - gp-0 - ) - (else - (rand-vu-int-range 0 1) - ) - ) - ) - (let ((s4-0 0) - (s5-0 (new 'stack-no-clear 'inline-array 'snow-ball-junction 4)) - ) - (loop - (let ((s3-0 (/ (+ 98304.0 (rand-vu-float-range 0.0 32768.0)) (path-distance (-> self path gp-0))))) - (snow-ball-method-14 self s5-0 s3-0 gp-0) - (when (snow-ball-method-15 self s5-0 gp-0) - (process-spawn snow-ball-roller (-> self entity) self s3-0 gp-0 s5-0 :to self) - (set-time! (-> self state-time)) - (set! (-> self delay-til-next) (rand-vu-int-range 450 1650)) + :code + (behavior () + (local-vars (gp-0 int)) + (set-time! (-> self state-time)) + (set! (-> self delay-til-next) 0) + (label cfg-1) + (when (time-elapsed? (-> self state-time) (-> self delay-til-next)) + (set! gp-0 (cond - ((= gp-0 (-> self last-path-picked)) - (+! (-> self same-path-picked-count) 1) - ) - (else - (set! (-> self last-path-picked) gp-0) - (set! (-> self same-path-picked-count) 1) - ) - ) - (goto cfg-22) - ) - ) - (+! s4-0 1) - (if (< 5 s4-0) - (goto cfg-22) - ) - ) - ) - ) - (label cfg-22) - (suspend) - (b! #t cfg-1 :delay (nop!)) - ) - ) + ((>= (-> self same-path-picked-count) 2) (if (zero? (-> self last-path-picked)) (set! gp-0 1) (set! gp-0 0)) gp-0) + (else (rand-vu-int-range 0 1)))) + (let ((s4-0 0) + (s5-0 (new 'stack-no-clear 'inline-array 'snow-ball-junction 4))) + (loop (let ((s3-0 (/ (+ 98304.0 (rand-vu-float-range 0.0 32768.0)) (path-distance (-> self path gp-0))))) + (snow-ball-method-14 self s5-0 s3-0 gp-0) + (when (snow-ball-method-15 self s5-0 gp-0) + (process-spawn snow-ball-roller (-> self entity) self s3-0 gp-0 s5-0 :to self) + (set-time! (-> self state-time)) + (set! (-> self delay-til-next) (rand-vu-int-range 450 1650)) + (cond + ((= gp-0 (-> self last-path-picked)) (+! (-> self same-path-picked-count) 1)) + (else (set! (-> self last-path-picked) gp-0) (set! (-> self same-path-picked-count) 1))) + (goto cfg-22))) + (+! s4-0 1) + (if (< 5 s4-0) (goto cfg-22))))) + (label cfg-22) + (suspend) + (b! #t cfg-1 :delay (nop!)))) (defmethod relocate ((this snow-ball) (arg0 int)) (dotimes (v1-0 2) - (if (nonzero? (-> this path v1-0)) - (&+! (-> this path v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path v1-0)) (&+! (-> this path v1-0) arg0))) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-ball) (arg0 entity-actor)) (set! (-> this last-path-picked) 1) (set! (-> this same-path-picked-count) 1) (dotimes (s5-0 2) - (set! (-> this path s5-0) (new 'process 'curve-control this 'path (the float (+ s5-0 1)))) - ) + (set! (-> this path s5-0) (new 'process 'curve-control this 'path (the float (+ s5-0 1))))) (logclear! (-> this mask) (process-mask actor-pause)) (go snow-ball-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-bumper.gc b/goal_src/jak1/levels/snow/snow-bumper.gc index 01adbbd4f5..eb85ce174c 100644 --- a/goal_src/jak1/levels/snow/snow-bumper.gc +++ b/goal_src/jak1/levels/snow/snow-bumper.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/game/task/task-control.gc") @@ -9,95 +8,86 @@ ;; name in dgo: snow-bumper ;; dgos: L1, SNO - ;; DECOMP BEGINS (deftype snow-bumper (process-drawable) - ((bumper-id int32) - (base-shove-ry float) - (max-shove-diff-ry float) - (part2 sparticle-launch-control) - (last-shoved-player-time time-frame) - ) + ((bumper-id int32) + (base-shove-ry float) + (max-shove-diff-ry float) + (part2 sparticle-launch-control) + (last-shoved-player-time time-frame)) (:methods - (snow-bumper-method-20 (_type_) none) - (shove-player (_type_ process-drawable) none) - ) + (snow-bumper-method-20 (_type_) none) + (shove-player (_type_ process-drawable) none)) (:states - snow-bumper-active-close-idle - snow-bumper-active-far-idle - snow-bumper-deactivate - snow-bumper-inactive-idle - snow-bumper-spawn-fuel-cell - ) - ) + snow-bumper-active-close-idle + snow-bumper-active-far-idle + snow-bumper-deactivate + snow-bumper-inactive-idle + snow-bumper-spawn-fuel-cell)) - -(defskelgroup *snow-bumper-sg* snow-bumper snow-bumper-lod0-jg -1 - ((snow-bumper-lod0-mg (meters 20)) (snow-bumper-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.2 0 3.4) - ) +(defskelgroup *snow-bumper-sg* + snow-bumper + snow-bumper-lod0-jg + -1 + ((snow-bumper-lod0-mg (meters 20)) (snow-bumper-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.2 0 3.4)) (defpartgroup group-snow-bumper-idle :id 519 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1893 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 0.085) :length (seconds 0.035)) - ) - ) + :parts ((sp-item 1893 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 0.085) :length (seconds 0.035)))) (defpart 1893 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 15.0) - (:y (meters 1.5)) - (:z (meters 0)) - (:scale-x (meters 1.5)) - (:scale-y (meters 6)) - (:r 0.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 32.0 64.0) - (:vel-y (meters 0.013333334)) - (:scalevel-x (meters 0.0038461538)) - (:scalevel-y (meters -0.03076923)) - (:fade-a 0.0) - (:timer (seconds 0.085)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 5)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 15.0) + (:y (meters 1.5)) + (:z (meters 0)) + (:scale-x (meters 1.5)) + (:scale-y (meters 6)) + (:r 0.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 32.0 64.0) + (:vel-y (meters 0.013333334)) + (:scalevel-x (meters 0.0038461538)) + (:scalevel-y (meters -0.03076923)) + (:fade-a 0.0) + (:timer (seconds 0.085)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 5)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-snow-bumper-shove :id 520 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1895)) - ) + :parts ((sp-item 1895))) (defpart 1895 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 16.0) - (:x (meters 5.5)) - (:y (meters 1.5)) - (:z (meters 0)) - (:scale-x (meters 2)) - (:scale-y (meters 6)) - (:r 64.0 32.0) - (:g 64.0) - (:b 0.0) - (:a 64.0) - (:vel-x (meters 0.033333335)) - (:scalevel-x (meters 0.008333334)) - (:scalevel-y (meters 0.2)) - (:fade-a 0.0) - (:timer (seconds 0.085)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 16.0) + (:x (meters 5.5)) + (:y (meters 1.5)) + (:z (meters 0)) + (:scale-x (meters 2)) + (:scale-y (meters 6)) + (:r 64.0 32.0) + (:g 64.0) + (:b 0.0) + (:a 64.0) + (:vel-x (meters 0.033333335)) + (:scalevel-x (meters 0.008333334)) + (:scalevel-y (meters 0.2)) + (:fade-a 0.0) + (:timer (seconds 0.085)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 45)))) (defmethod shove-player ((this snow-bumper) (arg0 process-drawable)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -107,200 +97,143 @@ (let* ((f0-3 (atan (-> s5-0 x) (-> s5-0 z))) (f30-0 (-> this base-shove-ry)) (f28-0 (-> this max-shove-diff-ry)) - (f0-4 (deg- f0-3 f30-0)) - ) + (f0-4 (deg- f0-3 f30-0))) (when (< f28-0 (fabs f0-4)) - (let ((f30-1 (if (>= f0-4 0.0) - (+ f30-0 f28-0) - (- f30-0 f28-0) - ) - ) - ) - (set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0) - ) - ) - ) + (let ((f30-1 (if (>= f0-4 0.0) (+ f30-0 f28-0) (- f30-0 f28-0)))) (set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0)))) (let ((f0-12 (+ -16384.0 (atan (-> s5-0 x) (-> s5-0 z))))) - (set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12)) - ) + (set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12))) (spawn (-> this part2) (-> this root trans)) (let ((s3-1 (new 'stack-no-clear 'vector))) (vector-normalize-copy! s3-1 s5-0 32768.0) (vector+! s3-1 s3-1 (-> this root trans)) - (vector-! s5-0 s3-1 (-> arg0 root trans)) - ) + (vector-! s5-0 s3-1 (-> arg0 root trans))) (let ((f30-3 (vector-xz-length s5-0))) (vector-normalize! s5-0 1.0) (if (send-event *target* 'shove #f (static-attack-info ((vector s5-0) (shove-up (meters 1)) (shove-back f30-3)))) - (set-time! (-> this last-shoved-player-time)) - ) - ) - ) - (none) - ) + (set-time! (-> this last-shoved-player-time))))) + (none)) (defstate snow-bumper-active-far-idle (snow-bumper) - :trans (behavior () - (if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) - (go snow-bumper-active-close-idle) - ) - 0 - ) - :code (behavior () - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :trans + (behavior () + (if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0)))) + (go snow-bumper-active-close-idle)) + 0) + :code + (behavior () + (transform-post) (suspend) - ) - ) - ) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-bumper-active-close-idle (snow-bumper) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack 'bonk) - (when (= (-> proc type) target) - (let ((gp-0 (-> block param 0))) - (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry gp-0) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - ) - (close-specific-task! (game-task snow-bumpers) (task-status need-hint)) - (go snow-bumper-deactivate) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (cond - (*target* - (let* ((gp-0 (target-pos 0)) - (f30-0 (vector-vector-xz-distance (-> self root trans) gp-0)) - (f28-0 (- (-> gp-0 y) (-> self root trans y))) - ) - (if (< 368640.0 f30-0) - (go snow-bumper-active-far-idle) - ) - (if (and (time-elapsed? (-> self last-shoved-player-time) (seconds 0.5)) - (>= 20480.0 f30-0) - (>= f28-0 -4096.0) - (>= 11059.2 f28-0) - ) - (shove-player self *target*) - ) - ) - ) - (else - (go snow-bumper-active-far-idle) - ) - ) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) - :code (behavior () - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack 'bonk) + (when (= (-> proc type) target) + (let ((gp-0 (-> block param 0))) + (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry gp-0) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1))) + (close-specific-task! (game-task snow-bumpers) (task-status need-hint)) + (go snow-bumper-deactivate))))))) + :trans + (behavior () + (cond + (*target* + (let* ((gp-0 (target-pos 0)) + (f30-0 (vector-vector-xz-distance (-> self root trans) gp-0)) + (f28-0 (- (-> gp-0 y) (-> self root trans y)))) + (if (< 368640.0 f30-0) (go snow-bumper-active-far-idle)) + (if (and (time-elapsed? (-> self last-shoved-player-time) (seconds 0.5)) + (>= 20480.0 f30-0) + (>= f28-0 -4096.0) + (>= 11059.2 f28-0)) + (shove-player self *target*)))) + (else (go snow-bumper-active-far-idle))) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound))) + :code + (behavior () + (transform-post) (suspend) - ) - ) - ) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-bumper-deactivate (snow-bumper) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - ) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (local-vars (sv-16 symbol)) - (logclear! (-> self mask) (process-mask actor-pause)) - (sound-play "bumper-pwr-dwn") - (ja-no-eval :group! snow-bumper-button-ja :num! (seek! max 0.05) :frame-num 0.0) - (until (ja-done? 0) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.05)) - ) - (stop! (-> self sound)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (suspend) - ) - (ja-no-eval :group! snow-bumper-collapse-ja :num! (seek! max 0.02) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.02)) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (set! sv-16 (the-as symbol #f)) - (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) - (when sv-16 - (save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0) - (go snow-bumper-spawn-fuel-cell) - ) - (go snow-bumper-inactive-idle) - ) - :post rider-post - ) + :code + (behavior () + (local-vars (sv-16 symbol)) + (logclear! (-> self mask) (process-mask actor-pause)) + (sound-play "bumper-pwr-dwn") + (ja-no-eval :group! snow-bumper-button-ja :num! (seek! max 0.05) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.05))) + (stop! (-> self sound)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) + (suspend)) + (ja-no-eval :group! snow-bumper-collapse-ja :num! (seek! max 0.02) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.02))) + (process-entity-status! self (entity-perm-status complete) #t) + (set! sv-16 (the-as symbol #f)) + (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) + (when sv-16 + (save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0) + (go snow-bumper-spawn-fuel-cell)) + (go snow-bumper-inactive-idle)) + :post rider-post) (defstate snow-bumper-spawn-fuel-cell (snow-bumper) - :code (behavior () - (ja-channel-set! 1) - (ja :group! snow-bumper-collapse-ja :num! max) - (transform-post) - (if (not (task-complete? *game-info* (-> self entity extra perm task))) - (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #t - self - (the-as fact-info #f) - ) - ) - (until (not (-> self child)) - (suspend) - ) - (go snow-bumper-inactive-idle) - ) - ) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! snow-bumper-collapse-ja :num! max) + (transform-post) + (if (not (task-complete? *game-info* (-> self entity extra perm task))) + (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #t + self + (the-as fact-info #f))) + (until (not (-> self child)) + (suspend)) + (go snow-bumper-inactive-idle))) (defstate snow-bumper-inactive-idle (snow-bumper) - :code (behavior () - (set! (-> self root nav-radius) 6963.2) - (ja-channel-set! 1) - (ja :group! snow-bumper-collapse-ja :num! max) - (transform-post) - (suspend) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :code + (behavior () + (set! (-> self root nav-radius) 6963.2) + (ja-channel-set! 1) + (ja :group! snow-bumper-collapse-ja :num! max) + (transform-post) + (suspend) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod deactivate ((this snow-bumper)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this snow-bumper) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-bumper) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -308,9 +241,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -324,8 +255,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -333,32 +263,22 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) 20480.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-bumper-sg* '()) + (initialize-skeleton this *snow-bumper-sg* ()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 519) this)) (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 520) this)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this bumper-id) (+ (actor-count-before (-> this link)) 1)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "snow-bumper" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "snow-bumper" :fo-max 40) (-> this root trans))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (set! (-> this base-shove-ry) 0.0) (set! (-> this max-shove-diff-ry) 32768.0) @@ -366,21 +286,12 @@ (let ((v1-52 (res-lump-data (-> this entity) 'rotmin (pointer float) :tag-ptr (& sv-16)))) (when v1-52 (set! (-> this base-shove-ry) (-> v1-52 0)) - (set! (-> this max-shove-diff-ry) (-> v1-52 1)) - ) - ) + (set! (-> this max-shove-diff-ry) (-> v1-52 1)))) (cond ((and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (if (and (= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> this bumper-id)) - (not (task-complete? *game-info* (-> this entity extra perm task))) - ) - (go snow-bumper-spawn-fuel-cell) - (go snow-bumper-inactive-idle) - ) - ) - (else - (go snow-bumper-active-far-idle) - ) - ) - (none) - ) + (not (task-complete? *game-info* (-> this entity extra perm task)))) + (go snow-bumper-spawn-fuel-cell) + (go snow-bumper-inactive-idle))) + (else (go snow-bumper-active-far-idle))) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-bunny.gc b/goal_src/jak1/levels/snow/snow-bunny.gc index c567c4f9b1..c0ab717af3 100644 --- a/goal_src/jak1/levels/snow/snow-bunny.gc +++ b/goal_src/jak1/levels/snow/snow-bunny.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "SNO.DGO") - (require "levels/snow/snow-ram-boss.gc") ;; name: snow-bunny.gc @@ -11,143 +10,124 @@ ;; DECOMP BEGINS (deftype snow-bunny (nav-enemy) - ((patrol-rand-distraction int32) - (base-hop-dist float) - (halfway-dist float) - (retreat-timeout float) - (gnd-popup float) - (jump-height-min float) - (jump-height-factor float) - (jump-anim-start-frame float) - (defense uint64) - (retreat-timeout-time time-frame) - (last-nondangerous-time time-frame) - (patrol-hop-failed? basic) - (should-retreat? basic) - (got-jump-event? symbol) - (using-jump-event? basic) - (jump-anim int8) - (notice-land-anim int8) - (attack-anim int8) - (final-dest vector :inline) - (jump-event-dest vector :inline) - ) + ((patrol-rand-distraction int32) + (base-hop-dist float) + (halfway-dist float) + (retreat-timeout float) + (gnd-popup float) + (jump-height-min float) + (jump-height-factor float) + (jump-anim-start-frame float) + (defense uint64) + (retreat-timeout-time time-frame) + (last-nondangerous-time time-frame) + (patrol-hop-failed? basic) + (should-retreat? basic) + (got-jump-event? symbol) + (using-jump-event? basic) + (jump-anim int8) + (notice-land-anim int8) + (attack-anim int8) + (final-dest vector :inline) + (jump-event-dest vector :inline)) (:methods - (nav-enemy-method-51 (_type_ vector vector) symbol :replace) - (nav-enemy-method-52 (_type_) symbol :replace) - (nav-enemy-method-54 (_type_) symbol :replace) - (nav-enemy-method-57 (_type_) symbol :replace) - (nav-enemy-method-60 (_type_) none :replace) - (snow-bunny-method-76 (_type_ symbol) none) - ) - ) + (nav-enemy-method-51 (_type_ vector vector) symbol :replace) + (nav-enemy-method-52 (_type_) symbol :replace) + (nav-enemy-method-54 (_type_) symbol :replace) + (nav-enemy-method-57 (_type_) symbol :replace) + (nav-enemy-method-60 (_type_) none :replace) + (snow-bunny-method-76 (_type_ symbol) none))) (define-extern *snow-bunny* (pointer snow-bunny)) -(defskelgroup *snow-bunny-sg* snow-bunny snow-bunny-lod0-jg snow-bunny-idle-ja - ((snow-bunny-lod0-mg (meters 20)) (snow-bunny-lod1-mg (meters 40)) (snow-bunny-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0.25 0 2) - :shadow snow-bunny-shadow-mg - ) +(defskelgroup *snow-bunny-sg* + snow-bunny + snow-bunny-lod0-jg + snow-bunny-idle-ja + ((snow-bunny-lod0-mg (meters 20)) (snow-bunny-lod1-mg (meters 40)) (snow-bunny-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0.25 0 2) + :shadow snow-bunny-shadow-mg) -(define *snow-bunny-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 5 - :turn-anim 5 - :notice-anim 9 - :run-anim 5 - :jump-anim 7 - :jump-land-anim 10 - :victory-anim 9 - :taunt-anim 9 - :die-anim 11 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 1.2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 31.0 - :jump-anim-start-frame 11.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.6 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -4) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *snow-bunny-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 5 + :turn-anim 5 + :notice-anim 9 + :run-anim 5 + :jump-anim 7 + :jump-land-anim 10 + :victory-anim 9 + :taunt-anim 9 + :die-anim 11 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 1.2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 31.0 + :jump-anim-start-frame 11.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.6 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -4) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defbehavior snow-bunny-default-event-handler snow-bunny ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (go-virtual nav-enemy-die) - ) + (('attack) (nav-enemy-set-hit-from-direction arg0) (go-virtual nav-enemy-die)) (('touch) (when (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) (set-time! (-> self touch-time)) (set-collide-offense (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (go-virtual snow-bunny-attack) - ) - ) + (go-virtual snow-bunny-attack))) (('jump) (let ((v1-16 (the-as object (-> arg3 param 0)))) (set! (-> self got-jump-event?) #t) (let ((v0-1 (the-as object (-> self jump-event-dest)))) (set! (-> (the-as vector v0-1) quad) (-> (the-as vector v1-16) quad)) - v0-1 - ) - ) - ) - ) - ) + v0-1))))) (defmethod snow-bunny-method-76 ((this snow-bunny) (arg0 symbol)) (let ((f0-0 -4096.0)) - (if arg0 - (set! f0-0 -20480.0) - ) - (let ((v1-3 (-> this draw shadow-ctrl))) - (set! (-> v1-3 settings bot-plane w) (- f0-0)) - ) - ) + (if arg0 (set! f0-0 -20480.0)) + (let ((v1-3 (-> this draw shadow-ctrl))) (set! (-> v1-3 settings bot-plane w) (- f0-0)))) 0 - (none) - ) + (none)) (defmethod initialize-collision ((this snow-bunny)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -160,39 +140,32 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 1638.4 0.0 1843.2) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 1843.2) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2457.6) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 2048.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-60 ((this snow-bunny)) - (initialize-skeleton this *snow-bunny-sg* '()) + (initialize-skeleton this *snow-bunny-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this snow-bunny)) (nav-enemy-method-60 this) @@ -201,13 +174,8 @@ (cond ((zero? (res-lump-value (-> this entity) 'mode uint128)) (set! (-> this defense) (the-as uint 1)) - (set! (-> this retreat-timeout) 5.0) - ) - (else - (set! (-> this defense) (the-as uint 0)) - (set! (-> this retreat-timeout) 0.1) - ) - ) + (set! (-> this retreat-timeout) 5.0)) + (else (set! (-> this defense) (the-as uint 0)) (set! (-> this retreat-timeout) 0.1))) (set-time! (-> this last-nondangerous-time)) (set! (-> this gnd-popup) 16384.0) (set! (-> this got-jump-event?) #f) @@ -219,41 +187,32 @@ (set! (-> this patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1)) (set! (-> this patrol-hop-failed?) #f) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this snow-bunny) (arg0 entity-actor)) (initialize-collision this) (process-drawable-from-entity! this arg0) (nav-enemy-method-48 this) - (if (<= (-> this path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> this path curve num-cverts) 0) (go process-drawable-art-error "no path")) (set! *snow-bunny* (the-as (pointer snow-bunny) (process->ppointer this))) (nav-enemy-method-59 this) - (none) - ) + (none)) (defmethod nav-enemy-method-58 ((this snow-bunny)) - (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) - (set-time! (-> this last-nondangerous-time)) - ) - (none) - ) + (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) (set-time! (-> this last-nondangerous-time))) + (none)) (defbehavior snow-bunny-initialize-jump snow-bunny ((arg0 vector)) (nav-enemy-initialize-custom-jump arg0 #f (-> self jump-height-min) (-> self jump-height-factor) -307200.0) (logclear! (-> self nav-enemy-flags) (nav-enemy-flags drop-jump)) (logior! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump)) 0 - (none) - ) + (none)) (defbehavior snow-bunny-execute-jump snow-bunny () (nav-enemy-execute-custom-jump (-> self jump-anim) (-> self jump-anim-start-frame) 1.0) 0 - (none) - ) + (none)) (defmethod set-jump-height-factor! ((this snow-bunny) (arg0 int)) (let ((v1-0 arg0)) @@ -262,222 +221,137 @@ (set! (-> this jump-anim) 8) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.6) - (set! (-> this jump-anim-start-frame) 4.0) - ) + (set! (-> this jump-anim-start-frame) 4.0)) ((= v1-0 1) (set! (-> this jump-anim) 7) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.6) - (set! (-> this jump-anim-start-frame) 11.0) - ) + (set! (-> this jump-anim-start-frame) 11.0)) ((= v1-0 2) (set! (-> this jump-anim) 7) (set! (-> this jump-height-min) 4096.0) (set! (-> this jump-height-factor) 0.4) - (set! (-> this jump-anim-start-frame) 11.0) - ) - ) - ) - (none) - ) + (set! (-> this jump-anim-start-frame) 11.0)))) + (none)) (defmethod nav-enemy-method-57 ((this snow-bunny)) - (if (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags dangerous)))) - (return #f) - ) + (if (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags dangerous)))) (return #f)) (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> this collide-info trans)))) - (if (< 73728.0 f0-0) - (return #f) - ) + (if (< 73728.0 f0-0) (return #f)) (let* ((f0-1 (- f0-0 (-> *TARGET-bank* spin-radius))) - (f0-2 (+ -2457.6 f0-1)) - ) - (if (>= 40.96 f0-2) - (set! f0-2 40.96) - ) + (f0-2 (+ -2457.6 f0-1))) + (if (>= 40.96 f0-2) (set! f0-2 40.96)) (let ((v1-13 (the int (/ f0-2 (* (-> this nav-info run-travel-speed) (seconds-per-frame)))))) - (if (<= (- (- (seconds 0.36) (- (current-time) (-> this last-nondangerous-time))) (the-as time-frame v1-13)) 0) - (return #f) - ) - ) - ) - ) - #t - ) + (if (<= (- (- (seconds 0.36) (- (current-time) (-> this last-nondangerous-time))) (the-as time-frame v1-13)) 0) (return #f))))) + #t) (defstate snow-bunny-tune-spheres (snow-bunny) :virtual override - :code (behavior () - 0 - ) - :post transform-post - ) + :code + (behavior () + 0) + :post transform-post) (defstate nav-enemy-idle (snow-bunny) :virtual #t - :enter (behavior () - (snow-bunny-method-76 self #f) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) + :enter + (behavior () + (snow-bunny-method-76 self #f) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-idle) enter))) (if t9-1 (t9-1)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! + (-> self draw art-group data (-> self nav-info idle-anim)) + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (let ((f30-0 (nav-enemy-rnd-float-range 0.75 1.25))) (loop (suspend) (ja :num! (loop! f30-0)))))) (defstate nav-enemy-patrol (snow-bunny) :virtual #t :enter #f :trans #f - :code (behavior () - (go-virtual snow-bunny-nav-resume) - ) - ) + :code + (behavior () + (go-virtual snow-bunny-nav-resume))) (defstate snow-bunny-nav-resume (snow-bunny) :virtual override - :code (behavior () - (cond - (*target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= f0-0 (-> self enemy-info idle-distance)) - (go-virtual nav-enemy-idle) - ) - ((< (-> self nav-info notice-distance) f0-0) - (go-virtual snow-bunny-patrol-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-notice) - ) - (else - (go-virtual snow-bunny-patrol-idle) - ) - ) - ) - ) - (else - (go-virtual nav-enemy-idle) - ) - ) - ) - ) + :code + (behavior () + (cond + (*target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= f0-0 (-> self enemy-info idle-distance)) (go-virtual nav-enemy-idle)) + ((< (-> self nav-info notice-distance) f0-0) (go-virtual snow-bunny-patrol-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-notice)) + (else (go-virtual snow-bunny-patrol-idle))))) + (else (go-virtual nav-enemy-idle))))) (defstate snow-bunny-patrol-idle (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (snow-bunny-method-76 self #f) - (logior! (-> self nav flags) (nav-control-flags navcf19)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (set! (-> self state-timeout) (seconds 0.1)) - ) - :trans (behavior () - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (when (time-elapsed? (-> self state-time) (-> self state-timeout)) - (if (not *target*) - (go-virtual nav-enemy-idle) - ) - (cond - ((>= (vector-vector-distance (target-pos 0) (-> self collide-info trans)) (-> self enemy-info idle-distance)) - (go-virtual nav-enemy-idle) - ) - ((nav-enemy-notice-player?) - (go-virtual nav-enemy-notice) - ) - ) - ) - (nav-enemy-method-58 self) - ) - :code (behavior () - (let ((gp-0 (nav-enemy-rnd-int-count 3))) - (when (and (not (-> self patrol-hop-failed?)) (zero? gp-0)) - (if (nav-enemy-method-53 self) - (go-virtual snow-bunny-patrol-hop) - ) - ) - (set! (-> self patrol-hop-failed?) #f) - (let ((gp-2 (min gp-0 (nav-enemy-rnd-int-count 3)))) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! (-> self draw art-group data (-> self nav-info idle-anim)) - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (loop - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 2.52)) - (suspend) - (ja :num! (loop!)) - ) - ) - (cond - ((zero? gp-2) - (if (nav-enemy-method-53 self) - (go-virtual snow-bunny-patrol-hop) - ) - ) - (else - (+! gp-2 -1) - ) - ) - ) - ) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (snow-bunny-method-76 self #f) + (logior! (-> self nav flags) (nav-control-flags navcf19)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (set! (-> self state-timeout) (seconds 0.1))) + :trans + (behavior () + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (when (time-elapsed? (-> self state-time) (-> self state-timeout)) + (if (not *target*) (go-virtual nav-enemy-idle)) + (cond + ((>= (vector-vector-distance (target-pos 0) (-> self collide-info trans)) (-> self enemy-info idle-distance)) + (go-virtual nav-enemy-idle)) + ((nav-enemy-notice-player?) (go-virtual nav-enemy-notice)))) + (nav-enemy-method-58 self)) + :code + (behavior () + (let ((gp-0 (nav-enemy-rnd-int-count 3))) + (when (and (not (-> self patrol-hop-failed?)) (zero? gp-0)) + (if (nav-enemy-method-53 self) (go-virtual snow-bunny-patrol-hop))) + (set! (-> self patrol-hop-failed?) #f) + (let ((gp-2 (min gp-0 (nav-enemy-rnd-int-count 3)))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! + (-> self draw art-group data (-> self nav-info idle-anim)) + :num! + (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (loop (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 (seconds 2.52)) (suspend) (ja :num! (loop!)))) + (cond + ((zero? gp-2) (if (nav-enemy-method-53 self) (go-virtual snow-bunny-patrol-hop))) + (else (+! gp-2 -1))))))) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-51 ((this snow-bunny) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) (let* ((s4-0 (new 'stack-no-clear 'collide-tri-result)) (f0-0 (-> this gnd-popup)) - (f30-0 (+ f0-0 40960.0)) - ) + (f30-0 (+ f0-0 40960.0))) (set! (-> s5-0 quad) (-> arg0 quad)) (+! (-> s5-0 y) f0-0) - (let ((f0-2 (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (collide-kind background) - (-> this collide-info process) - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - ) + (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* + s5-0 + f30-0 + (collide-kind background) + (-> this collide-info process) + s4-0 + (new 'static 'pat-surface :noentity #x1)))) ;; og:preserve-this yes this is bugged... again - (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) - (return #f) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) - ) - (set! (-> arg1 quad) (-> s5-0 quad)) - ) - #t - ) + (if (or (< f0-2 0.0) (= (logand #b111000 (the-as int (-> s4-0 pat))) 8)) (return #f)) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))))) + (set! (-> arg1 quad) (-> s5-0 quad))) + #t) (defmethod nav-enemy-method-53 ((this snow-bunny)) (let* ((s4-0 (-> this path curve num-cverts)) (s2-0 (nav-enemy-rnd-int-count s4-0)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (dotimes (s3-0 s4-0) (eval-path-curve-div! (-> this path) s5-0 (the float s2-0) 'interp) (let ((f30-0 (vector-vector-xz-distance s5-0 (-> this collide-info trans)))) @@ -486,15 +360,9 @@ (set! (-> this final-dest quad) (-> s5-0 quad)) (set! (-> this halfway-dist) (* 0.5 f30-0)) (set! (-> this base-hop-dist) (rand-vu-float-range 6144.0 22118.4)) - (return #t) - ) - ) - ) - (set! s2-0 (mod (+ s2-0 1) s4-0)) - ) - ) - #f - ) + (return #t)))) + (set! s2-0 (mod (+ s2-0 1) s4-0)))) + #f) (defmethod nav-enemy-method-54 ((this snow-bunny)) (local-vars (sv-48 (function float float))) @@ -502,391 +370,262 @@ (let* ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> this final-dest) (-> this collide-info trans))) (f30-0 (vector-length s5-1)) (f1-0 (-> this halfway-dist)) - (f0-1 (- 1.0 (/ (fabs (- f30-0 f1-0)) (* 2.0 f1-0)))) - ) + (f0-1 (- 1.0 (/ (fabs (- f30-0 f1-0)) (* 2.0 f1-0))))) (cond - ((< f0-1 0.3) - (set! f0-1 0.3) - ) - ((< 1.0 f0-1) - (set! f0-1 1.0) - ) - ) + ((< f0-1 0.3) (set! f0-1 0.3)) + ((< 1.0 f0-1) (set! f0-1 1.0))) (let ((f28-0 (* (-> this base-hop-dist) f0-1))) (cond - ((>= (+ 4096.0 f28-0) f30-0) - (set! (-> this nav target-pos quad) (-> this final-dest quad)) - ) + ((>= (+ 4096.0 f28-0) f30-0) (set! (-> this nav target-pos quad) (-> this final-dest quad))) (else - (vector-rotate-around-y! s5-1 s5-1 16384.0) - (vector-normalize! s5-1 (- f30-0 f28-0)) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let ((s3-0 vector+*!) - (s2-0 s4-0) - (s1-0 (-> this final-dest)) - (s0-0 s5-1) - ) - (set! sv-48 sin) - (let ((a0-9 (rand-vu-float-range -16384.0 16384.0))) - (s3-0 s2-0 s1-0 s0-0 (sv-48 a0-9)) - ) - ) - (vector-! s5-1 s4-0 (-> this collide-info trans)) - (when (< f28-0 (vector-length s5-1)) - (vector-normalize! s5-1 f28-0) - (vector+! s4-0 (-> this collide-info trans) s5-1) - ) - (set! (-> this nav target-pos quad) (-> s4-0 quad)) - ) - ) - ) - ) - ) + (vector-rotate-around-y! s5-1 s5-1 16384.0) + (vector-normalize! s5-1 (- f30-0 f28-0)) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let ((s3-0 vector+*!) + (s2-0 s4-0) + (s1-0 (-> this final-dest)) + (s0-0 s5-1)) + (set! sv-48 sin) + (let ((a0-9 (rand-vu-float-range -16384.0 16384.0))) (s3-0 s2-0 s1-0 s0-0 (sv-48 a0-9)))) + (vector-! s5-1 s4-0 (-> this collide-info trans)) + (when (< f28-0 (vector-length s5-1)) + (vector-normalize! s5-1 f28-0) + (vector+! s4-0 (-> this collide-info trans) s5-1)) + (set! (-> this nav target-pos quad) (-> s4-0 quad))))))) (set! (-> this got-jump-event?) #f) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) (cond ((-> this got-jump-event?) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) - (set! (-> this using-jump-event?) #t) - ) + (set! (-> this using-jump-event?) #t)) (else - (let ((s5-2 (-> this nav travel))) - (if (< (vector-length s5-2) 0.01) - (return #f) - ) - (let ((a2-2 (-> this nav target-pos))) - (vector+! a2-2 (-> this collide-info trans) s5-2) - (if (not (nav-enemy-method-51 this a2-2 a2-2)) - (return #f) - ) - ) - ) - ) - ) - #t - ) + (let ((s5-2 (-> this nav travel))) + (if (< (vector-length s5-2) 0.01) (return #f)) + (let ((a2-2 (-> this nav target-pos))) + (vector+! a2-2 (-> this collide-info trans) s5-2) + (if (not (nav-enemy-method-51 this a2-2 a2-2)) (return #f)))))) + #t) (defstate snow-bunny-patrol-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (when (not (nav-enemy-method-54 self)) - (set! (-> self patrol-hop-failed?) #t) - (go-virtual snow-bunny-patrol-idle) - ) - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (set-jump-height-factor! self 0) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (if (or (zero? (nav-enemy-rnd-int-count (-> self patrol-rand-distraction))) - (>= 40.96 (vector-vector-distance (-> self final-dest) (-> self collide-info trans))) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (when (not (nav-enemy-method-54 self)) + (set! (-> self patrol-hop-failed?) #t) + (go-virtual snow-bunny-patrol-idle)) + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (set-jump-height-factor! self 0) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (if (or (zero? (nav-enemy-rnd-int-count (-> self patrol-rand-distraction))) + (>= 40.96 (vector-vector-distance (-> self final-dest) (-> self collide-info trans)))) (go-virtual snow-bunny-patrol-idle) - (go-virtual snow-bunny-patrol-hop) - ) - ) - :post nav-enemy-jump-post - ) + (go-virtual snow-bunny-patrol-hop))) + :post nav-enemy-jump-post) (defstate nav-enemy-notice (snow-bunny) :virtual #t :event snow-bunny-default-event-handler - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-neck-control-look-at) - (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-chase) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (snow-bunny-method-76 self #t) - (set-vector! (-> self collide-info transv) 0.0 (nav-enemy-rnd-float-range 102400.0 131072.0) 0.0 1.0) - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-neck-control-look-at) + (if (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go-virtual nav-enemy-chase)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (snow-bunny-method-76 self #t) + (set-vector! (-> self collide-info transv) 0.0 (nav-enemy-rnd-float-range 102400.0 131072.0) 0.0 1.0)) :exit #f - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info notice-anim)) - :num! (seek! (ja-aframe 8.0 0) f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 8.0 0) f30-0)) - ) - (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (ja :num! (seek! max f30-0)) - (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 12288.0 - #f - #f - #f - ) - (when *target* - (let ((gp-2 (new 'stack-no-clear 'vector))) - (vector-! gp-2 (target-pos 0) (-> self collide-info trans)) - (seek-toward-heading-vec! (-> self collide-info) gp-2 524288.0 (seconds 0.1)) - ) - ) - (suspend) - ) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self notice-land-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info notice-anim)) + :num! + (seek! (ja-aframe 8.0 0) f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 8.0 0) f30-0))) + (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) + (ja :num! (seek! max f30-0)) + (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 12288.0 + #f + #f + #f) + (when *target* + (let ((gp-2 (new 'stack-no-clear 'vector))) + (vector-! gp-2 (target-pos 0) (-> self collide-info trans)) + (seek-toward-heading-vec! (-> self collide-info) gp-2 524288.0 (seconds 0.1)))) + (suspend)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data (-> self notice-land-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate nav-enemy-chase (snow-bunny) :virtual #t :event #f :exit #f :trans #f - :code (behavior () - (go-virtual snow-bunny-chase-hop) - ) - :post #f - ) + :code + (behavior () + (go-virtual snow-bunny-chase-hop)) + :post #f) (defmethod nav-enemy-method-52 ((this snow-bunny)) (local-vars (sv-48 (function float float))) (set! (-> this using-jump-event?) #f) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s4-0 (-> this final-dest))) (set! (-> s4-0 quad) (-> (target-pos 0) quad)) - (if (not (nav-enemy-method-51 this s4-0 s4-0)) - (return #f) - ) + (if (not (nav-enemy-method-51 this s4-0 s4-0)) (return #f)) (set! (-> this base-hop-dist) (rand-vu-float-range 18022.4 22118.4)) (let* ((s5-2 (vector-! (new 'stack-no-clear 'vector) s4-0 (-> this collide-info trans))) (f28-0 (vector-length s5-2)) - (f30-0 (-> this base-hop-dist)) - ) + (f30-0 (-> this base-hop-dist))) (cond - ((>= (+ 4096.0 f30-0) f28-0) - (set! (-> this nav target-pos quad) (-> s4-0 quad)) - ) + ((>= (+ 4096.0 f30-0) f28-0) (set! (-> this nav target-pos quad) (-> s4-0 quad))) (else - (vector-rotate-around-y! s5-2 s5-2 16384.0) - (vector-normalize! s5-2 (- f28-0 f30-0)) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (let ((s2-0 vector+*!) - (s1-0 s3-0) - (s0-0 s5-2) - ) - (set! sv-48 sin) - (let ((a0-11 (rand-vu-float-range -16384.0 16384.0))) - (s2-0 s1-0 s4-0 s0-0 (sv-48 a0-11)) - ) - ) - (vector-! s5-2 s3-0 (-> this collide-info trans)) - (when (< f30-0 (vector-length s5-2)) - (vector-normalize! s5-2 f30-0) - (vector+! s3-0 (-> this collide-info trans) s5-2) - ) - (set! (-> this nav target-pos quad) (-> s3-0 quad)) - ) - ) - ) - ) - ) + (vector-rotate-around-y! s5-2 s5-2 16384.0) + (vector-normalize! s5-2 (- f28-0 f30-0)) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (let ((s2-0 vector+*!) + (s1-0 s3-0) + (s0-0 s5-2)) + (set! sv-48 sin) + (let ((a0-11 (rand-vu-float-range -16384.0 16384.0))) (s2-0 s1-0 s4-0 s0-0 (sv-48 a0-11)))) + (vector-! s5-2 s3-0 (-> this collide-info trans)) + (when (< f30-0 (vector-length s5-2)) + (vector-normalize! s5-2 f30-0) + (vector+! s3-0 (-> this collide-info trans) s5-2)) + (set! (-> this nav target-pos quad) (-> s3-0 quad))))))) (set! (-> this got-jump-event?) #f) (nav-control-method-11 (-> this nav) (-> this nav target-pos)) (cond ((-> this got-jump-event?) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) - (set! (-> this using-jump-event?) #t) - ) + (set! (-> this using-jump-event?) #t)) (else - (let ((s5-3 (-> this nav travel))) - (if (< (vector-length s5-3) 0.01) - (return #f) - ) - (let ((a2-3 (-> this nav target-pos))) - (vector+! a2-3 (-> this collide-info trans) s5-3) - (if (not (nav-enemy-method-51 this a2-3 a2-3)) - (return #f) - ) - ) - ) - ) - ) - #t - ) + (let ((s5-3 (-> this nav travel))) + (if (< (vector-length s5-3) 0.01) (return #f)) + (let ((a2-3 (-> this nav target-pos))) + (vector+! a2-3 (-> this collide-info trans) s5-3) + (if (not (nav-enemy-method-51 this a2-3 a2-3)) (return #f)))))) + #t) (defstate snow-bunny-chase-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self should-retreat?) #f) - (if (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) - (go-virtual nav-enemy-patrol) - ) - (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) - (go-virtual nav-enemy-patrol) - ) - (if (nav-enemy-method-57 self) - (go-virtual snow-bunny-defend) - ) - (when (not (nav-enemy-method-52 self)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go-virtual nav-enemy-notice) - ) - (set-jump-height-factor! self 1) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (if (nav-enemy-method-57 self) - (set! (-> self should-retreat?) #t) - ) - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (if (-> self should-retreat?) - (go-virtual snow-bunny-defend) - ) - (go-virtual snow-bunny-chase-hop) - ) - :post nav-enemy-jump-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self should-retreat?) #f) + (if (or (not *target*) (logtest? (-> *target* state-flags) (state-flags do-not-notice))) (go-virtual nav-enemy-patrol)) + (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) (go-virtual nav-enemy-patrol)) + (if (nav-enemy-method-57 self) (go-virtual snow-bunny-defend)) + (when (not (nav-enemy-method-52 self)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (go-virtual nav-enemy-notice)) + (set-jump-height-factor! self 1) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (if (nav-enemy-method-57 self) (set! (-> self should-retreat?) #t)) + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (if (-> self should-retreat?) (go-virtual snow-bunny-defend)) + (go-virtual snow-bunny-chase-hop)) + :post nav-enemy-jump-post) (defstate snow-bunny-defend (snow-bunny) :virtual override - :code (behavior () - (if (= (-> self defense) 1) - (go-virtual snow-bunny-retreat-hop) - (go-virtual snow-bunny-lunge) - ) - ) - ) + :code + (behavior () + (if (= (-> self defense) 1) (go-virtual snow-bunny-retreat-hop) (go-virtual snow-bunny-lunge)))) (deftype snow-bunny-retreat-work (structure) - ((found-best basic) - (using-jump-event? basic) - (best-travel-dist float) - (best-dest vector :inline) - (away-vec vector :inline) - ) - ) - + ((found-best basic) + (using-jump-event? basic) + (best-travel-dist float) + (best-dest vector :inline) + (away-vec vector :inline))) (defmethod nav-enemy-method-55 ((this snow-bunny)) (set! (-> this using-jump-event?) #f) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new 'stack-no-clear 'snow-bunny-retreat-work))) (set! (-> s5-0 found-best) #f) - (let ((s4-0 (-> this nav))) - (nav-control-method-27 s4-0) - (nav-control-method-28 s4-0 (the-as collide-kind -1)) - ) + (let ((s4-0 (-> this nav))) (nav-control-method-27 s4-0) (nav-control-method-28 s4-0 (the-as collide-kind -1))) (let ((s4-1 (target-pos 0))) (vector-! (-> s5-0 away-vec) (-> this collide-info trans) s4-1) (set! (-> s5-0 away-vec y) 0.0) (vector-normalize! (-> s5-0 away-vec) 86016.0) (let* ((s3-0 (quaternion-y-angle (-> *target* control quat))) (a0-9 (atan (-> s5-0 away-vec x) (-> s5-0 away-vec z))) - (s3-1 (deg- a0-9 s3-0)) - ) + (s3-1 (deg- a0-9 s3-0))) (dotimes (s2-0 2) (cond ((zero? s2-0) (let ((f30-0 0.0)) - (if (< (fabs s3-1) 16384.0) - (set! f30-0 (if (>= s3-1 0.0) - 4551.1113 - -4551.1113 - ) - ) - ) + (if (< (fabs s3-1) 16384.0) (set! f30-0 (if (>= s3-1 0.0) 4551.1113 -4551.1113))) (let ((f0-7 (+ f30-0 (rand-vu-float-range -6371.5557 6371.5557))) - (s1-0 (new 'stack-no-clear 'vector)) - ) + (s1-0 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s1-0 (-> s5-0 away-vec) f0-7) - (vector+! (-> this final-dest) s4-1 s1-0) - ) - ) - ) + (vector+! (-> this final-dest) s4-1 s1-0)))) ((= s2-0 1) (let* ((f30-1 32768.0) - (f0-10 (if (>= s3-1 0.0) - (- f30-1 (rand-vu-float-range 10012.444 15473.777)) - (+ f30-1 (rand-vu-float-range 10012.444 15473.777)) - ) - ) - (s1-1 (new 'stack-no-clear 'vector)) - ) + (f0-10 (if (>= s3-1 0.0) (- f30-1 (rand-vu-float-range 10012.444 15473.777)) (+ f30-1 (rand-vu-float-range 10012.444 15473.777)))) + (s1-1 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s1-1 (-> s5-0 away-vec) f0-10) - (vector+! (-> this final-dest) s4-1 s1-1) - ) - ) - ) + (vector+! (-> this final-dest) s4-1 s1-1)))) (let* ((s1-3 (vector-! (new 'stack-no-clear 'vector) (-> this final-dest) (-> this collide-info trans))) - (f0-12 (vector-length s1-3)) - ) + (f0-12 (vector-length s1-3))) (let ((f1-4 (* 0.000011625744 f0-12))) (cond - ((< 1.0 f1-4) - (set! f1-4 1.0) - ) - ((< f1-4 0.4) - (set! f1-4 0.4) - ) - ) - (set! (-> this base-hop-dist) (+ 16384.0 (* 20480.0 f1-4))) - ) + ((< 1.0 f1-4) (set! f1-4 1.0)) + ((< f1-4 0.4) (set! f1-4 0.4))) + (set! (-> this base-hop-dist) (+ 16384.0 (* 20480.0 f1-4)))) (when (< (-> this base-hop-dist) f0-12) (vector-normalize! s1-3 (-> this base-hop-dist)) - (vector+! (-> this final-dest) (-> this collide-info trans) s1-3) - ) - ) + (vector+! (-> this final-dest) (-> this collide-info trans) s1-3))) (set! (-> this nav target-pos quad) (-> this final-dest quad)) (set! (-> this got-jump-event?) #f) (nav-control-method-13 (-> this nav) (-> this nav target-pos) (-> this nav old-travel)) @@ -894,178 +633,127 @@ (let ((s1-4 (new 'stack-no-clear 'nav-gap-info))) (when (nav-control-method-12 (-> this nav) s1-4) (set! (-> this got-jump-event?) #t) - (set! (-> this jump-event-dest quad) (-> s1-4 dest quad)) - ) - ) - ) + (set! (-> this jump-event-dest quad) (-> s1-4 dest quad))))) (cond ((-> this got-jump-event?) (when (zero? s2-0) (set! (-> this nav target-pos quad) (-> this jump-event-dest quad)) (set! (-> this using-jump-event?) #t) - (return #t) - ) - ) + (return #t))) (else - (let* ((s0-0 (-> this nav travel)) - (f30-2 (vector-length s0-0)) - ) - (when (>= f30-2 409.6) - (let ((s1-5 (-> this nav target-pos))) - (vector+! s1-5 (-> this collide-info trans) s0-0) - (when (nav-enemy-method-51 this s1-5 s1-5) - (if (>= f30-2 (+ -409.6 (-> this base-hop-dist))) - (return #t) - ) - (when (or (not (-> s5-0 found-best)) (< (-> s5-0 best-travel-dist) f30-2)) - (set! (-> s5-0 found-best) #t) - (set! (-> s5-0 best-travel-dist) f30-2) - (set! (-> s5-0 best-dest quad) (-> s1-5 quad)) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (let* ((s0-0 (-> this nav travel)) + (f30-2 (vector-length s0-0))) + (when (>= f30-2 409.6) + (let ((s1-5 (-> this nav target-pos))) + (vector+! s1-5 (-> this collide-info trans) s0-0) + (when (nav-enemy-method-51 this s1-5 s1-5) + (if (>= f30-2 (+ -409.6 (-> this base-hop-dist))) (return #t)) + (when (or (not (-> s5-0 found-best)) (< (-> s5-0 best-travel-dist) f30-2)) + (set! (-> s5-0 found-best) #t) + (set! (-> s5-0 best-travel-dist) f30-2) + (set! (-> s5-0 best-dest quad) (-> s1-5 quad)))))))))))) (when (-> s5-0 found-best) (set! (-> this nav target-pos quad) (-> s5-0 best-dest quad)) (vector-! (-> this nav travel) (-> s5-0 best-dest) (-> this collide-info trans)) - (return #t) - ) - ) - #f - ) + (return #t))) + #f) (defstate snow-bunny-retreat-hop (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (let ((v1-8 (>= 73728.0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans))))) - (when (or (-> self should-retreat?) (and v1-8 (logtest? (-> *target* state-flags) (state-flags dangerous)))) - (set! (-> self retreat-timeout-time) (+ (current-time) (the int (* 300.0 (-> self retreat-timeout))))) - (set! (-> self should-retreat?) #f) - ) - (when (or (>= (current-time) (-> self retreat-timeout-time)) (not v1-8)) - (if (or (not *target*) - (logtest? (-> *target* state-flags) (state-flags do-not-notice)) - (not (target-in-range? self (-> self nav-info stop-chase-distance))) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (not *target*) (go-virtual nav-enemy-patrol)) + (let ((v1-8 (>= 73728.0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans))))) + (when (or (-> self should-retreat?) (and v1-8 (logtest? (-> *target* state-flags) (state-flags dangerous)))) + (set! (-> self retreat-timeout-time) (+ (current-time) (the int (* 300.0 (-> self retreat-timeout))))) + (set! (-> self should-retreat?) #f)) + (when (or (>= (current-time) (-> self retreat-timeout-time)) (not v1-8)) + (if (or (not *target*) + (logtest? (-> *target* state-flags) (state-flags do-not-notice)) + (not (target-in-range? self (-> self nav-info stop-chase-distance)))) (go-virtual nav-enemy-patrol) - (go-virtual snow-bunny-chase-hop) - ) - ) - ) - (when (not (nav-enemy-method-55 self)) - (set-vector! (-> self nav travel) 0.0 0.0 0.0 1.0) - (set! (-> self nav target-pos quad) (-> self collide-info trans quad)) - ) - (set-jump-height-factor! self 2) - (snow-bunny-initialize-jump (-> self nav target-pos)) - (snow-bunny-method-76 self #t) - (set! (-> self rotate-speed) 728177.75) - (set! (-> self turn-time) (seconds 0.1)) - ) - :exit (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - ) - :trans (behavior () - (nav-enemy-method-58 self) - ) - :code (behavior () - (snow-bunny-execute-jump) - (if (-> self using-jump-event?) - (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans))) - ) - (go-virtual snow-bunny-retreat-hop) - ) - :post nav-enemy-jump-post - ) + (go-virtual snow-bunny-chase-hop)))) + (when (not (nav-enemy-method-55 self)) + (set-vector! (-> self nav travel) 0.0 0.0 0.0 1.0) + (set! (-> self nav target-pos quad) (-> self collide-info trans quad))) + (set-jump-height-factor! self 2) + (snow-bunny-initialize-jump (-> self nav target-pos)) + (snow-bunny-method-76 self #t) + (set! (-> self rotate-speed) 728177.75) + (set! (-> self turn-time) (seconds 0.1))) + :exit + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate enable-travel)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1))) + :trans + (behavior () + (nav-enemy-method-58 self)) + :code + (behavior () + (snow-bunny-execute-jump) + (if (-> self using-jump-event?) + (set-current-poly! (-> self nav) (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (go-virtual snow-bunny-retreat-hop)) + :post nav-enemy-jump-post) (defstate snow-bunny-lunge (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (snow-bunny-method-76 self #f) - ) - :trans (behavior () - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (nav-enemy-method-58 self) - (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)))) - (if (< 73728.0 f0-0) - (go-virtual snow-bunny-chase-hop) - ) - ) - (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) - (go-virtual snow-bunny-chase-hop) - ) - (if (and (logtest? (-> *target* state-flags) (state-flags dangerous)) - (not (target-in-range? self (-> self nav-info notice-distance))) - ) - (go-virtual snow-bunny-retreat-hop) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (snow-bunny-method-76 self #f)) + :trans + (behavior () + (if (not *target*) (go-virtual nav-enemy-patrol)) + (nav-enemy-method-58 self) + (let ((f0-0 (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)))) + (if (< 73728.0 f0-0) (go-virtual snow-bunny-chase-hop))) + (if (not (logtest? (-> *target* state-flags) (state-flags dangerous))) (go-virtual snow-bunny-chase-hop)) + (if (and (logtest? (-> *target* state-flags) (state-flags dangerous)) + (not (target-in-range? self (-> self nav-info notice-distance)))) + (go-virtual snow-bunny-retreat-hop))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (loop (ja-no-eval :group! (-> self draw art-group data (-> self nav-info idle-anim)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post nav-enemy-simple-post) (defstate snow-bunny-attack (snow-bunny) :virtual override :event snow-bunny-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-vector! (-> self collide-info transv) 0.0 0.0 0.0 1.0) - (snow-bunny-method-76 self #t) - ) - :trans (behavior () - (when *target* - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (seek-toward-heading-vec! (-> self collide-info) gp-0 524288.0 (seconds 0.1)) - ) - ) - (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self attack-anim)) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (suspend) - ) - (go-virtual snow-bunny-retreat-hop) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-vector! (-> self collide-info transv) 0.0 0.0 0.0 1.0) + (snow-bunny-method-76 self #t)) + :trans + (behavior () + (when *target* + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (seek-toward-heading-vec! (-> self collide-info) gp-0 524288.0 (seconds 0.1)))) + (+! (-> self collide-info transv y) (* -546119.7 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #f + #f + #f)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! (-> self draw art-group data (-> self attack-anim)) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (until (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) + (suspend)) + (go-virtual snow-bunny-retreat-hop)) + :post nav-enemy-simple-post) diff --git a/goal_src/jak1/levels/snow/snow-flutflut-obs.gc b/goal_src/jak1/levels/snow/snow-flutflut-obs.gc index d8be4598c5..c21082ced7 100644 --- a/goal_src/jak1/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/jak1/levels/snow/snow-flutflut-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/plat-eco.gc") (require "engine/common-obs/ticky.gc") @@ -9,348 +8,300 @@ ;; name in dgo: snow-flutflut-obs ;; dgos: L1, SNO - ;; DECOMP BEGINS (deftype flutflut-plat (plat) - ((has-path? symbol) - (plat-type int32) - (rise-time int32) - (fall-time int32) - (part-ry float) - (sync-starting-val float) - (flutflut-button entity-actor) - (appear-trans-top vector :inline) - (appear-trans-bottom vector :inline) - (appear-quat-top quaternion :inline) - (appear-quat-bottom quaternion :inline) - (start-trans vector :inline) - ) + ((has-path? symbol) + (plat-type int32) + (rise-time int32) + (fall-time int32) + (part-ry float) + (sync-starting-val float) + (flutflut-button entity-actor) + (appear-trans-top vector :inline) + (appear-trans-bottom vector :inline) + (appear-quat-top quaternion :inline) + (appear-quat-bottom quaternion :inline) + (start-trans vector :inline)) (:states - elevator-idle-at-cave - elevator-idle-at-fort - elevator-travel-to-cave - elevator-travel-to-fort - flutflut-plat-appear - flutflut-plat-hidden-idle - flutflut-plat-hide - ) - ) - + elevator-idle-at-cave + elevator-idle-at-fort + elevator-travel-to-cave + elevator-travel-to-fort + flutflut-plat-appear + flutflut-plat-hidden-idle + flutflut-plat-hide)) (deftype snow-button (process-drawable) - ((root collide-shape-moving :override) - (wiggled? symbol) - (trying-for-fuel-cell? symbol) - (timeout time-frame) - (delay-til-wiggle time-frame) - (prev-button entity-actor) - (ticker ticky :inline) - ) + ((root collide-shape-moving :override) + (wiggled? symbol) + (trying-for-fuel-cell? symbol) + (timeout time-frame) + (delay-til-wiggle time-frame) + (prev-button entity-actor) + (ticker ticky :inline)) (:states - snow-button-activate - snow-button-deactivate - snow-button-up-idle - ) - ) + snow-button-activate + snow-button-deactivate + snow-button-up-idle)) +(defskelgroup *flutflut-plat-small-sg* + flutflut-plat-small + flutflut-plat-small-lod0-jg + flutflut-plat-small-idle-ja + ((flutflut-plat-small-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -0.5 0 4)) -(defskelgroup *flutflut-plat-small-sg* flutflut-plat-small flutflut-plat-small-lod0-jg flutflut-plat-small-idle-ja - ((flutflut-plat-small-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -0.5 0 4) - ) +(defskelgroup *flutflut-plat-med-sg* + flutflut-plat-med + flutflut-plat-med-lod0-jg + flutflut-plat-med-idle-ja + ((flutflut-plat-med-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 6.75)) -(defskelgroup *flutflut-plat-med-sg* flutflut-plat-med flutflut-plat-med-lod0-jg flutflut-plat-med-idle-ja - ((flutflut-plat-med-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 6.75) - ) +(defskelgroup *flutflut-plat-large-sg* + flutflut-plat-large + flutflut-plat-large-lod0-jg + flutflut-plat-large-idle-ja + ((flutflut-plat-large-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 9)) -(defskelgroup *flutflut-plat-large-sg* flutflut-plat-large flutflut-plat-large-lod0-jg flutflut-plat-large-idle-ja - ((flutflut-plat-large-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 9) - ) - -(defskelgroup *snow-button-sg* snow-button snow-button-lod0-jg -1 - ((snow-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.3) - ) +(defskelgroup *snow-button-sg* + snow-button + snow-button-lod0-jg + -1 + ((snow-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.3)) (defpartgroup group-flutflut-plat-small :id 516 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2087 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2088 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2087 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2088 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2087 - :init-specs ((:num 1.5) - (:x (meters -2) (meters 4)) - (:y (meters -1)) - (:z (meters -2) (meters 4)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters -0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:num 1.5) + (:x (meters -2) (meters 4)) + (:y (meters -1)) + (:z (meters -2) (meters 4)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters -0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:rotate-y (degrees 45)))) (defpart 2088 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:x (meters -3) (meters 6)) - (:y (meters -1.25)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters -0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:x (meters -3) (meters 6)) + (:y (meters -1.25)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters -0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 45)))) (defpartgroup group-flutflut-plat-med :id 517 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2089 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2090 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2089 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2090 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2089 - :init-specs ((:num 3.0) - (:y (meters -2.5)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters 0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 3)) - ) - ) + :init-specs + ((:num 3.0) + (:y (meters -2.5)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters 0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 3)))) (defpart 2090 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters -2.25)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters -2.25)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 3)))) (defpartgroup group-flutflut-plat-large :id 518 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2091 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 2092 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 2091 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 2092 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 2091 - :init-specs ((:num 4.0) - (:x (meters -2) (meters 4)) - (:y (meters -1.5)) - (:z (meters -6) (meters 12)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters -0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 4.0) + (:x (meters -2) (meters 4)) + (:y (meters -1.5)) + (:z (meters -6) (meters 12)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters -0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:rotate-y (degrees 30)))) (defpart 2092 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters -2) (meters 4)) - (:y (meters -1.25)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters -0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters -2) (meters 4)) + (:y (meters -1.25)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters -0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30)))) (defstate snow-button-up-idle (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-2 object)) - (case message - (('touch 'attack 'bonk) - (when (and (= (-> proc type) target) - (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) - (>= 10649.6 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ) - (close-specific-task! (game-task snow-ball) (task-status need-hint)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-button-activate) - ) - ) - (('query) - (return #f) - v0-2 - ) - ) - ) - :code (behavior () - (ja :group! snow-button-going-down-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-2 object)) + (case message + (('touch 'attack 'bonk) + (when (and (= (-> proc type) target) + (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)) + (>= 10649.6 (vector-vector-xz-distance (-> self root trans) (target-pos 0)))) + (close-specific-task! (game-task snow-ball) (task-status need-hint)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-button-activate))) + (('query) (return #f) v0-2))) + :code + (behavior () + (ja :group! snow-button-going-down-ja :num! min) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate snow-button-activate (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('untrigger) - (go snow-button-deactivate) - ) - (('query) - (return #t) - v0-0 - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self wiggled?) #f) - ;; og:preserve-this PAL patch here - (set! (-> self trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) - (sleep (-> self ticker) (-> self timeout)) - (when (-> self prev-button) - (let* ((v1-6 (-> self prev-button)) - (a0-1 (if v1-6 - (-> v1-6 extra process) - ) - ) - ) - (if a0-1 - (send-event a0-1 'untrigger) - ) - ) - ) - (send-to-all-after (-> self link) 'trigger) - ) - :trans (behavior () - (if (completed? (-> self ticker)) - (go snow-button-deactivate) - ) - (when (and (-> self trying-for-fuel-cell?) (task-complete? *game-info* (game-task snow-ball))) - (set! (-> self trying-for-fuel-cell?) #f) - (go snow-button-deactivate) - ) - ;; og:preserve-this PAL patch here - (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) - (when (not (-> self wiggled?)) - (set! (-> self wiggled?) #t) - (send-to-all-after (-> self link) 'bounce) - ) - ) - (rider-trans) - ) - :code (behavior () - (sound-play "prec-button1" :pitch -1) - (ja-no-eval :group! snow-button-going-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('untrigger) (go snow-button-deactivate)) + (('query) (return #t) v0-0))) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self wiggled?) #f) + ;; og:preserve-this PAL patch here + (set! (-> self trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) + (sleep (-> self ticker) (-> self timeout)) + (when (-> self prev-button) + (let* ((v1-6 (-> self prev-button)) + (a0-1 (if v1-6 (-> v1-6 extra process)))) + (if a0-1 (send-event a0-1 'untrigger)))) + (send-to-all-after (-> self link) 'trigger)) + :trans + (behavior () + (if (completed? (-> self ticker)) (go snow-button-deactivate)) + (when (and (-> self trying-for-fuel-cell?) (task-complete? *game-info* (game-task snow-ball))) + (set! (-> self trying-for-fuel-cell?) #f) + (go snow-button-deactivate)) + ;; og:preserve-this PAL patch here + (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) + (when (not (-> self wiggled?)) + (set! (-> self wiggled?) #t) + (send-to-all-after (-> self link) 'bounce))) + (rider-trans)) + :code + (behavior () + (sound-play "prec-button1" :pitch -1) + (ja-no-eval :group! snow-button-going-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self mask) (process-mask sleep-code)) (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - :post rider-post - ) + 0) + :post rider-post) (defstate snow-button-deactivate (snow-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 symbol)) - (case message - (('query) - (return (the-as object #f)) - v0-0 - ) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 symbol)) + (case message + (('query) (return (the-as object #f)) v0-0))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (send-to-all-after (-> self link) 'untrigger) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.6)) - (suspend) - ) - (ja-no-eval :group! snow-button-going-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go snow-button-up-idle) - ) - :post rider-post - ) + :code + (behavior () + (send-to-all-after (-> self link) 'untrigger) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.6)) + (suspend)) + (ja-no-eval :group! snow-button-going-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go snow-button-up-idle)) + :post rider-post) (defmethod init-from-entity! ((this snow-button) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -364,8 +315,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -373,8 +323,7 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-2 collide-with) (collide-kind target)) @@ -382,515 +331,342 @@ (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) - (initialize-skeleton this *snow-button-sg* '()) + (initialize-skeleton this *snow-button-sg* ()) (logior! (-> this skel status) (janim-status inited)) (set! (-> this timeout) (the-as time-frame (the int (* 300.0 (res-lump-float arg0 'timeout :default 10.0))))) (set! (-> this delay-til-wiggle) (+ (-> this timeout) (seconds -0.4))) (if (> (entity-actor-count arg0 'alt-actor) 0) - (set! (-> this prev-button) (entity-actor-lookup arg0 'alt-actor 0)) - (set! (-> this prev-button) #f) - ) + (set! (-> this prev-button) (entity-actor-lookup arg0 'alt-actor 0)) + (set! (-> this prev-button) #f)) ;; og:preserve-this PAL patch here (set! (-> this trying-for-fuel-cell?) (not (task-complete? *game-info* (game-task snow-ball)))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (go snow-button-up-idle) - (none) - ) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat)) - (let ((t9-0 (method-of-type plat baseplat-method-26))) - (t9-0 this) - ) - (if (zero? (-> this link)) - (set! (-> this link) (new 'process 'actor-link-info this)) - ) + (let ((t9-0 (method-of-type plat baseplat-method-26))) (t9-0 this)) + (if (zero? (-> this link)) (set! (-> this link) (new 'process 'actor-link-info this))) (set! (-> this sound-id) (new-sound-id)) (set! (-> this plat-type) (res-lump-value (-> this entity) 'mode int)) (set! (-> this flutflut-button) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (let ((f0-0 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-0 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-0) - ) - ) + (if (!= f0-0 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-0))) (set! (-> this has-path?) - (and (not (logtest? (-> this path flags) (path-control-flag not-found))) (> (-> this sync period) 0)) - ) + (and (not (logtest? (-> this path flags) (path-control-flag not-found))) (> (-> this sync period) 0))) (when (nonzero? (-> this plat-type)) (cond ((-> this has-path?) (set! (-> this sync-starting-val) (get-phase-offset (-> this sync))) (sync-now! (-> this sync) (-> this sync-starting-val)) - (eval-path-curve! - (-> this path) - (-> this appear-trans-top) - (if (logtest? (-> this fact options) (fact-options wrap-phase)) - (get-current-phase (-> this sync)) - (get-current-phase-with-mirror (-> this sync)) - ) - 'interp - ) - ) - (else - (set! (-> this appear-trans-top quad) (-> this root trans quad)) - ) - ) + (eval-path-curve! (-> this path) + (-> this appear-trans-top) + (if (logtest? (-> this fact options) (fact-options wrap-phase)) + (get-current-phase (-> this sync)) + (get-current-phase-with-mirror (-> this sync))) + 'interp)) + (else (set! (-> this appear-trans-top quad) (-> this root trans quad)))) (set! (-> this appear-trans-bottom quad) (-> this appear-trans-top quad)) (+! (-> this appear-trans-bottom y) -286720.0) (quaternion-copy! (-> this appear-quat-top) (-> this root quat)) (let ((v1-33 (res-lump-value (-> this entity) 'extra-id uint128))) - (set! (-> this rise-time) (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33)))))) - ) - (set! (-> this fall-time) 180) - ) - (none) - ) + (set! (-> this rise-time) (the int (* 300.0 (+ 0.6 (* 0.15 (the float v1-33))))))) + (set! (-> this fall-time) 180)) + (none)) (defmethod get-lit-skel ((this flutflut-plat)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (return (the-as skeleton-group #t)) - ) + (return (the-as skeleton-group #t))) (when (task-complete? *game-info* (-> this entity extra perm task)) (process-entity-status! this (entity-perm-status complete) #t) - (return (the-as skeleton-group #t)) - ) - (the-as skeleton-group #f) - ) + (return (the-as skeleton-group #t))) + (the-as skeleton-group #f)) (defstate plat-startup (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (or (!= (-> self plat-type) 1) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (go flutflut-plat-appear) - ) - ) - ) - ) - :code (behavior ((arg0 plat)) - (cond - ((and (= (-> self plat-type) 1) - (-> self entity) - (logtest? (-> self entity extra perm status) (entity-perm-status complete)) - ) - (set! (-> self basetrans quad) (-> self appear-trans-top quad)) - (go elevator-idle-at-cave) - ) - ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) - (let* ((v1-11 (-> self flutflut-button)) - (a0-10 (if v1-11 - (-> v1-11 extra process) - ) - ) - ) - (if (and a0-10 (send-event a0-10 'query)) - (go flutflut-plat-appear) - (go flutflut-plat-hidden-idle) - ) - ) - ) - (else - (let ((t9-4 (-> (method-of-type plat plat-startup) code))) - (if t9-4 - ((the-as (function none :behavior plat) t9-4)) - ) - ) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (or (!= (-> self plat-type) 1) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + (logclear! (-> self mask) (process-mask actor-pause)) + (go flutflut-plat-appear))))) + :code + (behavior ((arg0 plat)) + (cond + ((and (= (-> self plat-type) 1) + (-> self entity) + (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (set! (-> self basetrans quad) (-> self appear-trans-top quad)) + (go elevator-idle-at-cave)) + ((or (= (-> self plat-type) 1) (= (-> self plat-type) 2)) + (let* ((v1-11 (-> self flutflut-button)) + (a0-10 (if v1-11 (-> v1-11 extra process)))) + (if (and a0-10 (send-event a0-10 'query)) (go flutflut-plat-appear) (go flutflut-plat-hidden-idle)))) + (else + (let ((t9-4 (-> (method-of-type plat plat-startup) code))) (if t9-4 ((the-as (function none :behavior plat) t9-4)))))))) (defstate flutflut-plat-hidden-idle (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (logclear! (-> self mask) (process-mask actor-pause)) - (go flutflut-plat-appear) - ) - ) - ) - :trans (behavior () - (if (and (= (-> self plat-type) 1) (get-lit-skel self)) - (go flutflut-plat-appear) - ) - ) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self root)) - (set! (-> self root trans quad) (-> self appear-trans-top quad)) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (logclear! (-> self mask) (process-mask actor-pause)) (go flutflut-plat-appear)))) + :trans + (behavior () + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) (go flutflut-plat-appear))) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self root)) + (set! (-> self root trans quad) (-> self appear-trans-top quad)) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate flutflut-plat-appear (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self root)) - (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'quaternion)) - ) - (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) - (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) - ) - (quaternion-vector-angle! (-> self appear-quat-bottom) s5-0 (rand-vu-float-range -21845.334 21845.334)) - (quaternion-axis-angle! gp-0 0.0 1.0 0.0 (rand-vu-float-range -32768.0 32768.0)) - (quaternion*! (-> self appear-quat-bottom) (-> self appear-quat-bottom) gp-0) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (plat-trans) - (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (-> self rise-time))))) - (f0-2 (- 1.0 f0-1)) - (f0-3 (* f0-2 f0-2)) - (f30-0 (- 1.0 f0-3)) - ) - (vector-lerp! (-> self basetrans) (-> self appear-trans-bottom) (-> self appear-trans-top) f30-0) - (quaternion-slerp! (-> self root quat) (-> self appear-quat-bottom) (-> self appear-quat-top) f30-0) - (set-vector! (-> self draw color-mult) f30-0 f30-0 f30-0 1.0) - (when (>= f30-0 1.0) - (baseplat-method-22 self) - (rider-post) - (cond - ((= (-> self plat-type) 1) - (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self root)) + (set! (-> self basetrans quad) (-> self appear-trans-bottom quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion))) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0)) + (quaternion-vector-angle! (-> self appear-quat-bottom) s5-0 (rand-vu-float-range -21845.334 21845.334)) + (quaternion-axis-angle! gp-0 0.0 1.0 0.0 (rand-vu-float-range -32768.0 32768.0)) + (quaternion*! (-> self appear-quat-bottom) (-> self appear-quat-bottom) gp-0))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (plat-trans) + (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (-> self rise-time))))) + (f0-2 (- 1.0 f0-1)) + (f0-3 (* f0-2 f0-2)) + (f30-0 (- 1.0 f0-3))) + (vector-lerp! (-> self basetrans) (-> self appear-trans-bottom) (-> self appear-trans-top) f30-0) + (quaternion-slerp! (-> self root quat) (-> self appear-quat-bottom) (-> self appear-quat-top) f30-0) + (set-vector! (-> self draw color-mult) f30-0 f30-0 f30-0 1.0) + (when (>= f30-0 1.0) + (baseplat-method-22 self) + (rider-post) + (cond + ((= (-> self plat-type) 1) + (if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) (go elevator-idle-at-cave) - (go-virtual plat-idle) - ) - ) - ((-> self has-path?) - (let ((a0-9 (-> self sync))) - (sync-now! a0-9 (-> self sync-starting-val)) - (go-virtual plat-path-active (the-as plat a0-9)) - ) - ) - (else - (go-virtual plat-idle) - ) - ) - ) - ) - (baseplat-method-20 self) - ) + (go-virtual plat-idle))) + ((-> self has-path?) + (let ((a0-9 (-> self sync))) + (sync-now! a0-9 (-> self sync-starting-val)) + (go-virtual plat-path-active (the-as plat a0-9)))) + (else (go-virtual plat-idle))))) + (baseplat-method-20 self)) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate plat-idle (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go flutflut-plat-hide) - ) - ) - ) - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (if (and (= (-> self plat-type) 1) (get-lit-skel self)) - (go elevator-idle-at-cave) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go flutflut-plat-hide)))) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) enter))) (if t9-0 (t9-0))) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-idle) exit))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat plat-idle) trans))) (if t9-0 (t9-0))) + (if (and (= (-> self plat-type) 1) (get-lit-skel self)) (go elevator-idle-at-cave)))) (defstate plat-path-active (flutflut-plat) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go flutflut-plat-hide) - ) - ) - ) - :enter (behavior ((arg0 plat)) - (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) - (if t9-0 - (t9-0 arg0) - ) - ) - (if (or (!= (-> self plat-type) 1) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (let ((t9-0 (-> (method-of-type plat plat-path-active) exit))) - (if t9-0 - (t9-0) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go flutflut-plat-hide)))) + :enter + (behavior ((arg0 plat)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) enter))) (if t9-0 (t9-0 arg0))) + (if (or (!= (-> self plat-type) 1) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + (logclear! (-> self mask) (process-mask actor-pause)))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (let ((t9-0 (-> (method-of-type plat plat-path-active) exit))) (if t9-0 (t9-0))))) (defstate flutflut-plat-hide (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (logclear! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) - (set! (-> self start-trans quad) (-> self root trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'quaternion)) - ) - (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) - (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0) - ) - (quaternion-vector-angle! (-> self appear-quat-bottom) s5-0 (rand-vu-float-range -21845.334 21845.334)) - (quaternion-axis-angle! gp-0 0.0 1.0 0.0 (rand-vu-float-range -32768.0 32768.0)) - (quaternion*! (-> self appear-quat-bottom) (-> self appear-quat-bottom) gp-0) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) - ) - :trans (behavior () - (plat-trans) - (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (-> self fall-time))))) - (f30-0 (* f0-1 f0-1)) - ) - (vector-lerp! (-> self basetrans) (-> self start-trans) (-> self appear-trans-bottom) f30-0) - (quaternion-slerp! (-> self root quat) (-> self appear-quat-top) (-> self appear-quat-bottom) f30-0) - (let ((f0-3 (- 1.0 f30-0))) - (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 1.0) - ) - (when (>= f30-0 1.0) - (rider-post) - (go flutflut-plat-hidden-idle) - ) - ) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) + :enter + (behavior () + (set-time! (-> self state-time)) + (logclear! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky)) + (set! (-> self start-trans quad) (-> self root trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion))) + (let ((f30-0 (rand-vu-float-range 0.0 65536.0))) (set-vector! s5-0 (cos f30-0) 0.0 (sin f30-0) 1.0)) + (quaternion-vector-angle! (-> self appear-quat-bottom) s5-0 (rand-vu-float-range -21845.334 21845.334)) + (quaternion-axis-angle! gp-0 0.0 1.0 0.0 (rand-vu-float-range -32768.0 32768.0)) + (quaternion*! (-> self appear-quat-bottom) (-> self appear-quat-bottom) gp-0))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logior! (-> self root root-prim prim-core action) (collide-action rider-plat-sticky))) + :trans + (behavior () + (plat-trans) + (let* ((f0-1 (fmin 1.0 (/ (the float (- (current-time) (-> self state-time))) (the float (-> self fall-time))))) + (f30-0 (* f0-1 f0-1))) + (vector-lerp! (-> self basetrans) (-> self start-trans) (-> self appear-trans-bottom) f30-0) + (quaternion-slerp! (-> self root quat) (-> self appear-quat-top) (-> self appear-quat-bottom) f30-0) + (let ((f0-3 (- 1.0 f30-0))) (set-vector! (-> self draw color-mult) f0-3 f0-3 f0-3 1.0)) + (when (>= f30-0 1.0) + (rider-post) + (go flutflut-plat-hidden-idle))) + (baseplat-method-20 self)) :code anim-loop - :post rider-post - ) + :post rider-post) (defstate elevator-idle-at-cave (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('bounce) - (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (baseplat-method-22 self) - ) - ) - (('ridden) - (if (or (not *target*) (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) - (go elevator-travel-to-fort) - ) - ) - ) - ) - :enter (behavior () - (set! (-> self path-pos) 0.0) - (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp) - ) - :trans (behavior () - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('bounce) + (if (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (baseplat-method-22 self))) + (('ridden) + (if (or (not *target*) (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) + (go elevator-travel-to-fort))))) + :enter + (behavior () + (set! (-> self path-pos) 0.0) + (eval-path-curve! (-> self path) (-> self basetrans) 0.0 'interp)) + :trans + (behavior () + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-travel-to-fort (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :trans (behavior () - (when (= (-> self path-pos) 1.0) - (baseplat-method-22 self) - (go elevator-idle-at-fort) - ) - ;; og:preserve-this PAL patch here - (seek! (-> self path-pos) 1.0 (* 0.16 (seconds-per-frame))) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :trans + (behavior () + (when (= (-> self path-pos) 1.0) + (baseplat-method-22 self) + (go elevator-idle-at-fort)) + ;; og:preserve-this PAL patch here + (seek! (-> self path-pos) 1.0 (* 0.16 (seconds-per-frame))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-idle-at-fort (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :enter (behavior () - (set! (-> self path-pos) 1.0) - (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp) - ) - :trans (behavior () - (when *target* - (if (and (>= 798720.0 (-> (target-pos 0) y)) - (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - ) - (go elevator-travel-to-cave) - ) - ) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :enter + (behavior () + (set! (-> self path-pos) 1.0) + (eval-path-curve! (-> self path) (-> self basetrans) 1.0 'interp)) + :trans + (behavior () + (when *target* + (if (and (>= 798720.0 (-> (target-pos 0) y)) + (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))))) + (go elevator-travel-to-cave))) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) (defstate elevator-travel-to-cave (flutflut-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - ) - ) - :trans (behavior () - (when (= (-> self path-pos) 0.0) - (baseplat-method-22 self) - (go elevator-idle-at-cave) - ) - ;; og:preserve-this PAL patch here - (seek! (-> self path-pos) 0.0 (* 0.16 (seconds-per-frame))) - (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) - (plat-trans) - (baseplat-method-20 self) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)))) + :trans + (behavior () + (when (= (-> self path-pos) 0.0) + (baseplat-method-22 self) + (go elevator-idle-at-cave)) + ;; og:preserve-this PAL patch here + (seek! (-> self path-pos) 0.0 (* 0.16 (seconds-per-frame))) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (plat-trans) + (baseplat-method-20 self)) :code anim-loop - :post plat-post - ) + :post plat-post) -(deftype flutflut-plat-small (flutflut-plat) - () - ) +(deftype flutflut-plat-small (flutflut-plat) ()) +(deftype flutflut-plat-med (flutflut-plat) ()) -(deftype flutflut-plat-med (flutflut-plat) - () - ) - - -(deftype flutflut-plat-large (flutflut-plat) - () - ) - +(deftype flutflut-plat-large (flutflut-plat) ()) (defmethod get-unlit-skel ((this flutflut-plat-small)) - *flutflut-plat-small-sg* - ) + *flutflut-plat-small-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-small)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 516) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this flutflut-plat-small)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 2087 init-specs 12 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 2088 init-specs 17 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat-small)) - (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) (t9-0 this)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-24 ((this flutflut-plat-small)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -899,34 +675,26 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod get-unlit-skel ((this flutflut-plat-med)) - *flutflut-plat-med-sg* - ) + *flutflut-plat-med-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-med)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 517) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-24 ((this flutflut-plat-med)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -935,51 +703,38 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod get-unlit-skel ((this flutflut-plat-large)) - *flutflut-plat-large-sg* - ) + *flutflut-plat-large-sg*) (defmethod baseplat-method-25 ((this flutflut-plat-large)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 518) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this flutflut-plat-large)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 2091 init-specs 12 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 2092 init-specs 17 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (defmethod baseplat-method-26 ((this flutflut-plat-large)) - (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type flutflut-plat baseplat-method-26))) (t9-0 this)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-24 ((this flutflut-plat-large)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -988,12 +743,9 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-obs.gc b/goal_src/jak1/levels/snow/snow-obs.gc index 0b8eb2b8c2..c156c36bbb 100644 --- a/goal_src/jak1/levels/snow/snow-obs.gc +++ b/goal_src/jak1/levels/snow/snow-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/task/task-control.gc") (require "engine/common-obs/collectables.gc") (require "engine/camera/pov-camera-h.gc") @@ -15,421 +14,320 @@ ;; DECOMP BEGINS (deftype snowcam (pov-camera) - ((seq uint64) - ) - ) + ((seq uint64))) - -(defskelgroup *snowcam-sg* snowcam snowcam-lod0-jg -1 - ((snowcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *snowcam-sg* + snowcam + snowcam-lod0-jg + -1 + ((snowcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this snowcam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (snowcam) :virtual #t - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! snowcam-gearstart-ja :num! (seek! max 0.2) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.2)) - ) - (ja-no-eval :group! snowcam-gate-ja :num! (seek! max 0.25) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.25)) - ) - (ja-no-eval :group! snowcam-gearend-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 4.5)) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! snowcam-gearstart-ja :num! (seek! max 0.2) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - ) - ((= v1-0 1) - (let ((gp-2 - (ppointer->handle - (process-spawn - fuel-cell - :init fuel-cell-init-as-clone - (process->handle self) - (-> self entity extra perm task) - :to (ppointer->process (-> self parent)) - ) - ) - ) - ) - (add-setting! 'music-volume 'abs 0.0 0) - (add-setting! 'sfx-volume 'rel 50.0 0) - (ja-play-spooled-anim - (the-as spool-anim (-> self anim-name)) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'music-volume) - (remove-setting! 'sfx-volume) - (let ((a0-21 (handle->process gp-2))) - (if a0-21 - (send-event a0-21 'stop-cloning) - ) - ) - ) - ) - ((= v1-0 2) - (ja-no-eval :group! snowcam-eggtop-activating-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (handle->process (-> self notify-handle)) 'notify 'cut) - (ja-no-eval :group! snowcam-ecovent-activating-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) + (ja :num! (seek! max 0.2))) + (ja-no-eval :group! snowcam-gate-ja :num! (seek! max 0.25) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.25))) + (ja-no-eval :group! snowcam-gearend-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 4.5)) (suspend)))) + ((= v1-0 1) + (let ((gp-2 (ppointer->handle (process-spawn fuel-cell + :init + fuel-cell-init-as-clone + (process->handle self) + (-> self entity extra perm task) + :to + (ppointer->process (-> self parent)))))) + (add-setting! 'music-volume 'abs 0.0 0) + (add-setting! 'sfx-volume 'rel 50.0 0) + (ja-play-spooled-anim (the-as spool-anim (-> self anim-name)) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'music-volume) + (remove-setting! 'sfx-volume) + (let ((a0-21 (handle->process gp-2))) (if a0-21 (send-event a0-21 'stop-cloning))))) + ((= v1-0 2) + (ja-no-eval :group! snowcam-eggtop-activating-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (handle->process (-> self notify-handle)) 'notify 'cut) + (ja-no-eval :group! snowcam-ecovent-activating-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) (deftype snow-eggtop (process-drawable) - ((root collide-shape-moving :override) - (spawn-trans vector :inline) - (play-sound? symbol) - ) + ((root collide-shape-moving :override) + (spawn-trans vector :inline) + (play-sound? symbol)) (:states - snow-eggtop-activate - snow-eggtop-idle-down - snow-eggtop-idle-up - ) - ) + snow-eggtop-activate + snow-eggtop-idle-down + snow-eggtop-idle-up)) - -(defskelgroup *snow-eggtop-sg* snow-eggtop snow-eggtop-lod0-jg snow-eggtop-idle-ja - ((snow-eggtop-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *snow-eggtop-sg* + snow-eggtop + snow-eggtop-lod0-jg + snow-eggtop-idle-ja + ((snow-eggtop-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defpartgroup group-snow-yellow-eco-room-open :id 510 :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 1990 :fade-after (meters 110)) - (sp-item 1991 :fade-after (meters 110)) - (sp-item 1992 :fade-after (meters 110)) - (sp-item 1993 :fade-after (meters 110)) - (sp-item 1994 :fade-after (meters 110)) - ) - ) + :parts + ((sp-item 1990 :fade-after (meters 110)) + (sp-item 1991 :fade-after (meters 110)) + (sp-item 1992 :fade-after (meters 110)) + (sp-item 1993 :fade-after (meters 110)) + (sp-item 1994 :fade-after (meters 110)))) (defpartgroup group-snow-yellow-eco-room-activate :id 511 :duration (seconds 3) :bounds (static-bspherem 0 -6 0 8) - :parts ((sp-item 1994) (sp-item 1994) (sp-item 1995 :flags (bit1) :period (seconds 4) :length (seconds 0.05))) - ) + :parts ((sp-item 1994) (sp-item 1994) (sp-item 1995 :flags (bit1) :period (seconds 4) :length (seconds 0.05)))) (defpart 1995 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 30.0) - (:y (meters -4)) - (:scale-x (meters 20) (meters 10)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 5) (meters 2)) - (:r 127.0) - (:g 127.0) - (:b 0.0 16.0) - (:a 0.0) - (:rotvel-z (degrees -0.05) (degrees 0.1)) - (:fade-a 0.85333335) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.25)) - (:next-launcher 1996) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 30.0) + (:y (meters -4)) + (:scale-x (meters 20) (meters 10)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 5) (meters 2)) + (:r 127.0) + (:g 127.0) + (:b 0.0 16.0) + (:a 0.0) + (:rotvel-z (degrees -0.05) (degrees 0.1)) + (:fade-a 0.85333335) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.25)) + (:next-launcher 1996))) (defpart 1996 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 1997)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.75)) (:next-launcher 1997))) (defpart 1997 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpart 1990 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 10) (meters 2)) - (:scale-y (meters 8) (meters 2)) - (:r 255.0) - (:g 255.0) - (:b 0.0 64.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 10) (meters 2)) + (:scale-y (meters 8) (meters 2)) + (:r 255.0) + (:g 255.0) + (:b 0.0 64.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 1991 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3)))) (defpart 1992 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees -30) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees -30) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998))) (defpart 1998 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpart 1993 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.5 1.0) - (:y (meters -4)) - (:scale-x (meters 3) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 150) (degrees 60)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.5 1.0) + (:y (meters -4)) + (:scale-x (meters 3) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 150) (degrees 60)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998))) (defpart 1994 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 1.0) - (:y (meters -6.5) (meters 1)) - (:scale-x (meters 6) (meters 2)) - (:rot-x 4) - (:rot-z (degrees -140) (degrees 100.00001)) - (:scale-y (meters 0.7) (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1998) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 80) (degrees 200.00002)) - (:conerot-radius (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 1.0) + (:y (meters -6.5) (meters 1)) + (:scale-x (meters 6) (meters 2)) + (:rot-x 4) + (:rot-z (degrees -140) (degrees 100.00001)) + (:scale-y (meters 0.7) (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1998) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 80) (degrees 200.00002)) + (:conerot-radius (meters 4)))) (defstate snow-eggtop-idle-up (snow-eggtop) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> block param 0) - (('pickup) - (if (type-type? (-> proc type) fuel-cell) - (save-reminder (get-task-control (-> self entity extra perm task)) 1 4) - ) - ) - ) - ) - ) - ) - :trans (behavior () - (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) - (go snow-eggtop-activate) - ) - (spawn (-> self part) (-> self root trans)) - (update! (-> self sound)) - ) - :code (behavior () - (ja-channel-push! 1 0) - (ja :group! snow-eggtop-idle-ja :num! min) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> block param 0) + (('pickup) + (if (type-type? (-> proc type) fuel-cell) (save-reminder (get-task-control (-> self entity extra perm task)) 1 4))))))) + :trans + (behavior () + (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) (go snow-eggtop-activate)) + (spawn (-> self part) (-> self root trans)) + (update! (-> self sound))) + :code + (behavior () + (ja-channel-push! 1 0) + (ja :group! snow-eggtop-idle-ja :num! min) + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-eggtop-activate (snow-eggtop) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) snowcam) - (cond - ((= (-> block param 0) 'die) - (if *target* - (+! (-> *target* control trans y) 1024.0) - ) - (go snow-eggtop-idle-down) - ) - ((= (-> block param 0) 'cut) - (stop! (-> self sound)) - (set! (-> self play-sound?) #f) - #f - ) - ) - ) - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (set! (-> self play-sound?) #t) - ) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (when (= (-> proc type) snowcam) + (cond + ((= (-> block param 0) 'die) (if *target* (+! (-> *target* control trans y) 1024.0)) (go snow-eggtop-idle-down)) + ((= (-> block param 0) 'cut) (stop! (-> self sound)) (set! (-> self play-sound?) #f) #f)))))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (set! (-> self play-sound?) #t)) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 511) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (let ((v1-7 - (process-spawn - snowcam - :init pov-camera-init-by-other - (-> self spawn-trans) - *snowcam-sg* - "gearstart" - 0 - self - '((0 ambient camera "gamcam38") (10 alive "ecovent-278")) - :to self - ) - ) - ) - (set! (-> (the-as snowcam (-> v1-7 0)) seq) (the-as uint 2)) - ) - (change-sound! (-> self sound) (static-sound-name "snw-eggtop-seq")) - (save-reminder (get-task-control (-> self entity extra perm task)) 2 4) - (ja-no-eval :group! snow-eggtop-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - (ja :num! (seek!)) - ) - (level-hint-spawn - (text-id snow-eggtop-resolution) - "sksp0360" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.1)) - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - ) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((a0-18 (-> self entity))) - (if (and a0-18 (= self (-> a0-18 extra process))) - (entity-task-complete-on a0-18) - ) - ) - (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) - (loop - (if (-> self play-sound?) - (update! (-> self sound)) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 511) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (let ((v1-7 (process-spawn snowcam + :init + pov-camera-init-by-other + (-> self spawn-trans) + *snowcam-sg* + "gearstart" + 0 + self + '((0 ambient camera "gamcam38") (10 alive "ecovent-278")) + :to + self))) + (set! (-> (the-as snowcam (-> v1-7 0)) seq) (the-as uint 2))) + (change-sound! (-> self sound) (static-sound-name "snw-eggtop-seq")) + (save-reminder (get-task-control (-> self entity extra perm task)) 2 4) + (ja-no-eval :group! snow-eggtop-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (-> self play-sound?) (update! (-> self sound))) + (suspend) + (ja :num! (seek!))) + (level-hint-spawn (text-id snow-eggtop-resolution) "sksp0360" (the-as entity #f) *entity-pool* (game-task none)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.1)) + (if (-> self play-sound?) (update! (-> self sound))) + (suspend)) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-18 (-> self entity))) (if (and a0-18 (= self (-> a0-18 extra process))) (entity-task-complete-on a0-18))) + (send-event (ppointer->process (-> *hud-parts* fuel-cell)) 'show) + (loop (if (-> self play-sound?) (update! (-> self sound))) + (suspend))) + :post rider-post) (defstate snow-eggtop-idle-down (snow-eggtop) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (let ((a0-1 (-> self entity))) - (if (and a0-1 (= self (-> a0-1 extra process))) - (entity-task-complete-on a0-1) - ) - ) - (ja-channel-push! 1 0) - (ja :group! snow-eggtop-idle-ja :num! max) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (let ((a0-1 (-> self entity))) (if (and a0-1 (= self (-> a0-1 extra process))) (entity-task-complete-on a0-1))) + (ja-channel-push! 1 0) + (ja :group! snow-eggtop-idle-ja :num! max) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this snow-eggtop) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -438,132 +336,94 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 18022.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-eggtop-sg* '()) + (initialize-skeleton this *snow-eggtop-sg* ()) (logior! (-> this skel status) (janim-status inited)) (set! (-> this spawn-trans quad) (-> this root trans quad)) (+! (-> this root trans y) -2662.4) (update-transforms! (-> this root)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 510) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "electric-loop" :fo-max 40) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "electric-loop" :fo-max 40) (-> this root trans))) (cond - ((task-complete? *game-info* (-> this entity extra perm task)) - (go snow-eggtop-idle-down) - ) + ((task-complete? *game-info* (-> this entity extra perm task)) (go snow-eggtop-idle-down)) (else - (let ((a0-17 (new 'stack-no-clear 'vector))) - (set! (-> a0-17 quad) (-> this root trans quad)) - (+! (-> a0-17 y) 3072.0) - (birth-pickup-at-point - a0-17 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - (go snow-eggtop-idle-up) - ) - ) - (none) - ) + (let ((a0-17 (new 'stack-no-clear 'vector))) + (set! (-> a0-17 quad) (-> this root trans quad)) + (+! (-> a0-17 y) 3072.0) + (birth-pickup-at-point a0-17 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))) + (go snow-eggtop-idle-up))) + (none)) (deftype snowpusher (process-drawable) - ((root collide-shape-moving :override) - (max-frame float) - (open-sound sound-name) - (close-sound sound-name) - (sync sync-info-paused :inline) - ) + ((root collide-shape-moving :override) + (max-frame float) + (open-sound sound-name) + (close-sound sound-name) + (sync sync-info-paused :inline)) (:states - snowpusher-idle - ) - ) + snowpusher-idle)) - -(defskelgroup *snowpusher-sg* snowpusher snowpusher-lod0-jg snowpusher-idle-ja - ((snowpusher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *snowpusher-sg* + snowpusher + snowpusher-lod0-jg + snowpusher-idle-ja + ((snowpusher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate snowpusher-idle (snowpusher) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((f0-0 (get-current-phase-with-mirror (-> self sync)))) - (ja :num-func num-func-identity :frame-num (* f0-0 (-> self max-frame))) - (cond - ((or (= f0-0 0.0) (= f0-0 1.0)) - (set! gp-0 #f) - ) - (else - (when (not gp-0) - (set! gp-0 #t) - (if (>= f0-0 0.5) - (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) - ) - ) - ) - ) - ) - (suspend) - ) - ) - ) - :post pusher-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :code + (behavior () + (let ((gp-0 #f)) + (loop (let ((f0-0 (get-current-phase-with-mirror (-> self sync)))) + (ja :num-func num-func-identity :frame-num (* f0-0 (-> self max-frame))) + (cond + ((or (= f0-0 0.0) (= f0-0 1.0)) (set! gp-0 #f)) + (else + (when (not gp-0) + (set! gp-0 #t) + (if (>= f0-0 0.5) + (sound-play-by-name (-> self close-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t) + (sound-play-by-name (-> self open-sound) (new-sound-id) 1024 0 0 (sound-group sfx) #t)))))) + (suspend)))) + :post pusher-post) (defmethod init-from-entity! ((this snowpusher) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (logior! (-> this mask) (process-mask enemy platform)) (let ((s3-0 0) - (s4-0 0) - ) + (s4-0 0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-3 (res-lump-data (-> this entity) 'mode (pointer int32) :tag-ptr (& sv-16)))) (when v1-3 (set! s3-0 (-> v1-3 0)) - (set! s4-0 (-> v1-3 1)) - ) - ) + (set! s4-0 (-> v1-3 1)))) (cond ((zero? s3-0) (set! (-> this open-sound) (static-sound-name "snow-piston-opn")) - (set! (-> this close-sound) (static-sound-name "snow-piston-cls")) - ) + (set! (-> this close-sound) (static-sound-name "snow-piston-cls"))) ((= s3-0 1) (set! (-> this open-sound) (static-sound-name "snow-pist-opn3")) - (set! (-> this close-sound) (static-sound-name "snow-pist-cls3")) - ) + (set! (-> this close-sound) (static-sound-name "snow-pist-cls3"))) ((= s3-0 2) (set! (-> this open-sound) (static-sound-name "snow-pist-opn2")) - (set! (-> this close-sound) (static-sound-name "snow-pist-cls2")) - ) - ) + (set! (-> this close-sound) (static-sound-name "snow-pist-cls2")))) (let ((s3-1 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s3-1 dynam) (copy *standard-dynamics* 'process)) (set! (-> s3-1 reaction) default-collision-reaction) - (set! (-> s3-1 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s3-1 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-1 (new 'process 'collide-shape-prim-mesh s3-1 (the-as uint s4-0) (the-as uint 0)))) (set! (-> s4-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s4-1 collide-with) (collide-kind target)) @@ -571,102 +431,68 @@ (set! (-> s4-1 prim-core offense) (collide-offense indestructible)) (set! (-> s4-1 transform-index) 3) (set-vector! (-> s4-1 local-sphere) 0.0 20480.0 -12288.0 25600.0) - (set-root-prim! s3-1 s4-1) - ) + (set-root-prim! s3-1 s4-1)) (set! (-> s3-1 nav-radius) (* 0.75 (-> s3-1 root-prim local-sphere w))) (backup-collide-with-as s3-1) - (set! (-> this root) s3-1) - ) - ) + (set! (-> this root) s3-1))) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snowpusher-sg* '()) + (initialize-skeleton this *snowpusher-sg* ()) (let ((s4-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-2 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-2 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-2 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-2 frame-num) 0.0)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this max-frame) (* (the float (ja-num-frames 0)) (res-lump-float arg0 'max-frame :default 1.0))) (logclear! (-> this mask) (process-mask actor-pause)) (go snowpusher-idle) - (none) - ) + (none)) (deftype snow-spatula (baseplat) - ((sync sync-info :inline) - (startmat matrix :inline) - ) + ((sync sync-info :inline) + (startmat matrix :inline)) (:states - snow-spatula-idle - ) - ) + snow-spatula-idle)) - -(defskelgroup *snow-spatula-sg* snow-spatula snow-spatula-lod0-jg snow-spatula-idle-ja - ((snow-spatula-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 10) - :longest-edge (meters 9.4) - ) +(defskelgroup *snow-spatula-sg* + snow-spatula + snow-spatula-lod0-jg + snow-spatula-idle-ja + ((snow-spatula-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 10) + :longest-edge (meters 9.4)) (defstate snow-spatula-idle (snow-spatula) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - (sound-play "snow-spat-short" :vol 75 :pitch 0.75) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self) (sound-play "snow-spat-short" :vol 75 :pitch 0.75)))) :trans plat-trans - :code (behavior () - (let ((f28-0 0.0) - (gp-0 1) - ) - (loop - (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) - (when (!= f30-0 f28-0) - (let ((v1-3 1)) - (if (< f30-0 f28-0) - (set! v1-3 -1) - ) - (when (!= v1-3 gp-0) - (set! gp-0 v1-3) - (cond - ((> v1-3 0) - (sound-play "snow-spat-long" :pitch (rand-vu-float-range -0.2 0.2)) - ) - (1 - (sound-play "snow-spat-short" :pitch (rand-vu-float-range -0.2 0.2)) - ) - ) - ) - ) - (set! f28-0 f30-0) - ) - (let ((s5-2 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! s5-2 (* 16384.0 f30-0)) - (matrix*! s5-2 s5-2 (-> self startmat)) - (matrix->quaternion (-> self root quat) s5-2) - ) - ) - (suspend) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (let ((f28-0 0.0) + (gp-0 1)) + (loop (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) + (when (!= f30-0 f28-0) + (let ((v1-3 1)) + (if (< f30-0 f28-0) (set! v1-3 -1)) + (when (!= v1-3 gp-0) + (set! gp-0 v1-3) + (cond + ((> v1-3 0) (sound-play "snow-spat-long" :pitch (rand-vu-float-range -0.2 0.2))) + (1 (sound-play "snow-spat-short" :pitch (rand-vu-float-range -0.2 0.2)))))) + (set! f28-0 f30-0)) + (let ((s5-2 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! s5-2 (* 16384.0 f30-0)) + (matrix*! s5-2 s5-2 (-> self startmat)) + (matrix->quaternion (-> self root quat) s5-2))) + (suspend)))) + :post plat-post) (defmethod init-from-entity! ((this snow-spatula) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -675,321 +501,274 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 49152.0 -16384.0 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-spatula-sg* '()) + (initialize-skeleton this *snow-spatula-sg* ()) (logior! (-> this skel status) (janim-status inited)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (quaternion->matrix (-> this startmat) (-> this root quat)) (baseplat-method-21 this) (go snow-spatula-idle) - (none) - ) + (none)) (deftype snow-fort-gate (process-drawable) - ((root collide-shape :override) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (open-trans vector :inline) - (closed-trans vector :inline) - ) + ((root collide-shape :override) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (open-trans vector :inline) + (closed-trans vector :inline)) (:states - snow-fort-gate-activate - snow-fort-gate-idle-closed - snow-fort-gate-idle-open - ) - ) + snow-fort-gate-activate + snow-fort-gate-idle-closed + snow-fort-gate-idle-open)) - -(defskelgroup *snow-fort-gate-sg* snow-fort-gate snow-fort-gate-lod0-jg -1 - ((snow-fort-gate-lod0-mg (meters 999999))) - :bounds (static-spherem 0 15 0 24) - :longest-edge (meters 12.8) - ) +(defskelgroup *snow-fort-gate-sg* + snow-fort-gate + snow-fort-gate-lod0-jg + -1 + ((snow-fort-gate-lod0-mg (meters 999999))) + :bounds (static-spherem 0 15 0 24) + :longest-edge (meters 12.8)) (defpartgroup group-snow-fort-gate-coming-down :id 512 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1896)) - ) + :parts ((sp-item 1896))) (defpart 1896 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 10.5) (meters 8.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 96.0 16.0) - (:a 0.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-z (meters -0.053333335) (meters 0.053333335)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a 0.42666668) - (:accel-y (meters -0.00066666666)) - (:friction 0.98) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 1897) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 10.5) (meters 8.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 96.0 16.0) + (:a 0.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-z (meters -0.053333335) (meters 0.053333335)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a 0.42666668) + (:accel-y (meters -0.00066666666)) + (:friction 0.98) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 1897) + (:rotate-y (degrees 0)))) (defpart 1897 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-snow-fort-gate-hits-bottom :id 513 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1898)) - ) + :parts ((sp-item 1898))) (defpart 1898 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 64.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5) (meters 1)) - (:z (meters -3)) - (:scale-x (meters 4) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0 16.0) - (:a 0.0) - (:vel-x (meters -0.013333334) (meters 0.026666667)) - (:vel-z (meters -0.053333335) (meters 0.046666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a 0.42666668) - (:accel-y (meters -0.00016666666)) - (:friction 0.98) - (:timer (seconds 2.5)) - (:flags (bit2)) - (:next-time (seconds 0.25) (seconds 0.247)) - (:next-launcher 1899) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 64.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5) (meters 1)) + (:z (meters -3)) + (:scale-x (meters 4) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0 16.0) + (:a 0.0) + (:vel-x (meters -0.013333334) (meters 0.026666667)) + (:vel-z (meters -0.053333335) (meters 0.046666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a 0.42666668) + (:accel-y (meters -0.00016666666)) + (:friction 0.98) + (:timer (seconds 2.5)) + (:flags (bit2)) + (:next-time (seconds 0.25) (seconds 0.247)) + (:next-launcher 1899) + (:rotate-y (degrees 0)))) (defpart 1899 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-snow-fort-gate-snowdrops :id 514 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.5)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.335)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.2)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.1)) - (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.035)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.667)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.5)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.335)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.167)) - (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.067)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.57)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.385)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.235)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.117)) - (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.5)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.335)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.2)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.1)) + (sp-item 2271 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 4) :length (seconds 0.035)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.667)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.5)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.335)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.167)) + (sp-item 2272 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.067)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.57)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.385)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.235)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.117)) + (sp-item 2273 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 4) :length (seconds 0.035)))) (defpart 2271 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.25) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 0.25)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 128.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.00066666666) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 2274) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.25) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 0.25)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 128.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.00066666666) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 2274))) (defpart 2274 - :init-specs ((:fade-a -0.42666668)) - ) + :init-specs ((:fade-a -0.42666668))) (defpart 2272 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.25) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 96.0 32.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 2274) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.25) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 96.0 32.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 2274))) (defpart 2273 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.25) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.25)) - (:scale-y (meters 2.5) (meters 1)) - (:r 150.0) - (:g 150.0) - (:b 150.0 55.0) - (:a 32.0 96.0) - (:vel-y (meters -0.006666667)) - (:fade-a -0.14222223) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.25) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.25)) + (:scale-y (meters 2.5) (meters 1)) + (:r 150.0) + (:g 150.0) + (:b 150.0 55.0) + (:a 32.0 96.0) + (:vel-y (meters -0.006666667)) + (:fade-a -0.14222223) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)))) (defstate snow-fort-gate-idle-closed (snow-fort-gate) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notice) - (go snow-fort-gate-activate) - ) - ) - ) - :trans (behavior () - (when (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn (text-id snow-fort-hint) "sksp0345" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (game-task snow-fort) (task-status need-hint)) - ) - ) - :code (behavior () - (ja :group! snow-fort-gate-idle-ja :num! min) - (set! (-> self root trans quad) (-> self closed-trans quad)) - (transform-post) - (suspend) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notice) (go snow-fort-gate-activate)))) + :trans + (behavior () + (when (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id snow-fort-hint) "sksp0345" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (game-task snow-fort) (task-status need-hint)))) + :code + (behavior () + (ja :group! snow-fort-gate-idle-ja :num! min) + (set! (-> self root trans quad) (-> self closed-trans quad)) + (transform-post) (suspend) - ) - ) - ) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-fort-gate-activate (snow-fort-gate) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (stop! (-> self sound)) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self closed-trans quad)) - (+! (-> a1-0 y) -12288.0) - (+! (-> a1-0 z) -12288.0) - (spawn (-> self part) a1-0) - ) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((f30-0 (vector-vector-distance-squared s5-0 (-> self open-trans)))) - (when (and (not gp-0) (>= 1048576.0 f30-0)) - (set! gp-0 #t) - (let ((a1-2 (new 'stack-no-clear 'vector))) - (set! (-> a1-2 quad) (-> self open-trans quad)) - (+! (-> a1-2 y) -26624.0) - (+! (-> a1-2 z) -3072.0) - (spawn (-> self part2) a1-2) - ) - ) - (when (>= 1677.7216 f30-0) - (sound-play "lodge-close") - (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) - (go snow-fort-gate-idle-open) - ) - ) - (vector-seek-3d-smooth! s5-0 (-> self open-trans) (* 16384.0 (seconds-per-frame)) 0.9) - (move-to-point! (-> self root) s5-0) - ) - (let ((a1-7 (new 'stack-no-clear 'vector))) - (set! (-> a1-7 quad) (-> self root trans quad)) - (+! (-> a1-7 x) 20480.0) - (+! (-> a1-7 y) 106496.0) - (+! (-> a1-7 z) -32768.0) - (spawn (-> self part3) a1-7) - ) - (update! (-> self sound)) - (suspend) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (let ((gp-0 #f)) + (loop (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self closed-trans quad)) + (+! (-> a1-0 y) -12288.0) + (+! (-> a1-0 z) -12288.0) + (spawn (-> self part) a1-0)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((f30-0 (vector-vector-distance-squared s5-0 (-> self open-trans)))) + (when (and (not gp-0) (>= 1048576.0 f30-0)) + (set! gp-0 #t) + (let ((a1-2 (new 'stack-no-clear 'vector))) + (set! (-> a1-2 quad) (-> self open-trans quad)) + (+! (-> a1-2 y) -26624.0) + (+! (-> a1-2 z) -3072.0) + (spawn (-> self part2) a1-2))) + (when (>= 1677.7216 f30-0) + (sound-play "lodge-close") + (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) + (go snow-fort-gate-idle-open))) + (vector-seek-3d-smooth! s5-0 (-> self open-trans) (* 16384.0 (seconds-per-frame)) 0.9) + (move-to-point! (-> self root) s5-0)) + (let ((a1-7 (new 'stack-no-clear 'vector))) + (set! (-> a1-7 quad) (-> self root trans quad)) + (+! (-> a1-7 x) 20480.0) + (+! (-> a1-7 y) 106496.0) + (+! (-> a1-7 z) -32768.0) + (spawn (-> self part3) a1-7)) + (update! (-> self sound)) + (suspend)))) + :post transform-post) (defstate snow-fort-gate-idle-open (snow-fort-gate) - :code (behavior () - (ja :group! snow-fort-gate-idle-ja :num! min) - (set! (-> self root trans quad) (-> self open-trans quad)) - (transform-post) - (suspend) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :code + (behavior () + (ja :group! snow-fort-gate-idle-ja :num! min) + (set! (-> self root trans quad) (-> self open-trans quad)) + (transform-post) (suspend) - ) - ) - ) + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod deactivate ((this snow-fort-gate)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this snow-fort-gate) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this snow-fort-gate) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1000,14 +779,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 99123.2) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-fort-gate-sg* '()) + (initialize-skeleton this *snow-fort-gate-sg* ()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 512) this)) (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 513) this)) (set! (-> this part3) (create-launch-control (-> *part-group-id-table* 514) this)) @@ -1015,240 +792,196 @@ (set! (-> this closed-trans quad) (-> this open-trans quad)) (+! (-> this open-trans y) -141312.0) (+! (-> this open-trans z) 32768.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lodge-door-mov" :fo-max 80) (-> this open-trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lodge-door-mov" :fo-max 80) (-> this open-trans))) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (cond ((task-complete? *game-info* (game-task snow-ball)) (set! (-> this root trans quad) (-> this open-trans quad)) (transform-post) - (go snow-fort-gate-idle-open) - ) - (else - (set! (-> this root trans quad) (-> this closed-trans quad)) - (transform-post) - (go snow-fort-gate-idle-closed) - ) - ) - (none) - ) + (go snow-fort-gate-idle-open)) + (else (set! (-> this root trans quad) (-> this closed-trans quad)) (transform-post) (go snow-fort-gate-idle-closed))) + (none)) -(deftype snow-gears (process-drawable) - () +(deftype snow-gears (process-drawable) () (:methods - (snow-gears-method-20 (_type_) none) - ) + (snow-gears-method-20 (_type_) none)) (:states - snow-gears-activate - snow-gears-halt - snow-gears-idle - snow-gears-stopped - ) - ) + snow-gears-activate + snow-gears-halt + snow-gears-idle + snow-gears-stopped)) - -(defskelgroup *snow-gears-sg* snow-gears snow-gears-lod0-jg snow-gears-idle-ja - ((snow-gears-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 60) - :longest-edge (meters 12.1) - ) +(defskelgroup *snow-gears-sg* + snow-gears + snow-gears-lod0-jg + snow-gears-idle-ja + ((snow-gears-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 60) + :longest-edge (meters 12.1)) (defpartgroup group-snow-gears-dripping :id 515 :flags (use-local-clock) :bounds (static-bspherem 0 -4 0 16) - :parts ((sp-item 1900) (sp-item 1901)) - ) + :parts ((sp-item 1900) (sp-item 1901))) (defpart 1900 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 0.5) - (:x (meters -9) (meters 18)) - (:y (meters -6)) - (:z (meters -9) (meters 18)) - (:scale-x (meters 0.1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0 40.0) - (:g 32.0 40.0) - (:b 32.0 40.0) - (:a 128.0) - (:vel-y (meters 0) (meters -0.04)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 1.3)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 0.5) + (:x (meters -9) (meters 18)) + (:y (meters -6)) + (:z (meters -9) (meters 18)) + (:scale-x (meters 0.1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0 40.0) + (:g 32.0 40.0) + (:b 32.0 40.0) + (:a 128.0) + (:vel-y (meters 0) (meters -0.04)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 1.3)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop))) (defpart 1901 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -7)) - (:scale-x (meters 3) (meters 4.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:fade-a 1.0666667) - (:accel-y (meters 0.000016666667)) - (:timer (seconds 4)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.2)) - (:next-launcher 1902) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3.5) (meters 6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -7)) + (:scale-x (meters 3) (meters 4.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:fade-a 1.0666667) + (:accel-y (meters 0.000016666667)) + (:timer (seconds 4)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.2)) + (:next-launcher 1902) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3.5) (meters 6)))) (defpart 1902 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 1903)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.797)) (:next-launcher 1903))) (defpart 1903 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defmethod snow-gears-method-20 ((this snow-gears)) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> this root trans quad)) (+! (-> a1-0 y) 61440.0) - (spawn (-> this part) a1-0) - ) - (none) - ) + (spawn (-> this part) a1-0)) + (none)) (defstate snow-gears-idle (snow-gears) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notice) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-gears-activate) - ) - ) - ) - :code (behavior () - (ja :group! snow-gears-idle-ja :num! min) - (ja-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notice) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-gears-activate)))) + :code + (behavior () + (ja :group! snow-gears-idle-ja :num! min) + (ja-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-gears-activate (snow-gears) - :trans (behavior () - (snow-gears-method-20 self) - ) - :code (behavior () - (sound-play "eng-start-up") - (ja-no-eval :group! snow-gears-start-ja :num! (seek! max 0.85) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.85)) - ) - (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.35)) - ) - (set-time! (-> self state-time)) - (ja :group! snow-gears-idle-ja :num! min) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (update! (-> self sound)) - (suspend) - ) - (go snow-gears-halt) - ) - :post ja-post - ) + :trans + (behavior () + (snow-gears-method-20 self)) + :code + (behavior () + (sound-play "eng-start-up") + (ja-no-eval :group! snow-gears-start-ja :num! (seek! max 0.85) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.85))) + (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.35))) + (set-time! (-> self state-time)) + (ja :group! snow-gears-idle-ja :num! min) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (update! (-> self sound)) + (suspend)) + (go snow-gears-halt)) + :post ja-post) (defstate snow-gears-halt (snow-gears) - :exit (behavior () - (stop! (-> self sound)) - ) - :trans (behavior () - (snow-gears-method-20 self) - ) - :code (behavior () - (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) - (until (ja-done? 0) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! max 0.35)) - ) - (stop! (-> self sound)) - (sound-play "eng-shut-down") - (ja-no-eval :group! snow-gears-stop-ja :num! (seek! max 0.85) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.85)) - ) - (go snow-gears-stopped) - ) - :post ja-post - ) + :exit + (behavior () + (stop! (-> self sound))) + :trans + (behavior () + (snow-gears-method-20 self)) + :code + (behavior () + (ja-no-eval :group! snow-gears-loop-ja :num! (seek! max 0.35) :frame-num 0.0) + (until (ja-done? 0) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! max 0.35))) + (stop! (-> self sound)) + (sound-play "eng-shut-down") + (ja-no-eval :group! snow-gears-stop-ja :num! (seek! max 0.85) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.85))) + (go snow-gears-stopped)) + :post ja-post) (defstate snow-gears-stopped (snow-gears) - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-gears) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-gears-sg* '()) + (initialize-skeleton this *snow-gears-sg* ()) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 515) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "snow-engine" :fo-max 300) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "snow-engine" :fo-max 300) (-> this root trans))) (go snow-gears-idle) - (none) - ) + (none)) (deftype snow-switch (process-drawable) - ((root collide-shape-moving :override) - (pressed? symbol) - (fcell-handle handle) - (orig-trans vector :inline) - ) + ((root collide-shape-moving :override) + (pressed? symbol) + (fcell-handle handle) + (orig-trans vector :inline)) (:states - snow-switch-activate - snow-switch-idle-down - snow-switch-idle-up - ) - ) + snow-switch-activate + snow-switch-idle-down + snow-switch-idle-up)) - -(defskelgroup *snow-switch-sg* snow-switch snow-switch-lod0-jg snow-switch-idle-ja - ((snow-switch-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *snow-switch-sg* + snow-switch + snow-switch-lod0-jg + snow-switch-idle-ja + ((snow-switch-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defbehavior snow-switch-event-handler snow-switch ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) @@ -1260,112 +993,70 @@ (set! (-> self pressed?) #t) (process-entity-status! self (entity-perm-status bit-3) #t) (logclear! (-> self mask) (process-mask actor-pause)) - (go snow-switch-activate) - ) - ) - ((= (-> arg0 type) snowcam) - (if (= (-> arg3 param 0) 'die) - (go snow-switch-idle-down) - ) - ) - ) - ) - (('query) - (return (-> self pressed?)) - v0-0 - ) - ) - ) + (go snow-switch-activate))) + ((= (-> arg0 type) snowcam) (if (= (-> arg3 param 0) 'die) (go snow-switch-idle-down))))) + (('query) (return (-> self pressed?)) v0-0))) (defstate snow-switch-idle-up (snow-switch) :event snow-switch-event-handler - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-switch-activate (snow-switch) :event snow-switch-event-handler - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (local-vars (v1-1 symbol)) - (until v1-1 - (suspend) - (set! v1-1 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (sound-play "prec-button1" :pitch -1) - (let ((gp-1 (get-process *default-dead-pool* snowcam #x4000))) - (set! (-> (the-as snowcam (-> (when gp-1 - (let ((t9-3 (method-of-type snowcam activate))) - (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - pov-camera-init-by-other - (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) - *snowcam-sg* - "gearstart" - 0 - self - '() - ) - (-> gp-1 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - (let ((gp-2 #f)) - (loop - (let ((s5-1 (new 'stack-no-clear 'vector)) - (f0-1 (+ -1433.6 (-> self orig-trans y))) - ) - (set! (-> s5-1 quad) (-> self root trans quad)) - (cond - ((= (-> s5-1 y) f0-1) - (when (not gp-2) - (set! gp-2 #t) - (send-to-all (-> self link) 'notice) - ) - ) - (else - (set! (-> s5-1 y) (seek-with-smooth (-> self root trans y) f0-1 (* 6144.0 (seconds-per-frame)) 0.2 204.8)) - (move-to-point! (-> self root) s5-1) - ) - ) - ) + :code + (behavior () + (local-vars (v1-1 symbol)) + (until v1-1 (suspend) - ) - ) - ) - :post rider-post - ) + (set! v1-1 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) + (sound-play "prec-button1" :pitch -1) + (let ((gp-1 (get-process *default-dead-pool* snowcam #x4000))) + (set! (-> (the-as snowcam + (-> (when gp-1 + (let ((t9-3 (method-of-type snowcam activate))) (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000))) + (run-now-in-process gp-1 + pov-camera-init-by-other + (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) + *snowcam-sg* + "gearstart" + 0 + self + ()) + (-> gp-1 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0 + (let ((gp-2 #f)) + (loop (let ((s5-1 (new 'stack-no-clear 'vector)) + (f0-1 (+ -1433.6 (-> self orig-trans y)))) + (set! (-> s5-1 quad) (-> self root trans quad)) + (cond + ((= (-> s5-1 y) f0-1) (when (not gp-2) (set! gp-2 #t) (send-to-all (-> self link) 'notice))) + (else + (set! (-> s5-1 y) (seek-with-smooth (-> self root trans y) f0-1 (* 6144.0 (seconds-per-frame)) 0.2 204.8)) + (move-to-point! (-> self root) s5-1)))) + (suspend)))) + :post rider-post) (defstate snow-switch-idle-down (snow-switch) :event snow-switch-event-handler - :code (behavior () - (set! (-> self pressed?) #t) - (set! (-> self root trans quad) (-> self orig-trans quad)) - (+! (-> self root trans y) -1433.6) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (set! (-> self pressed?) #t) + (set! (-> self root trans quad) (-> self orig-trans quad)) + (+! (-> self root trans y) -1433.6) + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-switch) (arg0 entity-actor)) (set! (-> this pressed?) #f) @@ -1374,9 +1065,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1385,24 +1074,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-switch-sg* '()) + (initialize-skeleton this *snow-switch-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (transform-post) (set! (-> this orig-trans quad) (-> this root trans quad)) (let ((s5-2 (task-complete? *game-info* (game-task snow-ball)))) @@ -1411,180 +1093,127 @@ (let ((a0-17 (new 'stack-no-clear 'vector))) (set! (-> a0-17 quad) (-> this orig-trans quad)) (+! (-> a0-17 y) 12288.0) - (set! (-> this fcell-handle) (ppointer->handle (birth-pickup-at-point - a0-17 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ) - ) - (if s5-2 - (go snow-switch-idle-down) - (go snow-switch-idle-up) - ) - ) - (none) - ) + (set! (-> this fcell-handle) + (ppointer->handle (birth-pickup-at-point a0-17 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)))))) + (if s5-2 (go snow-switch-idle-down) (go snow-switch-idle-up))) + (none)) (deftype snow-log (process-drawable) - ((root collide-shape-moving :override) - (master entity-actor) - ) + ((root collide-shape-moving :override) + (master entity-actor)) (:states - snow-log-activate - snow-log-active - snow-log-hidden - snow-log-wait-for-master - ) - ) + snow-log-activate + snow-log-active + snow-log-hidden + snow-log-wait-for-master)) - -(defskelgroup *snow-log-sg* snow-log snow-log-lod0-jg -1 - ((snow-log-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5 0 9) - ) +(defskelgroup *snow-log-sg* + snow-log + snow-log-lod0-jg + -1 + ((snow-log-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5 0 9)) (defstate snow-log-wait-for-master (snow-log) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go snow-log-activate) - ) - ) - ) - :code (behavior () - (loop - (while (let ((v1-0 (-> self master))) - (not (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go snow-log-activate)))) + :code + (behavior () + (loop (while (let ((v1-0 (-> self master))) (not (if v1-0 (-> v1-0 extra process)))) + (suspend)) (suspend) - ) - (suspend) - (let* ((v1-3 (-> self master)) - (a0-1 (if v1-3 - (-> v1-3 extra process) - ) - ) - ) - (when a0-1 - (cond - ((send-event a0-1 'query) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-log-active) - ) - (else - (go snow-log-hidden) - ) - ) - ) - ) - ) - ) - ) + (let* ((v1-3 (-> self master)) + (a0-1 (if v1-3 (-> v1-3 extra process)))) + (when a0-1 + (cond + ((send-event a0-1 'query) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-log-active)) + (else (go snow-log-hidden)))))))) (defstate snow-log-hidden (snow-log) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go snow-log-activate) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 0) - (ja :group! snow-log-activate-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go snow-log-activate)))) + :code + (behavior () + (ja-channel-push! 1 0) + (ja :group! snow-log-activate-ja :num! min) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate snow-log-activate (snow-log) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (logclear! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) - (ja-channel-push! 1 0) - (let ((gp-0 #f)) - (ja-no-eval :group! snow-log-activate-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (when (and (not gp-0) (>= (ja-frame-num 0) 5.0)) - (set! gp-0 #t) - (sound-play "explosion" :vol 40 :pitch 0.9) - (sound-play "snow-spat-short" :pitch 0.25) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (go snow-log-active) - ) - :post rider-post - ) + :code + (behavior () + (activate! *camera-smush-control* 819.2 37 150 1.0 0.99) + (ja-channel-push! 1 0) + (let ((gp-0 #f)) + (ja-no-eval :group! snow-log-activate-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-0) (>= (ja-frame-num 0) 5.0)) + (set! gp-0 #t) + (sound-play "explosion" :vol 40 :pitch 0.9) + (sound-play "snow-spat-short" :pitch 0.25)) + (suspend) + (ja :num! (seek!)))) + (go snow-log-active)) + :post rider-post) (defstate snow-log-active (snow-log) :trans rider-trans - :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - (logclear! (-> self draw status) (draw-status hidden)) - (ja-channel-push! 1 (seconds 0.075)) - (let ((gp-0 #t) - (s5-0 #t) - ) - (loop - (ja-no-eval :group! snow-log-active-loop-ja :num! (seek! max 0.25) :frame-num 0.0) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (cond - ((and gp-0 (< f0-4 1.0)) - (set! gp-0 #f) - (set! s5-0 #t) - (sound-play "snow-spat-long" :vol 85 :pitch (rand-vu-float-range -0.2 0.2)) - ) - ((and s5-0 (>= f0-4 11.0)) - (set! s5-0 #f) - (set! gp-0 #t) - (sound-play "snow-spat-short" :vol 85 :pitch (rand-vu-float-range -0.2 0.2)) - ) - ) - ) - (suspend) - (ja :num! (seek! max 0.25)) - ) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logclear! (-> self draw status) (draw-status hidden)) + (ja-channel-push! 1 (seconds 0.075)) + (let ((gp-0 #t) + (s5-0 #t)) + (loop (ja-no-eval :group! snow-log-active-loop-ja :num! (seek! max 0.25) :frame-num 0.0) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (cond + ((and gp-0 (< f0-4 1.0)) + (set! gp-0 #f) + (set! s5-0 #t) + (sound-play "snow-spat-long" :vol 85 :pitch (rand-vu-float-range -0.2 0.2))) + ((and s5-0 (>= f0-4 11.0)) + (set! s5-0 #f) + (set! gp-0 #t) + (sound-play "snow-spat-short" :vol 85 :pitch (rand-vu-float-range -0.2 0.2))))) + (suspend) + (ja :num! (seek! max 0.25)))))) + :post rider-post) (defmethod init-from-entity! ((this snow-log) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1593,14 +1222,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 36864.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 11264.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-log-sg* '()) + (initialize-skeleton this *snow-log-sg* ()) (logior! (-> this skel status) (janim-status inited)) (logior! (-> this draw status) (draw-status hidden)) (+! (-> this root trans x) -1024.0) @@ -1610,21 +1237,16 @@ (set! (-> this master) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this draw origin-joint-index) (the-as uint 3)) (go snow-log-wait-for-master) - (none) - ) + (none)) (deftype snow-log-button (process-drawable) - ((root collide-shape-moving :override) - (log entity-actor) - (orig-trans vector :inline) - ) + ((root collide-shape-moving :override) + (log entity-actor) + (orig-trans vector :inline)) (:states - snow-log-button-activate - snow-log-button-idle-down - snow-log-button-idle-up - ) - ) - + snow-log-button-activate + snow-log-button-idle-down + snow-log-button-idle-up)) (defbehavior snow-log-button-event-handler snow-log-button ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-2 basic)) @@ -1632,98 +1254,64 @@ (('touch 'bonk 'attack) (when (and (= (-> arg0 type) target) (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root trans))) - ) + (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root trans)))) (process-entity-status! self (entity-perm-status complete) #t) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) (go snow-log-button-activate) (return (the-as object #f)) - v0-2 - ) - ) + v0-2)) (('query) (when (= (-> arg0 type) snow-log) - (return (the-as - object - (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - ) - ) - v0-2 - ) - ) - ) - ) + (return (the-as object (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) + v0-2)))) (defstate snow-log-button-idle-up (snow-log-button) :event snow-log-button-event-handler - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate snow-log-button-activate (snow-log-button) :event snow-log-button-event-handler - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) :trans rider-trans - :code (behavior () - (sound-play "prec-button1") - (loop - (let ((f30-0 (+ -1433.6 (-> self orig-trans y)))) - (when (= (-> self root trans y) f30-0) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'trigger) - (let ((t9-2 send-event-function) - (v1-4 (-> self log)) - ) - (t9-2 - (if v1-4 - (-> v1-4 extra process) - ) - a1-1 - ) - ) - ) - (go snow-log-button-idle-down) - ) - (set! (-> self root trans y) - (seek-with-smooth (-> self root trans y) f30-0 (* 12288.0 (seconds-per-frame)) 0.2 204.8) - ) - ) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (sound-play "prec-button1") + (loop (let ((f30-0 (+ -1433.6 (-> self orig-trans y)))) + (when (= (-> self root trans y) f30-0) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-4 (-> self log))) + (t9-2 (if v1-4 (-> v1-4 extra process)) a1-1))) + (go snow-log-button-idle-down)) + (set! (-> self root trans y) (seek-with-smooth (-> self root trans y) f30-0 (* 12288.0 (seconds-per-frame)) 0.2 204.8))) + (suspend))) + :post rider-post) (defstate snow-log-button-idle-down (snow-log-button) :event snow-log-button-event-handler - :code (behavior () - (set! (-> self root trans quad) (-> self orig-trans quad)) - (+! (-> self root trans y) -1433.6) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self orig-trans quad)) + (+! (-> self root trans y) -1433.6) + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this snow-log-button) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1732,30 +1320,21 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *snow-switch-sg* '()) + (initialize-skeleton this *snow-switch-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-push! 1 0) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (transform-post) (set! (-> this orig-trans quad) (-> this root trans quad)) (set! (-> this log) (entity-actor-lookup arg0 'alt-actor 0)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go snow-log-button-idle-down) - (go snow-log-button-idle-up) - ) - (none) - ) + (go snow-log-button-idle-down) + (go snow-log-button-idle-up)) + (none)) diff --git a/goal_src/jak1/levels/snow/snow-part.gc b/goal_src/jak1/levels/snow/snow-part.gc index ce152a012c..e638b372d8 100644 --- a/goal_src/jak1/levels/snow/snow-part.gc +++ b/goal_src/jak1/levels/snow/snow-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/hw/display-h.gc") (require "engine/math/matrix-h.gc") @@ -15,802 +14,1134 @@ ;; DECOMP BEGINS -(deftype snow-part (part-spawner) - () - ) - +(deftype snow-part (part-spawner) ()) (defpartgroup group-snow-snowdrops1 :id 528 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.5)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.335)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.2)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.1)) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.035)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.667)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.5)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.335)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.167)) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.067)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.57)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.385)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.235)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.117)) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.5)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.335)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.2)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.1)) + (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 9) :length (seconds 0.035)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.667)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.5)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.335)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.167)) + (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 9) :length (seconds 0.067)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.57)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.385)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.235)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.117)) + (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 9) :length (seconds 0.035)))) (defpartgroup group-snow-snowdrops2 :id 529 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.5) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.335) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.2) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.1) :offset 900) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 10.227) :length (seconds 0.035) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.667) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.5) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.335) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.167) :offset 900) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 10.227) :length (seconds 0.067) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.57) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.385) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.235) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.117) :offset 900) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 10.227) :length (seconds 0.035) :offset 900) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.5) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.335) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.2) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.1) + :offset 900) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 10.227) + :length (seconds 0.035) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.667) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.5) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.335) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.167) + :offset 900) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 10.227) + :length (seconds 0.067) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.57) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.385) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.235) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.117) + :offset 900) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 10.227) + :length (seconds 0.035) + :offset 900))) (defpartgroup group-snow-snowdrops3 :id 530 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.5) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.335) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.2) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.1) :offset 1800) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 11.15) :length (seconds 0.035) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.667) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.5) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.335) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.167) :offset 1800) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 11.15) :length (seconds 0.067) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.57) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.385) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.235) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.117) :offset 1800) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 11.15) :length (seconds 0.035) :offset 1800) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.5) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.335) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.2) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.1) + :offset 1800) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 11.15) + :length (seconds 0.035) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.667) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.5) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.335) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.167) + :offset 1800) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 11.15) + :length (seconds 0.067) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.57) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.385) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.235) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.117) + :offset 1800) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 11.15) + :length (seconds 0.035) + :offset 1800))) (defpartgroup group-snow-snowdrops4 :id 531 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.5) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.335) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.2) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.1) :offset 300) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 13.45) :length (seconds 0.035) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.667) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.5) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.335) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.167) :offset 300) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 13.45) :length (seconds 0.067) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.57) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.385) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.235) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.117) :offset 300) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 13.45) :length (seconds 0.035) :offset 300) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.5) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.335) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.2) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.1) + :offset 300) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 13.45) + :length (seconds 0.035) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.667) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.5) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.335) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.167) + :offset 300) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 13.45) + :length (seconds 0.067) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.57) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.385) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.235) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.117) + :offset 300) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 13.45) + :length (seconds 0.035) + :offset 300))) (defpartgroup group-snow-snowdrops5 :id 532 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.5) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.335) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.2) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.1) :offset 1200) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 17.95) :length (seconds 0.035) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.667) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.5) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.335) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.167) :offset 1200) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 17.95) :length (seconds 0.067) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.57) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.385) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.235) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.117) :offset 1200) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 17.95) :length (seconds 0.035) :offset 1200) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.5) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.335) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.2) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.1) + :offset 1200) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 17.95) + :length (seconds 0.035) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.667) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.5) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.335) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.167) + :offset 1200) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 17.95) + :length (seconds 0.067) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.57) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.385) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.235) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.117) + :offset 1200) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 17.95) + :length (seconds 0.035) + :offset 1200))) (defpartgroup group-snow-snowdrops6 :id 533 :bounds (static-bspherem 0 -16 0 32) - :parts ((sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.5) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.335) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.2) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.1) :offset 2100) - (sp-item 1924 :fade-after (meters 100) :falloff-to (meters 130) :period (seconds 20.43) :length (seconds 0.035) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.667) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.5) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.335) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.167) :offset 2100) - (sp-item 1925 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 20.43) :length (seconds 0.067) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.57) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.385) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.235) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.117) :offset 2100) - (sp-item 1926 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 20.43) :length (seconds 0.035) :offset 2100) - ) - ) + :parts + ((sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.5) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.335) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.2) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.1) + :offset 2100) + (sp-item 1924 + :fade-after (meters 100) + :falloff-to (meters 130) + :period (seconds 20.43) + :length (seconds 0.035) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.667) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.5) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.335) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.167) + :offset 2100) + (sp-item 1925 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 20.43) + :length (seconds 0.067) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.57) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.385) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.235) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.117) + :offset 2100) + (sp-item 1926 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 20.43) + :length (seconds 0.035) + :offset 2100))) (defpart 1924 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.25) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.5) (meters 0.25)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 128.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.00066666666) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 1927) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.25) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.5) (meters 0.25)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 128.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.00066666666) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 1927))) (defpart 1927 - :init-specs ((:fade-a -0.42666668)) - ) + :init-specs ((:fade-a -0.42666668))) (defpart 1925 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.25) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 96.0 32.0) - (:vel-y (meters -0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - (:next-time (seconds 2)) - (:next-launcher 1927) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.25) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 96.0 32.0) + (:vel-y (meters -0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)) + (:next-time (seconds 2)) + (:next-launcher 1927))) (defpart 1926 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.25) - (:x (meters -0.5) (meters 1)) - (:y (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.25)) - (:scale-y (meters 2.5) (meters 1)) - (:r 200.0) - (:g 200.0) - (:b 200.0 55.0) - (:a 32.0 96.0) - (:vel-y (meters -0.006666667)) - (:fade-a -0.14222223) - (:accel-y (meters -0.0005) (meters -0.00033333333)) - (:timer (seconds 3)) - (:flags (bit2 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.25) + (:x (meters -0.5) (meters 1)) + (:y (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.25)) + (:scale-y (meters 2.5) (meters 1)) + (:r 200.0) + (:g 200.0) + (:b 200.0 55.0) + (:a 32.0 96.0) + (:vel-y (meters -0.006666667)) + (:fade-a -0.14222223) + (:accel-y (meters -0.0005) (meters -0.00033333333)) + (:timer (seconds 3)) + (:flags (bit2 bit12)))) (defpartgroup group-part-snow-torch :id 534 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 2041 :fade-after (meters 200) :falloff-to (meters 220)) - (sp-item 2042 :fade-after (meters 140) :falloff-to (meters 1400)) - (sp-item 2043 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 2044 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 2045 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 2046 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2041 :fade-after (meters 200) :falloff-to (meters 220)) + (sp-item 2042 :fade-after (meters 140) :falloff-to (meters 1400)) + (sp-item 2043 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 2044 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 2045 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 2046 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2046 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 2047) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 2047) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2047 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 2041 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2048 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 2043 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2044 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2045 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2048) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2048))) (defpart 2042 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) -(defpartgroup group-snow-mountain-snow :id 535 :bounds (static-bspherem 0 -16 -32 80) :parts ((sp-item 2093))) +(defpartgroup group-snow-mountain-snow + :id 535 + :bounds (static-bspherem 0 -16 -32 80) + :parts ((sp-item 2093))) (defpart 2093 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 20)) - (:y (meters -30) (meters 20)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 30) (meters 20)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 0.0) - (:vel-z (meters -0.06666667) (meters -0.06666667)) - (:scalevel-x (meters 0.033333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.053333335) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:timer (seconds 10)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 0.6) (seconds 1.397)) - (:next-launcher 2094) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 20)) + (:y (meters -30) (meters 20)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 30) (meters 20)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 0.0) + (:vel-z (meters -0.06666667) (meters -0.06666667)) + (:scalevel-x (meters 0.033333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.053333335) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:timer (seconds 10)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 0.6) (seconds 1.397)) + (:next-launcher 2094))) (defpart 2094 - :init-specs ((:fade-a -0.035555556)) - ) + :init-specs ((:fade-a -0.035555556))) (defpartgroup group-snow-door-torch :id 536 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 2113 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 2114 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) - (sp-item 2115 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 2116 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) - (sp-item 2117 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) - (sp-item 2118 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) - (sp-item 2119 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) - (sp-item 2120 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2113 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 2114 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) + (sp-item 2115 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 2116 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) + (sp-item 2117 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) + (sp-item 2118 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) + (sp-item 2119 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) + (sp-item 2120 :fade-after (meters 50) :falloff-to (meters 60)))) (defpart 2120 - :init-specs ((:num 0.6) - (:x (meters 0) (meters 2)) - (:y (meters 2)) - (:rot-x 5) - (:r 8192.0) - (:g 5898.24) - (:b 6553.6) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.053333335)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 2121) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.6) + (:x (meters 0) (meters 2)) + (:y (meters 2)) + (:rot-x 5) + (:r 8192.0) + (:g 5898.24) + (:b 6553.6) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.053333335)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 2121) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2121 - :init-specs ((:fade-b -10.922667)) - ) + :init-specs ((:fade-b -10.922667))) (defpart 2113 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.75 0.6) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1.5)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.023333333) (meters 0.016666668)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.75 0.6) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1.5)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.023333333) (meters 0.016666668)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2114 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.3) - (:x (meters 0) (meters 1)) - (:y (meters 0.5)) - (:z (meters 0) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.04) 1 (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.3) + (:x (meters 0) (meters 1)) + (:y (meters 0.5)) + (:z (meters 0) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.04) 1 (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2115 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.6) - (:x (meters -1) (meters 2)) - (:y (meters 1)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:scalevel-x (meters 0.011111111)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00013333333)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2122) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.6) + (:x (meters -1) (meters 2)) + (:y (meters 1)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:scalevel-x (meters 0.011111111)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00013333333)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2122) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2123 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.2) - (:x (meters -1) (meters 2)) - (:y (meters 1)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.005) (meters 0.005)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2122) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.2) + (:x (meters -1) (meters 2)) + (:y (meters 1)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.005) (meters 0.005)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2122) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2122 - :init-specs ((:fade-g 0.26666668) (:fade-b 0.53333336) (:next-time (seconds 0.4)) (:next-launcher 2124)) - ) + :init-specs ((:fade-g 0.26666668) (:fade-b 0.53333336) (:next-time (seconds 0.4)) (:next-launcher 2124))) (defpart 2124 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 2116 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.7) - (:x (meters -1.2) (meters 2.4)) - (:y (meters 0.5)) - (:z (meters -1.2) (meters 2.4)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.7) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 0.5)) + (:z (meters -1.2) (meters 2.4)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2117 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1 0.9) - (:x (meters -1.2) (meters 1)) - (:y (meters 1.25)) - (:z (meters -1.2) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.03) 1 (meters 0.01)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1 0.9) + (:x (meters -1.2) (meters 1)) + (:y (meters 1.25)) + (:z (meters -1.2) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.03) 1 (meters 0.01)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2118 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.75 1.2) - (:x (meters -1.2) (meters 2.4)) - (:y (meters 0.5)) - (:z (meters -1.2) (meters 2)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.008333334)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.75 1.2) + (:x (meters -1.2) (meters 2.4)) + (:y (meters 0.5)) + (:z (meters -1.2) (meters 2)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.008333334)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2119 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.6) - (:x (meters -0.5) (meters 1.5)) - (:y (meters 1.25)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 2) (meters 1.8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.03) 1 (meters 0.008333334)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.6) + (:x (meters -0.5) (meters 1.5)) + (:y (meters 1.25)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 2) (meters 1.8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.03) 1 (meters 0.008333334)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-snow-birds :id 537 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) - (sp-item 2244 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2245 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 2243) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)) + (sp-item 2243 :flags (start-dead launch-asap) :binding 2244) + (sp-item 2244 :flags (is-3d start-dead)))) (defun snow-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 2245 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -70) (meters 140)) - (:y (meters 0)) - (:z (meters -70) (meters 140)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'snow-bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -70) (meters 140)) + (:y (meters 0)) + (:z (meters -70) (meters 140)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'snow-bird-bob-func))) (defun sparticle-snow-birds-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 2243 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'sparticle-snow-birds-moon) - (:next-time (seconds 0.665)) - (:next-launcher 2246) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'sparticle-snow-birds-moon) + (:next-time (seconds 0.665)) + (:next-launcher 2246))) (defpart 2246 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 2247) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 2247))) (defpart 2247 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 2246) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 2246))) (defpart 2244 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) diff --git a/goal_src/jak1/levels/snow/snow-ram-boss.gc b/goal_src/jak1/levels/snow/snow-ram-boss.gc index 456c92a3a6..af702658e1 100644 --- a/goal_src/jak1/levels/snow/snow-ram-boss.gc +++ b/goal_src/jak1/levels/snow/snow-ram-boss.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/projectiles.gc") (require "levels/snow/ice-cube.gc") @@ -14,462 +13,435 @@ ;; DECOMP BEGINS (deftype ram-boss-proj (projectile) - ((parent-override (pointer ram-boss) :overlay-at parent) - (part2 sparticle-launch-control) - (launched? symbol) - (growth float) - (charge-sound-id sound-id) - (launch-time time-frame) - (facing-dir vector :inline) - ) + ((parent-override (pointer ram-boss) :overlay-at parent) + (part2 sparticle-launch-control) + (launched? symbol) + (growth float) + (charge-sound-id sound-id) + (launch-time time-frame) + (facing-dir vector :inline)) (:states - ram-boss-proj-growing - ram-boss-proj-launch - ) - ) - + ram-boss-proj-growing + ram-boss-proj-launch)) (deftype ram-boss (nav-enemy) - ((parent-override (pointer ram) :overlay-at parent) - (facing-y float) - (player-dir-y float) - (last-turn-speed float) - (frustration int32) - (dead? symbol) - (has-shield? symbol) - (proj-stoked basic) - (proj-status uint64) - (part2 sparticle-launch-control) - (proj-last-thrown-time time-frame) - (nav-enemy-patrol-timeout time-frame) - (proj-launch-vec vector :inline) - (local-throw-point vector :inline) - (shield-jmod joint-mod-set-local) - ) + ((parent-override (pointer ram) :overlay-at parent) + (facing-y float) + (player-dir-y float) + (last-turn-speed float) + (frustration int32) + (dead? symbol) + (has-shield? symbol) + (proj-stoked basic) + (proj-status uint64) + (part2 sparticle-launch-control) + (proj-last-thrown-time time-frame) + (nav-enemy-patrol-timeout time-frame) + (proj-launch-vec vector :inline) + (local-throw-point vector :inline) + (shield-jmod joint-mod-set-local)) (:methods - (ram-boss-method-51 (_type_ vector) symbol :overlay-at nav-enemy-method-51) - (ram-boss-method-52 (_type_) symbol :overlay-at nav-enemy-method-52) - (ram-boss-method-57 (_type_ float) float :overlay-at nav-enemy-method-57) - ) - (:states - (ram-boss-already-down basic) - ram-boss-forward-defend-block - ram-boss-idle - (ram-boss-jump-down basic) - ram-boss-jump-down-hit-ground - ram-boss-lose-shield - ram-boss-nav-resume - ram-boss-nav-start - ram-boss-show-anims - ram-boss-throw - ram-boss-tracking - ram-boss-up-defend-block - ) - ) + (ram-boss-method-51 (_type_ vector) symbol :overlay-at nav-enemy-method-51) + (ram-boss-method-52 (_type_) symbol :overlay-at nav-enemy-method-52) + (ram-boss-method-57 (_type_ float) float :overlay-at nav-enemy-method-57)) + (:states (ram-boss-already-down basic) + ram-boss-forward-defend-block + ram-boss-idle + (ram-boss-jump-down basic) + ram-boss-jump-down-hit-ground + ram-boss-lose-shield + ram-boss-nav-resume + ram-boss-nav-start + ram-boss-show-anims + ram-boss-throw + ram-boss-tracking + ram-boss-up-defend-block)) +(defskelgroup *ram-boss-sg* + ram-boss + ram-boss-lod0-jg + ram-boss-far-idle-ja + ((ram-boss-lod0-mg (meters 20)) (ram-boss-lod1-mg (meters 40)) (ram-boss-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4.4) + :longest-edge (meters 1.2)) -(defskelgroup *ram-boss-sg* ram-boss ram-boss-lod0-jg ram-boss-far-idle-ja - ((ram-boss-lod0-mg (meters 20)) (ram-boss-lod1-mg (meters 40)) (ram-boss-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 4.4) - :longest-edge (meters 1.2) - ) +(define *ram-boss-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 13 + :walk-anim 11 + :turn-anim -1 + :notice-anim 19 + :run-anim 11 + :jump-anim 13 + :jump-land-anim 13 + :victory-anim 14 + :taunt-anim 14 + :die-anim 15 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 2) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 18) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 58) + :stop-chase-distance (meters 58) + :frustration-time (seconds 30) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) -(define *ram-boss-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 13 - :walk-anim 11 - :turn-anim -1 - :notice-anim 19 - :run-anim 11 - :jump-anim 13 - :jump-land-anim 13 - :victory-anim 14 - :taunt-anim 14 - :die-anim 15 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 2) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 18) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 58) - :stop-chase-distance (meters 58) - :frustration-time (seconds 30) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *ram-boss-nav-enemy-info-no-shield* (new 'static 'nav-enemy-info - :idle-anim 13 - :walk-anim 12 - :turn-anim -1 - :notice-anim 19 - :run-anim 12 - :jump-anim 13 - :jump-land-anim 13 - :victory-anim 14 - :taunt-anim 14 - :die-anim 15 - :neck-joint 6 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 4) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 2) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2) - :notice-nav-radius (meters 18) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 58) - :stop-chase-distance (meters 58) - :frustration-time (seconds 30) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *ram-boss-nav-enemy-info-no-shield* + (new 'static + 'nav-enemy-info + :idle-anim 13 + :walk-anim 12 + :turn-anim -1 + :notice-anim 19 + :run-anim 12 + :jump-anim 13 + :jump-land-anim 13 + :victory-anim 14 + :taunt-anim 14 + :die-anim 15 + :neck-joint 6 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 4) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 2) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2) + :notice-nav-radius (meters 18) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 58) + :stop-chase-distance (meters 58) + :frustration-time (seconds 30) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-ram-boss-proj-grow :id 521 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1904) (sp-item 1905) (sp-item 2487)) - ) + :parts ((sp-item 1904) (sp-item 1905) (sp-item 2487))) (defpart 2487 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 96.0) - (:g 48.0 48.0) - (:b 0.0 32.0) - (:a 64.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 96.0) + (:g 48.0 48.0) + (:b 0.0 32.0) + (:a 64.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4)))) (defpart 1904 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 2.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 160.0 32.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 64.0) - (:vel-y (meters -0.033333335)) - (:fade-r -0.53333336) - (:fade-g 1.0666667) - (:fade-b 0.53333336) - (:fade-a 1.0666667) - (:timer (seconds 0.2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 2.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 160.0 32.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 64.0) + (:vel-y (meters -0.033333335)) + (:fade-r -0.53333336) + (:fade-g 1.0666667) + (:fade-b 0.53333336) + (:fade-a 1.0666667) + (:timer (seconds 0.2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1905 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 150.0 32.0) - (:g 24.0 74.0) - (:b 0.0 32.0) - (:a 64.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 150.0 32.0) + (:g 24.0 74.0) + (:b 0.0 32.0) + (:a 64.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.15)))) (defpartgroup group-ram-boss-proj-fly :id 522 :duration (seconds 1) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1910 :flags (launch-asap) :binding 1908) - (sp-item 1908 :flags (start-dead) :binding 1909) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - (sp-item 1909 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1910 :flags (launch-asap) :binding 1908) + (sp-item 1908 :flags (start-dead) :binding 1909) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)) + (sp-item 1909 :flags (start-dead launch-asap)))) (defpart 1910 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:func 'sparticle-track-root-prim) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:func 'sparticle-track-root-prim))) (defpart 1908 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 128.0) - (:scalevel-x (meters -0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.53333336) - (:fade-g -1.0666667) - (:fade-b -0.53333336) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:next-time (seconds 0.27)) - (:next-launcher 1912) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 128.0) + (:scalevel-x (meters -0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.53333336) + (:fade-g -1.0666667) + (:fade-b -0.53333336) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:next-time (seconds 0.27)) + (:next-launcher 1912) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.1)))) (defpart 1912 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1909 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 5.0) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 128.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters -0.0026666666)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.53333336) - (:fade-g -1.0666667) - (:fade-b -0.53333336) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:next-time (seconds 0.2)) - (:next-launcher 1912) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 5.0) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 128.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters -0.0026666666)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.53333336) + (:fade-g -1.0666667) + (:fade-b -0.53333336) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:next-time (seconds 0.2)) + (:next-launcher 1912) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpartgroup group-ram-boss-proj-hit :id 523 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1914) (sp-item 1915) (sp-item 1916)) - ) + :parts ((sp-item 1914) (sp-item 1915) (sp-item 1916))) (defpart 1914 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 64.0) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 96.0 64.0) - (:b 32.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.053333335)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:accel-y (meters -0.00016666666)) - (:friction 0.97) - (:timer (seconds 0.1) (seconds 0.397)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 64.0) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 96.0 64.0) + (:b 32.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.053333335)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:accel-y (meters -0.00016666666)) + (:friction 0.97) + (:timer (seconds 0.1) (seconds 0.397)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.4)))) (defpart 1916 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 6.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 32.0 32.0) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-r 0.21333334) - (:fade-g -0.42666668) - (:fade-b -0.21333334) - (:fade-a -0.30476192) - (:accel-y (meters -0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1912) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 6.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 32.0 32.0) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-r 0.21333334) + (:fade-g -0.42666668) + (:fade-b -0.21333334) + (:fade-a -0.30476192) + (:accel-y (meters -0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1912) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1915 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 64.0 32.0) - (:b 32.0) - (:a 96.0) - (:fade-a -4.8) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 64.0 32.0) + (:b 32.0) + (:a 96.0) + (:fade-a -4.8) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpartgroup group-ram-boss-proj-die :id 524 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1914)) - ) + :parts ((sp-item 1914))) (defmethod projectile-method-24 ((this ram-boss-proj)) (with-pp (quaternion-rotate-local-x! (-> this root quat) (-> this root quat) (* 65718.05 (seconds-per-frame))) (quaternion-rotate-local-y! (-> this root quat) (-> this root quat) (* 32221.867 (seconds-per-frame))) (let ((f0-9 (* 5120.0 (+ 0.9 (* 0.1 (cos (* 873.81335 (the float (mod (current-time) 75))))))))) - (find-ground-and-draw-shadow - (-> this root trans) - (the-as vector #f) - f0-9 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - ) - (if (-> this launched?) - (spawn (-> this part2) (the-as vector (-> this root root-prim prim-core))) - ) + (find-ground-and-draw-shadow (-> this root trans) + (the-as vector #f) + f0-9 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0)) + (if (-> this launched?) (spawn (-> this part2) (the-as vector (-> this root root-prim prim-core)))) (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) (set! (-> s5-0 command) (sound-command set-param)) (set! (-> s5-0 id) (-> this sound-id)) @@ -477,81 +449,52 @@ (let ((gp-1 pp)) (when (= a1-4 #t) (if (and gp-1 (type-type? (-> gp-1 type) process-drawable) (nonzero? (-> (the-as process-drawable gp-1) root))) - (set! a1-4 (-> (the-as process-drawable gp-1) root trans)) - (set! a1-4 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s5-0 parms trans) a1-4) - ) + (set! a1-4 (-> (the-as process-drawable gp-1) root trans)) + (set! a1-4 (the-as vector #f))))) + (sound-trans-convert (-> s5-0 parms trans) a1-4)) (set! (-> s5-0 parms mask) (sound-mask trans)) - (-> s5-0 id) - ) - (none) - ) - ) + (-> s5-0 id)) + (none))) (defun snow-ram-proj-update-velocity ((arg0 ram-boss-proj)) (when (>= (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 target)) - (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 root trans)) - ) + (vector-vector-distance (-> arg0 parent-override 0 collide-info trans) (-> arg0 root trans))) (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root trans))) (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0)) - ) - (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) - (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal)) - ) + (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root transv) 1.0))) + (if (logtest? (-> arg0 root status) (cshape-moving-flags tsurf)) (vector-flatten! s3-1 s3-1 (-> arg0 root local-normal))) (vector-normalize-copy! s4-0 s3-1 1.0) (let ((s3-2 (new 'stack-no-clear 'matrix))) - (matrix-from-two-vectors-max-angle-partial! - s3-2 - s5-0 - s4-0 - (* (-> arg0 max-turn) (seconds-per-frame)) - (-> arg0 tween) - ) - (vector-matrix*! s5-0 s5-0 s3-2) - ) + (matrix-from-two-vectors-max-angle-partial! s3-2 s5-0 s4-0 (* (-> arg0 max-turn) (seconds-per-frame)) (-> arg0 tween)) + (vector-matrix*! s5-0 s5-0 s3-2)) (vector-normalize! s5-0 1.0) - (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)) - ) - ) + (vector-float*! (-> arg0 root transv) s5-0 (-> arg0 max-speed)))) 0 - (none) - ) + (none)) (defmethod projectile-method-25 ((this ram-boss-proj)) (go ram-boss-proj-growing) 0 - (none) - ) + (none)) (defmethod projectile-method-26 ((this ram-boss-proj)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) - (set! (-> s4-0 collide-with) - (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) - ) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object)) (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) (set! (-> s5-0 event-self) 'touched) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod projectile-method-27 ((this ram-boss-proj)) (set! (-> this charge-sound-id) (new 'static 'sound-id)) @@ -569,274 +512,225 @@ (set! (-> this sound-id) (sound-play "ramboss-track")) (let ((v1-12 (-> this parent-override))) (set! (-> v1-12 0 proj-stoked) #t) - (set! (-> v1-12 0 proj-status) (the-as uint 1)) - ) - (none) - ) + (set! (-> v1-12 0 proj-status) (the-as uint 1))) + (none)) (defmethod deactivate ((this ram-boss-proj)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type projectile deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram-boss-proj) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram-boss-proj ((method-of-type projectile relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram-boss-proj ((method-of-type projectile relocate) this arg0))) (defmethod projectile-method-28 ((this ram-boss-proj)) (when (and *target* (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying)))) (let ((gp-0 (-> this target))) (set! (-> gp-0 quad) (-> (target-pos 0) quad)) (+! (-> gp-0 y) 4915.2) (let ((f0-2 (vector-vector-distance gp-0 (-> this root trans))) - (a2-0 (new 'stack-no-clear 'vector)) - ) - (if (>= 0.0 f0-2) - (set! f0-2 409.6) - ) + (a2-0 (new 'stack-no-clear 'vector))) + (if (>= 0.0 f0-2) (set! f0-2 409.6)) (set! (-> a2-0 quad) (-> *target* control transv quad)) (set! (-> a2-0 y) 0.0) - (let ((f0-3 (/ f0-2 (* 40960.0 (seconds-per-frame))))) - (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))) - ) - ) - ) - ) - (none) - ) + (let ((f0-3 (/ f0-2 (* 40960.0 (seconds-per-frame))))) (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (seconds-per-frame))))))) + (none)) (defstate ram-boss-proj-growing (ram-boss-proj) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('launch) - (let ((v1-1 (-> self parent-override))) - (set! (-> v1-1 0 proj-stoked) #f) - (set! (-> v1-1 0 proj-status) (the-as uint 0)) - ) - 0 - (go ram-boss-proj-launch) - ) - ) - ) - :code (behavior () - (set! (-> self charge-sound-id) (sound-play "ramboss-charge")) - (loop - (let ((gp-1 (-> self parent-override))) - (when (-> gp-1 0 dead?) - (set! (-> gp-1 0 proj-stoked) #f) - (set! (-> gp-1 0 proj-status) (the-as uint 0)) - (sound-stop (-> self charge-sound-id)) - (go-virtual projectile-dissipate) - ) - (nav-enemy-method-54 (-> gp-1 0) (-> self root trans)) - (update-transforms! (-> self root)) - (cond - ((-> gp-1 0 proj-stoked) - (set! (-> gp-1 0 proj-stoked) #f) - (set! (-> self growth) (seek-with-smooth (-> self growth) 1.0 (* 1.25 (seconds-per-frame)) 0.8 0.01)) - (if (>= (-> self growth) 1.0) - (set! (-> gp-1 0 proj-status) (the-as uint 2)) - (set! (-> gp-1 0 proj-status) (the-as uint 1)) - ) - ) - (else - (set! (-> self growth) 0.0) - (set! (-> gp-1 0 proj-stoked) #f) - (set! (-> gp-1 0 proj-status) (the-as uint 0)) - (sound-stop (-> self charge-sound-id)) - (go-virtual projectile-dissipate) - ) - ) - ) - (let ((f0-6 (-> self growth))) - (set-vector! (-> self root scale) f0-6 f0-6 f0-6 1.0) - ) - (spawn (-> self part) (-> self root trans)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('launch) + (let ((v1-1 (-> self parent-override))) + (set! (-> v1-1 0 proj-stoked) #f) + (set! (-> v1-1 0 proj-status) (the-as uint 0))) + 0 + (go ram-boss-proj-launch)))) + :code + (behavior () + (set! (-> self charge-sound-id) (sound-play "ramboss-charge")) + (loop (let ((gp-1 (-> self parent-override))) + (when (-> gp-1 0 dead?) + (set! (-> gp-1 0 proj-stoked) #f) + (set! (-> gp-1 0 proj-status) (the-as uint 0)) + (sound-stop (-> self charge-sound-id)) + (go-virtual projectile-dissipate)) + (nav-enemy-method-54 (-> gp-1 0) (-> self root trans)) + (update-transforms! (-> self root)) + (cond + ((-> gp-1 0 proj-stoked) + (set! (-> gp-1 0 proj-stoked) #f) + (set! (-> self growth) (seek-with-smooth (-> self growth) 1.0 (* 1.25 (seconds-per-frame)) 0.8 0.01)) + (if (>= (-> self growth) 1.0) (set! (-> gp-1 0 proj-status) (the-as uint 2)) (set! (-> gp-1 0 proj-status) (the-as uint 1)))) + (else + (set! (-> self growth) 0.0) + (set! (-> gp-1 0 proj-stoked) #f) + (set! (-> gp-1 0 proj-status) (the-as uint 0)) + (sound-stop (-> self charge-sound-id)) + (go-virtual projectile-dissipate)))) + (let ((f0-6 (-> self growth))) (set-vector! (-> self root scale) f0-6 f0-6 f0-6 1.0)) + (spawn (-> self part) (-> self root trans)) + (suspend)))) (defstate ram-boss-proj-launch (ram-boss-proj) - :code (behavior () - (sound-play "ramboss-fire") - (set! (-> self launched?) #t) - (set! (-> self growth) 1.0) - (logior! (-> self root root-prim prim-core action) (collide-action solid)) - (set-time! (-> self launch-time)) - (vector-float*! (-> self root transv) (-> self parent-override 0 proj-launch-vec) 40960.0) - (set! (-> self target quad) (-> (target-pos 0) quad)) - (+! (-> self target y) 4915.2) - (set! (-> self target-base quad) (-> self target quad)) - (go-virtual projectile-moving) - ) - ) + :code + (behavior () + (sound-play "ramboss-fire") + (set! (-> self launched?) #t) + (set! (-> self growth) 1.0) + (logior! (-> self root root-prim prim-core action) (collide-action solid)) + (set-time! (-> self launch-time)) + (vector-float*! (-> self root transv) (-> self parent-override 0 proj-launch-vec) 40960.0) + (set! (-> self target quad) (-> (target-pos 0) quad)) + (+! (-> self target y) 4915.2) + (set! (-> self target-base quad) (-> self target quad)) + (go-virtual projectile-moving))) (defstate projectile-impact (ram-boss-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 523) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play "ramboss-hit") - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 523) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (sound-play "ramboss-hit") + (suspend) + (go-virtual projectile-die))) (defstate projectile-dissipate (ram-boss-proj) :virtual #t - :code (behavior () - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 524) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (suspend) - (go-virtual projectile-die) - ) - ) + :code + (behavior () + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 524) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (if (nonzero? (-> self sound-id)) (sound-stop (-> self sound-id))) + (suspend) + (go-virtual projectile-die))) (defpartgroup group-ram-boss-shield-on-fire :id 525 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1919)) - ) + :parts ((sp-item 1919))) (defpart 1919 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 32.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.023529412)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.5058824) - (:friction 0.98) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 32.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.023529412)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.5058824) + (:friction 0.98) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-ram-boss-foot-puff :id 574 :duration (seconds 0.017) :linger-duration (seconds 1.5) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2367) (sp-item 2368) (sp-item 2369)) - ) + :parts ((sp-item 2367) (sp-item 2368) (sp-item 2369))) (defpart 2367 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 32.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 32.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2368 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0 64.0) - (:g 196.0 64.0) - (:b 196.0 64.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0 64.0) + (:g 196.0 64.0) + (:b 196.0 64.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2369 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -0.1) (meters 0.4)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.07) (meters 0.02)) - (:scale-y :copy scale-x) - (:r 196.0 2.0 64.0) - (:g 196.0 1 64.0) - (:b 196.0 1 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.015) (meters 0.006666667)) - (:fade-a -0.42666668) - (:accel-y (meters -0.0013333333) (meters 0.00066666666)) - (:timer (seconds 1)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -0.1) (meters 0.4)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.07) (meters 0.02)) + (:scale-y :copy scale-x) + (:r 196.0 2.0 64.0) + (:g 196.0 1 64.0) + (:b 196.0 1 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.015) (meters 0.006666667)) + (:fade-a -0.42666668) + (:accel-y (meters -0.0013333333) (meters 0.00066666666)) + (:timer (seconds 1)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) ;; WARN: disable def twice: 194. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior ram-boss-on-ground-event-handler ram-boss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -851,78 +745,40 @@ (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 2))))) (go ram-boss-lose-shield) (return #t) - v0-4 - ) + v0-4) ((begin - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) - (do-push-aways! (-> self collide-info)) - ) - (level-hint-spawn - (text-id snow-ram-boss-red-eco-hint) - "sksp0346" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8) - ) + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) (do-push-aways! (-> self collide-info))) + (level-hint-spawn (text-id snow-ram-boss-red-eco-hint) "sksp0346" (the-as entity #f) *entity-pool* (game-task none)) + (>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8)) (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2))))) (go ram-boss-up-defend-block) (return #t) - v0-4 - ) + v0-4) (else - (when (= arg2 'attack) - (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4))))) - (go ram-boss-forward-defend-block) - (return #t) - v0-4 - ) - ) - ) - ) - (else - (go-virtual nav-enemy-die) - (return #t) - v0-4 - ) - ) - ) + (when (= arg2 'attack) + (send-event arg0 'shove #f (static-attack-info ((shove-back (meters 4))))) + (go ram-boss-forward-defend-block) + (return #t) + v0-4)))) + (else (go-virtual nav-enemy-die) (return #t) v0-4))) (('touch) - (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) - (do-push-aways! (-> self collide-info)) - ) + (if (not (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8))) (do-push-aways! (-> self collide-info))) (cond ((-> self has-shield?) (cond ((>= (- (-> (target-pos 0) y) (-> self collide-info trans y)) 9420.8) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2)))) - ) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4)) (shove-up (meters 2))))) (go ram-boss-up-defend-block) (return #t) - v0-4 - ) + v0-4) (else - (when (= arg2 'attack) - (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4))))) - (go ram-boss-forward-defend-block) - (return #t) - v0-4 - ) - ) - ) - ) + (when (= arg2 'attack) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-back (meters 4))))) + (go ram-boss-forward-defend-block) + (return #t) + v0-4)))) (else - (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) - (go-virtual nav-enemy-victory) - ) - ) - ) - ) + (if (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) (go-virtual nav-enemy-victory))))) (('notify) (when (= (-> arg0 type) ram-boss-proj) (let ((v1-66 arg0)) @@ -932,61 +788,34 @@ (set! (-> self frustration) 0) (go-virtual nav-enemy-victory) (return #t) - v0-4 - ) - ) + v0-4)) ((= (-> arg3 param 0) 'die) (let* ((v1-73 (- (current-time) (-> (the-as ram-boss-proj v1-66) launch-time))) - (v1-74 (the-as int (- (seconds 4) v1-73))) - ) + (v1-74 (the-as int (- (seconds 4) v1-73)))) (cond - ((< (seconds 4) (the-as time-frame v1-74)) - (set! v1-74 1200) - ) - ((< (the-as time-frame v1-74) 0) - (set! v1-74 0) - ) - ) - (+! (-> self frustration) (the int (* 0.00083333335 (the float (* v1-74 128))))) - ) + ((< (seconds 4) (the-as time-frame v1-74)) (set! v1-74 1200)) + ((< (the-as time-frame v1-74) 0) (set! v1-74 0))) + (+! (-> self frustration) (the int (* 0.00083333335 (the float (* v1-74 128)))))) (when (< 256 (-> self frustration)) (set! v0-4 256) (set! (-> self frustration) (the-as int v0-4)) - v0-4 - ) - ) - ) - ) - ) - ) - ) - ) + v0-4)))))))) (defmethod deactivate ((this ram-boss)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type nav-enemy deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram-boss) (arg0 int)) - (if (nonzero? (-> this shield-jmod)) - (&+! (-> this shield-jmod) arg0) - ) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram-boss ((method-of-type nav-enemy relocate) this arg0)) - ) + (if (nonzero? (-> this shield-jmod)) (&+! (-> this shield-jmod) arg0)) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram-boss ((method-of-type nav-enemy relocate) this arg0))) (defmethod initialize-collision ((this ram-boss)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 4) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy wall-object)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -999,39 +828,32 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 -2048.0 6144.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 8601.6 -2048.0 7782.4) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set! (-> s3-3 transform-index) 3) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 409.6) - (append-prim s4-0 s3-3) - ) - ) + (append-prim s4-0 s3-3))) (set! (-> s5-0 nav-radius) 10240.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod ram-boss-method-52 ((this ram-boss)) (let ((v1-1 (the-as basic (-> this collide-info root-prim)))) @@ -1048,35 +870,22 @@ (set! (-> v0-0 y) 819.2) (set! (-> v0-0 z) 4505.6) (set! (-> v0-0 w) 8192.0) - (the-as symbol v0-0) - ) - ) - ) - ) + (the-as symbol v0-0))))) (defmethod nav-enemy-method-53 ((this ram-boss)) (let ((v1-1 (the-as (array collide-shape-prim) (-> this collide-info root-prim)))) - (let ((a0-1 (-> v1-1 16))) - (set! (-> a0-1 prim-core offense) (collide-offense touch)) - ) - (let ((a0-2 (-> v1-1 17))) - (set! (-> a0-2 prim-core offense) (collide-offense touch)) - ) - (let ((a0-3 (-> v1-1 18))) - (set! (-> a0-3 prim-core offense) (collide-offense touch)) - ) + (let ((a0-1 (-> v1-1 16))) (set! (-> a0-1 prim-core offense) (collide-offense touch))) + (let ((a0-2 (-> v1-1 17))) (set! (-> a0-2 prim-core offense) (collide-offense touch))) + (let ((a0-3 (-> v1-1 18))) (set! (-> a0-3 prim-core offense) (collide-offense touch))) (let ((v1-2 (-> v1-1 19))) (logclear! (-> v1-2 prim-core action) (collide-action solid)) (set! (-> v1-2 collide-with) (collide-kind)) (set! (-> v1-2 prim-core collide-as) (collide-kind)) - (set! (-> v1-2 prim-core offense) (collide-offense no-offense)) - ) - ) - (the-as symbol 0) - ) + (set! (-> v1-2 prim-core offense) (collide-offense no-offense)))) + (the-as symbol 0)) (defmethod nav-enemy-method-48 ((this ram-boss)) - (initialize-skeleton this *ram-boss-sg* '()) + (initialize-skeleton this *ram-boss-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (init-defaults! this *ram-boss-nav-enemy-info*) (logclear! (-> this enemy-info options) (fact-options has-power-cell)) @@ -1090,15 +899,12 @@ (init-jm! this *ram-boss-nav-enemy-info-no-shield*) (let ((v1-23 (-> this shield-jmod))) (set! (-> v1-23 enable) #t) - (set! (-> v1-23 transform scale quad) (the-as uint128 0)) - ) - ) + (set! (-> v1-23 transform scale quad) (the-as uint128 0)))) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) (set! (-> this neck ear) (the-as uint 0)) 0 - (none) - ) + (none)) (defbehavior ram-boss-init-by-other ram-boss ((arg0 basic) (arg1 nav-enemy) (arg2 symbol)) (set! (-> self dead?) #f) @@ -1114,81 +920,52 @@ (set! (-> self collide-info trans quad) (-> arg1 collide-info trans quad)) (set-vector! (-> self collide-info scale) 1.0 1.0 1.0 1.0) (let ((t9-2 quaternion-copy!) - (a0-6 (-> self collide-info quat)) - ) + (a0-6 (-> self collide-info quat))) (t9-2 a0-6 (-> arg1 collide-info quat)) (cond - (arg2 - (go ram-boss-already-down (the-as basic a0-6)) - ) - (else - (ja-post) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go ram-boss-idle) - ) - ) - ) - (none) - ) + (arg2 (go ram-boss-already-down (the-as basic a0-6))) + (else (ja-post) (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) (go ram-boss-idle)))) + (none)) (defmethod nav-enemy-method-54 ((this ram-boss) (arg0 vector)) (let ((a2-0 (-> this node-list data 18 bone transform))) (set-vector! arg0 0.0 0.0 -2457.6 1.0) - (vector-matrix*! arg0 arg0 a2-0) - ) - (the-as symbol (vector-float*! arg0 arg0 (/ 1.0 (-> arg0 w)))) - ) + (vector-matrix*! arg0 arg0 a2-0)) + (the-as symbol (vector-float*! arg0 arg0 (/ 1.0 (-> arg0 w))))) (defmethod nav-enemy-method-55 ((this ram-boss)) - (if (not *target*) - (return #f) - ) + (if (not *target*) (return #f)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> this collide-info trans quad)) (+! (-> s5-0 y) 8192.0) (set! (-> s4-0 quad) (-> (target-pos 0) quad)) (+! (-> s4-0 y) 4915.2) (vector-! s4-0 s4-0 s5-0) (let* ((t2-0 (new 'stack-no-clear 'collide-tri-result)) - (v0-0 (< (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - s4-0 - 1228.8 - (collide-kind background cak-2 ground-object) - this - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - ) - ) + (v0-0 (< (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + s4-0 + 1228.8 + (collide-kind background cak-2 ground-object) + this + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0))) (b! #t cfg-7 :delay (nop!)) (the-as none 0) (set! v0-0 (the-as symbol #f)) (label cfg-7) - v0-0 - ) - ) - ) + v0-0))) (defmethod ram-boss-method-51 ((this ram-boss) (arg0 vector)) (let* ((f30-0 (quaternion-y-angle (-> this collide-info quat))) (f0-2 (atan (-> arg0 x) (-> arg0 z))) - (f0-3 (deg- f30-0 f0-2)) - ) + (f0-3 (deg- f30-0 f0-2))) (when (< (fabs f0-3) 10922.667) - (if (< 1820.4445 f0-3) - (vector-rotate-around-y! arg0 arg0 (+ -1820.4445 f0-3)) - ) - (return #f) - ) - ) - #t - ) + (if (< 1820.4445 f0-3) (vector-rotate-around-y! arg0 arg0 (+ -1820.4445 f0-3))) + (return #f))) + #t) (defmethod set-jump-height-factor! ((this ram-boss) (arg0 int)) (cond @@ -1198,651 +975,453 @@ (set! (-> this proj-stoked) #t) (let ((s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (the-as uint128 0)) - (let ((v1-9 (process-spawn - ram-boss-proj - :init projectile-init-by-other - (-> this entity) - (-> this collide-info trans) - s5-0 - 0 - (process->handle *target*) - :to this - ) - ) - ) - (set! (-> (the-as (pointer ram-boss-proj) v1-9) 0 notify-handle) (process->handle this)) - ) - ) - ) - ) - ) - (else - (set! (-> this proj-stoked) #t) - ) - ) - (none) - ) + (let ((v1-9 (process-spawn ram-boss-proj + :init + projectile-init-by-other + (-> this entity) + (-> this collide-info trans) + s5-0 + 0 + (process->handle *target*) + :to + this))) + (set! (-> (the-as (pointer ram-boss-proj) v1-9) 0 notify-handle) (process->handle this))))))) + (else (set! (-> this proj-stoked) #t))) + (none)) (defstate ram-boss-show-anims (ram-boss) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate ram-boss-idle (ram-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('jump) - (go ram-boss-jump-down proc) - ) - (('touch 'attack) - (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic) - ) - ) - ) - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-idle) enter)) - (set! (-> self frustration) 0) - 0 - ) - :code (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (loop - (clone-anim-once - (ppointer->handle (-> self parent-override)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (let ((a0-4 (-> self parent-override 0 node-list data 9 bone transform))) - (set! (-> self collide-info trans quad) (-> a0-4 vector 3 quad)) - ) - (transform-post) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self collide-info root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('jump) (go ram-boss-jump-down proc)) + (('touch 'attack) (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic)))) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-idle) enter)) + (set! (-> self frustration) 0) + 0) + :code + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (loop (clone-anim-once (ppointer->handle (-> self parent-override)) (the-as int (-> self draw origin-joint-index)) #t "") + (let ((a0-4 (-> self parent-override 0 node-list data 9 bone transform))) + (set! (-> self collide-info trans quad) (-> a0-4 vector 3 quad))) + (transform-post) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self collide-info root-prim)) prims 0 prim-core)) + 'attacking + self))) + (suspend)))) (defstate ram-boss-jump-down (ram-boss) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic) - ) - ) - ) - :enter (behavior ((arg0 basic)) - (ram-boss-method-52 self) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (-> self node-list data 0 bone transform)) - ) - (let ((s1-0 (new 'stack-no-clear 'matrix)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (matrix-4x4-inverse! s1-0 gp-0) - (vector-matrix*! s4-0 (target-pos 0) s1-0) - (set-vector! s5-0 -49152.0 -32768.0 16384.0 1.0) - (if (< (-> s4-0 x) 0.0) - (set! (-> s5-0 x) (- (-> s5-0 x))) - ) - ) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector-matrix*! s4-1 s5-0 gp-0) - (vector-! s4-1 s4-1 (-> gp-0 vector 3)) - (set! (-> s4-1 y) 0.0) - (vector-normalize! s4-1 1.0) - (set! (-> self collide-info transv x) (* 65536.0 (-> s4-1 x))) - (set! (-> self collide-info transv z) (* 65536.0 (-> s4-1 z))) - ) - ) - (set! (-> self collide-info transv y) 102400.0) - ) - :trans (behavior () - (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 16384.0 - #f - #f - #f - ) - (if (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) - (go ram-boss-jump-down-hit-ground) - ) - ) - :code (behavior ((arg0 basic)) - (ja-channel-push! 1 (seconds 0.8)) - (ja-no-eval :group! ram-boss-dismount-start-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) (nav-enemy-send-attack proc (the-as touching-shapes-entry (-> block param 0)) 'generic)))) + :enter + (behavior ((arg0 basic)) + (ram-boss-method-52 self) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (-> self node-list data 0 bone transform))) + (let ((s1-0 (new 'stack-no-clear 'matrix)) + (s4-0 (new 'stack-no-clear 'vector))) + (matrix-4x4-inverse! s1-0 gp-0) + (vector-matrix*! s4-0 (target-pos 0) s1-0) + (set-vector! s5-0 -49152.0 -32768.0 16384.0 1.0) + (if (< (-> s4-0 x) 0.0) (set! (-> s5-0 x) (- (-> s5-0 x))))) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector-matrix*! s4-1 s5-0 gp-0) + (vector-! s4-1 s4-1 (-> gp-0 vector 3)) + (set! (-> s4-1 y) 0.0) + (vector-normalize! s4-1 1.0) + (set! (-> self collide-info transv x) (* 65536.0 (-> s4-1 x))) + (set! (-> self collide-info transv z) (* 65536.0 (-> s4-1 z))))) + (set! (-> self collide-info transv y) 102400.0)) + :trans + (behavior () + (+! (-> self collide-info transv y) (* -544768.0 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 16384.0 + #f + #f + #f) + (if (logtest? (-> self collide-info status) (cshape-moving-flags onsurf)) (go ram-boss-jump-down-hit-ground))) + :code + (behavior ((arg0 basic)) + (ja-channel-push! 1 (seconds 0.8)) + (ja-no-eval :group! ram-boss-dismount-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (set! (-> gp-0 y) 0.0) + (seek-toward-heading-vec! (-> self collide-info) gp-0 182044.44 (seconds 0.01))) + (suspend) + (ja :num! (seek!))) + (loop (suspend))) + :post nav-enemy-simple-post) + +(defstate ram-boss-jump-down-hit-ground (ram-boss) + :event + (-> ram-boss-jump-down + event) + :code + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) + (ja-no-eval :group! ram-boss-dismount-hit-ground-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) + (go ram-boss-nav-start)) + :post nav-enemy-simple-post) + +(defstate ram-boss-already-down (ram-boss) + :code + (behavior ((arg0 basic)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (ram-boss-method-52 self) + (let ((a1-0 (new 'stack-no-clear 'vector)) + (a2-0 (-> self parent-override 0 node-list data 0 bone transform))) + (set-vector! a1-0 0.0 -16384.0 -32768.0 1.0) + (vector-matrix*! (-> self collide-info trans) a1-0 a2-0)) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) (set! (-> gp-0 y) 0.0) - (seek-toward-heading-vec! (-> self collide-info) gp-0 182044.44 (seconds 0.01)) - ) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-simple-post - ) - -(defstate ram-boss-jump-down-hit-ground (ram-boss) - :event (-> ram-boss-jump-down event) - :code (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (activate! *camera-smush-control* 409.6 37 150 1.0 0.99) - (ja-no-eval :group! ram-boss-dismount-hit-ground-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1)) - (go ram-boss-nav-start) - ) - :post nav-enemy-simple-post - ) - -(defstate ram-boss-already-down (ram-boss) - :code (behavior ((arg0 basic)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (ram-boss-method-52 self) - (let ((a1-0 (new 'stack-no-clear 'vector)) - (a2-0 (-> self parent-override 0 node-list data 0 bone transform)) - ) - (set-vector! a1-0 0.0 -16384.0 -32768.0 1.0) - (vector-matrix*! (-> self collide-info trans) a1-0 a2-0) - ) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (set! (-> gp-0 y) 0.0) - (set-heading-vec! (-> self collide-info) gp-0) - ) - (go ram-boss-nav-start) - ) - ) + (set-heading-vec! (-> self collide-info) gp-0)) + (go ram-boss-nav-start))) (defstate ram-boss-nav-start (ram-boss) - :code (behavior () - (let ((a1-1 (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) - (when (not a1-1) - (go process-drawable-art-error "not on nav mesh") - (return #f) - ) - (set-current-poly! (-> self nav) a1-1) - ) - (go ram-boss-nav-resume) - ) - ) + :code + (behavior () + (let ((a1-1 (nav-control-method-16 (-> self nav) (-> self collide-info trans)))) + (when (not a1-1) + (go process-drawable-art-error "not on nav mesh") + (return #f)) + (set-current-poly! (-> self nav) a1-1)) + (go ram-boss-nav-resume))) (defstate ram-boss-nav-resume (ram-boss) - :code (behavior () - (set! (-> self frustration) 0) - (when *target* - (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= 18432.0 f30-0) - (go ram-boss-tracking) - ) - ((not (target-in-range? self 237568.0)) - (go-virtual nav-enemy-patrol) - ) - ((and (< f30-0 106496.0) (nav-enemy-method-55 self)) - (go-virtual nav-enemy-attack) - ) - ((< f30-0 237568.0) - (go-virtual nav-enemy-chase) - ) - (else - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (set! (-> self frustration) 0) + (when *target* + (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= 18432.0 f30-0) (go ram-boss-tracking)) + ((not (target-in-range? self 237568.0)) (go-virtual nav-enemy-patrol)) + ((and (< f30-0 106496.0) (nav-enemy-method-55 self)) (go-virtual nav-enemy-attack)) + ((< f30-0 237568.0) (go-virtual nav-enemy-chase)) + (else (go-virtual nav-enemy-patrol))))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-patrol (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - ((-> (method-of-type nav-enemy nav-enemy-patrol) enter)) - (set! (-> self state-timeout) (-> self nav-enemy-patrol-timeout)) - (set! (-> self nav-enemy-patrol-timeout) (seconds 1)) - (ja-channel-push! 1 (seconds 0.3)) - ) - :trans (behavior () - (when *target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (>= 18432.0 f0-0) - (go ram-boss-tracking) - ) - ) - ) - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) - ) - ) + :enter + (behavior () + ((-> (method-of-type nav-enemy nav-enemy-patrol) enter)) + (set! (-> self state-timeout) (-> self nav-enemy-patrol-timeout)) + (set! (-> self nav-enemy-patrol-timeout) (seconds 1)) + (ja-channel-push! 1 (seconds 0.3))) + :trans + (behavior () + (when *target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (>= 18432.0 f0-0) (go ram-boss-tracking)))) + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)))) (defstate nav-enemy-chase (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-chase) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (>= 18432.0 f30-0) - (go ram-boss-tracking) - ) - (when (time-elapsed? (-> self state-time) (-> self reaction-time)) - (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) - (go-virtual nav-enemy-patrol) - ) - (if (and (>= 73728.0 f30-0) (nav-enemy-method-55 self)) - (go-virtual nav-enemy-attack) - ) - ) - ) - (cond - ((logtest? (nav-control-flags navcf17) (-> self nav flags)) - (if (time-elapsed? (-> self free-time) (seconds 1)) - (go-virtual nav-enemy-patrol) - ) - ) - (else - (set-time! (-> self free-time)) - ) - ) - 0 - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-chase) enter))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((f30-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (>= 18432.0 f30-0) (go ram-boss-tracking)) + (when (time-elapsed? (-> self state-time) (-> self reaction-time)) + (if (not (target-in-range? self (-> self nav-info stop-chase-distance))) (go-virtual nav-enemy-patrol)) + (if (and (>= 73728.0 f30-0) (nav-enemy-method-55 self)) (go-virtual nav-enemy-attack)))) + (cond + ((logtest? (nav-control-flags navcf17) (-> self nav flags)) + (if (time-elapsed? (-> self free-time) (seconds 1)) (go-virtual nav-enemy-patrol))) + (else (set-time! (-> self free-time)))) + 0)) (defstate nav-enemy-attack (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler :trans #f - :code (behavior () - (go ram-boss-tracking) - ) - ) + :code + (behavior () + (go ram-boss-tracking))) (defmethod ram-boss-method-57 ((this ram-boss) (arg0 float)) (let ((f0-0 0.0)) (when *target* (let ((s3-0 (new 'stack-no-clear 'vector))) (vector-! s3-0 (target-pos 0) (-> this collide-info trans)) - (let ((f0-1 (vector-x-angle s3-0))) - (set! f0-0 (* 0.000091552734 f0-1)) - ) - ) + (let ((f0-1 (vector-x-angle s3-0))) (set! f0-0 (* 0.000091552734 f0-1)))) (cond - ((< f0-0 0.0) - (set! f0-0 0.0) - ) - ((< 1.0 f0-0) - (set! f0-0 1.0) - ) - ) - (if (>= arg0 0.0) - (set! f0-0 (* 0.5 (+ f0-0 arg0))) - ) - ) - f0-0 - ) - ) + ((< f0-0 0.0) (set! f0-0 0.0)) + ((< 1.0 f0-0) (set! f0-0 1.0))) + (if (>= arg0 0.0) (set! f0-0 (* 0.5 (+ f0-0 arg0))))) + f0-0)) (defstate ram-boss-tracking (ram-boss) :event ram-boss-on-ground-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int (time-elapsed? (-> self state-time) (seconds 0.75)))) - (if (not *target*) - (go-virtual nav-enemy-patrol) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) - (set! (-> self player-dir-y) (atan (-> gp-0 x) (-> gp-0 z))) - ) - (let* ((v1-13 (if (-> self has-shield?) - 145635.56 - 41870.223 - ) - ) - (f30-0 (-> self facing-y)) - (f0-6 (deg-seek-smooth f30-0 (-> self player-dir-y) (* v1-13 (seconds-per-frame)) 0.25)) - (f0-7 (deg- f0-6 f30-0)) - ) - (cond - ((< 18.204445 (fabs f0-7)) - (set! (-> self last-turn-speed) (* (fabs f0-7) (-> *display* frames-per-second))) - (quaternion-rotate-y! (-> self collide-info quat) (-> self collide-info quat) f0-7) - (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) - ) - (else - (set! (-> self last-turn-speed) 0.0) - ) - ) - ) - (let ((f0-10 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (cond - ((>= f0-10 106496.0) - (if (>= f0-10 237568.0) - (go-virtual nav-enemy-patrol) - ) - (go-virtual nav-enemy-chase) - ) - ((< 18432.0 f0-10) - (if (not (nav-enemy-method-55 self)) - (go-virtual nav-enemy-chase) - ) - (when (>= (-> self frustration) 256) - (set! (-> self frustration) 0) - (set! (-> self nav-enemy-patrol-timeout) (rand-vu-int-range (seconds 2) (seconds 5))) - (go-virtual nav-enemy-patrol) - ) - ) - ) - ) - (when (and (= (-> self proj-status) 2) - (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self state-time) (seconds 0.2)) - ) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (s5-2 (new 'stack-no-clear 'vector)) - ) - (nav-enemy-method-54 self s5-2) - (set! (-> gp-2 quad) (-> (target-pos 0) quad)) - (+! (-> gp-2 y) 4915.2) - (vector-! (-> self proj-launch-vec) gp-2 s5-2) - ) - (vector-normalize! (-> self proj-launch-vec) 1.0) - (if (not (ram-boss-method-51 self (-> self proj-launch-vec))) - (go ram-boss-throw) - ) - ) - 0 - ) - :code (behavior () - (let ((f30-0 -1.0)) - (loop - (set! f30-0 (ram-boss-method-57 self f30-0)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int (time-elapsed? (-> self state-time) (seconds 0.75)))) + (if (not *target*) (go-virtual nav-enemy-patrol)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-! gp-0 (target-pos 0) (-> self collide-info trans)) + (set! (-> self player-dir-y) (atan (-> gp-0 x) (-> gp-0 z)))) + (let* ((v1-13 (if (-> self has-shield?) 145635.56 41870.223)) + (f30-0 (-> self facing-y)) + (f0-6 (deg-seek-smooth f30-0 (-> self player-dir-y) (* v1-13 (seconds-per-frame)) 0.25)) + (f0-7 (deg- f0-6 f30-0))) (cond - ((< 5461.3335 (-> self last-turn-speed)) - (cond - ((-> self has-shield?) - (when (not (ja-group? ram-boss-forward-defend-tracking-ja)) - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-tracking-ja :num! min) - (ja :chan 1 :group! ram-boss-up-defend-tracking-ja :num! (chan 0) :frame-interp f30-0) - ) - ) - (else - (when (not (ja-group? ram-boss-forward-defend-tracking-no-shield-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-tracking-no-shield-ja :num! min) - ) - ) - ) - ) - ((-> self has-shield?) - (when (not (ja-group? ram-boss-forward-defend-ja)) - (ja-channel-push! 2 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-ja :num! min) - (ja :chan 1 :group! ram-boss-up-defend-ja :num! (chan 0) :frame-interp f30-0) - ) - ) - (else - (when (not (ja-group? ram-boss-forward-defend-no-shield-ja)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! ram-boss-forward-defend-no-shield-ja :num! min) - ) - ) - ) - (suspend) - (ja :num! (loop!)) - (if (= (ja-group-size) 2) - (ja :chan 1 :num! (chan 0) :frame-interp f30-0) - ) - ) - ) - ) - :post nav-enemy-simple-post - ) + ((< 18.204445 (fabs f0-7)) + (set! (-> self last-turn-speed) (* (fabs f0-7) (-> *display* frames-per-second))) + (quaternion-rotate-y! (-> self collide-info quat) (-> self collide-info quat) f0-7) + (set! (-> self facing-y) (quaternion-y-angle (-> self collide-info quat)))) + (else (set! (-> self last-turn-speed) 0.0)))) + (let ((f0-10 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (cond + ((>= f0-10 106496.0) (if (>= f0-10 237568.0) (go-virtual nav-enemy-patrol)) (go-virtual nav-enemy-chase)) + ((< 18432.0 f0-10) + (if (not (nav-enemy-method-55 self)) (go-virtual nav-enemy-chase)) + (when (>= (-> self frustration) 256) + (set! (-> self frustration) 0) + (set! (-> self nav-enemy-patrol-timeout) (rand-vu-int-range (seconds 2) (seconds 5))) + (go-virtual nav-enemy-patrol))))) + (when (and (= (-> self proj-status) 2) + (not (logtest? (-> *target* state-flags) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self state-time) (seconds 0.2))) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (s5-2 (new 'stack-no-clear 'vector))) + (nav-enemy-method-54 self s5-2) + (set! (-> gp-2 quad) (-> (target-pos 0) quad)) + (+! (-> gp-2 y) 4915.2) + (vector-! (-> self proj-launch-vec) gp-2 s5-2)) + (vector-normalize! (-> self proj-launch-vec) 1.0) + (if (not (ram-boss-method-51 self (-> self proj-launch-vec))) (go ram-boss-throw))) + 0) + :code + (behavior () + (let ((f30-0 -1.0)) + (loop (set! f30-0 (ram-boss-method-57 self f30-0)) + (cond + ((< 5461.3335 (-> self last-turn-speed)) + (cond + ((-> self has-shield?) + (when (not (ja-group? ram-boss-forward-defend-tracking-ja)) + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-tracking-ja :num! min) + (ja :chan 1 :group! ram-boss-up-defend-tracking-ja :num! (chan 0) :frame-interp f30-0))) + (else + (when (not (ja-group? ram-boss-forward-defend-tracking-no-shield-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-tracking-no-shield-ja :num! min))))) + ((-> self has-shield?) + (when (not (ja-group? ram-boss-forward-defend-ja)) + (ja-channel-push! 2 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-ja :num! min) + (ja :chan 1 :group! ram-boss-up-defend-ja :num! (chan 0) :frame-interp f30-0))) + (else + (when (not (ja-group? ram-boss-forward-defend-no-shield-ja)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! ram-boss-forward-defend-no-shield-ja :num! min)))) + (suspend) + (ja :num! (loop!)) + (if (= (ja-group-size) 2) (ja :chan 1 :num! (chan 0) :frame-interp f30-0))))) + :post nav-enemy-simple-post) (defstate ram-boss-forward-defend-block (ram-boss) - :enter (behavior () - (set! (-> self frustration) 0) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-forward-defend-block-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self frustration) 0) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-forward-defend-block-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate ram-boss-up-defend-block (ram-boss) - :enter (behavior () - (set! (-> self frustration) 0) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-up-defend-block-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self frustration) 0) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-up-defend-block-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate nav-enemy-victory (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler :enter #f :exit #f - :trans (behavior () - (when *target* - (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) - (if (and (>= 18432.0 f0-0) (-> self has-shield?)) - (go ram-boss-tracking) - ) - ) - ) - ) - :code (behavior () - (set! (-> self frustration) 0) - (ja-channel-push! 1 (seconds 0.075)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (go-virtual nav-enemy-attack) - ) - :post nav-enemy-simple-post - ) + :trans + (behavior () + (when *target* + (let ((f0-0 (vector-vector-distance (target-pos 0) (-> self collide-info trans)))) + (if (and (>= 18432.0 f0-0) (-> self has-shield?)) (go ram-boss-tracking))))) + :code + (behavior () + (set! (-> self frustration) 0) + (ja-channel-push! 1 (seconds 0.075)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! (seek! max f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (go-virtual nav-enemy-attack)) + :post nav-enemy-simple-post) (defstate nav-enemy-stare (ram-boss) :virtual #t :event ram-boss-on-ground-event-handler - :enter (behavior () - (go ram-boss-nav-resume) - ) - ) + :enter + (behavior () + (go ram-boss-nav-resume))) (defstate ram-boss-throw (ram-boss) :event ram-boss-on-ground-event-handler - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (let ((gp-0 (-> self child))) - (while gp-0 - (send-event (ppointer->process gp-0) 'launch) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (set-time! (-> self proj-last-thrown-time)) - ) - :trans (behavior () - (set-jump-height-factor! self (the-as int #t)) - 0 - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (cond - ((-> self has-shield?) - (ja-no-eval :group! ram-boss-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! ram-boss-throw-no-shield-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go ram-boss-tracking) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (let ((gp-0 (-> self child))) (while gp-0 (send-event (ppointer->process gp-0) 'launch) (set! gp-0 (-> gp-0 0 brother)))) + (set-time! (-> self proj-last-thrown-time))) + :trans + (behavior () + (set-jump-height-factor! self (the-as int #t)) + 0) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (cond + ((-> self has-shield?) + (ja-no-eval :group! ram-boss-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! ram-boss-throw-no-shield-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go ram-boss-tracking)) + :post nav-enemy-simple-post) (defstate ram-boss-lose-shield (ram-boss) - :enter (behavior () - (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) - (nav-enemy-neck-control-inactive) - (nav-enemy-method-53 self) - (init-jm! self *ram-boss-nav-enemy-info-no-shield*) - ) - :exit (behavior () - (nav-enemy-neck-control-look-at) - (set! (-> self has-shield?) #f) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 1) 1) - ) - (let ((v1-3 (-> self shield-jmod))) - (set! (-> v1-3 enable) #t) - (set! (-> v1-3 transform scale quad) (the-as uint128 0)) - ) - ) - :code (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) - (vector+! gp-0 (-> self collide-info trans) gp-0) - (set! (-> self nav target-pos quad) (-> gp-0 quad)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! ram-boss-lose-shield-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-1 (joint-node ram-boss-lod0-jg shield)) - (spawn (-> self part) gp-1) - ) - (suspend) - (ja :num! (seek!)) - ) - (go ram-boss-tracking) - ) - :post (behavior () - (compute-alignment! (-> self align)) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - (align-vel-and-quat-only! - (-> self align) - (align-opts adjust-xz-vel) - (-> self nav travel) - (the-as int 1.0) - 1.0 - (* (-> self enemy-info speed) (-> self speed-scale)) - ) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (nav-enemy-common-post) - ) - ) + :enter + (behavior () + (logior! (-> self nav-enemy-flags) (nav-enemy-flags navenmf2)) + (nav-enemy-neck-control-inactive) + (nav-enemy-method-53 self) + (init-jm! self *ram-boss-nav-enemy-info-no-shield*)) + :exit + (behavior () + (nav-enemy-neck-control-look-at) + (set! (-> self has-shield?) #f) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 1) 1)) + (let ((v1-3 (-> self shield-jmod))) (set! (-> v1-3 enable) #t) (set! (-> v1-3 transform scale quad) (the-as uint128 0)))) + :code + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-normalize-copy! gp-0 (-> self hit-from-dir) 16384.0) + (vector+! gp-0 (-> self collide-info trans) gp-0) + (set! (-> self nav target-pos quad) (-> gp-0 quad))) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! ram-boss-lose-shield-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-1 (joint-node ram-boss-lod0-jg shield)) + (spawn (-> self part) gp-1)) + (suspend) + (ja :num! (seek!))) + (go ram-boss-tracking)) + :post + (behavior () + (compute-alignment! (-> self align)) + (nav-control-method-11 (-> self nav) (-> self nav target-pos)) + (align-vel-and-quat-only! (-> self align) + (align-opts adjust-xz-vel) + (-> self nav travel) + (the-as int 1.0) + 1.0 + (* (-> self enemy-info speed) (-> self speed-scale))) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (align! (-> self align) (align-opts adjust-quat) 1.0 1.0 1.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (nav-enemy-common-post))) (defstate nav-enemy-die (ram-boss) :virtual #t - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (clear-collide-with-as (-> self collide-info)) - (nav-enemy-fall-and-play-death-anim - (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) - 1.0 - 1.0 - 1000000000000000.0 - 600 - ) - (send-event self 'death-end) - (send-event (ppointer->process (-> self parent-override)) 'notify) - (suspend) - 0 - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (clear-collide-with-as (-> self collide-info)) + (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) + 1.0 + 1.0 + 1000000000000000.0 + 600) + (send-event self 'death-end) + (send-event (ppointer->process (-> self parent-override)) 'notify) + (suspend) + 0)) diff --git a/goal_src/jak1/levels/snow/snow-ram-h.gc b/goal_src/jak1/levels/snow/snow-ram-h.gc index 02090b4cb1..259ab93965 100644 --- a/goal_src/jak1/levels/snow/snow-ram-h.gc +++ b/goal_src/jak1/levels/snow/snow-ram-h.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/game/game-h.gc") ;; name: snow-ram-h.gc @@ -11,22 +10,18 @@ ;; DECOMP BEGINS (deftype ram (process-drawable) - ((root collide-shape-moving :override) - (ram-id int32) - (give-fuel-cell? symbol) - (give-fuel-cell-anim spool-anim) - (part2 sparticle-launch-control) - (orient-ry float) - (fuel-cell-dest-pos vector :inline) - ) + ((root collide-shape-moving :override) + (ram-id int32) + (give-fuel-cell? symbol) + (give-fuel-cell-anim spool-anim) + (part2 sparticle-launch-control) + (orient-ry float) + (fuel-cell-dest-pos vector :inline)) (:methods - (ram-method-20 (_type_) object) - (ram-method-21 (_type_) object) - (ram-method-22 (_type_) symbol) - ) + (ram-method-20 (_type_) object) + (ram-method-21 (_type_) object) + (ram-method-22 (_type_) symbol)) (:states - ram-fun-idle - ram-give-fuel-cell - ram-idle - ) - ) + ram-fun-idle + ram-give-fuel-cell + ram-idle)) diff --git a/goal_src/jak1/levels/snow/snow-ram.gc b/goal_src/jak1/levels/snow/snow-ram.gc index c667d1378b..8145a00b01 100644 --- a/goal_src/jak1/levels/snow/snow-ram.gc +++ b/goal_src/jak1/levels/snow/snow-ram.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "levels/snow/snow-ram-h.gc") (require "levels/snow/snow-ram-boss.gc") (require "levels/snow/snow-obs.gc") @@ -12,126 +11,116 @@ ;; DECOMP BEGINS -(defskelgroup *ram-sg* ram ram-lod0-jg ram-cock-ja - ((ram-lod0-mg (meters 20)) (ram-lod1-mg (meters 40)) (ram-lod2-mg (meters 999999))) - :bounds (static-spherem 0 5 0 8.5) - :longest-edge (meters 7.7) - ) +(defskelgroup *ram-sg* + ram + ram-lod0-jg + ram-cock-ja + ((ram-lod0-mg (meters 20)) (ram-lod1-mg (meters 40)) (ram-lod2-mg (meters 999999))) + :bounds (static-spherem 0 5 0 8.5) + :longest-edge (meters 7.7)) (defpartgroup group-ram-hit-wall :id 526 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1921) (sp-item 1922 :fade-after (meters 60) :falloff-to (meters 60))) - ) + :parts ((sp-item 1921) (sp-item 1922 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1920 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 64.0 16.0) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 16.0) - (:g 128.0 48.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters -0.00066666666)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.005) (meters 0.0033333334)) - (:friction 0.92 0.05) - (:timer (seconds 0.7)) - (:flags (bit0 bit3 bit12)) - (:conerot-x (degrees 0) (degrees 170)) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 64.0 16.0) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 16.0) + (:g 128.0 48.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters -0.00066666666)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.005) (meters 0.0033333334)) + (:friction 0.92 0.05) + (:timer (seconds 0.7)) + (:flags (bit0 bit3 bit12)) + (:conerot-x (degrees 0) (degrees 170)) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1922 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:scale-x (meters 3) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.60952383) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3 bit12)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:scale-x (meters 3) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.60952383) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3 bit12)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 180)))) (defpart 1921 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 96.0) - (:fade-a -2.1333334) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 96.0) + (:fade-a -2.1333334) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)))) (defpartgroup group-ram-wheel-puffs :id 527 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1923 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1923 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1923 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0) (meters 0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.26666668) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.4)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0) (meters 0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.26666668) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.4)) + (:flags (bit2)))) (defmethod ram-method-20 ((this ram)) (let ((gp-0 (-> this part))) (when (nonzero? gp-0) (let ((a2-0 (-> this node-list data 8 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 0.0 0.0 -49152.0 1.0) (vector-matrix*! s5-0 s5-0 a2-0) (set! (-> *part-id-table* 1920 init-specs 16 initial-valuef) (+ 16384.0 (-> this orient-ry))) - (spawn gp-0 s5-0) - ) - ) - ) - ) + (spawn gp-0 s5-0))))) (defmethod ram-method-21 ((this ram)) (let ((gp-0 (-> this part2))) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (vector<-cspace! s3-0 (-> this node-list data 5)) (set-vector! s4-0 13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-0 s4-0 (-> this orient-ry)) @@ -140,11 +129,9 @@ (set-vector! s4-0 -13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-0 s4-0 (-> this orient-ry)) (vector+! s4-0 s4-0 s3-0) - (spawn gp-0 s4-0) - ) + (spawn gp-0 s4-0)) (let ((s3-1 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector<-cspace! s3-1 (-> this node-list data 6)) (set-vector! s4-1 13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-1 s4-1 (-> this orient-ry)) @@ -153,10 +140,7 @@ (set-vector! s4-1 -13312.0 -5324.8 0.0 1.0) (vector-rotate-around-y! s4-1 s4-1 (-> this orient-ry)) (vector+! s4-1 s4-1 s3-1) - (spawn gp-0 s4-1) - ) - ) - ) + (spawn gp-0 s4-1)))) (defmethod ram-method-22 ((this ram)) (process-entity-status! this (entity-perm-status complete) #t) @@ -165,185 +149,123 @@ ((zero? v1-0) (let ((v1-3 (-> this entity extra perm))) (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-3 user-int8 2) 1) - ) - (if (not (task-complete? *game-info* (-> this entity extra perm task))) - (return #t) - ) - ) - ((= v1-0 1) - (close-specific-task! (game-task snow-ram) (task-status need-reminder)) - ) - (else - (close-specific-task! (game-task snow-ram) (task-status need-reminder-a)) - ) - ) - ) - #f - ) + (set! (-> v1-3 user-int8 2) 1)) + (if (not (task-complete? *game-info* (-> this entity extra perm task))) (return #t))) + ((= v1-0 1) (close-specific-task! (game-task snow-ram) (task-status need-reminder))) + (else (close-specific-task! (game-task snow-ram) (task-status need-reminder-a))))) + #f) (defstate ram-idle (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (-> self root) - (the-as uint 1) - ) - (send-event - proc - 'attack - (-> block param 0) - (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2)))) - ) - ) - ) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (rider-trans) - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) - ) - ) - :code (behavior () - (local-vars (sv-16 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (loop - (sound-play "set-ram") - (ja-no-eval :group! ram-cock-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 #f)) - (sound-play "slam-crash") - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-no-eval :group! ram-release-ja :num! (seek!) :frame-num 0.0) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (if ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (-> self root) + (the-as uint 1)) + (send-event proc 'attack (-> block param 0) (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 2))))))))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (rider-trans) + (if (-> self give-fuel-cell-anim) (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0))) + :code + (behavior () + (local-vars (sv-16 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (loop (sound-play "set-ram") + (ja-no-eval :group! ram-cock-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (let ((f30-0 (ja-aframe-num 0))) - (when (and (not gp-1) (>= f30-0 61.0)) - (set! gp-1 #t) - (ram-method-20 self) - ) - (if (and (>= f30-0 62.0) (< f30-0 97.0)) - (ram-method-21 self) - ) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (logior! (-> self mask) (process-mask actor-pause)) - (set! sv-16 (the-as symbol #f)) - (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) - (when (or sv-16 (nonzero? (-> self root riders num-riders))) - (let ((v1-67 (-> self entity extra perm))) - (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-67 user-int8 0) 1) - ) - (send-event (ppointer->process (-> self child)) 'jump) - (go ram-fun-idle) - ) - ) - ) - :post rider-post - ) + (ja :num! (seek!))) + (let ((gp-1 #f)) + (sound-play "slam-crash") + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-no-eval :group! ram-release-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (let ((f30-0 (ja-aframe-num 0))) + (when (and (not gp-1) (>= f30-0 61.0)) + (set! gp-1 #t) + (ram-method-20 self)) + (if (and (>= f30-0 62.0) (< f30-0 97.0)) (ram-method-21 self))) + (suspend) + (ja :num! (seek!)))) + (logior! (-> self mask) (process-mask actor-pause)) + (set! sv-16 (the-as symbol #f)) + (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) + (when (or sv-16 (nonzero? (-> self root riders num-riders))) + (let ((v1-67 (-> self entity extra perm))) + (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-67 user-int8 0) 1)) + (send-event (ppointer->process (-> self child)) 'jump) + (go ram-fun-idle)))) + :post rider-post) (defstate ram-fun-idle (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) ram-boss) - (if (ram-method-22 self) - (go ram-give-fuel-cell) - ) - ) - ) - ) - ) - :trans (behavior () - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) - ) - ) - :code (behavior () - (if (-> self give-fuel-cell?) - (go ram-give-fuel-cell) - ) - (ja-channel-push! 1 0) - (ja :group! ram-idle-ja :num! min) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) - -(defstate ram-give-fuel-cell (ram) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (and (= (-> proc type) snowcam) (= (-> block param 0) 'die)) - (go ram-fun-idle) - ) - ) - ) - ) - :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - ) - :code (behavior () - (set! (-> self give-fuel-cell?) #f) - (ja-channel-push! 1 0) - (ja :group! ram-idle-ja :num! min) - (transform-post) - (when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let ((v1-14 (process-spawn - snowcam - :init pov-camera-init-by-other - (-> self root trans) - *snowcam-sg* - (-> self give-fuel-cell-anim) - 0 - self - '() - :to self - ) - ) - ) - (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1)) - ) - (sound-play "cell-prize") + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (when (= (-> proc type) ram-boss) (if (ram-method-22 self) (go ram-give-fuel-cell)))))) + :trans + (behavior () + (if (-> self give-fuel-cell-anim) (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0))) + :code + (behavior () + (if (-> self give-fuel-cell?) (go ram-give-fuel-cell)) + (ja-channel-push! 1 0) + (ja :group! ram-idle-ja :num! min) + (transform-post) (logior! (-> self mask) (process-mask sleep-code)) (suspend) - 0 - ) - (go ram-fun-idle) - ) - ) + 0)) + +(defstate ram-give-fuel-cell (ram) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (if (and (= (-> proc type) snowcam) (= (-> block param 0) 'die)) (go ram-fun-idle))))) + :exit + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause))) + :code + (behavior () + (set! (-> self give-fuel-cell?) #f) + (ja-channel-push! 1 0) + (ja :group! ram-idle-ja :num! min) + (transform-post) + (when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let ((v1-14 (process-spawn snowcam + :init + pov-camera-init-by-other + (-> self root trans) + *snowcam-sg* + (-> self give-fuel-cell-anim) + 0 + self + () + :to + self))) + (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1))) + (sound-play "cell-prize") + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0) + (go ram-fun-idle))) (defmethod deactivate ((this ram)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this ram) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as ram ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as ram ((method-of-type process-drawable relocate) this arg0))) (defmethod init-from-entity! ((this ram) (arg0 entity-actor)) (set! (-> this give-fuel-cell?) #f) @@ -351,9 +273,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -368,8 +288,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -377,23 +296,19 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) 20480.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *ram-sg* '()) + (initialize-skeleton this *ram-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-post) (update-transforms! (-> this root)) @@ -405,67 +320,36 @@ (case (-> this ram-id) ((1) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list ())) + (set-vector! (-> this fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0)) ((2) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list ())) + (set-vector! (-> this fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0)) ((3) (set! (-> this give-fuel-cell-anim) - (new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '()) - ) - (set-vector! (-> this fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0) - ) - (else - (set! (-> this give-fuel-cell-anim) #f) - ) - ) + (new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list ())) + (set-vector! (-> this fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0)) + (else (set! (-> this give-fuel-cell-anim) #f))) (let ((s4-1 #f)) - (if (nonzero? (-> this entity extra perm user-int8 0)) - (set! s4-1 #t) - ) + (if (nonzero? (-> this entity extra perm user-int8 0)) (set! s4-1 #t)) (let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1))) (when (not s3-1) (when (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) (set! s3-1 #t) (if (and (nonzero? (-> this entity extra perm user-int8 2)) - (not (task-complete? *game-info* (-> this entity extra perm task))) - ) - (birth-pickup-at-point - (-> this fuel-cell-dest-pos) - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - (go ram-fun-idle) - ) - ) + (not (task-complete? *game-info* (-> this entity extra perm task)))) + (birth-pickup-at-point (-> this fuel-cell-dest-pos) + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))) + (go ram-fun-idle))) (cond ((and (not s3-1) (has-nav-mesh? arg0)) (cond - (s4-1 - (process-spawn ram-boss (-> this entity) this #t :to this) - (go ram-fun-idle) - ) - (else - (process-spawn ram-boss (-> this entity) this #f :to this) - (go ram-idle) - ) - ) - ) - (else - (go ram-fun-idle) - ) - ) - ) - ) - (none) - ) + (s4-1 (process-spawn ram-boss (-> this entity) this #t :to this) (go ram-fun-idle)) + (else (process-spawn ram-boss (-> this entity) this #f :to this) (go ram-idle)))) + (else (go ram-fun-idle))))) + (none)) diff --git a/goal_src/jak1/levels/snow/target-ice.gc b/goal_src/jak1/levels/snow/target-ice.gc index 88b6657500..0e3248d30c 100644 --- a/goal_src/jak1/levels/snow/target-ice.gc +++ b/goal_src/jak1/levels/snow/target-ice.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/target/target-handler.gc") ;; name: target-ice.gc @@ -12,315 +11,206 @@ (defstate target-ice-stance (target) :event target-standard-event-handler - :enter (behavior () - (set! (-> self control unknown-surface00) *walk-mods*) - ) + :enter + (behavior () + (set! (-> self control unknown-surface00) *walk-mods*)) :exit target-state-hook-exit - :trans (behavior () - ((-> self state-hook)) - (if (!= (-> self control ground-pat material) (pat-material ice)) - (go target-stance) - ) - (when (move-legs?) - (remove-exit) - (go target-ice-walk) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (remove-exit) - (go target-duck-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (let ((gp-0 60)) - (let ((v1-2 (ja-group))) - (cond - ((or (= v1-2 eichar-jump-ja) (= v1-2 eichar-jump-loop-ja)) - (set! gp-0 21) - ) - ((ja-group? eichar-wheel-flip-ja) - (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-attack-from-stance-ja) - (cond - ((rand-vu-percent? 0.3) - (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ((ja-group? eichar-smack-surface-ja) - (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((ja-group? eichar-yellow-running-blast-ja) - (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! gp-0 0) - ) - ((ja-group? eichar-attack-punch-ja) - (set! (-> self control unknown-float81) (-> self control unknown-float80)) - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (ja-no-eval :group! (if (rand-vu-percent? 0.3) - eichar-attack-punch-alt-end-ja - eichar-attack-punch-end-ja - ) - :num! (seek!) - :frame-num 0.0 - ) - (until (ja-done? 0) - (seek! (-> self control unknown-float81) 0.0 (seconds-per-frame)) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control unknown-float81) 0.0) - (rot->dir-targ! (-> self control)) - ) - ((let ((v1-188 (ja-group))) - (or (= v1-188 eichar-duck-stance-ja) (= v1-188 eichar-duck-walk-ja)) - ) - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0 1.2)) - ) - (set! gp-0 60) - ) - ) - ) - (while (< 16384.0 (-> self control unknown-float01)) - (cond - ((ja-group? eichar-ice-slide-ja) - ) - (else - (ja-channel-push! 1 (the-as time-frame gp-0)) - (set! gp-0 150) - (ja :group! eichar-ice-slide-ja) - ) - ) - (suspend) - (ja :num! (loop!)) - ) - (when (not (ja-group? eichar-ice-stance-ja)) - (ja-channel-push! 1 (the-as time-frame gp-0)) - (ja :group! eichar-ice-stance-ja) - ) - ) - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post target-post - ) - -(defstate target-ice-walk (target) - :event target-standard-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self control unknown-surface00) *walk-mods*) - ) - :exit (behavior () - (target-effect-exit) - (target-state-hook-exit) - ) - :trans (behavior () - ((-> self state-hook)) - (when (!= (-> self control ground-pat material) (pat-material ice)) - (remove-exit) - (go target-walk) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons l1 r1) - ) - (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) - (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)) - ) - ) - (go target-wheel) - ) - (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) - (target-effect-exit) - (remove-exit) - (go target-duck-stance) - ) - (when (and (not (move-legs?)) (let ((gp-0 (ja-group)) - (f0-1 (ja-aframe-num 0)) - ) - (if (and (= gp-0 eichar-ice-skate-ja) (>= f0-1 30.0) (>= 35.0 f0-1)) - #t - ) - ) - ) - (target-effect-exit) - (remove-exit) - (go target-ice-stance) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) - ) - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons circle) - ) - (can-feet?) - ) - (go target-attack) - ) - (if (can-hands? #t) - (go target-running-attack) - ) - (slide-down-test) - (fall-test) - ) - :code (behavior () - (cond - ((ja-group? eichar-walk-ja) - (let ((f30-0 (ja-aframe-num 0))) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity f30-0)) - ) - ) - ((ja-group? eichar-ice-skate-ja) - ) - (else - (let ((v1-18 (ja-group))) + :trans + (behavior () + ((-> self state-hook)) + (if (!= (-> self control ground-pat material) (pat-material ice)) (go target-stance)) + (when (move-legs?) + (remove-exit) + (go target-ice-walk)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (remove-exit) + (go target-duck-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (let ((gp-0 60)) + (let ((v1-2 (ja-group))) (cond - ((or (= v1-18 eichar-attack-punch-end-ja) (= v1-18 eichar-attack-punch-alt-end-ja)) - (set! (-> self control unknown-float81) (-> self control unknown-float80)) - (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (while (< (ja-aframe-num 0) 42.0) + ((or (= v1-2 eichar-jump-ja) (= v1-2 eichar-jump-loop-ja)) (set! gp-0 21)) + ((ja-group? eichar-wheel-flip-ja) + (ja-no-eval :group! eichar-wheel-flip-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control unknown-float81) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (ja :num! (seek!)))) + ((ja-group? eichar-attack-from-stance-ja) + (cond + ((rand-vu-percent? 0.3) + (ja-no-eval :group! eichar-attack-from-stance-alt-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! eichar-attack-from-stance-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))) + ((ja-group? eichar-smack-surface-ja) + (ja-no-eval :group! eichar-smack-surface-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) + (ja :num! (seek!)))) + ((ja-group? eichar-yellow-running-blast-ja) + (ja-no-eval :group! eichar-yellow-running-blast-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! gp-0 0)) ((ja-group? eichar-attack-punch-ja) (set! (-> self control unknown-float81) (-> self control unknown-float80)) (set! (-> self control unknown-surface00) *walk-no-turn-mods*) - (ja-no-eval :group! eichar-attack-punch-end-ja :num! (seek! (ja-aframe 42.0 0)) :frame-num 0.0) + (ja-no-eval :group! + (if (rand-vu-percent? 0.3) eichar-attack-punch-alt-end-ja eichar-attack-punch-end-ja) + :num! (seek!) + :frame-num 0.0) (until (ja-done? 0) + (seek! (-> self control unknown-float81) 0.0 (seconds-per-frame)) (suspend) - (ja :num! (seek! (ja-aframe 42.0 0))) - ) + (ja :num! (seek!))) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self control unknown-float81) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) - (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (rot->dir-targ! (-> self control))) + ((let ((v1-188 (ja-group))) (or (= v1-188 eichar-duck-stance-ja) (= v1-188 eichar-duck-walk-ja))) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-stance-to-duck-ja :num! (seek! 0.0 1.2) :frame-num max) + (until (ja-done? 0) (suspend) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! eichar-ice-skate-ja) - ) - ) - ) - ) - ) - (loop - (suspend) - (let* ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control unknown-vector01) 1.0)) - ;; og:preserve-this modified to avoid dividing by zero when jak's speed is 0. - ;; this fixes the issue where jak gets stuck on frame 60 of the ice-walk animation - ;; instead of switching to stance (due to making zero progress here), - ;; _and_ it fixes the issue where we get a NaN frame number in daxter, causing the eye animation - ;; to read bogus memory. - (vector01-len (vector-length (-> self control unknown-vector01))) - (gp-6 (vector-float*! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector00) - ;; og:preserve-this - (/ 1.0 (if (= vector01-len 0) 0.001 vector01-len)) ;; added the .001 case here. - ) - ) - (f0-18 (fmax -1.0 (fmin 1.0 (vector-dot s5-0 gp-6)))) - ) - (ja :num! (loop! (cond - ((< f0-18 0.0) - (lerp-scale 2.0 1.0 f0-18 -1.0 0.5) - ) - ((< 0.5 f0-18) - (lerp-scale 1.0 0.75 f0-18 0.5 1.0) - ) - (else - (lerp-scale 1.33 1.0 f0-18 0.0 0.5) - ) - ) - ) - ) - ) - ) - ) - :post target-post - ) + (ja :num! (seek! 0.0 1.2))) + (set! gp-0 60)))) + (while (< 16384.0 (-> self control unknown-float01)) + (cond + ((ja-group? eichar-ice-slide-ja)) + (else (ja-channel-push! 1 (the-as time-frame gp-0)) (set! gp-0 150) (ja :group! eichar-ice-slide-ja))) + (suspend) + (ja :num! (loop!))) + (when (not (ja-group? eichar-ice-stance-ja)) + (ja-channel-push! 1 (the-as time-frame gp-0)) + (ja :group! eichar-ice-stance-ja))) + (loop (suspend) + (ja :num! (loop!)))) + :post target-post) + +(defstate target-ice-walk (target) + :event target-standard-event-handler + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self control unknown-surface00) *walk-mods*)) + :exit + (behavior () + (target-effect-exit) + (target-state-hook-exit)) + :trans + (behavior () + ((-> self state-hook)) + (when (!= (-> self control ground-pat material) (pat-material ice)) + (remove-exit) + (go target-walk)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons l1 r1)) + (and (time-elapsed? (-> *TARGET-bank* wheel-timeout) (-> self control unknown-dword30)) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (can-wheel?)))) + (go target-wheel)) + (when (and (cpad-hold? (-> self control unknown-cpad-info00 number) l1 r1) (can-duck?)) + (target-effect-exit) + (remove-exit) + (go target-duck-stance)) + (when (and (not (move-legs?)) + (let ((gp-0 (ja-group)) + (f0-1 (ja-aframe-num 0))) + (if (and (= gp-0 eichar-ice-skate-ja) (>= f0-1 30.0) (>= 35.0 f0-1)) #t))) + (target-effect-exit) + (remove-exit) + (go target-ice-stance)) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f))) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons circle)) + (can-feet?)) + (go target-attack)) + (if (can-hands? #t) (go target-running-attack)) + (slide-down-test) + (fall-test)) + :code + (behavior () + (cond + ((ja-group? eichar-walk-ja) + (let ((f30-0 (ja-aframe-num 0))) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity f30-0)))) + ((ja-group? eichar-ice-skate-ja)) + (else + (let ((v1-18 (ja-group))) + (cond + ((or (= v1-18 eichar-attack-punch-end-ja) (= v1-18 eichar-attack-punch-alt-end-ja)) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (while (< (ja-aframe-num 0) 42.0) + (suspend) + (ja :num! (seek!))) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend))) + ((ja-group? eichar-attack-punch-ja) + (set! (-> self control unknown-float81) (-> self control unknown-float80)) + (set! (-> self control unknown-surface00) *walk-no-turn-mods*) + (ja-no-eval :group! eichar-attack-punch-end-ja :num! (seek! (ja-aframe 42.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 42.0 0)))) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control unknown-float81) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! eichar-ice-skate-ja :num! (identity (ja-aframe 34.0 0))) + (while (!= (-> self skel root-channel 0) (-> self skel channel)) + (suspend))) + (else (ja-channel-push! 1 (seconds 0.05)) (ja :group! eichar-ice-skate-ja)))))) + (loop (suspend) + (let* ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control unknown-vector01) 1.0)) + ;; og:preserve-this modified to avoid dividing by zero when jak's speed is 0. + ;; this fixes the issue where jak gets stuck on frame 60 of the ice-walk animation + ;; instead of switching to stance (due to making zero progress here), + ;; _and_ it fixes the issue where we get a NaN frame number in daxter, causing the eye animation + ;; to read bogus memory. + (vector01-len (vector-length (-> self control unknown-vector01))) + (gp-6 (vector-float*! (new 'stack-no-clear 'vector) + (-> self control unknown-vector00) + ;; og:preserve-this + (/ 1.0 (if (= vector01-len 0) 0.001 vector01-len)) ;; added the .001 case here. + )) + (f0-18 (fmax -1.0 (fmin 1.0 (vector-dot s5-0 gp-6))))) + (ja :num! + (loop! (cond + ((< f0-18 0.0) (lerp-scale 2.0 1.0 f0-18 -1.0 0.5)) + ((< 0.5 f0-18) (lerp-scale 1.0 0.75 f0-18 0.5 1.0)) + (else (lerp-scale 1.33 1.0 f0-18 0.0 0.5)))))))) + :post target-post) diff --git a/goal_src/jak1/levels/snow/target-snowball.gc b/goal_src/jak1/levels/snow/target-snowball.gc index 7b85bf56a1..3afa5b9f10 100644 --- a/goal_src/jak1/levels/snow/target-snowball.gc +++ b/goal_src/jak1/levels/snow/target-snowball.gc @@ -1,26 +1,18 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/target/logic-target.gc") ;; name: target-snowball.gc ;; name in dgo: target-snowball ;; dgos: L1, SNO - ;; DECOMP BEGINS (deftype snowball-info (basic) - ((entity basic) - ) - ) - - -(deftype snowball-bank (basic) - () - ) + ((entity basic))) +(deftype snowball-bank (basic) ()) (define *SNOWBALL-bank* (new 'static 'snowball-bank)) @@ -32,92 +24,67 @@ (flag-setup) (build-conversions (-> self control transv)) (reverse-conversions (-> self control transv)) - (post-flag-setup) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (post-flag-setup)) + (set-time-ratios *display* (the float gp-0))) (rot->dir-targ! (-> self control)) (ja-post) (joint-points) (do-target-shadow) (target-powerup-process) 0 - (none) - ) + (none)) (defstate target-snowball-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'snowball - ) - ((let ((v1-3 message)) - (= v1-3 'end-mode) - ) - (go - target-jump - (-> *TARGET-bank* duck-jump-height-min) - (-> *TARGET-bank* duck-jump-height-max) - (the-as surface #f) - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :exit (behavior () - (when (!= (-> self next-state name) 'target-snowball) - (let ((v1-1 (-> self manipy))) - (when v1-1 - (deactivate (-> v1-1 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (logclear! (-> self control root-prim prim-core action) (collide-action snowball)) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'snowball) + ((let ((v1-3 message)) (= v1-3 'end-mode)) + (go target-jump (-> *TARGET-bank* duck-jump-height-min) (-> *TARGET-bank* duck-jump-height-max) (the-as surface #f))) + (else (target-generic-event-handler proc argc message block)))) + :exit + (behavior () + (when (!= (-> self next-state name) 'target-snowball) + (let ((v1-1 (-> self manipy))) + (when v1-1 + (deactivate (-> v1-1 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (logclear! (-> self control root-prim prim-core action) (collide-action snowball)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (target-exit))) + :code + (behavior ((arg0 handle)) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (if (zero? (-> self snowball)) - (set! (-> self snowball) (new 'process 'snowball-info)) - ) - (set! (-> self snowball entity) #f) - (let ((a0-2 (handle->process arg0))) - (if a0-2 - (set! (-> self snowball entity) (-> a0-2 entity)) - ) - ) - (reset-target-state #t) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (move-by-vector! (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) - (logior! (-> self control root-prim prim-core action) (collide-action snowball)) - (ja-channel-set! 1) - (ja :group! eichar-stance-loop-ja :num! min) - (remove-exit) - (go target-snowball) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (if (zero? (-> self snowball)) (set! (-> self snowball) (new 'process 'snowball-info))) + (set! (-> self snowball entity) #f) + (let ((a0-2 (handle->process arg0))) (if a0-2 (set! (-> self snowball entity) (-> a0-2 entity)))) + (reset-target-state #t) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (move-by-vector! (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) + (logior! (-> self control root-prim prim-core action) (collide-action snowball)) + (ja-channel-set! 1) + (ja :group! eichar-stance-loop-ja :num! min) + (remove-exit) + (go target-snowball)) + :post target-post) (defstate target-snowball (target) - :event (-> target-snowball-start event) - :exit (-> target-snowball-start exit) - :code (behavior () - (loop - (suspend) - ) - ) - :post (behavior () - (target-snowball-post) - ) - ) + :event + (-> target-snowball-start + event) + :exit + (-> target-snowball-start + exit) + :code + (behavior () + (loop (suspend))) + :post + (behavior () + (target-snowball-post))) diff --git a/goal_src/jak1/levels/snow/yeti.gc b/goal_src/jak1/levels/snow/yeti.gc index 7e98b87e5b..4c483df607 100644 --- a/goal_src/jak1/levels/snow/yeti.gc +++ b/goal_src/jak1/levels/snow/yeti.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SNO.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: yeti.gc @@ -9,470 +8,384 @@ ;; dgos: L1, SNO (declare-type yeti process-drawable) + (declare-type yeti-slave nav-enemy) ;; DECOMP BEGINS (deftype yeti-slave (nav-enemy) - ((ground-y float) - (part2 sparticle-launch-control) - ) + ((ground-y float) + (part2 sparticle-launch-control)) (:states - yeti-slave-appear-jump-up - yeti-slave-appear-land - yeti-slave-show-anims - ) - ) - + yeti-slave-appear-jump-up + yeti-slave-appear-land + yeti-slave-show-anims)) (deftype yeti (process-drawable) - ((child-process (pointer yeti-slave) :overlay-at child) - (desired-num-children int32) - (spawn-delay int32) - (first-time-spawn-dist float) - (unknown basic) - (unknown1 basic) - (unknown2 basic) - ) + ((child-process (pointer yeti-slave) :overlay-at child) + (desired-num-children int32) + (spawn-delay int32) + (first-time-spawn-dist float) + (unknown basic) + (unknown1 basic) + (unknown2 basic)) (:methods - (yeti-method-20 (_type_ vector vector) symbol) - (aggro? (_type_ vector) symbol) - ) + (yeti-method-20 (_type_ vector vector) symbol) + (aggro? (_type_ vector) symbol)) (:states - yeti-first-time-start - yeti-idle - yeti-resuming-start - ) - ) + yeti-first-time-start + yeti-idle + yeti-resuming-start)) +(defskelgroup *yeti-sg* + yeti + yeti-lod0-jg + -1 + ((yeti-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0.75 0 3.9) + :longest-edge (meters 1.3)) -(defskelgroup *yeti-sg* yeti yeti-lod0-jg -1 - ((yeti-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0.75 0 3.9) - :longest-edge (meters 1.3) - ) - -(define *yeti-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 2 - :walk-anim 3 - :turn-anim -1 - :notice-anim 4 - :run-anim 5 - :jump-anim 10 - :jump-land-anim 11 - :victory-anim 8 - :taunt-anim 8 - :die-anim 9 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *yeti-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 2 + :walk-anim 3 + :turn-anim -1 + :notice-anim 4 + :run-anim 5 + :jump-anim 10 + :jump-land-anim 11 + :victory-anim 8 + :taunt-anim 8 + :die-anim 9 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defpartgroup group-yeti-slave-appear1 :id 538 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1928 :fade-after (meters 70) :falloff-to (meters 70)) - (sp-item 1929 :fade-after (meters 70) :falloff-to (meters 70)) - ) - ) + :parts + ((sp-item 1928 :fade-after (meters 70) :falloff-to (meters 70)) + (sp-item 1929 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1929 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 16.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.24) (meters 0.24)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:vel-y (meters 0.033333335) (meters 0.05)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 16.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.24) (meters 0.24)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:vel-y (meters 0.033333335) (meters 0.05)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1928 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 32.0) - (:x (meters -2) (meters 4)) - (:y (meters 0.5) (meters 1)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 2.5) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.05) (meters 0.016666668)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters -0.0013333333)) - (:friction 0.99) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 32.0) + (:x (meters -2) (meters 4)) + (:y (meters 0.5) (meters 1)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 2.5) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.05) (meters 0.016666668)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters -0.0013333333)) + (:friction 0.99) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-yeti-slave-appear2 :id 539 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 1930 :fade-after (meters 70) :falloff-to (meters 70))) - ) + :parts ((sp-item 1930 :fade-after (meters 70) :falloff-to (meters 70)))) (defpart 1930 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 1.0 2.0) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0) (meters 0.006666667)) - (:rotvel-z (degrees -2.4) (degrees 3.4666667)) - (:accel-y (meters -0.0013333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 1.0 2.0) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0) (meters 0.006666667)) + (:rotvel-z (degrees -2.4) (degrees 3.4666667)) + (:accel-y (meters -0.0013333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defbehavior yeti-slave-default-event-handler yeti-slave ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (nav-enemy-set-hit-from-direction arg0) - (go-virtual nav-enemy-die) - ) - (('touch) - (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic) - ) - ) - ) + (('attack) (nav-enemy-set-hit-from-direction arg0) (go-virtual nav-enemy-die)) + (('touch) (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 'generic)))) (defstate yeti-slave-appear-jump-up (yeti-slave) :event yeti-slave-default-event-handler - :enter (behavior () - (nav-enemy-neck-control-inactive) - (set-time! (-> self state-time)) - (if (-> self nav-info move-to-ground) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) - (set! (-> self state-timeout) (seconds 1)) - (set! (-> self ground-y) (-> self collide-info trans y)) - (spawn (-> self part) (-> self collide-info trans)) - (+! (-> self collide-info trans y) -12288.0) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0)) - ) - :trans (behavior () - (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) - (set! (-> self collide-info trans y) (-> self ground-y)) + :enter + (behavior () + (nav-enemy-neck-control-inactive) + (set-time! (-> self state-time)) + (if (-> self nav-info move-to-ground) (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags navenmf1 navenmf2)) + (set! (-> self state-timeout) (seconds 1)) + (set! (-> self ground-y) (-> self collide-info trans y)) + (spawn (-> self part) (-> self collide-info trans)) + (+! (-> self collide-info trans y) -12288.0) (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (go yeti-slave-appear-land) - ) - (let* ((s5-0 (-> self node-list)) - (a0-2 (-> s5-0 length)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) - (spawn (-> self part2) gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! yeti-jump-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (loop - (suspend) - ) - ) - :post nav-enemy-falling-post - ) + (set! (-> self collide-info transv y) (rand-vu-float-range 102400.0 114688.0))) + :trans + (behavior () + (when (and (< (-> self collide-info trans y) (-> self ground-y)) (< (-> self collide-info transv y) 0.0)) + (set! (-> self collide-info trans y) (-> self ground-y)) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (go yeti-slave-appear-land)) + (let* ((s5-0 (-> self node-list)) + (a0-2 (-> s5-0 length)) + (gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (-> s5-0 data (nav-enemy-rnd-int-count a0-2))) + (spawn (-> self part2) gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! yeti-jump-ja :num! (seek!) :frame-num (ja-aframe 10.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (loop (suspend))) + :post nav-enemy-falling-post) (defstate yeti-slave-appear-land (yeti-slave) :event yeti-slave-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.05)) - (ja-no-eval :group! yeti-jump-land-ja :num! (seek! max 0.5) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.5)) - ) - (if (target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - (go-virtual nav-enemy-idle) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.05)) + (ja-no-eval :group! yeti-jump-land-ja :num! (seek! max 0.5) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.5))) + (if (target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase) (go-virtual nav-enemy-idle))) + :post ja-post) (defstate yeti-slave-show-anims (yeti-slave) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate nav-enemy-patrol (yeti-slave) :virtual #t - :code (behavior () - (cond - ((ja-group? yeti-give-up-hop-ja) - (ja-channel-push! 1 (seconds 0.15)) - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - (loop - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (nav-enemy-rnd-percent? 0.2) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (let ((gp-1 (nav-enemy-rnd-int-range 2 6))) - (dotimes (s5-0 gp-1) - (ja-no-eval :group! yeti-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.6)) - (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) + :code + (behavior () + (cond + ((ja-group? yeti-give-up-hop-ja) + (ja-channel-push! 1 (seconds 0.15)) + (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num (ja-aframe 12.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else (ja-channel-push! 1 (seconds 0.2)))) + (loop (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (ja-blend-eval) (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))) + (when (nav-enemy-rnd-percent? 0.2) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (let ((gp-1 (nav-enemy-rnd-int-range 2 6))) + (dotimes (s5-0 gp-1) + (ja-no-eval :group! yeti-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))))) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-rotate)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.6)) + (ja-no-eval :group! yeti-walk-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek!))))))) (defstate nav-enemy-chase (yeti-slave) :virtual #t - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (cond - ((ja-group? yeti-jump-land-ja) - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (else - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - ) - ) - (loop - (suspend) - (ja :num! (loop! f30-0)) - ) - ) - ) - ) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (cond + ((ja-group? yeti-jump-land-ja) + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! (-> self draw art-group data (-> self nav-info run-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! max f30-0)))) + (else + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info run-anim))) + (ja :num-func num-func-identity :frame-num 0.0))) + (loop (suspend) + (ja :num! (loop! f30-0)))))) (defstate nav-enemy-stare (yeti-slave) :virtual #t - :code (behavior () - (set! (-> self turn-time) (seconds 0.2)) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - (loop - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! yeti-turn-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (nav-enemy-facing-player? 1820.4445) - (ja-blend-eval) - (suspend) - (ja :num! (loop! 0.75)) - ) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - ) - (if (not (ja-group? yeti-idle-ja)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja-no-eval :group! yeti-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (when (nav-enemy-rnd-percent? 0.3) + :code + (behavior () + (set! (-> self turn-time) (seconds 0.2)) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (when (or (logtest? (-> self nav-enemy-flags) (nav-enemy-flags navenmf8)) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))) (ja-channel-push! 1 (seconds 0.1)) (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek! (ja-aframe 68.0 0) f30-0)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))) + (loop (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! yeti-turn-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (ja :num! (loop! 0.75))) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel))) + (if (not (ja-group? yeti-idle-ja)) (ja-channel-push! 1 (seconds 0.2))) + (ja-no-eval :group! yeti-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))) + (when (nav-enemy-rnd-percent? 0.3) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yeti-win-ja :num! (seek! (ja-aframe 68.0 0) f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 68.0 0) f30-0)))))))) (defstate nav-enemy-give-up (yeti-slave) :virtual #t - :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) (seconds 0.5)) - (ja-channel-push! 1 (seconds 0.15)) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) - 12743.111 - ) - (ja-no-eval :group! yeti-give-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! yeti-give-up-hop-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) (seconds 0.5)) + (ja-channel-push! 1 (seconds 0.15)) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0))) + (when (< (fabs (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))))) + 12743.111) + (ja-no-eval :group! yeti-give-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! yeti-give-up-hop-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-jump-land (yeti-slave) :virtual #t - :code (behavior () - (ja-no-eval :num! (seek!)) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info jump-land-anim)) - :num! (seek! (ja-aframe 32.0 0) 0.5) - :frame-num 0.0 - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 32.0 0) 0.5)) - ) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (seek!)) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info jump-land-anim)) + :num! + (seek! (ja-aframe 32.0 0) 0.5) + :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 32.0 0) 0.5))) + (go-virtual nav-enemy-chase))) (defmethod initialize-collision ((this yeti-slave)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -485,59 +398,46 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 6144.0) (backup-collide-with-as s5-0) (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this yeti-slave)) - (initialize-skeleton this *yeti-sg* '()) + (initialize-skeleton this *yeti-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (init-defaults! this *yeti-nav-enemy-info*) (set! (-> this neck up) (the-as uint 0)) (set! (-> this neck nose) (the-as uint 1)) (set! (-> this neck ear) (the-as uint 2)) 0 - (none) - ) + (none)) (defmethod deactivate ((this yeti-slave)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this yeti-slave) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (call-parent-method this arg0)) (defbehavior yeti-slave-init-by-other yeti-slave ((arg0 entity) (arg1 yeti) (arg2 vector) (arg3 vector) (arg4 symbol)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 538) self)) @@ -548,143 +448,89 @@ (forward-up->quaternion (-> self collide-info quat) arg3 *up-vector*) (set! (-> self entity) (-> arg1 entity)) (nav-enemy-method-48 self) - (if arg4 - (go-virtual nav-enemy-idle) - (go yeti-slave-appear-jump-up) - ) - (none) - ) + (if arg4 (go-virtual nav-enemy-idle) (go yeti-slave-appear-jump-up)) + (none)) (defmethod aggro? ((this yeti) (arg0 vector)) (let ((s5-0 (the-as (pointer process-tree) (-> this child-process)))) (while s5-0 - (if (< (vector-vector-xz-distance-squared arg0 (-> (the-as (pointer yeti-slave) s5-0) 0 collide-info trans)) - 603979800.0 - ) - (return #f) - ) - (set! s5-0 (-> s5-0 0 brother)) - ) - ) + (if (< (vector-vector-xz-distance-squared arg0 (-> (the-as (pointer yeti-slave) s5-0) 0 collide-info trans)) 603979800.0) + (return #f)) + (set! s5-0 (-> s5-0 0 brother)))) (when *target* - (if (< (vector-vector-xz-distance-squared arg0 (target-pos 0)) 603979800.0) - (return #f) - ) - ) - #t - ) + (if (< (vector-vector-xz-distance-squared arg0 (target-pos 0)) 603979800.0) (return #f))) + #t) (defmethod yeti-method-20 ((this yeti) (arg0 vector) (arg1 vector)) (let ((s3-0 (-> this path curve num-cverts))) - (if (<= s3-0 0) - (return #f) - ) + (if (<= s3-0 0) (return #f)) (let ((s1-0 (rand-vu-int-count s3-0)) - (s2-0 s3-0) - ) + (s2-0 s3-0)) (while (> s2-0 0) (eval-path-curve-div! (-> this path) arg0 (the float s1-0) 'interp) (when (aggro? this arg0) (cond - (*target* - (vector-! arg1 (target-pos 0) arg0) - (set! (-> arg1 y) 0.0) - ) + (*target* (vector-! arg1 (target-pos 0) arg0) (set! (-> arg1 y) 0.0)) (else - (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) - (+! (-> arg1 x) 409.6) - ) - ) + (set-vector! arg1 (rand-vu-float-range -4096.0 4096.0) 0.0 (rand-vu-float-range -4096.0 4096.0) 1.0) + (+! (-> arg1 x) 409.6))) (vector-normalize! arg1 1.0) - (return #t) - ) + (return #t)) (set! s1-0 (mod (+ s1-0 1) s3-0)) - (+! s2-0 -1) - ) - ) - ) - #f - ) + (+! s2-0 -1)))) + #f) (defstate yeti-first-time-start (yeti) - :code (behavior () - (loop - (when *target* - (when (>= (-> self first-time-spawn-dist) (vector-vector-xz-distance (target-pos 0) (-> self root trans))) - (process-entity-status! self (entity-perm-status complete) #t) - (go yeti-idle) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (when *target* + (when (>= (-> self first-time-spawn-dist) (vector-vector-xz-distance (target-pos 0) (-> self root trans))) + (process-entity-status! self (entity-perm-status complete) #t) + (go yeti-idle))) + (suspend)))) (defstate yeti-resuming-start (yeti) - :code (behavior () - (let ((gp-0 0)) - (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) - (while v1-0 - (+! gp-0 1) - (set! v1-0 (-> v1-0 0 brother)) - (nop!) - (nop!) - ) - ) - (while (< gp-0 (-> self desired-num-children)) - (let ((s5-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (if (not (yeti-method-20 self s5-0 s4-0)) - (go yeti-idle) - ) - (process-spawn yeti-slave (-> self entity) self s5-0 s4-0 #t :to self) - ) - (+! gp-0 1) - ) - ) - (go yeti-idle) - ) - ) + :code + (behavior () + (let ((gp-0 0)) + (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) + (while v1-0 + (+! gp-0 1) + (set! v1-0 (-> v1-0 0 brother)) + (nop!) + (nop!))) + (while (< gp-0 (-> self desired-num-children)) + (let ((s5-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector))) + (if (not (yeti-method-20 self s5-0 s4-0)) (go yeti-idle)) + (process-spawn yeti-slave (-> self entity) self s5-0 s4-0 #t :to self)) + (+! gp-0 1))) + (go yeti-idle))) (defstate yeti-idle (yeti) - :code (behavior () - (loop - (cond - ((zero? (-> self spawn-delay)) - (let ((v1-1 0)) - (let ((a0-0 (the-as (pointer process-tree) (-> self child-process)))) - (while a0-0 - (+! v1-1 1) - (set! a0-0 (-> a0-0 0 brother)) - (nop!) - (nop!) - ) - ) - (when (< v1-1 (-> self desired-num-children)) - (set! (-> self spawn-delay) (rand-vu-int-range 150 1200)) - (set-time! (-> self state-time)) - ) - ) - ) - (else - (when (time-elapsed? (-> self state-time) (-> self spawn-delay)) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (when (yeti-method-20 self gp-0 s5-0) - (process-spawn yeti-slave (-> self entity) self gp-0 s5-0 #f :to self) - (set! (-> self spawn-delay) 0) - 0 - ) - ) - ) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (cond + ((zero? (-> self spawn-delay)) + (let ((v1-1 0)) + (let ((a0-0 (the-as (pointer process-tree) (-> self child-process)))) + (while a0-0 + (+! v1-1 1) + (set! a0-0 (-> a0-0 0 brother)) + (nop!) + (nop!))) + (when (< v1-1 (-> self desired-num-children)) + (set! (-> self spawn-delay) (rand-vu-int-range 150 1200)) + (set-time! (-> self state-time))))) + (else + (when (time-elapsed? (-> self state-time) (-> self spawn-delay)) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (when (yeti-method-20 self gp-0 s5-0) + (process-spawn yeti-slave (-> self entity) self gp-0 s5-0 #f :to self) + (set! (-> self spawn-delay) 0) + 0))))) + (suspend)))) (defmethod init-from-entity! ((this yeti) (arg0 entity-actor)) (set! (-> this spawn-delay) 0) @@ -692,12 +538,9 @@ (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (process-drawable-from-entity! this arg0) (set! (-> this desired-num-children) - (res-lump-value arg0 'num-lurkers int :default (the-as uint128 (-> this path curve num-cverts))) - ) + (res-lump-value arg0 'num-lurkers int :default (the-as uint128 (-> this path curve num-cverts)))) (set! (-> this first-time-spawn-dist) (res-lump-float arg0 'notice-dist :default 204800.0)) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go yeti-resuming-start) - (go yeti-first-time-start) - ) - (none) - ) + (go yeti-resuming-start) + (go yeti-first-time-start)) + (none)) diff --git a/goal_src/jak1/levels/sunken/bully.gc b/goal_src/jak1/levels/sunken/bully.gc index b4ae7999e2..e613005c63 100644 --- a/goal_src/jak1/levels/sunken/bully.gc +++ b/goal_src/jak1/levels/sunken/bully.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/common-obs/collectables.gc") (require "engine/anim/joint-mod-h.gc") @@ -15,215 +14,203 @@ ;; DECOMP BEGINS (deftype bully-broken-cage (process-drawable) - ((parent-override (pointer bully) :overlay-at parent) - ) + ((parent-override (pointer bully) :overlay-at parent)) (:states - bully-broken-cage-explode - ) - ) - + bully-broken-cage-explode)) (deftype bully (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (hit-player? symbol) - (bounced? symbol) - (bounce-volume int32) - (facing-ry float) - (travel-ry float) - (speed-u float) - (spin-vel float) - (travel-speed float) - (reaction-delay time-frame) - (start-spin-time time-frame) - (slow-down time-frame) - (hit-player-time time-frame) - (neck joint-mod) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (hit-player? symbol) + (bounced? symbol) + (bounce-volume int32) + (facing-ry float) + (travel-ry float) + (speed-u float) + (spin-vel float) + (travel-speed float) + (reaction-delay time-frame) + (start-spin-time time-frame) + (slow-down time-frame) + (hit-player-time time-frame) + (neck joint-mod)) (:methods - (bully-method-20 (_type_) float) - ) + (bully-method-20 (_type_) float)) (:states - bully-die - (bully-idle symbol) - bully-notice - bully-start-spinning - bully-stop-spinning - ) - ) + bully-die + (bully-idle symbol) + bully-notice + bully-start-spinning + bully-stop-spinning)) +(defskelgroup *bully-sg* + bully + bully-lod0-jg + bully-idle-ja + ((bully-lod0-mg (meters 20)) (bully-lod1-mg (meters 40)) (bully-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 3) + :shadow bully-shadow-mg) -(defskelgroup *bully-sg* bully bully-lod0-jg bully-idle-ja - ((bully-lod0-mg (meters 20)) (bully-lod1-mg (meters 40)) (bully-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 3) - :shadow bully-shadow-mg - ) - -(defskelgroup *bully-broken-cage-sg* bully bully-broken-cage-lod0-jg -1 - ((bully-broken-cage-lod0-mg (meters 999999))) - :bounds (static-spherem 0 2 0 6) - ) +(defskelgroup *bully-broken-cage-sg* + bully + bully-broken-cage-lod0-jg + -1 + ((bully-broken-cage-lod0-mg (meters 999999))) + :bounds (static-spherem 0 2 0 6)) (define *bully-shadow-control* - (new 'static 'shadow-control :settings (new 'static 'shadow-settings - :flags (shadow-flags shdf00 shdf03) - :shadow-dir (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 10240.0) - :top-plane (new 'static 'plane :y 1.0 :w -2048.0) - :fade-dist 245760.0 - ) - ) - ) + (new 'static + 'shadow-control + :settings + (new 'static + 'shadow-settings + :flags (shadow-flags shdf00 shdf03) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane + (new 'static 'plane :y 1.0 :w 10240.0) + :top-plane + (new 'static 'plane :y 1.0 :w -2048.0) + :fade-dist 245760.0))) (defpartgroup group-bully-explode :id 454 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2871) (sp-item 2872) (sp-item 2873) (sp-item 2874) (sp-item 2875)) - ) + :parts ((sp-item 2871) (sp-item 2872) (sp-item 2873) (sp-item 2874) (sp-item 2875))) (defpart 2871 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 2)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 32.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2876) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 2)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 32.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2876) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2876 - :init-specs ((:fade-a -1.0666667)) - ) + :init-specs ((:fade-a -1.0666667))) (defpart 2872 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 1.5)) - (:scale-x (meters 6) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 2877) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 1.5)) + (:scale-x (meters 6) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 2877) + (:rotate-y (degrees 0)))) (defpart 2877 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 2873 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1.5)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 48.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1.5)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 48.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 2874 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x2)) - (:num 16.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) 2.0 (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 160.0) - (:g 160.0) - (:b 160.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 2 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.25)) - (:next-launcher 2878) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x2)) + (:num 16.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) 2.0 (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 160.0) + (:g 160.0) + (:b 160.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 2 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.25)) + (:next-launcher 2878) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2878 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defpart 2875 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 16.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.25) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 100.0) - (:g 100.0) - (:b 100.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.25)) - (:next-launcher 2878) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 16.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.25) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.25)) + (:next-launcher 2878) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defstate bully-broken-cage-explode (bully-broken-cage) - :code (behavior () - (ja-channel-push! 1 0) - (ja-no-eval :group! bully-broken-cage-explode-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + :code + (behavior () + (ja-channel-push! 1 0) + (ja-no-eval :group! bully-broken-cage-explode-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + :post ja-post) (defbehavior bully-broken-cage-init-by-other bully-broken-cage ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -231,10 +218,9 @@ (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) (quaternion-copy! (-> self root quat) (-> self parent-override 0 root quat)) (set! (-> self root scale quad) (-> self parent-override 0 root scale quad)) - (initialize-skeleton self *bully-broken-cage-sg* '()) + (initialize-skeleton self *bully-broken-cage-sg* ()) (go bully-broken-cage-explode) - (none) - ) + (none)) ;; WARN: disable def twice: 148. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior bully-default-event-handler bully ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) @@ -245,491 +231,339 @@ ((= (-> arg0 type) bully) (let ((v1-3 (new 'stack-no-clear 'vector))) (vector-! v1-3 (-> self root trans) (-> (the-as process-drawable arg0) root trans)) - (set! (-> self travel-ry) (atan (-> v1-3 x) (-> v1-3 z))) - ) + (set! (-> self travel-ry) (atan (-> v1-3 x) (-> v1-3 z)))) (set! (-> self bounced?) #t) (set! v0-0 100) (set! (-> self bounce-volume) (the-as int v0-0)) - v0-0 - ) + v0-0) ((= (-> arg0 type) target) (cond - ((= (-> arg3 param 1) 'flop) - (go bully-die) - (return #t) - v0-0 - ) + ((= (-> arg3 param 1) 'flop) (go bully-die) (return #t) v0-0) ((or (= arg2 'touch) (= arg2 'attack)) (cond ((>= (- (-> (target-pos 0) y) (-> self root trans y)) 6144.0) (let* ((f0-6 (fmax 0.6 (* 0.000023935356 (-> self travel-speed)))) (f28-0 (* 8192.0 f0-6)) (f30-0 (* 8192.0 f0-6)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (target-pos 0) (-> self root trans)) (let ((f26-0 (atan (-> s4-0 x) (-> s4-0 z)))) (when (< 0.0 (-> self travel-speed)) (let ((f0-11 (deg- f26-0 (-> self travel-ry)))) - (if (< (fabs f0-11) 8192.0) - (set! f26-0 (if (>= f0-11 0.0) - (+ 8192.0 f26-0) - (+ -8192.0 f26-0) - ) - ) - ) - ) - ) - (set-vector! s4-0 (* (sin f26-0) f28-0) 0.0 (* (cos f26-0) f28-0) 1.0) - ) + (if (< (fabs f0-11) 8192.0) (set! f26-0 (if (>= f0-11 0.0) (+ 8192.0 f26-0) (+ -8192.0 f26-0)))))) + (set-vector! s4-0 (* (sin f26-0) f28-0) 0.0 (* (cos f26-0) f28-0) 1.0)) (when (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up f30-0) (vector s4-0)))) - (level-hint-spawn - (text-id sunken-bully-dive-hint) - "sksp0131" - (the-as entity #f) - *entity-pool* - (game-task none) - ) + (level-hint-spawn (text-id sunken-bully-dive-hint) "sksp0131" (the-as entity #f) *entity-pool* (game-task none)) (set! (-> self bounced?) #t) (set! v0-0 100) (set! (-> self bounce-volume) (the-as int v0-0)) - v0-0 - ) - ) - ) + v0-0))) (else - (let ((f0-21 (fmax 0.6 (* 0.000023935356 (-> self travel-speed))))) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (* 12288.0 f0-21)) (shove-back (* 16384.0 f0-21)))) - ) - (level-hint-spawn - (text-id sunken-bully-dive-hint) - "sksp0131" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (set! (-> self hit-player?) #t) - (set! (-> self bounced?) #t) - (set! (-> self bounce-volume) 100) - (set-time! (-> self hit-player-time)) - (set-collide-offense (-> self root) 2 (collide-offense no-offense)) - ) - ) - ) - ) - ) - ) - ) + (let ((f0-21 (fmax 0.6 (* 0.000023935356 (-> self travel-speed))))) + (when (send-event arg0 + 'attack + (-> arg3 param 0) + (static-attack-info ((shove-up (* 12288.0 f0-21)) (shove-back (* 16384.0 f0-21))))) + (level-hint-spawn (text-id sunken-bully-dive-hint) "sksp0131" (the-as entity #f) *entity-pool* (game-task none)) + (set! (-> self hit-player?) #t) + (set! (-> self bounced?) #t) + (set! (-> self bounce-volume) 100) + (set-time! (-> self hit-player-time)) + (set-collide-offense (-> self root) 2 (collide-offense no-offense))))))))) (else - (when (= arg2 'touched) - (cond - ((= (-> arg0 type) target) - (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode)))) - ) - (else - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 4) - (set! (-> a1-14 message) 'attack) - (set! (-> a1-14 param 0) (-> arg3 param 0)) - (set! (-> a1-14 param 1) (the-as uint 'explode)) - (let ((v1-48 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-48) - (set! (-> a1-14 param 2) (the-as uint v1-48)) - ) - (set! (-> a1-14 param 3) (the-as uint 0)) - (send-event-function arg0 a1-14) - ) - ) - ) - ) - ) - ) - ) - ) - ) + (when (= arg2 'touched) + (cond + ((= (-> arg0 type) target) (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((mode 'explode))))) + (else + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 4) + (set! (-> a1-14 message) 'attack) + (set! (-> a1-14 param 0) (-> arg3 param 0)) + (set! (-> a1-14 param 1) (the-as uint 'explode)) + (let ((v1-48 (+ *global-attack-id* 1))) (set! *global-attack-id* v1-48) (set! (-> a1-14 param 2) (the-as uint v1-48))) + (set! (-> a1-14 param 3) (the-as uint 0)) + (send-event-function arg0 a1-14)))))))))) (defbehavior bully-post bully () (when (and (-> self hit-player?) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self hit-player-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self hit-player-time) (seconds 0.05))))) (set-collide-offense (-> self root) 2 (collide-offense normal-attack)) - (set! (-> self hit-player?) #f) - ) + (set! (-> self hit-player?) #f)) (transform-post) - (none) - ) + (none)) (defmethod bully-method-20 ((this bully)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) - (set-vector! - (-> this root transv) - (* (sin (-> this travel-ry)) (-> this travel-speed)) - 0.0 - (* (cos (-> this travel-ry)) (-> this travel-speed)) - 1.0 - ) + (set-vector! (-> this root transv) + (* (sin (-> this travel-ry)) (-> this travel-speed)) + 0.0 + (* (cos (-> this travel-ry)) (-> this travel-speed)) + 1.0) (let ((s5-1 #f)) (nav-control-method-28 (-> this nav) (collide-kind wall-object ground-object)) (let ((v1-4 (-> this nav travel))) (.lvf vf1 (&-> (-> this root transv) quad)) - (let ((f0-8 (seconds-per-frame))) - (.mov at-0 f0-8) - ) + (let ((f0-8 (seconds-per-frame))) (.mov at-0 f0-8)) (.mov vf2 at-0) (.mov.vf vf1 vf0 :mask #b1000) (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-4 quad) vf1) - ) + (.svf (&-> v1-4 quad) vf1)) (let ((s4-0 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) (when (>= (nav-control-method-23 (-> this nav) (-> this nav travel) s4-0) 0.0) (let ((s5-2 (new 'stack-no-clear 'vector))) (set! (-> s5-2 quad) (-> s4-0 normal quad)) (set! (-> s5-2 y) 0.0) (vector-normalize! s5-2 1.0) - (vector-reflect! (-> this root transv) (-> this root transv) s5-2) - ) + (vector-reflect! (-> this root transv) (-> this root transv) s5-2)) (set! (-> this travel-ry) (atan (-> this root transv x) (-> this root transv z))) (+! (-> this travel-ry) (rand-vu-float-range -910.2222 910.2222)) (vector-reset! (-> this root transv)) (set! s5-1 #t) (set! (-> this bounced?) #t) - (set! (-> this bounce-volume) 100) - ) - ) + (set! (-> this bounce-volume) 100))) (when (not s5-1) (vector-normalize-copy! (-> this nav travel) (-> this root transv) 2048.0) (let ((s5-3 (new 'stack 'clip-travel-vector-to-mesh-return-info))) (nav-control-method-24 (-> this nav) 2048.0 s5-3) - (when (and (-> s5-3 found-boundary) (>= (* (-> this travel-speed) (seconds-per-frame)) - (vector-vector-xz-distance (-> s5-3 intersection) (-> this root trans)) - ) - ) + (when (and (-> s5-3 found-boundary) + (>= (* (-> this travel-speed) (seconds-per-frame)) + (vector-vector-xz-distance (-> s5-3 intersection) (-> this root trans)))) (let ((s4-1 (new 'stack-no-clear 'vector))) (vector-negate! s4-1 (-> s5-3 boundary-normal)) (set! (-> s4-1 y) 0.0) (vector-normalize! s4-1 1.0) - (vector-reflect! (-> this root transv) (-> this root transv) s4-1) - ) + (vector-reflect! (-> this root transv) (-> this root transv) s4-1)) (set! (-> this travel-ry) (atan (-> this root transv x) (-> this root transv z))) (+! (-> this travel-ry) (rand-vu-float-range -910.2222 910.2222)) (vector-reset! (-> this root transv)) #t (set! (-> this bounced?) #t) - (set! (-> this bounce-volume) 60) - ) - ) - ) - ) - (set! (-> this root transv y) (+ -36864.0 (-> this root transv y))) - ) - ) + (set! (-> this bounce-volume) 60))))) + (set! (-> this root transv y) (+ -36864.0 (-> this root transv y))))) (defstate bully-idle (bully) :event bully-default-event-handler - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (set! (-> self reaction-delay) (rand-vu-int-range 0 (seconds 0.35))) - (set! (-> self travel-speed) 0.0) - (shut-down! (-> self neck)) - (let ((v1-5 (-> self draw shadow-ctrl))) - (logior! (-> v1-5 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :exit (behavior () - (let ((v1-1 (-> self draw shadow-ctrl))) - (logclear! (-> v1-1 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :trans (behavior () - (when (and (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (time-elapsed? (-> self state-time) (-> self reaction-delay)) - ) - (start-hint-timer (text-id sunken-bully-dive-hint)) - (go bully-notice) - ) - ) - :code (behavior ((arg0 symbol)) - (ja-channel-push! 1 (seconds 0.075)) - (if arg0 - (ja :group! bully-idle-ja - :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (ja :group! bully-idle-ja :num! min) - ) - (loop - (suspend) - (ja :num! (loop!)) - ) - ) - :post bully-post - ) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (set! (-> self reaction-delay) (rand-vu-int-range 0 (seconds 0.35))) + (set! (-> self travel-speed) 0.0) + (shut-down! (-> self neck)) + (let ((v1-5 (-> self draw shadow-ctrl))) (logior! (-> v1-5 settings flags) (shadow-flags disable-draw))) + 0) + :exit + (behavior () + (let ((v1-1 (-> self draw shadow-ctrl))) (logclear! (-> v1-1 settings flags) (shadow-flags disable-draw))) + 0) + :trans + (behavior () + (when (and (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self reaction-delay))) + (start-hint-timer (text-id sunken-bully-dive-hint)) + (go bully-notice))) + :code + (behavior ((arg0 symbol)) + (ja-channel-push! 1 (seconds 0.075)) + (if arg0 + (ja :group! bully-idle-ja :num! (identity (rand-vu-float-range 0.0 (the float (+ (-> (ja-group) data 0 length) -1))))) + (ja :group! bully-idle-ja :num! min)) + (loop (suspend) + (ja :num! (loop!)))) + :post bully-post) (defstate bully-notice (bully) :event bully-default-event-handler - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - ) - :code (behavior () - (set! (-> self travel-speed) 0.0) - (ja-channel-push! 1 (seconds 0.075)) - (set-vector! (-> self root transv) 0.0 (rand-vu-float-range 61440.0 90112.0) 0.0 1.0) - (ja-no-eval :group! bully-notice-jump-up-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 13.0 0))) - ) - (until (logtest? (-> self root status) (cshape-moving-flags onsurf)) - (ja :num! (seek!)) - (+! (-> self root transv y) (* -545996.8 (seconds-per-frame))) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 12288.0 - #f - #f - #f - ) + :trans + (behavior () (when *target* - (let ((gp-3 (new 'stack-no-clear 'vector))) - (vector-! gp-3 (target-pos 0) (-> self root trans)) - (seek-toward-heading-vec! (-> self root) gp-3 524288.0 (seconds 0.1)) - ) - (set! (-> self facing-ry) (quaternion-y-angle (-> self root quat))) - ) - (suspend) - ) - (ja-no-eval :group! bully-notice-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go bully-start-spinning) - ) - :post bully-post - ) + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5)))) + :code + (behavior () + (set! (-> self travel-speed) 0.0) + (ja-channel-push! 1 (seconds 0.075)) + (set-vector! (-> self root transv) 0.0 (rand-vu-float-range 61440.0 90112.0) 0.0 1.0) + (ja-no-eval :group! bully-notice-jump-up-ja :num! (seek! (ja-aframe 13.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! (ja-aframe 13.0 0)))) + (until (logtest? (-> self root status) (cshape-moving-flags onsurf)) + (ja :num! (seek!)) + (+! (-> self root transv y) (* -545996.8 (seconds-per-frame))) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 12288.0 + #f + #f + #f) + (when *target* + (let ((gp-3 (new 'stack-no-clear 'vector))) + (vector-! gp-3 (target-pos 0) (-> self root trans)) + (seek-toward-heading-vec! (-> self root) gp-3 524288.0 (seconds 0.1))) + (set! (-> self facing-ry) (quaternion-y-angle (-> self root quat)))) + (suspend)) + (ja-no-eval :group! bully-notice-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go bully-start-spinning)) + :post bully-post) (defstate bully-start-spinning (bully) :event bully-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-time! (-> self start-spin-time)) - (set! (-> self slow-down) (rand-vu-int-range (seconds 4) (seconds 8))) - (set! (-> self speed-u) 0.2) - (set! (-> self bounced?) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if *target* - (vector-! gp-0 (target-pos 0) (-> self root trans)) - (vector-z-quaternion! gp-0 (-> self root quat)) - ) - (set! (-> self travel-ry) (atan (-> gp-0 x) (-> gp-0 z))) - ) - (+! (-> self travel-ry) (rand-vu-float-range -910.2222 910.2222)) - ) - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - (cond - ((time-elapsed? (-> self start-spin-time) (-> self slow-down)) - (seek! (-> self speed-u) 0.0 (* 0.5555556 (seconds-per-frame))) - (if (= (-> self speed-u) 0.0) - (go bully-stop-spinning) - ) - ) - (else - (seek! (-> self speed-u) 1.0 (* 0.5555556 (seconds-per-frame))) - ) - ) - (set! (-> self spin-vel) (* 196608.0 (-> self speed-u))) - (set! (-> self travel-speed) (* 41779.2 (-> self speed-u))) - (+! (-> self facing-ry) (* (-> self spin-vel) (seconds-per-frame))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self facing-ry)) - (bully-method-20 self) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 8192.0 - #f - #f - #f - ) - (nav-control-method-27 (-> self nav)) - ) - :code (behavior () - (local-vars (v1-34 symbol) (v1-52 symbol)) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! bully-start-spin-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self bounced?) #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! bully-spin-ja :num! min) - (loop - (until v1-34 - (suspend) - (ja :num! (seek!)) - (set! v1-34 (or (ja-done? 0) (-> self bounced?))) - ) - (when (-> self bounced?) - (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) - (until (not (-> self bounced?)) - (set! (-> self bounced?) #f) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! bully-idle-bounced-ja :num! min) - (until v1-52 - (suspend) - (ja :num! (seek!)) - (set! v1-52 (or (ja-done? 0) (-> self bounced?))) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - ) - (ja :group! bully-spin-ja :num! min) - ) - ) - :post bully-post - ) - -(defstate bully-stop-spinning (bully) - :event bully-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self reaction-delay) (rand-vu-int-range (seconds 2) (seconds 3))) - (set! (-> self travel-speed) 0.0) - (set! (-> self bounced?) #f) - ) - :trans (behavior () - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - ) - :code (behavior () - (local-vars (v1-17 symbol) (v1-35 symbol)) - (let ((gp-0 2)) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-time! (-> self start-spin-time)) + (set! (-> self slow-down) (rand-vu-int-range (seconds 4) (seconds 8))) + (set! (-> self speed-u) 0.2) + (set! (-> self bounced?) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if *target* (vector-! gp-0 (target-pos 0) (-> self root trans)) (vector-z-quaternion! gp-0 (-> self root quat))) + (set! (-> self travel-ry) (atan (-> gp-0 x) (-> gp-0 z)))) + (+! (-> self travel-ry) (rand-vu-float-range -910.2222 910.2222))) + :trans + (behavior () + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5))) + (cond + ((time-elapsed? (-> self start-spin-time) (-> self slow-down)) + (seek! (-> self speed-u) 0.0 (* 0.5555556 (seconds-per-frame))) + (if (= (-> self speed-u) 0.0) (go bully-stop-spinning))) + (else (seek! (-> self speed-u) 1.0 (* 0.5555556 (seconds-per-frame))))) + (set! (-> self spin-vel) (* 196608.0 (-> self speed-u))) + (set! (-> self travel-speed) (* 41779.2 (-> self speed-u))) + (+! (-> self facing-ry) (* (-> self spin-vel) (seconds-per-frame))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self facing-ry)) + (bully-method-20 self) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 8192.0 + #f + #f + #f) + (nav-control-method-27 (-> self nav))) + :code + (behavior () + (local-vars (v1-34 symbol) (v1-52 symbol)) (ja-channel-push! 1 (seconds 0.2)) - (until (time-elapsed? (-> self state-time) (-> self reaction-delay)) - (cond - ((>= gp-0 0) - (+! gp-0 -1) - (ja :group! bully-dizzy-ja :num! min) - ) - (else - (ja :group! bully-idle-ja :num! min) - ) - ) - (until v1-17 - (suspend) - (ja :num! (seek!)) - (set! v1-17 (or (ja-done? 0) (-> self bounced?))) - ) + (ja-no-eval :group! bully-start-spin-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self bounced?) #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! bully-spin-ja :num! min) + (loop (until v1-34 + (suspend) + (ja :num! (seek!)) + (set! v1-34 (or (ja-done? 0) (-> self bounced?)))) (when (-> self bounced?) (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) - (set! gp-0 0) (until (not (-> self bounced?)) (set! (-> self bounced?) #f) (ja-channel-push! 1 (seconds 0.2)) (ja :group! bully-idle-bounced-ja :num! min) - (until v1-35 + (until v1-52 (suspend) (ja :num! (seek!)) - (set! v1-35 (or (ja-done? 0) (-> self bounced?))) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - ) - ) - ) - (if (or (not *target*) - (< (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go bully-idle #f) - ) - (go bully-start-spinning) - ) - :post bully-post - ) + (set! v1-52 (or (ja-done? 0) (-> self bounced?))))) + (ja-channel-push! 1 (seconds 0.2))) + (ja :group! bully-spin-ja :num! min))) + :post bully-post) + +(defstate bully-stop-spinning (bully) + :event bully-default-event-handler + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self reaction-delay) (rand-vu-int-range (seconds 2) (seconds 3))) + (set! (-> self travel-speed) 0.0) + (set! (-> self bounced?) #f)) + :trans + (behavior () + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5)))) + :code + (behavior () + (local-vars (v1-17 symbol) (v1-35 symbol)) + (let ((gp-0 2)) + (ja-channel-push! 1 (seconds 0.2)) + (until (time-elapsed? (-> self state-time) (-> self reaction-delay)) + (cond + ((>= gp-0 0) (+! gp-0 -1) (ja :group! bully-dizzy-ja :num! min)) + (else (ja :group! bully-idle-ja :num! min))) + (until v1-17 + (suspend) + (ja :num! (seek!)) + (set! v1-17 (or (ja-done? 0) (-> self bounced?)))) + (when (-> self bounced?) + (sound-play "bully-bounce" :vol (the float (-> self bounce-volume))) + (set! gp-0 0) + (until (not (-> self bounced?)) + (set! (-> self bounced?) #f) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! bully-idle-bounced-ja :num! min) + (until v1-35 + (suspend) + (ja :num! (seek!)) + (set! v1-35 (or (ja-done? 0) (-> self bounced?))))) + (ja-channel-push! 1 (seconds 0.2))))) + (if (or (not *target*) + (< (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go bully-idle #f)) + (go bully-start-spinning)) + :post bully-post) (defstate bully-die (bully) - :code (behavior () - (cleanup-for-death self) - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-spawn bully-broken-cage (-> self entity) :to self) - (spawn (-> self part) (-> self root trans)) - (clear-collide-with-as (-> self root)) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! bully-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (increment-success-for-hint (text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) (draw-status hidden)) - (while (-> self child) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (cleanup-for-death self) + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-spawn bully-broken-cage (-> self entity) :to self) + (spawn (-> self part) (-> self root trans)) + (clear-collide-with-as (-> self root)) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! bully-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (increment-success-for-hint (text-id sunken-bully-dive-hint)) + (logior! (-> self draw status) (draw-status hidden)) + (while (-> self child) + (suspend))) + :post transform-post) (defmethod relocate ((this bully) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this bully) (arg0 entity-actor)) (set! (-> this hit-player?) #f) @@ -741,9 +575,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind cak-2 target crate enemy)) @@ -757,32 +589,26 @@ (set! (-> s2-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 6963.2) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind cak-2 target crate enemy)) (set! (-> s2-1 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 9420.8 0.0 4096.0) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) 7680.0) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this root event-self) 'touched) (set! (-> this root event-other) 'touch) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *bully-sg* '()) + (initialize-skeleton this *bully-sg* ()) (set! (-> this draw shadow-ctrl) *bully-shadow-control*) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 454) this)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (let ((v1-49 (new 'process 'joint-mod (joint-mod-handler-mode reset) this 5))) (set! (-> this neck) v1-49) (set-vector! (-> this neck twist-max) 8192.0 8192.0 0.0 1.0) @@ -790,13 +616,10 @@ (set! (-> v1-49 nose) (the-as uint 2)) (set! (-> v1-49 ear) (the-as uint 0)) (set! (-> v1-49 max-dist) 102400.0) - (set! (-> v1-49 ignore-angle) 16384.0) - ) + (set! (-> v1-49 ignore-angle) 16384.0)) (transform-post) (if (not (move-to-ground (-> this root) 12288.0 40960.0 #t (collide-kind background))) - (go process-drawable-art-error "no ground") - ) + (go process-drawable-art-error "no ground")) (set! (-> this facing-ry) (quaternion-y-angle (-> this root quat))) (go bully-idle #t) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/double-lurker.gc b/goal_src/jak1/levels/sunken/double-lurker.gc index fc9b6116b2..a4abcede2d 100644 --- a/goal_src/jak1/levels/sunken/double-lurker.gc +++ b/goal_src/jak1/levels/sunken/double-lurker.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "levels/misty/muse.gc") ;; name: double-lurker.gc @@ -13,389 +12,321 @@ ;; DECOMP BEGINS (deftype double-lurker-top (nav-enemy) - ((parent-process (pointer double-lurker) :overlay-at parent) - (fall-dest vector :inline) - ) - (:states - (double-lurker-top-knocked-down object vector vector) - double-lurker-top-on-shoulders - double-lurker-top-on-shoulders-die - double-lurker-top-resume - ) - ) - + ((parent-process (pointer double-lurker) :overlay-at parent) + (fall-dest vector :inline)) + (:states (double-lurker-top-knocked-down object vector vector) + double-lurker-top-on-shoulders + double-lurker-top-on-shoulders-die + double-lurker-top-resume)) (deftype double-lurker (nav-enemy) - ((knocked-back-speed float) - (buddy-on-shoulders? symbol) - (dead? symbol) - (buddy-dead? symbol) - (buddy-handle handle) - ) + ((knocked-back-speed float) + (buddy-on-shoulders? symbol) + (dead? symbol) + (buddy-dead? symbol) + (buddy-handle handle)) (:methods - (initialize-collision (_type_) collide-shape-moving :replace) - (double-lurker-method-53 (_type_ vector) symbol :overlay-at nav-enemy-method-53) - ) + (initialize-collision (_type_) collide-shape-moving :replace) + (double-lurker-method-53 (_type_ vector) symbol :overlay-at nav-enemy-method-53)) (:states - double-lurker-both-knocked-back - double-lurker-break-apart - double-lurker-buddy-was-hit - double-lurker-knocked-back - double-lurker-resume - double-lurker-show-anims - double-lurker-waiting-to-die - ) - ) + double-lurker-both-knocked-back + double-lurker-break-apart + double-lurker-buddy-was-hit + double-lurker-knocked-back + double-lurker-resume + double-lurker-show-anims + double-lurker-waiting-to-die)) +(defskelgroup *double-lurker-sg* + double-lurker + double-lurker-lod0-jg + double-lurker-both-idle-ja + ((double-lurker-lod0-mg (meters 20)) (double-lurker-lod1-mg (meters 40)) (double-lurker-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4.5) + :longest-edge (meters 1) + :shadow double-lurker-shadow-mg) -(defskelgroup *double-lurker-sg* double-lurker double-lurker-lod0-jg double-lurker-both-idle-ja - ((double-lurker-lod0-mg (meters 20)) - (double-lurker-lod1-mg (meters 40)) - (double-lurker-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 1 0 4.5) - :longest-edge (meters 1) - :shadow double-lurker-shadow-mg - ) +(defskelgroup *double-lurker-top-sg* + double-lurker-top + double-lurker-top-lod0-jg + -1 + ((double-lurker-top-lod0-mg (meters 20)) + (double-lurker-top-lod1-mg (meters 40)) + (double-lurker-top-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0.5 0 4.5) + :longest-edge (meters 1) + :shadow double-lurker-top-shadow-mg) -(defskelgroup *double-lurker-top-sg* double-lurker-top double-lurker-top-lod0-jg -1 - ((double-lurker-top-lod0-mg (meters 20)) - (double-lurker-top-lod1-mg (meters 40)) - (double-lurker-top-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0.5 0 4.5) - :longest-edge (meters 1) - :shadow double-lurker-top-shadow-mg - ) +(define *double-lurker-top-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 12 + :walk-anim 13 + :turn-anim -1 + :notice-anim 14 + :run-anim 15 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 16 + :taunt-anim 16 + :die-anim 17 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 2880) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 3) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) -(define *double-lurker-top-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 12 - :walk-anim 13 - :turn-anim -1 - :notice-anim 14 - :run-anim 15 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 16 - :taunt-anim 16 - :die-anim 17 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 2880) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 3) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *double-lurker-when-both-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim -1 + :notice-anim 7 + :run-anim 8 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 9 + :taunt-anim 9 + :die-anim 17 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 720) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.8) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 4) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) -(define *double-lurker-when-both-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim -1 - :notice-anim 7 - :run-anim 8 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 9 - :taunt-anim 9 - :die-anim 17 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 720) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.8) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 4) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) - -(define *double-lurker-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 12 - :walk-anim 13 - :turn-anim -1 - :notice-anim 14 - :run-anim 15 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 16 - :taunt-anim 16 - :die-anim 17 - :neck-joint 5 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 720) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.8) - :walk-rotate-speed (degrees 720) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 4) - :notice-nav-radius (meters 2) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *double-lurker-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 12 + :walk-anim 13 + :turn-anim -1 + :notice-anim 14 + :run-anim 15 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 16 + :taunt-anim 16 + :die-anim 17 + :neck-joint 5 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 720) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.8) + :walk-rotate-speed (degrees 720) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 4) + :notice-nav-radius (meters 2) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defstate double-lurker-top-on-shoulders (double-lurker-top) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v1-1 (-> self fall-dest)) - (a0-4 (-> (the-as vector (-> block param 0)) quad)) - ) - (set! (-> v1-1 quad) a0-4) - (go double-lurker-top-knocked-down a0-4 (the-as vector argc) (the-as vector message)) - ) - ) - (('instant-death) - (let ((v1-3 (the-as object (-> block param 0)))) - (quaternion-axis-angle! - (-> self collide-info quat) - 0.0 - 1.0 - 0.0 - (atan (-> (the-as vector v1-3) x) (-> (the-as vector v1-3) z)) - ) - ) - (go double-lurker-top-on-shoulders-die) - ) - ) - ) - :code (behavior () - (loop - (clone-anim-once - (ppointer->handle (-> self parent-process)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (update-transforms! (-> self collide-info)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (let ((v1-1 (-> self fall-dest)) + (a0-4 (-> (the-as vector (-> block param 0)) quad))) + (set! (-> v1-1 quad) a0-4) + (go double-lurker-top-knocked-down a0-4 (the-as vector argc) (the-as vector message)))) + (('instant-death) + (let ((v1-3 (the-as object (-> block param 0)))) + (quaternion-axis-angle! (-> self collide-info quat) + 0.0 + 1.0 + 0.0 + (atan (-> (the-as vector v1-3) x) (-> (the-as vector v1-3) z)))) + (go double-lurker-top-on-shoulders-die)))) + :code + (behavior () + (loop (clone-anim-once (ppointer->handle (-> self parent-process)) (the-as int (-> self draw origin-joint-index)) #t "") + (update-transforms! (-> self collide-info)) + (suspend)))) (defstate double-lurker-top-on-shoulders-die (double-lurker-top) - :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! double-lurker-top-on-shoulders-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + :code + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! double-lurker-top-on-shoulders-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + :post ja-post) (defstate double-lurker-top-knocked-down (double-lurker-top) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event - proc - 'shove - (-> block param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) - ) - ) - ) - :code (behavior ((arg0 object) (arg1 vector) (arg2 vector)) - (nav-enemy-method-51 self) - (let ((v1-3 (-> self draw shadow-ctrl))) - (logclear! (-> v1-3 settings flags) (shadow-flags disable-draw)) - ) - 0 - (logclear! (-> self collide-info nav-flags) (nav-flags navf0)) - (logior! (-> self collide-info nav-flags) (nav-flags navf1)) - (set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad)) - (set! (-> self nav extra-nav-sphere w) 9011.2) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self collide-info trans quad)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! double-lurker-top-both-break-apart-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (vector-lerp! - (-> self collide-info trans) - gp-0 - (-> self fall-dest) - (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe 44.0 0))) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (logior! (-> self collide-info nav-flags) (nav-flags navf0)) - (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) - (nav-control-method-27 (-> self nav)) - (go double-lurker-top-resume) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (send-event proc 'shove (-> block param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))))))) + :code + (behavior ((arg0 object) (arg1 vector) (arg2 vector)) + (nav-enemy-method-51 self) + (let ((v1-3 (-> self draw shadow-ctrl))) (logclear! (-> v1-3 settings flags) (shadow-flags disable-draw))) + 0 + (logclear! (-> self collide-info nav-flags) (nav-flags navf0)) + (logior! (-> self collide-info nav-flags) (nav-flags navf1)) + (set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad)) + (set! (-> self nav extra-nav-sphere w) 9011.2) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self collide-info trans quad)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! double-lurker-top-both-break-apart-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (vector-lerp! (-> self collide-info trans) gp-0 (-> self fall-dest) (fmin 1.0 (/ (ja-frame-num 0) (ja-aframe 44.0 0)))) + (suspend) + (ja :num! (seek!)))) + (logior! (-> self collide-info nav-flags) (nav-flags navf0)) + (logclear! (-> self collide-info nav-flags) (nav-flags navf1)) + (nav-control-method-27 (-> self nav)) + (go double-lurker-top-resume)) + :post transform-post) (defstate double-lurker-top-resume (double-lurker-top) - :code (behavior () - (cond - ((not *target*) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ((and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (cond + ((not *target*) (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + ((and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-patrol (double-lurker-top) :virtual #t - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-die (double-lurker-top) :virtual #t - :enter (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 1) 1) - ) - (set! (-> self parent-process 0 dead?) #t) - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - ) + :enter + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 1) 1)) + (set! (-> self parent-process 0 dead?) #t) + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-0 (t9-0))))) (defmethod nav-enemy-method-51 ((this double-lurker-top)) (restore-collide-with-as (-> this collide-info)) (logior! (-> this collide-info nav-flags) (nav-flags navf0)) (nav-control-method-27 (-> this nav)) - (none) - ) + (none)) (defmethod initialize-collision ((this double-lurker-top)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -408,69 +339,58 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2662.4 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6758.4 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core action) (collide-action solid)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10854.4 0.0 4096.0) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 10) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 1228.8) - (append-prim s4-0 s3-3) - ) + (append-prim s4-0 s3-3)) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 16) (set-vector! (-> s3-4 local-sphere) 0.0 0.0 0.0 1228.8) - (append-prim s4-0 s3-4) - ) + (append-prim s4-0 s3-4)) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-5 collide-with) (collide-kind target)) (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 5) (set-vector! (-> s3-5 local-sphere) 0.0 -2048.0 0.0 3276.8) - (append-prim s4-0 s3-5) - ) - ) + (append-prim s4-0 s3-5))) (set! (-> s5-0 nav-radius) 9011.2) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) (clear-collide-with-as (-> this collide-info)) - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this double-lurker-top)) - (initialize-skeleton this *double-lurker-top-sg* '()) + (initialize-skeleton this *double-lurker-top-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (init-defaults! this *double-lurker-top-nav-enemy-info*) (let ((v1-5 (-> this parent-process))) (set! (-> this collide-info trans quad) (-> v1-5 0 collide-info trans quad)) (set-vector! (-> this collide-info scale) 1.0 1.0 1.0 1.0) - (quaternion-copy! (-> this collide-info quat) (-> v1-5 0 collide-info quat)) - ) + (quaternion-copy! (-> this collide-info quat) (-> v1-5 0 collide-info quat))) (logclear! (-> this collide-info nav-flags) (nav-flags navf0)) - (none) - ) + (none)) (defbehavior double-lurker-top-init-by-other double-lurker-top ((arg0 entity) (arg1 double-lurker) (arg2 symbol) (arg3 vector)) (initialize-collision self) @@ -479,36 +399,27 @@ (set! (-> self collide-info trans quad) (-> arg3 quad)) (cond (arg2 - (ja-channel-set! 1) - (ja :group! double-lurker-top-both-idle-ja :num! min) - (transform-post) - (let ((v1-13 (-> self draw shadow-ctrl))) - (logior! (-> v1-13 settings flags) (shadow-flags disable-draw)) - ) - 0 - (go double-lurker-top-on-shoulders) - ) + (ja-channel-set! 1) + (ja :group! double-lurker-top-both-idle-ja :num! min) + (transform-post) + (let ((v1-13 (-> self draw shadow-ctrl))) (logior! (-> v1-13 settings flags) (shadow-flags disable-draw))) + 0 + (go double-lurker-top-on-shoulders)) (else - (ja-channel-set! 1) - (ja :group! double-lurker-top-idle-ja :num! min) - (transform-post) - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (nav-enemy-method-51 self) - (go double-lurker-top-resume) - ) - ) - (none) - ) + (ja-channel-set! 1) + (ja :group! double-lurker-top-idle-ja :num! min) + (transform-post) + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) + (nav-enemy-method-51 self) + (go double-lurker-top-resume))) + (none)) ;; WARN: disable def twice: 80. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. ;; WARN: disable def twice: 120. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defbehavior double-lurker-default-event-handler double-lurker ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-0 object)) (case arg2 - (('touch) - (set-time! (-> self touch-time)) - (touch-handler self arg0 arg3) - ) + (('touch) (set-time! (-> self touch-time)) (touch-handler self arg0 arg3)) (('attack) (when (= (-> arg0 type) target) (nav-enemy-set-hit-from-direction arg0) @@ -518,408 +429,276 @@ (vector-! s4-0 (target-pos 0) (-> self collide-info trans)) (cond ((and (>= (-> s4-0 y) 8192.0) - (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z))))) - ) - (when (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) + (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z)))))) + (when (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2))))) (increment-success-for-hint (text-id sunken-double-lurker-hint)) (go double-lurker-buddy-was-hit) (return #f) - v0-0 - ) - ) + v0-0)) (else - (when (and ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> (the-as target arg0) control) - (collide-action solid) - (collide-action) - ) - (send-event - arg0 - 'shove - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))) - ) - ) - (level-hint-spawn - (text-id sunken-double-lurker-hint) - "sksp0127" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (go double-lurker-both-knocked-back) - (return #f) - v0-0 - ) - ) - ) - ) - ) - (else - (nav-enemy-set-hit-from-direction arg0) - (attack-handler self arg0 arg3) - ) - ) - ) - ) - ) - ) + (when (and ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> (the-as target arg0) control) + (collide-action solid) + (collide-action)) + (send-event arg0 'shove (-> arg3 param 0) (static-attack-info ((shove-up (meters 3)) (shove-back (meters 2)))))) + (level-hint-spawn (text-id sunken-double-lurker-hint) "sksp0127" (the-as entity #f) *entity-pool* (game-task none)) + (go double-lurker-both-knocked-back) + (return #f) + v0-0))))) + (else (nav-enemy-set-hit-from-direction arg0) (attack-handler self arg0 arg3))))))) (defstate double-lurker-show-anims (double-lurker) - :trans (behavior () - 0 - ) - :code (behavior () - 0 - ) - :post transform-post - ) + :trans + (behavior () + 0) + :code + (behavior () + 0) + :post transform-post) (defstate double-lurker-resume (double-lurker) - :code (behavior () - (cond - ((not *target*) - (go-virtual nav-enemy-idle) - ) - ((target-in-range? self (-> self nav-info notice-distance)) - (go-virtual nav-enemy-chase) - ) - ((and (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status was-drawn)) - ) - (go-virtual nav-enemy-patrol) - ) - ) - (go-virtual nav-enemy-idle) - ) - ) + :code + (behavior () + (cond + ((not *target*) (go-virtual nav-enemy-idle)) + ((target-in-range? self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase)) + ((and (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status was-drawn))) + (go-virtual nav-enemy-patrol))) + (go-virtual nav-enemy-idle))) (defstate nav-enemy-idle (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-patrol (double-lurker) :virtual #t :event double-lurker-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) - (ja :num-func num-func-identity :frame-num 0.0) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) - (if t9-1 - ((the-as (function none) t9-1)) - ) - ) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! (-> self draw art-group data (-> self nav-info walk-anim))) + (ja :num-func num-func-identity :frame-num 0.0) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-patrol) code))) (if t9-1 ((the-as (function none) t9-1)))))) (defstate nav-enemy-notice (double-lurker) :virtual #t :event double-lurker-default-event-handler - :enter (behavior () - (start-hint-timer (text-id sunken-double-lurker-hint)) - (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-notice) enter))) - (if t9-1 - (t9-1) - ) - ) - ) - ) + :enter + (behavior () + (start-hint-timer (text-id sunken-double-lurker-hint)) + (let ((t9-1 (-> (method-of-type nav-enemy nav-enemy-notice) enter))) (if t9-1 (t9-1))))) (defstate nav-enemy-chase (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-stop-chase (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-stare (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-victory (double-lurker) :virtual #t - :event double-lurker-default-event-handler - ) + :event double-lurker-default-event-handler) (defstate nav-enemy-die (double-lurker) :virtual #t - :enter (behavior () - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 0) 1) - ) - (set! (-> self dead?) #t) - (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - ) + :enter + (behavior () + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 0) 1)) + (set! (-> self dead?) #t) + (let ((t9-0 (-> (method-of-type nav-enemy nav-enemy-die) enter))) (if t9-0 (t9-0))))) (defstate double-lurker-both-knocked-back (double-lurker) - :enter (behavior () - (set! (-> self knocked-back-speed) 40960.0) - ) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) - (f30-0 (* f0-3 (seconds-per-frame))) - ) - (set! (-> self knocked-back-speed) f0-3) - (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) - (when (< 0.0 f0-3) - (let ((v1-7 (-> self nav travel))) - (.lvf vf1 (&-> (-> self collide-info transv) quad)) - (let ((f0-4 (seconds-per-frame))) - (.mov at-0 f0-4) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((gp-0 #f)) - (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) - (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) - (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) - (set! gp-0 #t) - ) - ) - (when (not gp-0) - (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) - (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) - (if (-> s5-0 found-boundary) - (set! gp-0 #t) - ) - ) - ) - (when gp-0 - (set! (-> self knocked-back-speed) 0.0) - (vector-reset! (-> self collide-info transv)) - ) - ) - ) - ) - (+! (-> self collide-info transv y) -36864.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - (-> self nav-info hover-if-no-ground) - #f - ) - (nav-control-method-27 (-> self nav)) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! double-lurker-both-take-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self knocked-back-speed) 40960.0)) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) + (f30-0 (* f0-3 (seconds-per-frame)))) + (set! (-> self knocked-back-speed) f0-3) + (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) + (when (< 0.0 f0-3) + (let ((v1-7 (-> self nav travel))) + (.lvf vf1 (&-> (-> self collide-info transv) quad)) + (let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-7 quad) vf1)) + (let ((gp-0 #f)) + (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) + (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) + (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) (set! gp-0 #t))) + (when (not gp-0) + (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) + (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) + (if (-> s5-0 found-boundary) (set! gp-0 #t)))) + (when gp-0 + (set! (-> self knocked-back-speed) 0.0) + (vector-reset! (-> self collide-info transv)))))) + (+! (-> self collide-info transv y) -36864.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + (-> self nav-info hover-if-no-ground) + #f) + (nav-control-method-27 (-> self nav)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! double-lurker-both-take-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defmethod nav-enemy-method-52 ((this double-lurker) (arg0 vector)) (nav-control-method-28 (-> this nav) (the-as collide-kind -1)) (let ((a1-2 (new 'stack-no-clear 'vector))) (vector-float*! a1-2 (-> this hit-from-dir) 22937.602) (vector+! a1-2 a1-2 (-> this collide-info trans)) - (nav-control-method-13 (-> this nav) a1-2 (-> this hit-from-dir)) - ) + (nav-control-method-13 (-> this nav) a1-2 (-> this hit-from-dir))) (when (>= (vector-xz-length (-> this nav travel)) 18841.602) (vector+! arg0 (-> this collide-info trans) (-> this nav travel)) (let ((a1-5 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'collide-tri-result)) - ) + (s4-0 (new 'stack-no-clear 'collide-tri-result))) (set! (-> a1-5 quad) (-> arg0 quad)) (+! (-> a1-5 y) 8192.0) - (when (>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-5 - (new 'static 'vector :y -40960.0 :w 1.0) - 40.96 - (collide-kind background) - this - s4-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) + (when (>= (fill-and-probe-using-line-sphere *collide-cache* + a1-5 + (new 'static 'vector :y -40960.0 :w 1.0) + 40.96 + (collide-kind background) + this + s4-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) (set! (-> arg0 y) (-> s4-0 intersect y)) - (return #t) - ) - ) - ) - #f - ) + (return #t)))) + #f) (defstate double-lurker-buddy-was-hit (double-lurker) - :code (behavior () - (set! (-> self buddy-on-shoulders?) #f) - (let ((v1-2 (-> self entity extra perm))) - (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-2 user-int8 2) 1) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (if (nav-enemy-method-52 self gp-0) + :code + (behavior () + (set! (-> self buddy-on-shoulders?) #f) + (let ((v1-2 (-> self entity extra perm))) + (logior! (-> v1-2 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-2 user-int8 2) 1)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (if (nav-enemy-method-52 self gp-0) (send-event (handle->process (-> self buddy-handle)) 'trigger gp-0) - (send-event (handle->process (-> self buddy-handle)) 'instant-death (-> self hit-from-dir)) - ) - ) - (nav-enemy-method-51 self) - (init-jm! self *double-lurker-nav-enemy-info*) - (go double-lurker-break-apart) - ) - ) + (send-event (handle->process (-> self buddy-handle)) 'instant-death (-> self hit-from-dir)))) + (nav-enemy-method-51 self) + (init-jm! self *double-lurker-nav-enemy-info*) + (go double-lurker-break-apart))) (defstate double-lurker-break-apart (double-lurker) :event double-lurker-default-event-handler - :code (behavior () - (ja-no-eval :group! double-lurker-both-break-apart-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (ja-no-eval :group! double-lurker-both-break-apart-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defstate double-lurker-knocked-back (double-lurker) - :enter (behavior () - (set! (-> self knocked-back-speed) 40960.0) - ) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) - (f30-0 (* f0-3 (seconds-per-frame))) - ) - (set! (-> self knocked-back-speed) f0-3) - (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) - (when (< 0.0 f0-3) - (let ((v1-7 (-> self nav travel))) - (.lvf vf1 (&-> (-> self collide-info transv) quad)) - (let ((f0-4 (seconds-per-frame))) - (.mov at-0 f0-4) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-7 quad) vf1) - ) - (let ((gp-0 #f)) - (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) - (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) - (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) - (set! gp-0 #t) - ) - ) - (when (not gp-0) - (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) - (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) - (if (-> s5-0 found-boundary) - (set! gp-0 #t) - ) - ) - ) - (when gp-0 - (set! (-> self knocked-back-speed) 0.0) - (vector-reset! (-> self collide-info transv)) - ) - ) - ) - ) - (+! (-> self collide-info transv y) -36864.0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - (-> self nav-info hover-if-no-ground) - #f - ) - (nav-control-method-27 (-> self nav)) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! double-lurker-bottom-take-hit-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go double-lurker-resume) - ) - :post nav-enemy-simple-post - ) + :enter + (behavior () + (set! (-> self knocked-back-speed) 40960.0)) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (let* ((f0-3 (seek-with-smooth (-> self knocked-back-speed) 0.0 (* 49152.0 (seconds-per-frame)) 0.5 0.01)) + (f30-0 (* f0-3 (seconds-per-frame)))) + (set! (-> self knocked-back-speed) f0-3) + (vector-float*! (-> self collide-info transv) (-> self hit-from-dir) f0-3) + (when (< 0.0 f0-3) + (let ((v1-7 (-> self nav travel))) + (.lvf vf1 (&-> (-> self collide-info transv) quad)) + (let ((f0-4 (seconds-per-frame))) (.mov at-0 f0-4)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-7 quad) vf1)) + (let ((gp-0 #f)) + (nav-control-method-28 (-> self nav) (the-as collide-kind -1)) + (let ((a2-1 (new 'stack-no-clear 'check-vector-collision-with-nav-spheres-info))) + (if (>= (nav-control-method-23 (-> self nav) (-> self nav travel) a2-1) 0.0) (set! gp-0 #t))) + (when (not gp-0) + (let ((s5-0 (new 'stack 'clip-travel-vector-to-mesh-return-info))) + (nav-control-method-24 (-> self nav) (* 1.2 f30-0) s5-0) + (if (-> s5-0 found-boundary) (set! gp-0 #t)))) + (when gp-0 + (set! (-> self knocked-back-speed) 0.0) + (vector-reset! (-> self collide-info transv)))))) + (+! (-> self collide-info transv y) -36864.0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + (-> self nav-info hover-if-no-ground) + #f) + (nav-control-method-27 (-> self nav)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! double-lurker-bottom-take-hit-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go double-lurker-resume)) + :post nav-enemy-simple-post) (defstate double-lurker-waiting-to-die (double-lurker) - :code (behavior () - (clear-collide-with-as (-> self collide-info)) - (logior! (-> self draw status) (draw-status hidden)) - (until (not (-> self child)) - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self collide-info)) + (logior! (-> self draw status) (draw-status hidden)) + (until (not (-> self child)) + (suspend)))) (defmethod double-lurker-method-53 ((this double-lurker) (arg0 vector)) (let* ((s3-0 (-> this path curve num-cverts)) - (s4-0 (rand-vu-int-count s3-0)) - ) + (s4-0 (rand-vu-int-count s3-0))) (while (nonzero? s3-0) (+! s3-0 -1) (eval-path-curve-div! (-> this path) arg0 (the float s4-0) 'interp) - (if (not (nav-enemy-method-50 this arg0)) - (return #t) - ) - ) - ) - #f - ) + (if (not (nav-enemy-method-50 this arg0)) (return #t)))) + #f) (defmethod initialize-collision ((this double-lurker)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 9) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -932,79 +711,67 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 15564.8 0.0 3686.4) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 19660.8 0.0 3686.4) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 5) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 -1024.0 3276.8) - (append-prim s4-0 s3-2) - ) + (append-prim s4-0 s3-2)) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-3 collide-with) (collide-kind target)) (set! (-> s3-3 prim-core action) (collide-action solid)) (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-3 local-sphere) 0.0 3276.8 0.0 3686.4) - (append-prim s4-0 s3-3) - ) + (append-prim s4-0 s3-3)) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-4 collide-with) (collide-kind target)) (set! (-> s3-4 prim-core action) (collide-action solid)) (set! (-> s3-4 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-4 local-sphere) 0.0 7372.8 0.0 3686.4) - (append-prim s4-0 s3-4) - ) + (append-prim s4-0 s3-4)) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-5 collide-with) (collide-kind target)) (set! (-> s3-5 prim-core action) (collide-action solid)) (set! (-> s3-5 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-5 local-sphere) 0.0 11468.8 0.0 3686.4) - (append-prim s4-0 s3-5) - ) + (append-prim s4-0 s3-5)) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-6 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-6 collide-with) (collide-kind target)) (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 5) (set-vector! (-> s3-6 local-sphere) 0.0 -2048.0 -2048.0 3686.4) - (append-prim s4-0 s3-6) - ) + (append-prim s4-0 s3-6)) (let ((s3-7 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-7 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-7 collide-with) (collide-kind target)) (set! (-> s3-7 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-7 transform-index) 10) (set-vector! (-> s3-7 local-sphere) 0.0 1024.0 0.0 1638.4) - (append-prim s4-0 s3-7) - ) + (append-prim s4-0 s3-7)) (let ((s3-8 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) (set! (-> s3-8 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-8 collide-with) (collide-kind target)) (set! (-> s3-8 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-8 transform-index) 16) (set-vector! (-> s3-8 local-sphere) 0.0 -1024.0 0.0 1638.4) - (append-prim s4-0 s3-8) - ) - ) + (append-prim s4-0 s3-8))) (set! (-> s5-0 nav-radius) 9830.4) (backup-collide-with-as s5-0) (set! (-> this collide-info) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod nav-enemy-method-51 ((this double-lurker)) (let ((v1-1 (-> this collide-info root-prim))) @@ -1014,45 +781,32 @@ (set! (-> a2-2 collide-with) (collide-kind)) (set! (-> a2-2 prim-core collide-as) (collide-kind)) (set! (-> a2-2 prim-core action) (collide-action)) - (set! (-> a2-2 prim-core offense) (collide-offense no-offense)) - ) + (set! (-> a2-2 prim-core offense) (collide-offense no-offense))) 0 - (+! a0-1 1) - ) - ) + (+! a0-1 1))) (countdown (a0-4 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-3 (-> (the-as collide-shape-prim-group v1-1) prims a0-4))) (if (and (= (-> a1-3 prim-core offense) (collide-offense indestructible)) (logtest? (-> a1-3 prim-id) 2)) - (set! (-> a1-3 prim-core offense) (collide-offense touch)) - ) - ) - ) - ) - (none) - ) + (set! (-> a1-3 prim-core offense) (collide-offense touch)))))) + (none)) (defmethod nav-enemy-method-48 ((this double-lurker)) (set! (-> this buddy-handle) (the-as handle #f)) (process-drawable-from-entity! this (-> this entity)) (set! (-> this align) (new 'process 'align-control this)) - (initialize-skeleton this *double-lurker-sg* '()) + (initialize-skeleton this *double-lurker-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (set! (-> this buddy-on-shoulders?) #t) (set! (-> this dead?) #f) (set! (-> this buddy-dead?) #f) (let ((v1-7 (-> this entity extra perm))) - (if (nonzero? (-> v1-7 user-int8 2)) - (set! (-> this buddy-on-shoulders?) #f) - ) + (if (nonzero? (-> v1-7 user-int8 2)) (set! (-> this buddy-on-shoulders?) #f)) (when (nonzero? (-> v1-7 user-int8 0)) (set! (-> this dead?) #t) - (set! (-> this buddy-on-shoulders?) #f) - ) + (set! (-> this buddy-on-shoulders?) #f)) (when (nonzero? (-> v1-7 user-int8 1)) (set! (-> this buddy-dead?) #t) - (set! (-> this buddy-on-shoulders?) #f) - ) - ) + (set! (-> this buddy-on-shoulders?) #f))) (init-defaults! this *double-lurker-when-both-nav-enemy-info*) (set! (-> this neck up) (the-as uint 1)) (set! (-> this neck nose) (the-as uint 2)) @@ -1065,34 +819,18 @@ (set! (-> this buddy-on-shoulders?) #t) (let ((v1-29 (-> this entity extra perm))) (logior! (-> v1-29 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-29 user-int8 2) 0) - ) - 0 - ) - ) - (if (-> this buddy-on-shoulders?) - (set! (-> s5-0 quad) (-> this collide-info trans quad)) - ) + (set! (-> v1-29 user-int8 2) 0)) + 0)) + (if (-> this buddy-on-shoulders?) (set! (-> s5-0 quad) (-> this collide-info trans quad))) (set! (-> this buddy-handle) - (ppointer->handle - (process-spawn double-lurker-top (-> this entity) this (-> this buddy-on-shoulders?) s5-0 :to this) - ) - ) - ) - ) + (ppointer->handle (process-spawn double-lurker-top (-> this entity) this (-> this buddy-on-shoulders?) s5-0 :to this))))) (when (and (not (-> this dead?)) (not (-> this buddy-on-shoulders?))) (nav-enemy-method-51 this) - (init-jm! this *double-lurker-nav-enemy-info*) - ) - (none) - ) + (init-jm! this *double-lurker-nav-enemy-info*)) + (none)) (defmethod init-from-entity! ((this double-lurker) (arg0 entity-actor)) (initialize-collision this) (nav-enemy-method-48 this) - (if (-> this dead?) - (go double-lurker-waiting-to-die) - (go (method-of-object this nav-enemy-idle)) - ) - (none) - ) + (if (-> this dead?) (go double-lurker-waiting-to-die) (go (method-of-object this nav-enemy-idle))) + (none)) diff --git a/goal_src/jak1/levels/sunken/floating-launcher.gc b/goal_src/jak1/levels/sunken/floating-launcher.gc index 24e563b97d..fee9921d20 100644 --- a/goal_src/jak1/levels/sunken/floating-launcher.gc +++ b/goal_src/jak1/levels/sunken/floating-launcher.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/geometry/path.gc") (require "engine/common-obs/baseplat.gc") @@ -12,87 +11,69 @@ ;; DECOMP BEGINS (deftype floating-launcher (baseplat) - ((trigger-height float) - (launcher (pointer launcher)) - ) + ((trigger-height float) + (launcher (pointer launcher))) (:states - floating-launcher-idle - floating-launcher-lowering - floating-launcher-ready - ) - ) + floating-launcher-idle + floating-launcher-lowering + floating-launcher-ready)) - -(defskelgroup *floating-launcher-sg* floating-launcher floating-launcher-lod0-jg floating-launcher-idle-ja - ((floating-launcher-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *floating-launcher-sg* + floating-launcher + floating-launcher-lod0-jg + floating-launcher-idle-ja + ((floating-launcher-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defstate floating-launcher-idle (floating-launcher) :event plat-event - :trans (behavior () - (plat-trans) - (when (< (vector-xz-length (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) 81920.0) - (if (and (>= (-> (target-pos 0) y) (-> self trigger-height)) - (logtest? (-> *target* control status) (cshape-moving-flags onground)) - ) - (go floating-launcher-lowering) - ) - ) - ) - :code (behavior () - (transform-post) - (suspend) - (transform-post) - (suspend) - (loop + :trans + (behavior () + (plat-trans) + (when (< (vector-xz-length (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root trans))) 81920.0) + (if (and (>= (-> (target-pos 0) y) (-> self trigger-height)) + (logtest? (-> *target* control status) (cshape-moving-flags onground))) + (go floating-launcher-lowering)))) + :code + (behavior () + (transform-post) (suspend) - ) - ) - :post plat-post - ) + (transform-post) + (suspend) + (loop (suspend))) + :post plat-post) (defstate floating-launcher-lowering (floating-launcher) :event plat-event :trans plat-trans - :code (behavior () - (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (if a0-1 - (entity-birth-no-kill a0-1) - ) - ) - (let ((f30-0 1.0)) - (while (!= f30-0 0.0) - (set! f30-0 (seek f30-0 0.0 (seconds-per-frame))) - (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) - (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) - (update-transforms! (-> self launcher 0 root)) - (suspend) - ) - ) - (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) - (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) - (update-transforms! (-> self launcher 0 root)) - (go floating-launcher-ready) - ) - :post plat-post - ) + :code + (behavior () + (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (if a0-1 (entity-birth-no-kill a0-1))) + (let ((f30-0 1.0)) + (while (!= f30-0 0.0) + (set! f30-0 (seek f30-0 0.0 (seconds-per-frame))) + (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) + (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) + (update-transforms! (-> self launcher 0 root)) + (suspend))) + (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) + (set! (-> self launcher 0 root trans quad) (-> self basetrans quad)) + (update-transforms! (-> self launcher 0 root)) + (go floating-launcher-ready)) + :post plat-post) (defstate floating-launcher-ready (floating-launcher) :event plat-event :trans plat-trans :code plat-code - :post plat-post - ) + :post plat-post) (defmethod init-from-entity! ((this floating-launcher) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -101,24 +82,20 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (eval-path-curve-div! (-> this path) (-> this root trans) 1.0 'interp) (let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0))) - (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 0 81920.0 :to this)) - ) - (initialize-skeleton this *floating-launcher-sg* '()) + (set! (-> this launcher) (process-spawn launcher (-> this root trans) f30-0 0 81920.0 :to this))) + (initialize-skeleton this *floating-launcher-sg* ()) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root)) (baseplat-method-21 this) (set! (-> this trigger-height) (res-lump-float arg0 'trigger-height)) (go floating-launcher-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/helix-water.gc b/goal_src/jak1/levels/sunken/helix-water.gc index a71404e643..f6094aa3e9 100644 --- a/goal_src/jak1/levels/sunken/helix-water.gc +++ b/goal_src/jak1/levels/sunken/helix-water.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/dark-eco-pool.gc") (require "levels/sunken/sunken-obs.gc") (require "engine/common-obs/babak.gc") @@ -12,157 +11,116 @@ ;; dgos: L1, SUN, SUNKEN (declare-type helix-water basic) + (declare-type helix-slide-door basic) + (declare-type helix-button basic) + (define-extern *helix-slide-door* helix-slide-door) + (define-extern *helix-water* helix-water) + (define-extern *helix-button* helix-button) ;; DECOMP BEGINS (deftype helix-slide-door (process-drawable) - ((root collide-shape :override) - ) + ((root collide-shape :override)) (:states - helix-slide-door-close - helix-slide-door-idle-closed - helix-slide-door-idle-open - ) - ) + helix-slide-door-close + helix-slide-door-idle-closed + helix-slide-door-idle-open)) - -(defskelgroup *helix-slide-door-sg* helix-slide-door helix-slide-door-lod0-jg helix-slide-door-idle-ja - ((helix-slide-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 12 0 18) - ) +(defskelgroup *helix-slide-door-sg* + helix-slide-door + helix-slide-door-lod0-jg + helix-slide-door-idle-ja + ((helix-slide-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 12 0 18)) (deftype helix-button (process-drawable) - ((root collide-shape-moving :override) - (my-water entity-actor) - (my-door entity-actor) - (fcell-handle handle) - (down-y float) - (spawn-trans vector :inline) - ) + ((root collide-shape-moving :override) + (my-water entity-actor) + (my-door entity-actor) + (fcell-handle handle) + (down-y float) + (spawn-trans vector :inline)) (:states - helix-button-activate - helix-button-idle-down - helix-button-idle-up - helix-button-quick-activate - helix-button-startup - ) - ) + helix-button-activate + helix-button-idle-down + helix-button-idle-up + helix-button-quick-activate + helix-button-startup)) +(defskelgroup *helix-button-sg* + helix-button + helix-button-lod0-jg + helix-button-idle-ja + ((helix-button-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 5.4)) -(defskelgroup *helix-button-sg* helix-button helix-button-lod0-jg helix-button-idle-ja - ((helix-button-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 5.4) - ) - -(deftype helix-dark-eco (dark-eco-pool) - () - ) - +(deftype helix-dark-eco (dark-eco-pool) ()) (deftype helix-water (process-drawable) - ((last-alt-actor-consumed int32) - (alt-actors (array entity-actor)) - (transv-y float) - (start-y float) - (end-y float) - (dark-eco (pointer helix-dark-eco)) - ) + ((last-alt-actor-consumed int32) + (alt-actors (array entity-actor)) + (transv-y float) + (start-y float) + (end-y float) + (dark-eco (pointer helix-dark-eco))) (:methods - (helix-water-method-20 (_type_) none) - (helix-water-method-21 (_type_) object) - ) + (helix-water-method-20 (_type_) none) + (helix-water-method-21 (_type_) object)) (:states - helix-water-activated - helix-water-idle - ) - ) - + helix-water-activated + helix-water-idle)) (defstate water-vol-idle (helix-dark-eco) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((a0-1 (-> self sound))) - (set! (-> a0-1 spec pitch-mod) 2057) - (update-vol! a0-1 100) - ) - ) - (else - ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - (let ((a0-0 (-> self sound))) - (set! (-> a0-0 spec pitch-mod) 1524) - (update-vol! a0-0 58) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (update! (-> self sound)) - ) - :post (behavior () - (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) post))) - (if t9-0 - ((the-as (function none :behavior helix-dark-eco) t9-0)) - ) - ) - (ja-post) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((a0-1 (-> self sound))) (set! (-> a0-1 spec pitch-mod) 2057) (update-vol! a0-1 100))) + (else ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block)))) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) enter))) (if t9-0 (t9-0))) + (let ((a0-0 (-> self sound))) (set! (-> a0-0 spec pitch-mod) 1524) (update-vol! a0-0 58))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) trans))) (if t9-0 (t9-0))) + (update! (-> self sound))) + :post + (behavior () + (let ((t9-0 (-> (method-of-type dark-eco-pool water-vol-idle) post))) + (if t9-0 ((the-as (function none :behavior helix-dark-eco) t9-0)))) + (ja-post))) (defstate helix-slide-door-idle-open (helix-slide-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go helix-slide-door-close) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go helix-slide-door-close)))) + :code + (behavior () + (loop (suspend)))) (defstate helix-slide-door-close (helix-slide-door) - :code (behavior () - (ja-no-eval :group! helix-slide-door-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (transform-post) - (go helix-slide-door-idle-closed) - ) - :post transform-post - ) + :code + (behavior () + (ja-no-eval :group! helix-slide-door-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (transform-post) + (go helix-slide-door-idle-closed)) + :post transform-post) (defstate helix-slide-door-idle-closed (helix-slide-door) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defmethod init-from-entity! ((this helix-slide-door) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -173,322 +131,197 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 53248.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *helix-slide-door-sg* '()) + (initialize-skeleton this *helix-slide-door-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (set! *helix-slide-door* this) (go helix-slide-door-idle-open) - (none) - ) + (none)) (defstate helix-button-startup (helix-button) - :code (behavior () - (when (not (task-complete? *game-info* (game-task sunken-slide))) - (let ((a0-1 (new 'stack-no-clear 'vector))) - (set! (-> a0-1 quad) (-> self root trans quad)) - (+! (-> a0-1 y) 30720.0) - (let ((v1-7 (birth-pickup-at-point - a0-1 - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) - ) - ) - (set! (-> self fcell-handle) (ppointer->handle v1-7)) - (if v1-7 - (clear-collide-with-as (-> (the-as collectable (-> v1-7 0)) root)) - ) - ) - ) - ) - (go helix-button-idle-up) - ) - ) + :code + (behavior () + (when (not (task-complete? *game-info* (game-task sunken-slide))) + (let ((a0-1 (new 'stack-no-clear 'vector))) + (set! (-> a0-1 quad) (-> self root trans quad)) + (+! (-> a0-1 y) 30720.0) + (let ((v1-7 (birth-pickup-at-point a0-1 (pickup-type fuel-cell) (the float (-> self entity extra perm task)) #f self (-> self fact)))) + (set! (-> self fcell-handle) (ppointer->handle v1-7)) + (if v1-7 (clear-collide-with-as (-> (the-as collectable (-> v1-7 0)) root)))))) + (go helix-button-idle-up))) (defstate helix-button-idle-up (helix-button) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (when *target* - (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) - (cond - ((and (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (not (handle->process (-> self fcell-handle))) - ) - (go helix-button-quick-activate) - ) - (else - (process-entity-status! self (entity-perm-status complete) #t) - (go helix-button-activate) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) + (when *target* + (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) + (cond + ((and (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (not (handle->process (-> self fcell-handle)))) + (go helix-button-quick-activate)) + (else (process-entity-status! self (entity-perm-status complete) #t) (go helix-button-activate)))))))) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate helix-button-activate (helix-button) :trans rider-trans - :code (behavior () - (local-vars (v1-7 symbol)) - (let ((a0-1 (handle->process (-> self fcell-handle)))) - (when a0-1 - (send-event a0-1 'pickup) - (until v1-7 - (suspend) - (set! v1-7 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - ) - ) - (let ((v1-11 - (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self spawn-trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as (pointer sunkencam) v1-11) 0 seq) (the-as uint 2)) - ) - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 0) - (set! (-> a1-5 message) 'music) - (let ((t9-4 send-event-function) - (v1-15 (-> self my-water)) - ) - (t9-4 - (if v1-15 - (-> v1-15 extra process) - ) - a1-5 - ) - ) - ) - (set-time! (-> self state-time)) - (when *target* - (let ((gp-1 (new 'stack-no-clear 'vector))) - (vector-! gp-1 (-> self root trans) (target-pos 0)) - (when (< 12288.0 (vector-xz-length gp-1)) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 4096.0) - (move-by-vector! (-> *target* control) gp-1) - (do-push-aways! (-> self root)) - (detect-riders! (-> self root)) - ) - ) - ) - (until (time-elapsed? (-> self state-time) (seconds 1.5)) - (suspend) - ) - (level-hint-spawn (text-id sunken-helix-hint) "sksp0124" (the-as entity #f) *entity-pool* (game-task none)) - (send-event *target* 'play-anim 'shock-in) - (sound-play "prec-button8") - (set! (-> self root transv quad) (the-as uint128 0)) - (let ((gp-3 5)) - (until (<= gp-3 0) - (let ((f1-0 (-> self root transv y)) - (f0-2 (-> self root trans y)) - (a1-11 (new 'stack-no-clear 'vector)) - ) - (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) - (f0-3 (+ f0-2 (* f1-1 (seconds-per-frame)))) - ) - (when (>= (-> self down-y) f0-3) - (set! f0-3 (-> self down-y)) - (set! f1-1 (* 0.65 (- f1-1))) - (+! gp-3 -1) - ) - (set! (-> self root transv y) f1-1) - (set! (-> a1-11 quad) (-> self root trans quad)) - (set! (-> a1-11 y) f0-3) - ) - (move-to-point! (-> self root) a1-11) - ) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.25)) - (suspend) - ) - (sound-play "maindoor") - (until (time-elapsed? (-> self state-time) (seconds 1.9)) - (suspend) - ) - (let ((a1-13 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-13 from) self) - (set! (-> a1-13 num-params) 0) - (set! (-> a1-13 message) 'trigger) - (let ((t9-18 send-event-function) - (v1-66 (-> self my-door)) - ) - (t9-18 - (if v1-66 - (-> v1-66 extra process) - ) - a1-13 - ) - ) - ) - (until (time-elapsed? (-> self state-time) (seconds 3.5)) - (suspend) - ) - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 0) - (set! (-> a1-14 message) 'trigger) - (let ((t9-19 send-event-function) - (v1-74 (-> self my-water)) - ) - (t9-19 - (if v1-74 - (-> v1-74 extra process) - ) - a1-14 - ) - ) - ) - (level-hint-spawn - (text-id sunken-helix-darkeco-hint) - "sksp0128" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (suspend) - ) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (send-event *target* 'play-anim 'shock-out) - (send-event *target* 'neck 1.0 (-> self my-door extra trans)) - (suspend) - ) - (go helix-button-idle-down) - ) - :post rider-post - ) + :code + (behavior () + (local-vars (v1-7 symbol)) + (let ((a0-1 (handle->process (-> self fcell-handle)))) + (when a0-1 + (send-event a0-1 'pickup) + (until v1-7 + (suspend) + (set! v1-7 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))))) + (let ((v1-11 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self spawn-trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as (pointer sunkencam) v1-11) 0 seq) (the-as uint 2))) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 0) + (set! (-> a1-5 message) 'music) + (let ((t9-4 send-event-function) + (v1-15 (-> self my-water))) + (t9-4 (if v1-15 (-> v1-15 extra process)) a1-5))) + (set-time! (-> self state-time)) + (when *target* + (let ((gp-1 (new 'stack-no-clear 'vector))) + (vector-! gp-1 (-> self root trans) (target-pos 0)) + (when (< 12288.0 (vector-xz-length gp-1)) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 4096.0) + (move-by-vector! (-> *target* control) gp-1) + (do-push-aways! (-> self root)) + (detect-riders! (-> self root))))) + (until (time-elapsed? (-> self state-time) (seconds 1.5)) + (suspend)) + (level-hint-spawn (text-id sunken-helix-hint) "sksp0124" (the-as entity #f) *entity-pool* (game-task none)) + (send-event *target* 'play-anim 'shock-in) + (sound-play "prec-button8") + (set! (-> self root transv quad) (the-as uint128 0)) + (let ((gp-3 5)) + (until (<= gp-3 0) + (let ((f1-0 (-> self root transv y)) + (f0-2 (-> self root trans y)) + (a1-11 (new 'stack-no-clear 'vector))) + (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) + (f0-3 (+ f0-2 (* f1-1 (seconds-per-frame))))) + (when (>= (-> self down-y) f0-3) + (set! f0-3 (-> self down-y)) + (set! f1-1 (* 0.65 (- f1-1))) + (+! gp-3 -1)) + (set! (-> self root transv y) f1-1) + (set! (-> a1-11 quad) (-> self root trans quad)) + (set! (-> a1-11 y) f0-3)) + (move-to-point! (-> self root) a1-11)) + (suspend))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.25)) + (suspend)) + (sound-play "maindoor") + (until (time-elapsed? (-> self state-time) (seconds 1.9)) + (suspend)) + (let ((a1-13 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-13 from) self) + (set! (-> a1-13 num-params) 0) + (set! (-> a1-13 message) 'trigger) + (let ((t9-18 send-event-function) + (v1-66 (-> self my-door))) + (t9-18 (if v1-66 (-> v1-66 extra process)) a1-13))) + (until (time-elapsed? (-> self state-time) (seconds 3.5)) + (suspend)) + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 0) + (set! (-> a1-14 message) 'trigger) + (let ((t9-19 send-event-function) + (v1-74 (-> self my-water))) + (t9-19 (if v1-74 (-> v1-74 extra process)) a1-14))) + (level-hint-spawn (text-id sunken-helix-darkeco-hint) "sksp0128" (the-as entity #f) *entity-pool* (game-task none)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (suspend)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (send-event *target* 'play-anim 'shock-out) + (send-event *target* 'neck 1.0 (-> self my-door extra trans)) + (suspend)) + (go helix-button-idle-down)) + :post rider-post) (defstate helix-button-quick-activate (helix-button) :trans rider-trans - :code (behavior () - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'music) - (let ((t9-0 send-event-function) - (v1-1 (-> self my-water)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - (sound-play "prec-button8") - (sound-play "maindoor") - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 0) - (set! (-> a1-3 message) 'trigger) - (let ((t9-5 send-event-function) - (v1-7 (-> self my-door)) - ) - (t9-5 - (if v1-7 - (-> v1-7 extra process) - ) - a1-3 - ) - ) - ) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'trigger) - (let ((t9-6 send-event-function) - (v1-11 (-> self my-water)) - ) - (t9-6 - (if v1-11 - (-> v1-11 extra process) - ) - a1-4 - ) - ) - ) - (set! (-> self root transv quad) (the-as uint128 0)) - (let ((gp-2 5)) - (until (<= gp-2 0) - (let ((f1-0 (-> self root transv y)) - (f0-0 (-> self root trans y)) - (a1-5 (new 'stack-no-clear 'vector)) - ) - (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) - (f0-1 (+ f0-0 (* f1-1 (seconds-per-frame)))) - ) - (when (>= (-> self down-y) f0-1) - (set! f0-1 (-> self down-y)) - (set! f1-1 (* 0.65 (- f1-1))) - (+! gp-2 -1) - ) - (set! (-> self root transv y) f1-1) - (set! (-> a1-5 quad) (-> self root trans quad)) - (set! (-> a1-5 y) f0-1) - ) - (move-to-point! (-> self root) a1-5) - ) - (suspend) - ) - ) - (go helix-button-idle-down) - ) - :post rider-post - ) + :code + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'music) + (let ((t9-0 send-event-function) + (v1-1 (-> self my-water))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + (sound-play "prec-button8") + (sound-play "maindoor") + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 0) + (set! (-> a1-3 message) 'trigger) + (let ((t9-5 send-event-function) + (v1-7 (-> self my-door))) + (t9-5 (if v1-7 (-> v1-7 extra process)) a1-3))) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'trigger) + (let ((t9-6 send-event-function) + (v1-11 (-> self my-water))) + (t9-6 (if v1-11 (-> v1-11 extra process)) a1-4))) + (set! (-> self root transv quad) (the-as uint128 0)) + (let ((gp-2 5)) + (until (<= gp-2 0) + (let ((f1-0 (-> self root transv y)) + (f0-0 (-> self root trans y)) + (a1-5 (new 'stack-no-clear 'vector))) + (let* ((f1-1 (+ f1-0 (* -737280.0 (seconds-per-frame)))) + (f0-1 (+ f0-0 (* f1-1 (seconds-per-frame))))) + (when (>= (-> self down-y) f0-1) + (set! f0-1 (-> self down-y)) + (set! f1-1 (* 0.65 (- f1-1))) + (+! gp-2 -1)) + (set! (-> self root transv y) f1-1) + (set! (-> a1-5 quad) (-> self root trans quad)) + (set! (-> a1-5 y) f0-1)) + (move-to-point! (-> self root) a1-5)) + (suspend))) + (go helix-button-idle-down)) + :post rider-post) (defstate helix-button-idle-down (helix-button) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (loop (suspend)))) (defmethod init-from-entity! ((this helix-button) (arg0 entity-actor)) (set! (-> this fcell-handle) (the-as handle #f)) @@ -497,9 +330,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -508,159 +339,93 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 22118.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *helix-button-sg* '()) + (initialize-skeleton this *helix-button-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (set! (-> this spawn-trans quad) (-> this root trans quad)) (+! (-> this root trans y) -26624.0) (set! (-> this down-y) (+ -6553.6 (-> this root trans y))) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (ja-post) (update-transforms! (-> this root)) (set! *helix-button* this) (go helix-button-startup) - (none) - ) + (none)) (defmethod helix-water-method-21 ((this helix-water)) (let ((s5-0 (+ (-> this last-alt-actor-consumed) 1))) (when (< s5-0 (-> this alt-actors length)) (let* ((v1-5 (-> this alt-actors s5-0)) - (s4-0 (if v1-5 - (-> v1-5 extra process) - ) - ) - (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) + (s4-0 (if v1-5 (-> v1-5 extra process))) + (a0-3 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) (+ -1638.4 (-> this root trans y)) (cond (a0-3 - (when (< (-> (the-as process-drawable a0-3) root trans y) (-> this root trans y)) - (set! (-> this last-alt-actor-consumed) s5-0) - (case (-> a0-3 type) - ((babak) - (send-event a0-3 'instant-death) - ) - ((ecovent) - (send-event a0-3 'show-particles #f) - ) - ((launcher) - (send-event a0-3 'instant-death) - ) - ) - ) - ) - (else - (set! (-> this last-alt-actor-consumed) s5-0) - s5-0 - ) - ) - ) - ) - ) - ) + (when (< (-> (the-as process-drawable a0-3) root trans y) (-> this root trans y)) + (set! (-> this last-alt-actor-consumed) s5-0) + (case (-> a0-3 type) + ((babak) (send-event a0-3 'instant-death)) + ((ecovent) (send-event a0-3 'show-particles #f)) + ((launcher) (send-event a0-3 'instant-death))))) + (else (set! (-> this last-alt-actor-consumed) s5-0) s5-0)))))) (defstate helix-water-idle (helix-water) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go helix-water-activated) - ) - (('music) - (set-setting! 'music 'danger 0.0 0) - ) - ) - ) - :code (behavior () - (set! (-> self root trans y) (-> self start-y)) - (set! (-> self last-alt-actor-consumed) -1) - (set! (-> self transv-y) 9216.0) - (suspend) - (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) - (loop - (logior! (-> self mask) (process-mask sleep-code)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go helix-water-activated)) + (('music) (set-setting! 'music 'danger 0.0 0)))) + :code + (behavior () + (set! (-> self root trans y) (-> self start-y)) + (set! (-> self last-alt-actor-consumed) -1) + (set! (-> self transv-y) 9216.0) (suspend) - ) - ) - :post ja-post - ) + (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defstate helix-water-activated (helix-water) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (when (= (-> proc type) launcherdoor) - (remove-setting! 'music) - (go helix-water-idle) - ) - ) - ) - ) - :trans (behavior () - (seek! (-> self root scale y) 0.8 (* 0.667 (seconds-per-frame))) - (when *target* - (let ((f0-4 (-> (target-pos 0) y))) - (when (not (logtest? (-> *target* state-flags) (state-flags grabbed))) - (let* ((f0-5 (- f0-4 (-> self root trans y))) - (f0-6 (+ -40960.0 f0-5)) - (f0-7 (* 0.000024414063 f0-6)) - ) - (cond - ((< f0-7 0.0) - (set! f0-7 0.0) - ) - ((< 1.0 f0-7) - (set! f0-7 1.0) - ) - ) - (set! (-> self transv-y) (+ 3584.0 (* 12800.0 f0-7))) - ) - ) - ) - ) - (+! (-> self root trans y) (* (-> self transv-y) (seconds-per-frame))) - (if (< (-> self end-y) (-> self root trans y)) - (set! (-> self root trans y) (-> self end-y)) - ) - (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) - (helix-water-method-21 self) - ) - :code (behavior () - (send-event (ppointer->process (-> self dark-eco)) 'trigger) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (when (= (-> proc type) launcherdoor) (remove-setting! 'music) (go helix-water-idle))))) + :trans + (behavior () + (seek! (-> self root scale y) 0.8 (* 0.667 (seconds-per-frame))) + (when *target* + (let ((f0-4 (-> (target-pos 0) y))) + (when (not (logtest? (-> *target* state-flags) (state-flags grabbed))) + (let* ((f0-5 (- f0-4 (-> self root trans y))) + (f0-6 (+ -40960.0 f0-5)) + (f0-7 (* 0.000024414063 f0-6))) + (cond + ((< f0-7 0.0) (set! f0-7 0.0)) + ((< 1.0 f0-7) (set! f0-7 1.0))) + (set! (-> self transv-y) (+ 3584.0 (* 12800.0 f0-7))))))) + (+! (-> self root trans y) (* (-> self transv-y) (seconds-per-frame))) + (if (< (-> self end-y) (-> self root trans y)) (set! (-> self root trans y) (-> self end-y))) + (send-event (ppointer->process (-> self dark-eco)) 'move-to (-> self root trans)) + (helix-water-method-21 self)) + :code + (behavior () + (send-event (ppointer->process (-> self dark-eco)) 'trigger) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post ja-post) (defmethod relocate ((this helix-water) (arg0 int)) - (if (nonzero? (-> this alt-actors)) - (&+! (-> this alt-actors) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this alt-actors)) (&+! (-> this alt-actors) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this helix-water) (arg0 entity-actor)) (set! (-> this last-alt-actor-consumed) -1) @@ -673,14 +438,9 @@ (let ((s4-0 (entity-actor-count arg0 'alt-actor))) (set! (-> this alt-actors) (new 'process 'boxed-array entity-actor s4-0)) (dotimes (s3-0 s4-0) - (set! (-> this alt-actors s3-0) (entity-actor-lookup arg0 'alt-actor s3-0)) - ) - ) + (set! (-> this alt-actors s3-0) (entity-actor-lookup arg0 'alt-actor s3-0)))) (set! (-> this root trans y) (-> this start-y)) - (set! (-> this dark-eco) - (process-spawn helix-dark-eco :init water-vol-init-by-other (-> this entity) :to this) - ) + (set! (-> this dark-eco) (process-spawn helix-dark-eco :init water-vol-init-by-other (-> this entity) :to this)) (set! *helix-water* this) (go helix-water-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/orbit-plat.gc b/goal_src/jak1/levels/sunken/orbit-plat.gc index 864723d6b0..7dcbc54baf 100644 --- a/goal_src/jak1/levels/sunken/orbit-plat.gc +++ b/goal_src/jak1/levels/sunken/orbit-plat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/common-obs/baseplat.gc") @@ -14,230 +13,179 @@ ;; DECOMP BEGINS (deftype orbit-plat-bottom (process-drawable) - ((parent-override (pointer orbit-plat) :overlay-at parent) - (part2 sparticle-launch-control) - ) + ((parent-override (pointer orbit-plat) :overlay-at parent) + (part2 sparticle-launch-control)) (:methods - (orbit-plat-bottom-method-20 (_type_ vector vector) none) - ) + (orbit-plat-bottom-method-20 (_type_ vector vector) none)) (:states - orbit-plat-bottom-idle - ) - ) + orbit-plat-bottom-idle)) - -(defskelgroup *orbit-plat-bottom-sg* orbit-plat-bottom orbit-plat-bottom-lod0-jg orbit-plat-bottom-idle-ja - ((orbit-plat-bottom-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.8) - ) +(defskelgroup *orbit-plat-bottom-sg* + orbit-plat-bottom + orbit-plat-bottom-lod0-jg + orbit-plat-bottom-idle-ja + ((orbit-plat-bottom-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.8)) (deftype orbit-plat (baseplat) - ((other entity-actor) - (rot-dir float) - (reset-trans vector :inline) - (is-reset? symbol) - (reset-length float) - (timeout float) - (plat-status uint64) - ) + ((other entity-actor) + (rot-dir float) + (reset-trans vector :inline) + (is-reset? symbol) + (reset-length float) + (timeout float) + (plat-status uint64)) (:methods - (orbit-plat-method-27 (_type_) symbol) - (orbit-plat-method-28 (_type_) symbol) - ) + (orbit-plat-method-27 (_type_) symbol) + (orbit-plat-method-28 (_type_) symbol)) (:states - orbit-plat-idle - orbit-plat-reset - orbit-plat-riding - orbit-plat-rotating - orbit-plat-still - orbit-plat-wait-for-other - ) - ) + orbit-plat-idle + orbit-plat-reset + orbit-plat-riding + orbit-plat-rotating + orbit-plat-still + orbit-plat-wait-for-other)) - -(defskelgroup *orbit-plat-sg* orbit-plat orbit-plat-lod0-jg orbit-plat-idle-ja - ((orbit-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.4) - ) +(defskelgroup *orbit-plat-sg* + orbit-plat + orbit-plat-lod0-jg + orbit-plat-idle-ja + ((orbit-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.4)) (defpartgroup group-orbit-plat-jet :id 440 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.5) :length (seconds 0.25)) - (sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.25) :length (seconds 0.32)) - (sp-item 1715 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.3) :length (seconds 0.2)) - (sp-item 1716 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.5) :length (seconds 0.25)) + (sp-item 1715 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.25) :length (seconds 0.32)) + (sp-item 1715 :fade-after (meters 140) :falloff-to (meters 160) :period (seconds 0.3) :length (seconds 0.2)) + (sp-item 1716 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1716 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 64.0) - (:b 48.0) - (:a 32.0 96.0) - (:vel-z (meters 0.02) (meters 0.0033333334)) - (:scalevel-x (meters -0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -1.7066667) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 64.0) + (:b 48.0) + (:a 32.0 96.0) + (:vel-z (meters 0.02) (meters 0.0033333334)) + (:scalevel-x (meters -0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -1.7066667) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 15)))) (defpart 1715 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 2.0) - (:sound (static-sound-spec "steam-medium" :num 0.05 :volume 80.0)) - (:scale-x (meters 0.75) (meters 0.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 96.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-z (meters 0.053333335) (meters 0.0033333334)) - (:scalevel-x (meters -0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.8) - (:friction 0.96) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:sound (static-sound-spec "steam-medium" :num 0.05 :volume 80.0)) + (:scale-x (meters 0.75) (meters 0.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 96.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-z (meters 0.053333335) (meters 0.0033333334)) + (:scalevel-x (meters -0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.8) + (:friction 0.96) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 15)))) (defpart 1717 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 3.0) - (:scale-x (meters 1.7) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 16.0 96.0) - (:b 255.0) - (:a 64.0) - (:vel-z (meters 0.45) (meters 0.05)) - (:fade-r -0.08888889) - (:timer (seconds 1.2)) - (:flags (bit2 launch-along-z)) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 0)) - (:conerot-radius (meters -3) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 3.0) + (:scale-x (meters 1.7) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 16.0 96.0) + (:b 255.0) + (:a 64.0) + (:vel-z (meters 0.45) (meters 0.05)) + (:fade-r -0.08888889) + (:timer (seconds 1.2)) + (:flags (bit2 launch-along-z)) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 0)) + (:conerot-radius (meters -3) (meters 4)))) (defmethod orbit-plat-bottom-method-20 ((this orbit-plat-bottom) (arg0 vector) (arg1 vector)) (let* ((s5-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)) - (f30-0 (vector-length s5-1)) - ) + (f30-0 (vector-length s5-1))) (let ((f28-0 (* 0.0005022321 f30-0))) (set! (-> *part-id-table* 1717 init-specs 13 initial-valuef) (vector-y-angle s5-1)) (set! (-> *part-id-table* 1717 init-specs 12 initial-valuef) (- (vector-x-angle s5-1))) (set! (-> *part-id-table* 1717 init-specs 9 initial-valuef) (/ -32.0 f28-0)) - (set! (-> *part-id-table* 1717 init-specs 10 initial-valuef) (the-as float (the int f28-0))) - ) - (set! (-> *part-id-table* 1717 init-specs 1 random-rangef) (* 0.000009494358 f30-0)) - ) + (set! (-> *part-id-table* 1717 init-specs 10 initial-valuef) (the-as float (the int f28-0)))) + (set! (-> *part-id-table* 1717 init-specs 1 random-rangef) (* 0.000009494358 f30-0))) (launch-particles (-> *part-id-table* 1717) arg0) 0 - (none) - ) + (none)) (defstate orbit-plat-bottom-idle (orbit-plat-bottom) - :code (behavior () - (loop - (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) - (+! (-> self root trans y) -5324.8) - (spawn (-> self part2) (-> self root trans)) - (let* ((a0-6 (-> self parent-override 0 other)) - (v1-9 (if a0-6 - (-> a0-6 extra process) - ) - ) - ) - (when v1-9 - (let ((f30-0 (atan - (- (-> (the-as orbit-plat v1-9) root trans x) (-> self root trans x)) - (- (-> (the-as orbit-plat v1-9) root trans z) (-> self root trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f30-0) - (let ((v1-16 (-> self parent-override 0 plat-status)) - (f30-1 (+ 16384.0 f30-0)) - ) - (cond - ((= v1-16 2) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set-vector! gp-0 0.0 -2048.0 8192.0 1.0) - (if (< (-> self parent-override 0 rot-dir) 0.0) - (set! f30-1 (+ 32768.0 f30-1)) - ) - (vector-rotate-around-y! gp-0 gp-0 f30-1) - (set! (-> *part-id-table* 1716 init-specs 16 initial-valuef) f30-1) - (set! (-> *part-id-table* 1715 init-specs 18 initial-valuef) f30-1) - (vector+! gp-0 gp-0 (-> self root trans)) - (spawn (-> self part) gp-0) - ) - ) - (else - (let* ((a0-18 (-> self parent-override 0 other)) - (v1-32 (if a0-18 - (-> a0-18 extra process) - ) - ) - ) - (when (and v1-32 (= (-> (the-as orbit-plat v1-32) plat-status) 2)) - (let ((gp-1 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self root trans quad)) - (+! (-> gp-1 y) -2048.0) - (set! (-> s5-0 quad) (-> (the-as orbit-plat v1-32) root trans quad)) - (+! (-> s5-0 y) -7372.8) - (vector-! s4-0 s5-0 gp-1) - (vector-normalize! s4-0 1.0) - (vector+*! s5-0 gp-1 s4-0 26624.0) - (vector+*! gp-1 gp-1 s4-0 8192.0) - ) - (orbit-plat-bottom-method-20 self gp-1 s5-0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (set! (-> self root trans quad) (-> self parent-override 0 root trans quad)) + (+! (-> self root trans y) -5324.8) + (spawn (-> self part2) (-> self root trans)) + (let* ((a0-6 (-> self parent-override 0 other)) + (v1-9 (if a0-6 (-> a0-6 extra process)))) + (when v1-9 + (let ((f30-0 (atan (- (-> (the-as orbit-plat v1-9) root trans x) (-> self root trans x)) + (- (-> (the-as orbit-plat v1-9) root trans z) (-> self root trans z))))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f30-0) + (let ((v1-16 (-> self parent-override 0 plat-status)) + (f30-1 (+ 16384.0 f30-0))) + (cond + ((= v1-16 2) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set-vector! gp-0 0.0 -2048.0 8192.0 1.0) + (if (< (-> self parent-override 0 rot-dir) 0.0) (set! f30-1 (+ 32768.0 f30-1))) + (vector-rotate-around-y! gp-0 gp-0 f30-1) + (set! (-> *part-id-table* 1716 init-specs 16 initial-valuef) f30-1) + (set! (-> *part-id-table* 1715 init-specs 18 initial-valuef) f30-1) + (vector+! gp-0 gp-0 (-> self root trans)) + (spawn (-> self part) gp-0))) + (else + (let* ((a0-18 (-> self parent-override 0 other)) + (v1-32 (if a0-18 (-> a0-18 extra process)))) + (when (and v1-32 (= (-> (the-as orbit-plat v1-32) plat-status) 2)) + (let ((gp-1 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self root trans quad)) + (+! (-> gp-1 y) -2048.0) + (set! (-> s5-0 quad) (-> (the-as orbit-plat v1-32) root trans quad)) + (+! (-> s5-0 y) -7372.8) + (vector-! s4-0 s5-0 gp-1) + (vector-normalize! s4-0 1.0) + (vector+*! s5-0 gp-1 s4-0 26624.0) + (vector+*! gp-1 gp-1 s4-0 8192.0)) + (orbit-plat-bottom-method-20 self gp-1 s5-0)))))))))) + (suspend))) + :post ja-post) (defmethod relocate ((this orbit-plat-bottom) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as orbit-plat-bottom ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as orbit-plat-bottom ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this orbit-plat-bottom)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defbehavior orbit-plat-bottom-init-by-other orbit-plat-bottom ((arg0 entity-actor) (arg1 orbit-plat)) (set! (-> self entity) arg0) @@ -249,201 +197,115 @@ (+! (-> self root trans y) -5324.8) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 440) self)) (set! (-> self part2) (create-launch-control (-> *part-group-id-table* 107) self)) - (initialize-skeleton self *orbit-plat-bottom-sg* '()) + (initialize-skeleton self *orbit-plat-bottom-sg* ()) (ja-channel-set! 1) (ja :group! orbit-plat-bottom-idle-ja :num! min) (go orbit-plat-bottom-idle) - (none) - ) + (none)) (defstate orbit-plat-idle (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - (('query-reset) - (if (not (-> self is-reset?)) - (go orbit-plat-reset) - ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'reset) - (let ((t9-3 send-event-function) - (v1-8 (-> self other)) - ) - (t9-3 - (if v1-8 - (-> v1-8 extra process) - ) - a1-1 - ) - ) - ) - ) - (('reset) - (go orbit-plat-reset) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)) + (('query-reset) + (if (not (-> self is-reset?)) (go orbit-plat-reset)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'reset) + (let ((t9-3 send-event-function) + (v1-8 (-> self other))) + (t9-3 (if v1-8 (-> v1-8 extra process)) a1-1)))) + (('reset) (go orbit-plat-reset)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (ja-no-eval :num! (seek! 0.0)) - (dotimes (gp-0 2) - (transform-post) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (loop - (when (nonzero? (-> self root riders num-riders)) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'go) - (let ((t9-4 send-event-function) - (v1-14 (-> self other)) - ) - (t9-4 - (if v1-14 - (-> v1-14 extra process) - ) - a1-2 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - (when (not (-> self is-reset?)) - (let ((a1-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'query-reset) - (let ((t9-8 send-event-function) - (v1-26 (-> self other)) - ) - (t9-8 - (if v1-26 - (-> v1-26 extra process) - ) - a1-4 - ) - ) - ) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (ja-no-eval :num! (seek! 0.0)) + (dotimes (gp-0 2) + (transform-post) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (loop (when (nonzero? (-> self root riders num-riders)) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'go) + (let ((t9-4 send-event-function) + (v1-14 (-> self other))) + (t9-4 (if v1-14 (-> v1-14 extra process)) a1-2))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))) + (when (not (-> self is-reset?)) + (let ((a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'query-reset) + (let ((t9-8 send-event-function) + (v1-26 (-> self other))) + (t9-8 (if v1-26 (-> v1-26 extra process)) a1-4)))))) + :post plat-post) (defmethod orbit-plat-method-28 ((this orbit-plat)) (when (time-elapsed? (-> this state-time) (the int (* 300.0 (-> this timeout)))) (cond (*target* - (let ((s5-0 (target-pos 0))) - (if (or (>= (vector-vector-xz-distance s5-0 (-> this root trans)) 102400.0) - (>= (- (-> this root trans y) (-> s5-0 y)) 16384.0) - ) - (return #t) - ) - ) - ) - (else - (return #t) - ) - ) - ) - #f - ) + (let ((s5-0 (target-pos 0))) + (if (or (>= (vector-vector-xz-distance s5-0 (-> this root trans)) 102400.0) + (>= (- (-> this root trans y) (-> s5-0 y)) 16384.0)) + (return #t)))) + (else (return #t)))) + #f) (defstate orbit-plat-still (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (set-time! (-> self state-time)) - (ja-no-eval :num! (seek! 0.0)) - (until (orbit-plat-method-28 self) - (when (nonzero? (-> self root riders num-riders)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go) - (let ((t9-1 send-event-function) - (v1-10 (-> self other)) - ) - (t9-1 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (go orbit-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (set-time! (-> self state-time)) + (ja-no-eval :num! (seek! 0.0)) + (until (orbit-plat-method-28 self) + (when (nonzero? (-> self root riders num-riders)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go) + (let ((t9-1 send-event-function) + (v1-10 (-> self other))) + (t9-1 (if v1-10 (-> v1-10 extra process)) a1-1))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (go orbit-plat-idle)) + :post plat-post) (defstate orbit-plat-riding (orbit-plat) :event plat-event :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 1)) - (ja-no-eval :num! (seek!)) - (loop - (when (zero? (-> self root riders num-riders)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'stop) - (let ((t9-1 send-event-function) - (v1-13 (-> self other)) - ) - (t9-1 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-still) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek!)) - ) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 1)) + (ja-no-eval :num! (seek!)) + (loop (when (zero? (-> self root riders num-riders)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'stop) + (let ((t9-1 send-event-function) + (v1-13 (-> self other))) + (t9-1 (if v1-13 (-> v1-13 extra process)) a1-1))) + (go orbit-plat-still)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek!))))) + :post plat-post) (defun get-rotate-point! ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float) (arg5 float)) (let ((s5-0 (new 'stack-no-clear 'vector))) @@ -455,305 +317,165 @@ (set! (-> s2-0 z) (- (* arg4 (-> s5-0 x)))) (vector-normalize! s2-0 (* arg5 (seconds-per-frame))) (+! (-> s5-0 x) (-> s2-0 x)) - (+! (-> s5-0 z) (-> s2-0 z)) - ) - ) + (+! (-> s5-0 z) (-> s2-0 z)))) (vector-normalize! s5-0 (the-as float arg3)) - (vector+! arg0 arg1 s5-0) - ) - arg0 - ) + (vector+! arg0 arg1 s5-0)) + arg0) (defun get-nav-point! ((arg0 vector) (arg1 orbit-plat) (arg2 vector) (arg3 float)) (set! (-> arg1 nav target-pos quad) (-> arg2 quad)) (logclear! (-> arg1 nav flags) (nav-control-flags navcf19)) (nav-control-method-11 (-> arg1 nav) (-> arg1 nav target-pos)) (let ((f0-0 (vector-length (-> arg1 nav travel)))) - (if (< arg3 f0-0) - (set! f0-0 arg3) - ) - (vector-normalize! (-> arg1 nav travel) (* f0-0 (seconds-per-frame))) - ) + (if (< arg3 f0-0) (set! f0-0 arg3)) + (vector-normalize! (-> arg1 nav travel) (* f0-0 (seconds-per-frame)))) (set! (-> arg0 x) (+ (-> arg1 root trans x) (-> arg1 nav travel x))) (set! (-> arg0 y) (-> arg1 root trans x)) (set! (-> arg0 z) (+ (-> arg1 root trans z) (-> arg1 nav travel z))) - arg0 - ) + arg0) (defstate orbit-plat-rotating (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('stop) - (go orbit-plat-still) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('stop) (go orbit-plat-still)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 2)) - (set! (-> self is-reset?) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - 0.0 - (let ((a0-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (let ((v1-1 gp-0) - (a1-0 (-> self other)) - ) - (set! (-> v1-1 quad) (-> (the-as orbit-plat (if a1-0 - (-> a1-0 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (vector-! a0-0 (-> self basetrans) gp-0) - (let ((f30-0 (vector-length a0-0))) - (set! (-> self reset-length) f30-0) - (ja-no-eval :num! (seek! 0.0)) - (label cfg-3) - (dotimes (s4-0 2) - (get-rotate-point! s5-0 gp-0 (-> self basetrans) (the-as vector f30-0) (-> self rot-dir) 40960.0) - (b! (not (nav-control-method-16 (-> self nav) s5-0)) cfg-6 :delay (empty-form)) - (set! (-> self basetrans quad) (-> s5-0 quad)) - (b! #t cfg-9 :delay (nop!)) - (label cfg-6) - (set! (-> self rot-dir) (- (-> self rot-dir))) - ) - ) - ) - ) - (label cfg-9) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - (b! #t cfg-3 :delay (nop!)) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 2)) + (set! (-> self is-reset?) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + 0.0 + (let ((a0-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector))) + (let ((v1-1 gp-0) + (a1-0 (-> self other))) + (set! (-> v1-1 quad) (-> (the-as orbit-plat (if a1-0 (-> a1-0 extra process))) root trans quad))) + (vector-! a0-0 (-> self basetrans) gp-0) + (let ((f30-0 (vector-length a0-0))) + (set! (-> self reset-length) f30-0) + (ja-no-eval :num! (seek! 0.0)) + (label cfg-3) + (dotimes (s4-0 2) + (get-rotate-point! s5-0 gp-0 (-> self basetrans) (the-as vector f30-0) (-> self rot-dir) 40960.0) + (b! (not (nav-control-method-16 (-> self nav) s5-0)) cfg-6 :delay (empty-form)) + (set! (-> self basetrans quad) (-> s5-0 quad)) + (b! #t cfg-9 :delay (nop!)) + (label cfg-6) + (set! (-> self rot-dir) (- (-> self rot-dir))))))) + (label cfg-9) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))) + (b! #t cfg-3 :delay (nop!))) + :post plat-post) ;; WARN: disable def twice: 132. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defmethod orbit-plat-method-27 ((this orbit-plat)) (local-vars (v0-11 object)) (let* ((v1-0 (-> this other)) - (s5-0 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) - (the-as - symbol - (cond - ((and s5-0 - (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) - (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans)) - ) - ) - (cond - ((-> (the-as orbit-plat s5-0) is-reset?) - (when (!= (-> this plat-status) 2) - (set! (-> this plat-status) (the-as uint 2)) - (let ((f30-1 (atan - (- (-> this basetrans x) (-> (the-as orbit-plat s5-0) basetrans x)) - (- (-> this basetrans z) (-> (the-as orbit-plat s5-0) basetrans z)) - ) - ) - (f0-9 (atan - (- (-> this reset-trans x) (-> (the-as orbit-plat s5-0) basetrans x)) - (- (-> this reset-trans z) (-> (the-as orbit-plat s5-0) basetrans z)) - ) - ) - ) - (if (>= (deg- f0-9 f30-1) 0.0) - (set! (-> this rot-dir) 1.0) - (set! (-> this rot-dir) -1.0) - ) - ) - ) - (let ((s4-0 (new 'stack-no-clear 'vector))) - 0.0 - (let ((a0-7 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (let ((v1-9 s4-0) - (a1-5 (-> this other)) - ) - (set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5 - (-> a1-5 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (vector-! a0-7 (-> this basetrans) s4-0) - (let ((f30-2 (vector-length a0-7))) - (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) - (cond - ((nav-control-method-16 (-> this nav) s5-1) - (set! (-> this basetrans quad) (-> s5-1 quad)) - ) - (else - (set! (-> this rot-dir) (- (-> this rot-dir))) - (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) - (if (nav-control-method-16 (-> this nav) s5-1) - (set! (-> this basetrans quad) (-> s5-1 quad)) - ) - ) - ) - ) - ) - ) - (when (>= 614.4 (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans))) - (set! v0-11 (logior (nav-control-flags navcf19) (-> this nav flags))) - (set! (-> this nav flags) (the-as nav-control-flags v0-11)) - v0-11 - ) - ) - (else - (let ((s5-2 (new 'stack-no-clear 'vector))) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (get-nav-point! s5-2 this (-> this reset-trans) 40960.0) - (let ((v1-20 s4-1) - (a0-19 (-> this other)) - ) - (set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19 - (-> a0-19 extra process) - ) - ) - root - trans - quad - ) - ) - ) - (set! (-> s5-2 y) (-> s4-1 y)) - (vector-! s5-2 s5-2 s4-1) - (vector-normalize! s5-2 (-> this reset-length)) - (vector+! s5-2 s5-2 s4-1) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (logclear! (-> this nav flags) (nav-control-flags navcf19)) - (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) 0.0 40960.0) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (get-rotate-point! - s5-2 - s4-1 - (-> this basetrans) - (the-as vector (-> this reset-length)) - (-> this rot-dir) - 40960.0 - ) - (when (not (nav-control-method-16 (-> this nav) s5-2)) - (set! (-> this rot-dir) (- (-> this rot-dir))) - (get-rotate-point! - s5-2 - s4-1 - (-> this basetrans) - (the-as vector (-> this reset-length)) - (-> this rot-dir) - 40960.0 - ) - ) - ) - ) - ) - (set! (-> s5-2 y) (-> this basetrans y)) - (set! v0-11 (-> this basetrans)) - (set! (-> (the-as vector v0-11) quad) (-> s5-2 quad)) - ) - v0-11 - ) - ) - ) - (else - (let ((s5-3 (new 'stack-no-clear 'vector))) - (set! (-> s5-3 quad) (-> this basetrans quad)) - (get-nav-point! (-> this basetrans) this (-> this reset-trans) 40960.0) - (set! (-> this basetrans y) (-> s5-3 y)) - ) - ) - ) - ) - ) - ) + (s5-0 (if v1-0 (-> v1-0 extra process)))) + (the-as symbol + (cond + ((and s5-0 + (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) + (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans)))) + (cond + ((-> (the-as orbit-plat s5-0) is-reset?) + (when (!= (-> this plat-status) 2) + (set! (-> this plat-status) (the-as uint 2)) + (let ((f30-1 (atan (- (-> this basetrans x) (-> (the-as orbit-plat s5-0) basetrans x)) + (- (-> this basetrans z) (-> (the-as orbit-plat s5-0) basetrans z)))) + (f0-9 (atan (- (-> this reset-trans x) (-> (the-as orbit-plat s5-0) basetrans x)) + (- (-> this reset-trans z) (-> (the-as orbit-plat s5-0) basetrans z))))) + (if (>= (deg- f0-9 f30-1) 0.0) (set! (-> this rot-dir) 1.0) (set! (-> this rot-dir) -1.0)))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + 0.0 + (let ((a0-7 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'vector))) + (let ((v1-9 s4-0) + (a1-5 (-> this other))) + (set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5 (-> a1-5 extra process))) root trans quad))) + (vector-! a0-7 (-> this basetrans) s4-0) + (let ((f30-2 (vector-length a0-7))) + (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) + (cond + ((nav-control-method-16 (-> this nav) s5-1) (set! (-> this basetrans quad) (-> s5-1 quad))) + (else + (set! (-> this rot-dir) (- (-> this rot-dir))) + (get-rotate-point! s5-1 s4-0 (-> this basetrans) (the-as vector f30-2) (-> this rot-dir) 40960.0) + (if (nav-control-method-16 (-> this nav) s5-1) (set! (-> this basetrans quad) (-> s5-1 quad)))))))) + (when (>= 614.4 (vector-vector-xz-distance (-> this basetrans) (-> this reset-trans))) + (set! v0-11 (logior (nav-control-flags navcf19) (-> this nav flags))) + (set! (-> this nav flags) (the-as nav-control-flags v0-11)) + v0-11)) + (else + (let ((s5-2 (new 'stack-no-clear 'vector))) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (get-nav-point! s5-2 this (-> this reset-trans) 40960.0) + (let ((v1-20 s4-1) + (a0-19 (-> this other))) + (set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19 (-> a0-19 extra process))) root trans quad))) + (set! (-> s5-2 y) (-> s4-1 y)) + (vector-! s5-2 s5-2 s4-1) + (vector-normalize! s5-2 (-> this reset-length)) + (vector+! s5-2 s5-2 s4-1) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (logclear! (-> this nav flags) (nav-control-flags navcf19)) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) 0.0 40960.0) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) (-> this rot-dir) 40960.0) + (when (not (nav-control-method-16 (-> this nav) s5-2)) + (set! (-> this rot-dir) (- (-> this rot-dir))) + (get-rotate-point! s5-2 s4-1 (-> this basetrans) (the-as vector (-> this reset-length)) (-> this rot-dir) 40960.0))))) + (set! (-> s5-2 y) (-> this basetrans y)) + (set! v0-11 (-> this basetrans)) + (set! (-> (the-as vector v0-11) quad) (-> s5-2 quad))) + v0-11))) + (else + (let ((s5-3 (new 'stack-no-clear 'vector))) + (set! (-> s5-3 quad) (-> this basetrans quad)) + (get-nav-point! (-> this basetrans) this (-> this reset-trans) 40960.0) + (set! (-> this basetrans y) (-> s5-3 y)))))))) (defstate orbit-plat-reset (orbit-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('go) - (go orbit-plat-rotating) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('go) (go orbit-plat-rotating)))) :trans plat-trans - :code (behavior () - (set! (-> self plat-status) (the-as uint 3)) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (ja-no-eval :num! (seek! 0.0)) - (while (not (logtest? (nav-control-flags navcf19) (-> self nav flags))) - (orbit-plat-method-27 self) - (when (nonzero? (-> self root riders num-riders)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go) - (let ((t9-2 send-event-function) - (v1-13 (-> self other)) - ) - (t9-2 - (if v1-13 - (-> v1-13 extra process) - ) - a1-1 - ) - ) - ) - (go orbit-plat-riding) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - (set! (-> self is-reset?) #t) - (go orbit-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 3)) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (ja-no-eval :num! (seek! 0.0)) + (while (not (logtest? (nav-control-flags navcf19) (-> self nav flags))) + (orbit-plat-method-27 self) + (when (nonzero? (-> self root riders num-riders)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go) + (let ((t9-2 send-event-function) + (v1-13 (-> self other))) + (t9-2 (if v1-13 (-> v1-13 extra process)) a1-1))) + (go orbit-plat-riding)) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0)))) + (set! (-> self is-reset?) #t) + (go orbit-plat-idle)) + :post plat-post) (defstate orbit-plat-wait-for-other (orbit-plat) - :code (behavior () - (set! (-> self plat-status) (the-as uint 0)) - (ja-no-eval :num! (seek! 0.0)) - (loop - (let ((v1-3 (-> self other))) - (when (if v1-3 - (-> v1-3 extra process) - ) - (suspend) - (go orbit-plat-idle) - ) - ) - (suspend) - (if (not (ja-done? 0)) - (ja :num! (seek! 0.0)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self plat-status) (the-as uint 0)) + (ja-no-eval :num! (seek! 0.0)) + (loop (let ((v1-3 (-> self other))) (when (if v1-3 (-> v1-3 extra process)) (suspend) (go orbit-plat-idle))) + (suspend) + (if (not (ja-done? 0)) (ja :num! (seek! 0.0))))) + :post ja-post) (defmethod init-from-entity! ((this orbit-plat) (arg0 entity-actor)) (set! (-> this plat-status) (the-as uint 0)) @@ -761,9 +483,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -772,24 +492,17 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 13926.4) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *orbit-plat-sg* '()) + (initialize-skeleton this *orbit-plat-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (baseplat-method-21 this) @@ -797,14 +510,11 @@ (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this nav gap-event) 'blocked) (set! (-> this other) (entity-actor-lookup arg0 'alt-actor 0)) - (let ((f0-7 (res-lump-float arg0 'scale :default 1.0))) - (set-vector! (-> this root scale) f0-7 f0-7 f0-7 1.0) - ) + (let ((f0-7 (res-lump-float arg0 'scale :default 1.0))) (set-vector! (-> this root scale) f0-7 f0-7 f0-7 1.0)) (set! (-> this timeout) (res-lump-float arg0 'timeout :default 10.0)) (set! (-> this rot-dir) 1.0) (set! (-> this reset-trans quad) (-> this basetrans quad)) (set! (-> this is-reset?) #t) (process-spawn orbit-plat-bottom (-> this entity) this :to this) (go orbit-plat-wait-for-other) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/puffer.gc b/goal_src/jak1/levels/sunken/puffer.gc index db6386b916..02ecd4beec 100644 --- a/goal_src/jak1/levels/sunken/puffer.gc +++ b/goal_src/jak1/levels/sunken/puffer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/nav/navigate.gc") (require "engine/util/sync-info.gc") (require "engine/anim/joint-mod-h.gc") @@ -12,654 +11,419 @@ ;; name in dgo: puffer ;; dgos: L1, SUN, SUNKEN - ;; DECOMP BEGINS (deftype puffer (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (path-index int32) - (facing-ry float) - (travel-ry float) - (travel-speed float) - (attack-bottom-y float) - (patrol-bottom-y float) - (top-y float) - (targ-trans-y float) - (acc-y float) - (travel-turn-speed float) - (notice-dist float) - (give-up-dist float) - (attacking? symbol) - (hit-player? symbol) - (look-mean? symbol) - (cprims-type uint64) - (neck joint-mod) - (hit-player-time time-frame) - (reaction-delay time-frame) - (picked-point-time time-frame) - (pick-new-point-delay time-frame) - (last-on-screen-time time-frame) - (buddy process-drawable) - (nice-look lod-set :inline) - (mean-look lod-set :inline) - (dest-pos vector :inline) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (path-index int32) + (facing-ry float) + (travel-ry float) + (travel-speed float) + (attack-bottom-y float) + (patrol-bottom-y float) + (top-y float) + (targ-trans-y float) + (acc-y float) + (travel-turn-speed float) + (notice-dist float) + (give-up-dist float) + (attacking? symbol) + (hit-player? symbol) + (look-mean? symbol) + (cprims-type uint64) + (neck joint-mod) + (hit-player-time time-frame) + (reaction-delay time-frame) + (picked-point-time time-frame) + (pick-new-point-delay time-frame) + (last-on-screen-time time-frame) + (buddy process-drawable) + (nice-look lod-set :inline) + (mean-look lod-set :inline) + (dest-pos vector :inline) + (sync sync-info :inline)) (:methods - (puffer-method-20 (_type_ vector) none) - (puffer-method-21 (_type_) none) - (puffer-method-22 (_type_) symbol) - (puffer-method-23 (_type_ symbol) symbol) - (puffer-method-24 (_type_ vector) symbol) - (puffer-method-25 (_type_ float) symbol) - (puffer-method-26 (_type_) none) - (puffer-method-27 (_type_) none) - (puffer-method-28 (_type_) none) - (flip-look! (_type_ symbol) none) - (puffer-method-30 (_type_) vector) - (puffer-method-31 (_type_) vector) - ) + (puffer-method-20 (_type_ vector) none) + (puffer-method-21 (_type_) none) + (puffer-method-22 (_type_) symbol) + (puffer-method-23 (_type_ symbol) symbol) + (puffer-method-24 (_type_ vector) symbol) + (puffer-method-25 (_type_ float) symbol) + (puffer-method-26 (_type_) none) + (puffer-method-27 (_type_) none) + (puffer-method-28 (_type_) none) + (flip-look! (_type_ symbol) none) + (puffer-method-30 (_type_) vector) + (puffer-method-31 (_type_) vector)) (:states - puffer-attack - puffer-die - puffer-idle - puffer-patrol - ) - ) + puffer-attack + puffer-die + puffer-idle + puffer-patrol)) +(defskelgroup *puffer-sg* + puffer + puffer-main-lod0-jg + -1 + ((puffer-main-lod0-mg (meters 20)) (puffer-main-lod1-mg (meters 40)) (puffer-main-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 5.25) + :longest-edge (meters 1.2) + :shadow puffer-main-shadow-mg) -(defskelgroup *puffer-sg* puffer puffer-main-lod0-jg -1 - ((puffer-main-lod0-mg (meters 20)) (puffer-main-lod1-mg (meters 40)) (puffer-main-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 5.25) - :longest-edge (meters 1.2) - :shadow puffer-main-shadow-mg - ) - -(defskelgroup *puffer-mean-sg* puffer puffer-mean-lod0-jg -1 - ((puffer-mean-lod0-mg (meters 20)) (puffer-mean-lod1-mg (meters 40)) (puffer-mean-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 5.25) - :longest-edge (meters 1.2) - :shadow puffer-main-shadow-mg - ) +(defskelgroup *puffer-mean-sg* + puffer + puffer-mean-lod0-jg + -1 + ((puffer-mean-lod0-mg (meters 20)) (puffer-mean-lod1-mg (meters 40)) (puffer-mean-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 5.25) + :longest-edge (meters 1.2) + :shadow puffer-main-shadow-mg) (defbehavior puffer-default-event-handler puffer ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) (when (and (= arg2 'attack) (!= (-> self cprims-type) 2)) (let* ((gp-0 arg0) - (v1-7 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - ) + (v1-7 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0))) (when v1-7 - (let ((f0-4 (atan - (- (-> (the-as process-drawable v1-7) root trans x) (-> self root trans x)) - (- (-> (the-as process-drawable v1-7) root trans z) (-> self root trans z)) - ) - ) - ) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f0-4) - ) - ) - ) + (let ((f0-4 (atan (- (-> (the-as process-drawable v1-7) root trans x) (-> self root trans x)) + (- (-> (the-as process-drawable v1-7) root trans z) (-> self root trans z))))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 f0-4)))) (go puffer-die) - (return #t) - ) + (return #t)) (when (= (-> arg0 type) target) - (when (send-event - arg0 - 'attack - (-> arg3 param 0) - (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5)))) - ) + (when (send-event arg0 'attack (-> arg3 param 0) (static-attack-info ((shove-up (meters 1.5)) (shove-back (meters 2.5))))) (set! (-> self hit-player?) #t) (set-time! (-> self hit-player-time)) - (set-collide-offense (-> self root) 2 (collide-offense no-offense)) - ) - ) - ) - ) - ) + (set-collide-offense (-> self root) 2 (collide-offense no-offense))))))) (defbehavior puffer-post puffer () (when (and (-> self hit-player?) (or (not *target*) (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) - (time-elapsed? (-> self hit-player-time) (seconds 0.05)) - ) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) + (time-elapsed? (-> self hit-player-time) (seconds 0.05))))) (set-collide-offense (-> self root) 2 (collide-offense normal-attack)) - (set! (-> self hit-player?) #f) - ) + (set! (-> self hit-player?) #f)) (transform-post) - (none) - ) + (none)) (defmethod puffer-method-28 ((this puffer)) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-0 (new 'stack-no-clear 'vector)) - (a2-0 (new 'stack-no-clear 'vector)) - ) + (a2-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> this root trans quad)) (set-vector! a2-0 0.0 -40960.0 0.0 1.0) (cond - ((>= (fill-and-probe-using-line-sphere - *collide-cache* - a1-0 - a2-0 - 8192.0 - (collide-kind background cak-3 ground-object) - this - s5-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (let ((v1-11 (-> this draw shadow-ctrl))) - (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw)) - ) + ((>= (fill-and-probe-using-line-sphere *collide-cache* + a1-0 + a2-0 + 8192.0 + (collide-kind background cak-3 ground-object) + this + s5-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (let ((v1-11 (-> this draw shadow-ctrl))) (logclear! (-> v1-11 settings flags) (shadow-flags disable-draw))) 0 - (let ((v1-14 (-> this draw shadow-ctrl))) - (set! (-> v1-14 settings bot-plane w) (- (+ -12288.0 (-> s5-0 intersect y)))) - ) + (let ((v1-14 (-> this draw shadow-ctrl))) (set! (-> v1-14 settings bot-plane w) (- (+ -12288.0 (-> s5-0 intersect y))))) 0 - (let ((v1-17 (-> this draw shadow-ctrl))) - (set! (-> v1-17 settings top-plane w) (- (+ 4096.0 (-> s5-0 intersect y)))) - ) - 0 - ) - (else - (let ((v1-19 (-> this draw shadow-ctrl))) - (logior! (-> v1-19 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - ) - ) - (else - (let ((v1-21 (-> this draw shadow-ctrl))) - (logior! (-> v1-21 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (let ((v1-17 (-> this draw shadow-ctrl))) (set! (-> v1-17 settings top-plane w) (- (+ 4096.0 (-> s5-0 intersect y))))) + 0) + (else (let ((v1-19 (-> this draw shadow-ctrl))) (logior! (-> v1-19 settings flags) (shadow-flags disable-draw))) 0)))) + (else (let ((v1-21 (-> this draw shadow-ctrl))) (logior! (-> v1-21 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod puffer-method-24 ((this puffer) (arg0 vector)) - (and (is-in-mesh? (-> this nav) arg0 11468.8) - (< (-> arg0 y) (+ (-> this root trans y) (-> this fact notice-top))) - ) - ) + (and (is-in-mesh? (-> this nav) arg0 11468.8) (< (-> arg0 y) (+ (-> this root trans y) (-> this fact notice-top))))) (defmethod puffer-method-22 ((this puffer)) (let* ((a1-0 (-> this buddy)) - (v1-0 (if a1-0 - (-> a1-0 ppointer 3) - ) - ) - ) - (if (and v1-0 - (>= 25395.2 (vector-vector-xz-distance (-> this root trans) (-> (the-as process-drawable v1-0) root trans))) - ) - (return #t) - ) - ) - #f - ) + (v1-0 (if a1-0 (-> a1-0 ppointer 3)))) + (if (and v1-0 (>= 25395.2 (vector-vector-xz-distance (-> this root trans) (-> (the-as process-drawable v1-0) root trans)))) + (return #t))) + #f) (defmethod puffer-method-25 ((this puffer) (arg0 float)) (when *target* (let ((gp-0 (target-pos 0))) (when (and (not (logtest? (-> *target* state-flags) - (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying) - ) - ) + (state-flags being-attacked invulnerable timed-invulnerable invuln-powerup do-not-notice dying))) (puffer-method-24 this gp-0) (>= (-> gp-0 y) (+ -14336.0 (-> this attack-bottom-y))) - (>= (+ 2048.0 (-> this top-y)) (-> gp-0 y)) - ) + (>= (+ 2048.0 (-> this top-y)) (-> gp-0 y))) (let ((f30-0 (vector-vector-xz-distance gp-0 (-> this root trans)))) (when (>= arg0 f30-0) (let* ((a0-4 (-> this buddy)) - (v1-12 (if a0-4 - (-> a0-4 ppointer 3) - ) - ) - ) + (v1-12 (if a0-4 (-> a0-4 ppointer 3)))) (cond (v1-12 - (if (not (-> (the-as puffer v1-12) attacking?)) - (return #t) - ) - (if (< f30-0 (vector-vector-xz-distance gp-0 (-> (the-as puffer v1-12) root trans))) - (return #t) - ) - ) - (else - (return #t) - ) - ) - ) - ) - ) - ) - ) - ) - #f - ) + (if (not (-> (the-as puffer v1-12) attacking?)) (return #t)) + (if (< f30-0 (vector-vector-xz-distance gp-0 (-> (the-as puffer v1-12) root trans))) (return #t))) + (else (return #t))))))))) + #f) (deftype pick-patrol-point-away-from-buddy-work (structure) - ((best-path-index int32) - (best-rating float) - (best-dest vector :inline) - (pt-dir vector :inline) - (buddy-dir vector :inline) - (dest vector :inline) - ) - ) - + ((best-path-index int32) + (best-rating float) + (best-dest vector :inline) + (pt-dir vector :inline) + (buddy-dir vector :inline) + (dest vector :inline))) (defmethod puffer-method-23 ((this puffer) (arg0 symbol)) (local-vars (v1-0 process)) - (set! v1-0 (when arg0 - (let ((a0-1 (-> this buddy))) - (set! v1-0 (if a0-1 - (-> a0-1 ppointer 3) - ) - ) - ) - (if (not v1-0) - (set! arg0 #f) - ) - v1-0 - ) - ) + (set! v1-0 + (when arg0 + (let ((a0-1 (-> this buddy))) (set! v1-0 (if a0-1 (-> a0-1 ppointer 3)))) + (if (not v1-0) (set! arg0 #f)) + v1-0)) (cond (arg0 - (let ((s4-0 (-> this path curve num-cverts)) - (s5-0 (new 'stack-no-clear 'inline-array 'vector 5)) - ) - (set! (-> s5-0 0 x) (the-as float -1)) - (vector-! (-> s5-0 3) (-> this root trans) (-> (the-as process-drawable v1-0) root trans)) - (set! (-> s5-0 3 y) 0.0) - (vector-normalize! (-> s5-0 3) 1.0) - (dotimes (s3-0 s4-0) - (eval-path-curve-div! (-> this path) (-> s5-0 4) (the float s3-0) 'interp) - (vector-! (-> s5-0 2) (-> s5-0 4) (-> this root trans)) - (when (>= (vector-xz-length (-> s5-0 2)) 10240.0) - (set! (-> s5-0 2 y) 0.0) - (vector-normalize! (-> s5-0 2) 1.0) - (let ((f0-6 (vector-dot (-> s5-0 3) (-> s5-0 2)))) - (when (>= f0-6 0.0) - (when (or (< (the-as int (-> s5-0 0 x)) 0) (< (-> s5-0 0 y) f0-6)) - (set! (-> s5-0 0 x) (the-as float s3-0)) - (set! (-> s5-0 0 y) f0-6) - (set! (-> s5-0 1 quad) (-> s5-0 4 quad)) - ) - ) - ) - ) - ) - (when (>= (the-as int (-> s5-0 0 x)) 0) - (set! (-> this dest-pos quad) (-> s5-0 1 quad)) - (set! (-> this dest-pos y) (-> this root trans y)) - (return #t) - ) - ) - ) + (let ((s4-0 (-> this path curve num-cverts)) + (s5-0 (new 'stack-no-clear 'inline-array 'vector 5))) + (set! (-> s5-0 0 x) (the-as float -1)) + (vector-! (-> s5-0 3) (-> this root trans) (-> (the-as process-drawable v1-0) root trans)) + (set! (-> s5-0 3 y) 0.0) + (vector-normalize! (-> s5-0 3) 1.0) + (dotimes (s3-0 s4-0) + (eval-path-curve-div! (-> this path) (-> s5-0 4) (the float s3-0) 'interp) + (vector-! (-> s5-0 2) (-> s5-0 4) (-> this root trans)) + (when (>= (vector-xz-length (-> s5-0 2)) 10240.0) + (set! (-> s5-0 2 y) 0.0) + (vector-normalize! (-> s5-0 2) 1.0) + (let ((f0-6 (vector-dot (-> s5-0 3) (-> s5-0 2)))) + (when (>= f0-6 0.0) + (when (or (< (the-as int (-> s5-0 0 x)) 0) (< (-> s5-0 0 y) f0-6)) + (set! (-> s5-0 0 x) (the-as float s3-0)) + (set! (-> s5-0 0 y) f0-6) + (set! (-> s5-0 1 quad) (-> s5-0 4 quad))))))) + (when (>= (the-as int (-> s5-0 0 x)) 0) + (set! (-> this dest-pos quad) (-> s5-0 1 quad)) + (set! (-> this dest-pos y) (-> this root trans y)) + (return #t)))) (else - (let* ((s3-1 (-> this path curve num-cverts)) - (s4-1 (new 'stack-no-clear 'vector)) - (s5-1 (rand-vu-int-count s3-1)) - ) - (while (nonzero? s3-1) - (+! s3-1 -1) - (eval-path-curve-div! (-> this path) s4-1 (the float s5-1) 'interp) - (when (>= (vector-vector-xz-distance s4-1 (-> this root trans)) 10240.0) - (set! (-> this dest-pos quad) (-> s4-1 quad)) - (set! (-> this dest-pos y) (-> this root trans y)) - (set! (-> this path-index) s5-1) - (return #t) - ) - ) - ) - ) - ) - #f - ) + (let* ((s3-1 (-> this path curve num-cverts)) + (s4-1 (new 'stack-no-clear 'vector)) + (s5-1 (rand-vu-int-count s3-1))) + (while (nonzero? s3-1) + (+! s3-1 -1) + (eval-path-curve-div! (-> this path) s4-1 (the float s5-1) 'interp) + (when (>= (vector-vector-xz-distance s4-1 (-> this root trans)) 10240.0) + (set! (-> this dest-pos quad) (-> s4-1 quad)) + (set! (-> this dest-pos y) (-> this root trans y)) + (set! (-> this path-index) s5-1) + (return #t)))))) + #f) (defmethod puffer-method-20 ((this puffer) (arg0 vector)) (if (-> this attacking?) - (set! (-> this travel-speed) - (seek-with-smooth (-> this travel-speed) 30720.0 (* 8192.0 (seconds-per-frame)) 0.125 40.96) - ) - (set! (-> this travel-speed) - (seek-with-smooth (-> this travel-speed) 18432.0 (* 2048.0 (seconds-per-frame)) 0.125 40.96) - ) - ) + (set! (-> this travel-speed) + (seek-with-smooth (-> this travel-speed) 30720.0 (* 8192.0 (seconds-per-frame)) 0.125 40.96)) + (set! (-> this travel-speed) + (seek-with-smooth (-> this travel-speed) 18432.0 (* 2048.0 (seconds-per-frame)) 0.125 40.96))) (nav-control-method-27 (-> this nav)) (nav-control-method-28 (-> this nav) (the-as collide-kind -1)) (nav-control-method-13 (-> this nav) arg0 (-> this root transv)) (let ((f30-0 (* (vector-xz-length (-> this nav travel)) (-> *display* frames-per-second)))) (let ((f0-11 (atan (-> this nav travel x) (-> this nav travel z))) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (if (< (-> this travel-speed) f30-0) - (set! f30-0 (-> this travel-speed)) - ) + (s5-1 (new 'stack-no-clear 'vector))) + (if (< (-> this travel-speed) f30-0) (set! f30-0 (-> this travel-speed))) (set! (-> s5-1 quad) (-> this nav travel quad)) (set! (-> this travel-ry) - (deg-seek-smooth (-> this travel-ry) f0-11 (* (-> this travel-turn-speed) (seconds-per-frame)) 0.125) - ) + (deg-seek-smooth (-> this travel-ry) f0-11 (* (-> this travel-turn-speed) (seconds-per-frame)) 0.125)) (let* ((f0-16 (* f30-0 (seconds-per-frame))) (f28-0 (* 150.0 f0-16)) - (f26-0 -1.0) - ) + (f26-0 -1.0)) (let ((s4-0 (new 'stack-no-clear 'vector))) (set-vector! s4-0 (* (sin (-> this travel-ry)) f28-0) 0.0 (* (cos (-> this travel-ry)) f28-0) 1.0) (let ((s3-1 (new 'stack 'clip-travel-vector-to-mesh-return-info))) (set! (-> this nav travel quad) (-> s4-0 quad)) (nav-control-method-24 (-> this nav) f28-0 s3-1) - (if (-> s3-1 found-boundary) - (set! f26-0 (vector-vector-xz-distance (-> s3-1 intersection) (-> this root trans))) - ) - ) + (if (-> s3-1 found-boundary) (set! f26-0 (vector-vector-xz-distance (-> s3-1 intersection) (-> this root trans))))) (let ((s3-2 (new 'stack-no-clear 'matrix))) (when (>= (nav-control-method-23 (-> this nav) s4-0 (the-as check-vector-collision-with-nav-spheres-info s3-2)) 0.0) (let ((f0-26 (vector-vector-xz-distance (-> s3-2 vector 1) (-> this root trans)))) - (if (or (< f26-0 0.0) (< f0-26 f26-0)) - (set! f26-0 f0-26) - ) - ) - ) - ) - ) + (if (or (< f26-0 0.0) (< f0-26 f26-0)) (set! f26-0 f0-26)))))) (when (>= f26-0 0.0) (let ((f26-1 (- 1.0 (/ f26-0 f28-0)))) - (+! (-> this travel-ry) (* f26-1 (deg- (atan (-> s5-1 x) (-> s5-1 z)) (-> this travel-ry)))) - ) - ) - ) - ) - (set-vector! - (-> this root transv) - (* (sin (-> this travel-ry)) f30-0) - (-> this root transv y) - (* (cos (-> this travel-ry)) f30-0) - 1.0 - ) - ) + (+! (-> this travel-ry) (* f26-1 (deg- (atan (-> s5-1 x) (-> s5-1 z)) (-> this travel-ry)))))))) + (set-vector! (-> this root transv) + (* (sin (-> this travel-ry)) f30-0) + (-> this root transv y) + (* (cos (-> this travel-ry)) f30-0) + 1.0)) (set! (-> this facing-ry) - (deg-seek-smooth (-> this facing-ry) (-> this travel-ry) (* 32768.0 (seconds-per-frame)) 0.125) - ) + (deg-seek-smooth (-> this facing-ry) (-> this travel-ry) (* 32768.0 (seconds-per-frame)) 0.125)) (puffer-method-27 this) - (none) - ) + (none)) (defmethod puffer-method-27 ((this puffer)) (let ((f30-0 (-> this patrol-bottom-y))) (cond ((-> this attacking?) (let ((f30-1 (-> this attack-bottom-y))) - (set! (-> this targ-trans-y) (fmax (fmin (+ 4096.0 (-> (target-pos 0) y)) (-> this top-y)) f30-1)) - ) + (set! (-> this targ-trans-y) (fmax (fmin (+ 4096.0 (-> (target-pos 0) y)) (-> this top-y)) f30-1))) (set! (-> this root transv y) - (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y))) - ) + (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y)))) (when (< 6144.0 (fabs (-> this root transv y))) - (if (>= (-> this root transv y) 0.0) - (set! (-> this root transv y) 6144.0) - (set! (-> this root transv y) -6144.0) - ) - ) - ) + (if (>= (-> this root transv y) 0.0) (set! (-> this root transv y) 6144.0) (set! (-> this root transv y) -6144.0)))) ((< (-> this root trans y) f30-0) (set! (-> this targ-trans-y) (* 0.5 (+ (-> this top-y) (-> this patrol-bottom-y)))) (set! (-> this root transv y) - (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y))) - ) + (* 0.125 (-> *display* frames-per-second) (- (-> this targ-trans-y) (-> this root trans y)))) (when (< 2048.0 (fabs (-> this root transv y))) - (if (>= (-> this root transv y) 0.0) - (set! (-> this root transv y) 2048.0) - (set! (-> this root transv y) -2048.0) - ) - ) - ) + (if (>= (-> this root transv y) 0.0) (set! (-> this root transv y) 2048.0) (set! (-> this root transv y) -2048.0)))) (else - (let ((f0-22 (- (-> this targ-trans-y) (-> this root trans y)))) - (when (or (and (>= f0-22 0.0) (< (-> this acc-y) 0.0)) (and (< f0-22 0.0) (>= (-> this acc-y) 0.0))) - (when (not (-> this attacking?)) - (cond - ((>= (-> this acc-y) 0.0) - (if (< f30-0 (-> this targ-trans-y)) - (set! (-> this targ-trans-y) (rand-vu-float-range f30-0 (-> this targ-trans-y))) - ) - ) - (else - (if (< (-> this targ-trans-y) (-> this top-y)) - (set! (-> this targ-trans-y) (rand-vu-float-range (-> this targ-trans-y) (-> this top-y))) - ) - ) - ) - ) - (set! (-> this acc-y) (- (-> this acc-y))) - ) - ) - (+! (-> this root transv y) (* (-> this acc-y) (seconds-per-frame))) - (let ((f0-37 (* (-> this root transv y) (seconds-per-frame)))) - (cond - ((>= f0-37 0.0) - (let ((f1-27 (* 0.0625 (- (-> this top-y) (-> this root trans y))))) - (if (< f1-27 f0-37) - (set! (-> this root transv y) (* f1-27 (-> *display* frames-per-second))) - ) - ) - ) - (else - (let ((f1-29 (* 0.0625 (- f30-0 (-> this root trans y))))) - (if (< f0-37 f1-29) - (set! (-> this root transv y) (* f1-29 (-> *display* frames-per-second))) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (let ((f0-22 (- (-> this targ-trans-y) (-> this root trans y)))) + (when (or (and (>= f0-22 0.0) (< (-> this acc-y) 0.0)) (and (< f0-22 0.0) (>= (-> this acc-y) 0.0))) + (when (not (-> this attacking?)) + (cond + ((>= (-> this acc-y) 0.0) + (if (< f30-0 (-> this targ-trans-y)) (set! (-> this targ-trans-y) (rand-vu-float-range f30-0 (-> this targ-trans-y))))) + (else + (if (< (-> this targ-trans-y) (-> this top-y)) + (set! (-> this targ-trans-y) (rand-vu-float-range (-> this targ-trans-y) (-> this top-y))))))) + (set! (-> this acc-y) (- (-> this acc-y))))) + (+! (-> this root transv y) (* (-> this acc-y) (seconds-per-frame))) + (let ((f0-37 (* (-> this root transv y) (seconds-per-frame)))) + (cond + ((>= f0-37 0.0) + (let ((f1-27 (* 0.0625 (- (-> this top-y) (-> this root trans y))))) + (if (< f1-27 f0-37) (set! (-> this root transv y) (* f1-27 (-> *display* frames-per-second)))))) + (else + (let ((f1-29 (* 0.0625 (- f30-0 (-> this root trans y))))) + (if (< f0-37 f1-29) (set! (-> this root transv y) (* f1-29 (-> *display* frames-per-second))))))))))) + (none)) (defstate puffer-idle (puffer) :event puffer-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self attacking?) #f) - (shut-down! (-> self neck)) - (let ((v1-5 (-> self draw shadow-ctrl))) - (logior! (-> v1-5 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - :code (behavior () - (loop - (if (and (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (logtest? (-> self draw status) (draw-status was-drawn)) - (time-elapsed? (-> self state-time) (seconds 0.2)) - ) - (go puffer-patrol) - ) - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self attacking?) #f) + (shut-down! (-> self neck)) + (let ((v1-5 (-> self draw shadow-ctrl))) (logior! (-> v1-5 settings flags) (shadow-flags disable-draw))) + 0) + :code + (behavior () + (loop (if (and (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (logtest? (-> self draw status) (draw-status was-drawn)) + (time-elapsed? (-> self state-time) (seconds 0.2))) + (go puffer-patrol)) + (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-patrol (puffer) :event puffer-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self attacking?) #f) - (set! (-> self reaction-delay) (rand-vu-int-range (seconds 0.1) (seconds 0.35))) - (if (not (puffer-method-23 self #f)) - (go puffer-idle) - ) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - (set-time! (-> self last-on-screen-time)) - ) - :trans (behavior () - (if (and (not (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - ) - (time-elapsed? (-> self state-time) (seconds 3)) - ) - (go puffer-idle) - ) - (cond - ((logtest? (-> self draw status) (draw-status was-drawn)) - (set-time! (-> self last-on-screen-time)) - ) - (else - (if (time-elapsed? (-> self last-on-screen-time) (seconds 8)) - (go puffer-idle) - ) - ) - ) - (when (puffer-method-22 self) - (when (puffer-method-23 self #t) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - ) - ) - (if (and (time-elapsed? (-> self state-time) (-> self reaction-delay)) - (puffer-method-25 self (-> self notice-dist)) - ) - (go puffer-attack) - ) - (when (or (< (vector-vector-xz-distance (-> self root trans) (-> self dest-pos)) 8192.0) - (time-elapsed? (-> self picked-point-time) (-> self pick-new-point-delay)) - ) - (when (puffer-method-23 self #f) - (set-time! (-> self picked-point-time)) - (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) - ) - ) - (puffer-method-20 self (-> self dest-pos)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set-vector! gp-0 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) - (set-heading-vec-clear-roll-pitch! (-> self root) gp-0) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - (puffer-method-28 self) - ) - :code (behavior () - (loop - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self attacking?) #f) + (set! (-> self reaction-delay) (rand-vu-int-range (seconds 0.1) (seconds 0.35))) + (if (not (puffer-method-23 self #f)) (go puffer-idle)) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))) + (set-time! (-> self last-on-screen-time))) + :trans + (behavior () + (if (and (not (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))))) + (time-elapsed? (-> self state-time) (seconds 3))) + (go puffer-idle)) + (cond + ((logtest? (-> self draw status) (draw-status was-drawn)) (set-time! (-> self last-on-screen-time))) + (else (if (time-elapsed? (-> self last-on-screen-time) (seconds 8)) (go puffer-idle)))) + (when (puffer-method-22 self) + (when (puffer-method-23 self #t) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))))) + (if (and (time-elapsed? (-> self state-time) (-> self reaction-delay)) (puffer-method-25 self (-> self notice-dist))) + (go puffer-attack)) + (when (or (< (vector-vector-xz-distance (-> self root trans) (-> self dest-pos)) 8192.0) + (time-elapsed? (-> self picked-point-time) (-> self pick-new-point-delay))) + (when (puffer-method-23 self #f) + (set-time! (-> self picked-point-time)) + (set! (-> self pick-new-point-delay) (rand-vu-int-range (seconds 3) (seconds 10))))) + (puffer-method-20 self (-> self dest-pos)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set-vector! gp-0 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) + (set-heading-vec-clear-roll-pitch! (-> self root) gp-0)) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) + (puffer-method-28 self)) + :code + (behavior () + (loop (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-attack (puffer) :event puffer-default-event-handler - :enter (behavior () - (set! (-> self attacking?) #t) - (set-time! (-> self state-time)) - (set! (-> self travel-turn-speed) 21845.334) - ) - :exit (behavior () - (shut-down! (-> self neck)) - (set! (-> self attacking?) #f) - (set! (-> self travel-turn-speed) 16384.0) - ) - :trans (behavior () - (if (not (puffer-method-25 self (-> self give-up-dist))) - (go puffer-patrol) - ) - (when *target* - (if *target* - (look-at-enemy! - (-> *target* neck) - (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) - 'attacking - self - ) - ) - (set-target! (-> self neck) (target-pos 5)) - ) - (puffer-method-20 self (target-pos 0)) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (set-vector! gp-2 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) - (set-heading-vec-clear-roll-pitch! (-> self root) gp-2) - ) - (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) - (puffer-method-28 self) - ) - :code (behavior () - (loop - (puffer-method-26 self) - (suspend) - ) - ) - :post puffer-post - ) + :enter + (behavior () + (set! (-> self attacking?) #t) + (set-time! (-> self state-time)) + (set! (-> self travel-turn-speed) 21845.334)) + :exit + (behavior () + (shut-down! (-> self neck)) + (set! (-> self attacking?) #f) + (set! (-> self travel-turn-speed) 16384.0)) + :trans + (behavior () + (if (not (puffer-method-25 self (-> self give-up-dist))) (go puffer-patrol)) + (when *target* + (if *target* + (look-at-enemy! (-> *target* neck) + (the-as vector (-> (the-as collide-shape-prim-group (-> self root root-prim)) prims 0 prim-core)) + 'attacking + self)) + (set-target! (-> self neck) (target-pos 5))) + (puffer-method-20 self (target-pos 0)) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (set-vector! gp-2 (sin (-> self facing-ry)) 0.0 (cos (-> self facing-ry)) 1.0) + (set-heading-vec-clear-roll-pitch! (-> self root) gp-2)) + (vector-v+! (-> self root trans) (-> self root trans) (-> self root transv)) + (puffer-method-28 self)) + :code + (behavior () + (loop (puffer-method-26 self) + (suspend))) + :post puffer-post) (defstate puffer-die (puffer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (the-as uint (case message - (('death-start) - (the-as uint (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0)) - ) - (('death-end) - (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) - (set! (-> self draw status) (the-as draw-status v0-0)) - v0-0 - ) - ) - ) - ) - ) - :code (behavior () - (cleanup-for-death self) - (shut-down! (-> self neck)) - (logclear! (-> self mask) (process-mask actor-pause)) - (ja-channel-push! 1 (seconds 0.075)) - (clear-collide-with-as (-> self root)) - (ja-no-eval :group! puffer-die-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (the-as uint + (case message + (('death-start) (the-as uint (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0))) + (('death-end) + (let ((v0-0 (the-as uint (logior (-> self draw status) (draw-status hidden))))) + (set! (-> self draw status) (the-as draw-status v0-0)) + v0-0))))) + :code + (behavior () + (cleanup-for-death self) + (shut-down! (-> self neck)) + (logclear! (-> self mask) (process-mask actor-pause)) + (ja-channel-push! 1 (seconds 0.075)) + (clear-collide-with-as (-> self root)) + (ja-no-eval :group! puffer-die-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + :post ja-post) (defmethod puffer-method-21 ((this puffer)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) @@ -671,44 +435,33 @@ (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 5) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (append-prim s4-0 s3-1)) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-2 collide-with) (collide-kind target)) (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set! (-> s3-2 transform-index) 9) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 3072.0) - (append-prim s4-0 s3-2) - ) - ) + (append-prim s4-0 s3-2))) (set! (-> s5-0 nav-radius) 12288.0) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (puffer-method-30 this) 0 - (none) - ) + (none)) (defmethod flip-look! ((this puffer) (arg0 symbol)) (when (!= arg0 (-> this look-mean?)) (set! (-> this look-mean?) arg0) - (if arg0 - (lods-assign! (-> this draw) (-> this mean-look)) - (lods-assign! (-> this draw) (-> this nice-look)) - ) - ) - (none) - ) + (if arg0 (lods-assign! (-> this draw) (-> this mean-look)) (lods-assign! (-> this draw) (-> this nice-look)))) + (none)) (defmethod puffer-method-30 ((this puffer)) (when (!= (-> this cprims-type) 1) @@ -720,11 +473,7 @@ (set! (-> v0-0 y) 0.0) (set! (-> v0-0 z) 0.0) (set! (-> v0-0 w) 4096.0) - v0-0 - ) - ) - ) - ) + v0-0)))) (defmethod puffer-method-31 ((this puffer)) (when (!= (-> this cprims-type) 2) @@ -736,320 +485,174 @@ (set! (-> v0-0 y) 0.0) (set! (-> v0-0 z) 0.0) (set! (-> v0-0 w) 7372.8) - v0-0 - ) - ) - ) - ) + v0-0)))) (defmethod puffer-method-26 ((this puffer)) (let ((f30-0 (get-current-phase (-> this sync)))) - (if (and (< 0.025 f30-0) (< f30-0 0.525)) - (flip-look! this #f) - (flip-look! this #t) - ) + (if (and (< 0.025 f30-0) (< f30-0 0.525)) (flip-look! this #f) (flip-look! this #t)) (cond ((< f30-0 0.5) (cond - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 9) - ) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 9)) (cond ((-> this attacking?) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 11)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 11)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0)) (let ((a0-10 (-> this skel root-channel 0))) (set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1))) (set! (-> a0-10 param 1) 1.0) - (joint-control-channel-group! a0-10 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-10 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-28 (-> this skel root-channel 0))) (set! (-> v1-28 num-func) num-func-identity) - (set! (-> v1-28 frame-num) 0.0) - ) + (set! (-> v1-28 frame-num) 0.0)) (let ((a0-13 (-> this skel root-channel 0))) (set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1))) (set! (-> a0-13 param 1) 1.0) - (joint-control-channel-group! a0-13 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-13 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-14 (-> this skel root-channel 0))) - (set! (-> a0-14 param 0) (the float (+ (-> a0-14 frame-group data 0 length) -1))) - (set! (-> a0-14 param 1) 1.0) - (joint-control-channel-group-eval! a0-14 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 11) - ) + (let ((a0-14 (-> this skel root-channel 0))) + (set! (-> a0-14 param 0) (the float (+ (-> a0-14 frame-group data 0 length) -1))) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! a0-14 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 11)) (cond ((not (-> this attacking?)) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (let ((a0-21 (-> this skel root-channel 0))) (set! (-> a0-21 param 0) (the float (+ (-> a0-21 frame-group data 0 length) -1))) (set! (-> a0-21 param 1) 1.0) - (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-64 (-> this skel root-channel 0))) (set! (-> v1-64 num-func) num-func-identity) - (set! (-> v1-64 frame-num) 0.0) - ) + (set! (-> v1-64 frame-num) 0.0)) (let ((a0-24 (-> this skel root-channel 0))) (set! (-> a0-24 param 0) (the float (+ (-> a0-24 frame-group data 0 length) -1))) (set! (-> a0-24 param 1) 1.0) - (joint-control-channel-group! a0-24 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-24 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-25 (-> this skel root-channel 0))) - (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) - (set! (-> a0-25 param 1) 1.0) - (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 14) - ) + (let ((a0-25 (-> this skel root-channel 0))) + (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 14)) (cond ((ja-done? 0) (ja-channel-push! 1 (seconds 0.2)) (cond ((-> this attacking?) (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 11)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 11)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0))) (else - (let ((s5-3 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-3 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s5-3 frame-num) 0.0) - ) - ) - ) + (let ((s5-3 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-3 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s5-3 frame-num) 0.0)))) (let ((a0-34 (-> this skel root-channel 0))) (set! (-> a0-34 param 0) (the float (+ (-> a0-34 frame-group data 0 length) -1))) (set! (-> a0-34 param 1) 1.0) - (joint-control-channel-group! a0-34 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-34 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-35 (-> this skel root-channel 0))) - (set! (-> a0-35 param 0) (the float (+ (-> a0-35 frame-group data 0 length) -1))) - (set! (-> a0-35 param 1) 1.0) - (joint-control-channel-group-eval! a0-35 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) + (let ((a0-35 (-> this skel root-channel 0))) + (set! (-> a0-35 param 0) (the float (+ (-> a0-35 frame-group data 0 length) -1))) + (set! (-> a0-35 param 1) 1.0) + (joint-control-channel-group-eval! a0-35 (the-as art-joint-anim #f) num-func-seek!))))) (else - (ja-channel-push! 1 (seconds 0.2)) - (let ((s5-4 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-4 - (the-as art-joint-anim (-> this draw art-group data 14)) - num-func-identity - ) - (set! (-> s5-4 frame-num) 0.0) - ) - (let ((a0-38 (-> this skel root-channel 0))) - (set! (-> a0-38 param 0) (the float (+ (-> a0-38 frame-group data 0 length) -1))) - (set! (-> a0-38 param 1) 1.0) - (joint-control-channel-group! a0-38 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 10) - ) + (ja-channel-push! 1 (seconds 0.2)) + (let ((s5-4 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-4 (the-as art-joint-anim (-> this draw art-group data 14)) num-func-identity) + (set! (-> s5-4 frame-num) 0.0)) + (let ((a0-38 (-> this skel root-channel 0))) + (set! (-> a0-38 param 0) (the float (+ (-> a0-38 frame-group data 0 length) -1))) + (set! (-> a0-38 param 1) 1.0) + (joint-control-channel-group! a0-38 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 10)) (cond ((-> this attacking?) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-5 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-5 - (the-as art-joint-anim (-> this draw art-group data 12)) - num-func-identity - ) - (set! (-> s5-5 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-5 (the-as art-joint-anim (-> this draw art-group data 12)) num-func-identity) + (set! (-> s5-5 frame-num) 0.0)) (let ((a0-45 (-> this skel root-channel 0))) (set! (-> a0-45 param 0) (the float (+ (-> a0-45 frame-group data 0 length) -1))) (set! (-> a0-45 param 1) 1.0) - (joint-control-channel-group! a0-45 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-45 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-142 (-> this skel root-channel 0))) (set! (-> v1-142 num-func) num-func-identity) - (set! (-> v1-142 frame-num) 0.0) - ) + (set! (-> v1-142 frame-num) 0.0)) (let ((a0-48 (-> this skel root-channel 0))) (set! (-> a0-48 param 0) (the float (+ (-> a0-48 frame-group data 0 length) -1))) (set! (-> a0-48 param 1) 1.0) - (joint-control-channel-group! a0-48 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-48 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-49 (-> this skel root-channel 0))) - (set! (-> a0-49 param 0) (the float (+ (-> a0-49 frame-group data 0 length) -1))) - (set! (-> a0-49 param 1) 1.0) - (joint-control-channel-group-eval! a0-49 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 12) - ) + (let ((a0-49 (-> this skel root-channel 0))) + (set! (-> a0-49 param 0) (the float (+ (-> a0-49 frame-group data 0 length) -1))) + (set! (-> a0-49 param 1) 1.0) + (joint-control-channel-group-eval! a0-49 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 12)) (cond ((not (-> this attacking?)) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-6 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-6 - (the-as art-joint-anim (-> this draw art-group data 10)) - num-func-identity - ) - (set! (-> s5-6 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-6 (the-as art-joint-anim (-> this draw art-group data 10)) num-func-identity) + (set! (-> s5-6 frame-num) 0.0)) (let ((a0-56 (-> this skel root-channel 0))) (set! (-> a0-56 param 0) (the float (+ (-> a0-56 frame-group data 0 length) -1))) (set! (-> a0-56 param 1) 1.0) - (joint-control-channel-group! a0-56 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-56 (the-as art-joint-anim #f) num-func-seek!))) ((ja-done? 0) (let ((v1-178 (-> this skel root-channel 0))) (set! (-> v1-178 num-func) num-func-identity) - (set! (-> v1-178 frame-num) 0.0) - ) + (set! (-> v1-178 frame-num) 0.0)) (let ((a0-59 (-> this skel root-channel 0))) (set! (-> a0-59 param 0) (the float (+ (-> a0-59 frame-group data 0 length) -1))) (set! (-> a0-59 param 1) 1.0) - (joint-control-channel-group! a0-59 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-59 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-60 (-> this skel root-channel 0))) - (set! (-> a0-60 param 0) (the float (+ (-> a0-60 frame-group data 0 length) -1))) - (set! (-> a0-60 param 1) 1.0) - (joint-control-channel-group-eval! a0-60 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - ((= (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (-> this draw art-group data 13) - ) + (let ((a0-60 (-> this skel root-channel 0))) + (set! (-> a0-60 param 0) (the float (+ (-> a0-60 frame-group data 0 length) -1))) + (set! (-> a0-60 param 1) 1.0) + (joint-control-channel-group-eval! a0-60 (the-as art-joint-anim #f) num-func-seek!))))) + ((= (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) (-> this draw art-group data 13)) (cond ((ja-done? 0) (ja-channel-push! 1 (seconds 0.2)) (let ((s5-7 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-7 - (the-as art-joint-anim (-> this draw art-group data 10)) - num-func-identity - ) - (set! (-> s5-7 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-7 (the-as art-joint-anim (-> this draw art-group data 10)) num-func-identity) + (set! (-> s5-7 frame-num) 0.0)) (let ((a0-68 (-> this skel root-channel 0))) (set! (-> a0-68 param 0) (the float (+ (-> a0-68 frame-group data 0 length) -1))) (set! (-> a0-68 param 1) 1.0) - (joint-control-channel-group! a0-68 (the-as art-joint-anim #f) num-func-seek!) - ) - ) + (joint-control-channel-group! a0-68 (the-as art-joint-anim #f) num-func-seek!))) (else - (let ((a0-69 (-> this skel root-channel 0))) - (set! (-> a0-69 param 0) (the float (+ (-> a0-69 frame-group data 0 length) -1))) - (set! (-> a0-69 param 1) 1.0) - (joint-control-channel-group-eval! a0-69 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) + (let ((a0-69 (-> this skel root-channel 0))) + (set! (-> a0-69 param 0) (the float (+ (-> a0-69 frame-group data 0 length) -1))) + (set! (-> a0-69 param 1) 1.0) + (joint-control-channel-group-eval! a0-69 (the-as art-joint-anim #f) num-func-seek!))))) (else - (ja-channel-push! 1 (seconds 0.2)) - (let ((s5-8 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-8 - (the-as art-joint-anim (-> this draw art-group data 13)) - num-func-identity - ) - (set! (-> s5-8 frame-num) 0.0) - ) - (let ((a0-72 (-> this skel root-channel 0))) - (set! (-> a0-72 param 0) (the float (+ (-> a0-72 frame-group data 0 length) -1))) - (set! (-> a0-72 param 1) 1.0) - (joint-control-channel-group! a0-72 (the-as art-joint-anim #f) num-func-seek!) - ) - ) - ) - ) - (case (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - (((-> this draw art-group data 10) (-> this draw art-group data 12)) - (puffer-method-31 this) - ) - (else - (puffer-method-30 this) - ) - ) - (none) - ) + (ja-channel-push! 1 (seconds 0.2)) + (let ((s5-8 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-8 (the-as art-joint-anim (-> this draw art-group data 13)) num-func-identity) + (set! (-> s5-8 frame-num) 0.0)) + (let ((a0-72 (-> this skel root-channel 0))) + (set! (-> a0-72 param 0) (the float (+ (-> a0-72 frame-group data 0 length) -1))) + (set! (-> a0-72 param 1) 1.0) + (joint-control-channel-group! a0-72 (the-as art-joint-anim #f) num-func-seek!))))) + (case (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) + (((-> this draw art-group data 10) (-> this draw art-group data 12)) (puffer-method-31 this)) + (else (puffer-method-30 this))) + (none)) (defmethod relocate ((this puffer) (arg0 int)) - (if (nonzero? (-> this neck)) - (&+! (-> this neck) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this neck)) (&+! (-> this neck) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this puffer) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -1061,7 +664,7 @@ (set! (-> this travel-turn-speed) 16384.0) (puffer-method-21 this) (process-drawable-from-entity! this (-> this entity)) - (initialize-skeleton this *puffer-sg* '()) + (initialize-skeleton this *puffer-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (logclear! (-> this mask) (process-mask actor-pause)) (logior! (-> this mask) (process-mask enemy)) @@ -1075,46 +678,32 @@ (nav-control-method-26 (-> this nav)) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0)) - (if (<= (-> this path curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) + (if (<= (-> this path curve num-cverts) 0) (go process-drawable-art-error "no path")) (set! (-> this buddy) (the-as process-drawable (entity-actor-lookup arg0 'alt-actor 0))) (ja-channel-set! 1) (let ((a0-21 (-> this skel root-channel 0))) (set! (-> a0-21 param 0) (the float (+ (-> a0-21 frame-group data 0 length) -1))) (set! (-> a0-21 param 1) 1.0) - (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!) - ) + (joint-control-channel-group! a0-21 (the-as art-joint-anim #f) num-func-seek!)) (let ((s4-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-0 - (the-as art-joint-anim (-> this draw art-group data 9)) - num-func-identity - ) - (set! (-> s4-0 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-0 (the-as art-joint-anim (-> this draw art-group data 9)) num-func-identity) + (set! (-> s4-0 frame-num) 0.0)) (set! (-> this facing-ry) (quaternion-y-angle (-> this root quat))) (set! (-> this travel-ry) (-> this facing-ry)) (set! (-> this travel-speed) 18432.0) (vector-reset! (-> this root transv)) (set! (-> this patrol-bottom-y) (-> this root trans y)) (let ((f28-0 8192.0) - (f30-0 -8192.0) - ) + (f30-0 -8192.0)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-54 (res-lump-data arg0 'distance (pointer float) :tag-ptr (& sv-16)))) (when v1-54 (set! f28-0 (-> v1-54 0)) - (set! f30-0 (-> v1-54 1)) - ) - ) + (set! f30-0 (-> v1-54 1)))) (set! (-> this top-y) (+ (-> this patrol-bottom-y) f28-0)) - (set! (-> this attack-bottom-y) (+ (-> this patrol-bottom-y) f30-0)) - ) + (set! (-> this attack-bottom-y) (+ (-> this patrol-bottom-y) f30-0))) (set! (-> this root trans y) (rand-vu-float-range (-> this patrol-bottom-y) (-> this top-y))) (set! (-> this targ-trans-y) (-> this root trans y)) (set! (-> this acc-y) 2048.0) @@ -1125,9 +714,7 @@ (set! (-> v1-59 nose) (the-as uint 2)) (set! (-> v1-59 ear) (the-as uint 0)) (set! (-> v1-59 max-dist) 102400.0) - (set! (-> v1-59 ignore-angle) 16384.0) - ) + (set! (-> v1-59 ignore-angle) 16384.0)) (update-transforms! (-> this root)) (go puffer-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/qbert-plat.gc b/goal_src/jak1/levels/sunken/qbert-plat.gc index add62cfac6..c2639b9e5e 100644 --- a/goal_src/jak1/levels/sunken/qbert-plat.gc +++ b/goal_src/jak1/levels/sunken/qbert-plat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/game/task/hint-control.gc") (require "engine/camera/pov-camera-h.gc") (require "engine/common-obs/rigid-body.gc") @@ -11,124 +10,101 @@ ;; dgos: L1, SUN, SUNKEN (declare-type qbert-plat-master process-drawable) + (declare-type qbert-plat rigid-body-platform) ;; DECOMP BEGINS -(deftype qbert-plat-on (process-drawable) - () - ) +(deftype qbert-plat-on (process-drawable) ()) - -(defskelgroup *qbert-plat-on-sg* qbert-plat-on qbert-plat-on-lod0-jg qbert-plat-on-idle-ja - ((qbert-plat-on-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -2 0 4.5) - ) +(defskelgroup *qbert-plat-on-sg* + qbert-plat-on + qbert-plat-on-lod0-jg + qbert-plat-on-idle-ja + ((qbert-plat-on-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -2 0 4.5)) (deftype qbert-plat (rigid-body-platform) - ((anchor-point vector :inline) - (plat-id int32) - (on? symbol) - (player-is-riding? symbol) - (master entity-actor) - ) + ((anchor-point vector :inline) + (plat-id int32) + (on? symbol) + (player-is-riding? symbol) + (master entity-actor)) (:states - qbert-plat-on-die - qbert-plat-on-mimic - qbert-plat-wait-for-master - ) - ) + qbert-plat-on-die + qbert-plat-on-mimic + qbert-plat-wait-for-master)) +(defskelgroup *qbert-plat-sg* + qbert-plat + qbert-plat-lod0-jg + qbert-plat-idle-ja + ((qbert-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -2 0 4.5)) -(defskelgroup *qbert-plat-sg* qbert-plat qbert-plat-lod0-jg qbert-plat-idle-ja - ((qbert-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -2 0 4.5) - ) - -(define *qbert-plat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 4 - :mass 4.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 4) - :inertial-tensor-z (meters 4) - :idle-distance (meters 70) - :platform #t - :sound-name #f - ) - ) +(define *qbert-plat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 4) + :inertial-tensor-z (meters 4) + :idle-distance (meters 70) + :platform #t + :sound-name #f)) (deftype qbert-plat-master (process-drawable) - ((last-plat-triggered int32) - (plat-states uint32) - (plat-states-needed-to-open-door uint32) - (player-in-bounds? symbol) - (player-in-water? symbol) - (play-door-cam? symbol) - (puzzle-beaten? symbol) - (door entity-actor) - (door-plat entity-actor) - (bounds-start vector :inline) - (bounds-end vector :inline) - ) + ((last-plat-triggered int32) + (plat-states uint32) + (plat-states-needed-to-open-door uint32) + (player-in-bounds? symbol) + (player-in-water? symbol) + (play-door-cam? symbol) + (puzzle-beaten? symbol) + (door entity-actor) + (door-plat entity-actor) + (bounds-start vector :inline) + (bounds-end vector :inline)) (:methods - (plat-state-set? (_type_ uint) symbol) - ) - (:states - (qbert-plat-master-do-door symbol) - qbert-plat-master-idle - qbert-plat-master-wait-for-door - ) - ) - + (plat-state-set? (_type_ uint) symbol)) + (:states (qbert-plat-master-do-door symbol) + qbert-plat-master-idle + qbert-plat-master-wait-for-door)) (defstate qbert-plat-on-mimic (qbert-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (go qbert-plat-on-die) - ) - ) - ) - :code (behavior () - (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) - (loop - (let ((gp-0 (-> self parent))) - (set! (-> self root-overlay trans quad) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay trans quad) - ) - (quaternion-copy! - (-> self root-overlay quat) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay quat) - ) - (set! (-> self root-overlay scale quad) - (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay scale quad) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (go qbert-plat-on-die)))) + :code + (behavior () + (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) + (loop (let ((gp-0 (-> self parent))) + (set! (-> self root-overlay trans quad) (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay trans quad)) + (quaternion-copy! (-> self root-overlay quat) (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay quat)) + (set! (-> self root-overlay scale quad) (-> (the-as (pointer rigid-body-platform) gp-0) 0 root-overlay scale quad))) + (suspend))) + :post ja-post) (defstate qbert-plat-on-die (qbert-plat) - :code (behavior () - '() - ) - ) + :code + (behavior () + ())) (defbehavior qbert-plat-on-init-by-other qbert-plat ((arg0 entity-actor) (arg1 qbert-plat)) (set! (-> self entity) arg0) @@ -137,155 +113,92 @@ (set! (-> self root-overlay trans quad) (-> arg1 root-overlay trans quad)) (quaternion-copy! (-> self root-overlay quat) (-> arg1 root-overlay quat)) (set! (-> self root-overlay scale quad) (-> arg1 root-overlay scale quad)) - (initialize-skeleton self *qbert-plat-on-sg* '()) + (initialize-skeleton self *qbert-plat-on-sg* ()) (logior! (-> self skel status) (janim-status inited)) (ja-channel-set! 1) (ja :group! qbert-plat-idle-ja :num! min) (go qbert-plat-on-mimic) - (none) - ) + (none)) (defbehavior qbert-plat-event-handler qbert-plat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('notify) - (rigid-body-platform-method-32 self) - ) - (else - (rigid-body-platform-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (('notify) (rigid-body-platform-method-32 self)) + (else (rigid-body-platform-event-handler arg0 arg1 arg2 arg3)))) (defmethod rigid-body-platform-method-33 ((this qbert-plat)) (let* ((a1-0 (-> this master)) - (v1-0 (if a1-0 - (-> a1-0 extra process) - ) - ) - ) - (if v1-0 - (send-event v1-0 'trigger (-> this plat-id)) - ) - ) - ) + (v1-0 (if a1-0 (-> a1-0 extra process)))) + (if v1-0 (send-event v1-0 'trigger (-> this plat-id))))) (defmethod rigid-body-platform-method-32 ((this qbert-plat)) (let* ((v1-0 (-> this master)) - (a0-1 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + (a0-1 (if v1-0 (-> v1-0 extra process)))) (when (the-as qbert-plat-master a0-1) (let ((v1-3 (plat-state-set? (the-as qbert-plat-master a0-1) (the-as uint (-> this plat-id))))) (when (!= v1-3 (-> this on?)) (set! (-> this on?) v1-3) (cond - (v1-3 - (process-spawn qbert-plat-on (-> this entity) this :to this) - (sound-play "plat-light-on") - ) + (v1-3 (process-spawn qbert-plat-on (-> this entity) this :to this) (sound-play "plat-light-on")) (else - (let ((gp-2 (-> this child))) - (while gp-2 - (send-event (ppointer->process gp-2) 'die) - (set! gp-2 (-> gp-2 0 brother)) - ) - ) - (sound-play "plat-light-off") - ) - ) - ) - ) - ) - ) - ) + (let ((gp-2 (-> this child))) (while gp-2 (send-event (ppointer->process gp-2) 'die) (set! gp-2 (-> gp-2 0 brother)))) + (sound-play "plat-light-off")))))))) (defstate qbert-plat-wait-for-master (qbert-plat) - :code (behavior () - (loop - (let ((v1-0 (-> self master))) - (when (if v1-0 - (-> v1-0 extra process) - ) - (suspend) - (rigid-body-platform-method-32 self) - (go-virtual rigid-body-platform-idle) - ) - ) - (suspend) - 0 - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (let ((v1-0 (-> self master))) + (when (if v1-0 (-> v1-0 extra process)) + (suspend) + (rigid-body-platform-method-32 self) + (go-virtual rigid-body-platform-idle))) + (suspend) + 0)) + :post ja-post) (defstate rigid-body-platform-idle (qbert-plat) :virtual #t :event qbert-plat-event-handler - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (suspend))) + :post ja-post) (defstate rigid-body-platform-float (qbert-plat) :virtual #t :event qbert-plat-event-handler - :exit (behavior () - (if (-> self on?) - (logior! (-> self draw status) (draw-status hidden)) - ) - ) - :trans (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) - (let* ((v1-5 (-> self root-overlay riders)) - (gp-1 (nonzero? (-> v1-5 num-riders))) - ) - (when gp-1 - (if (not (-> self player-is-riding?)) - (rigid-body-platform-method-33 self) - ) - ) - (set! (-> self player-is-riding?) gp-1) - ) - ) - :post (behavior () - ((the-as - (function none :behavior qbert-plat) - (-> (method-of-type rigid-body-platform rigid-body-platform-float) post) - ) - ) - (if (-> self on?) - (logior! (-> self draw status) (draw-status hidden)) - ) - ) - ) + :exit + (behavior () + (if (-> self on?) (logior! (-> self draw status) (draw-status hidden)))) + :trans + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + ((-> (method-of-type rigid-body-platform rigid-body-platform-float) trans)) + (let* ((v1-5 (-> self root-overlay riders)) + (gp-1 (nonzero? (-> v1-5 num-riders)))) + (when gp-1 + (if (not (-> self player-is-riding?)) (rigid-body-platform-method-33 self))) + (set! (-> self player-is-riding?) gp-1))) + :post + (behavior () + ((the-as (function none :behavior qbert-plat) (-> (method-of-type rigid-body-platform rigid-body-platform-float) post))) + (if (-> self on?) (logior! (-> self draw status) (draw-status hidden))))) (defmethod rigid-body-platform-method-22 ((this qbert-plat) (arg0 vector) (arg1 float)) (+ (-> this anchor-point y) (-> this float-height-offset) - (* 512.0 (cos (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) - ) - ) + (* 512.0 (cos (* 546.13336 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))))) (defmethod rigid-body-platform-method-23 ((this qbert-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this qbert-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -294,18 +207,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this qbert-plat)) - (initialize-skeleton this *qbert-plat-sg* '()) + (initialize-skeleton this *qbert-plat-sg* ()) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root-overlay)) @@ -315,34 +225,29 @@ (set! (-> v1-11 0 local-pos x) -14336.0) (set! (-> v1-11 0 local-pos y) 0.0) (set! (-> v1-11 0 local-pos z) -14336.0) - (set! (-> v1-11 0 local-pos w) 1.0) - ) + (set! (-> v1-11 0 local-pos w) 1.0)) (let ((v1-13 (-> this control-point-array data 1))) (set! (-> v1-13 local-pos x) -14336.0) (set! (-> v1-13 local-pos y) 0.0) (set! (-> v1-13 local-pos z) 14336.0) - (set! (-> v1-13 local-pos w) 1.0) - ) + (set! (-> v1-13 local-pos w) 1.0)) (let ((v1-15 (-> this control-point-array data 2))) (set! (-> v1-15 local-pos x) 14336.0) (set! (-> v1-15 local-pos y) 0.0) (set! (-> v1-15 local-pos z) 14336.0) - (set! (-> v1-15 local-pos w) 1.0) - ) + (set! (-> v1-15 local-pos w) 1.0)) (let ((v1-17 (-> this control-point-array data 3))) (set! (-> v1-17 local-pos x) 14336.0) (set! (-> v1-17 local-pos y) 0.0) (set! (-> v1-17 local-pos z) -14336.0) - (set! (-> v1-17 local-pos w) 1.0) - ) + (set! (-> v1-17 local-pos w) 1.0)) (set! (-> this on?) #f) (set! (-> this player-is-riding?) #f) (set! (-> this master) (entity-actor-lookup (-> this entity) 'alt-actor 0)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-id) (actor-count-before (-> this link))) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this qbert-plat) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -350,360 +255,189 @@ (process-drawable-from-entity! this arg0) (rigid-body-platform-method-31 this) (go qbert-plat-wait-for-master) - (none) - ) + (none)) (defmethod plat-state-set? ((this qbert-plat-master) (arg0 uint)) - (logtest? (-> this plat-states) (ash 1 arg0)) - ) + (logtest? (-> this plat-states) (ash 1 arg0))) (defstate qbert-plat-master-idle (qbert-plat-master) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (start-hint-timer (text-id sunken-qbert-plat-hint)) - (close-specific-task! (game-task sunken-platforms) (task-status need-hint)) - (when (not (-> self puzzle-beaten?)) - (let ((v1-2 (-> block param 0))) - (when (!= v1-2 (-> self last-plat-triggered)) - (set! (-> self last-plat-triggered) (the-as int v1-2)) - (let ((s5-1 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) - (let ((v1-3 (ash 1 v1-2))) - (logxor! (-> self plat-states) (the-as uint v1-3)) - (if (not (logtest? v1-3 (-> self plat-states))) - (level-hint-spawn - (text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (send-event proc 'notify) - (let ((a0-13 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) - (if (!= s5-1 a0-13) - (go qbert-plat-master-do-door a0-13) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (when (not (-> self puzzle-beaten?)) - (when (task-complete? *game-info* (game-task sunken-platforms)) - (set! (-> self puzzle-beaten?) #t) - (set! (-> self plat-states) (-> self plat-states-needed-to-open-door)) - (set! (-> self play-door-cam?) #f) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'trigger) - (let ((t9-1 send-event-function) - (v1-8 (-> self door)) - ) - (t9-1 - (if v1-8 - (-> v1-8 extra process) - ) - a1-1 - ) - ) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'trigger) - (let ((t9-2 send-event-function) - (v1-12 (-> self door-plat)) - ) - (t9-2 - (if v1-12 - (-> v1-12 extra process) - ) - a1-2 - ) - ) - ) - (send-to-all (-> self link) 'notify) - ) - ) - (when (and *target* (not (-> self puzzle-beaten?))) - (let ((gp-0 #f)) - (let ((s5-1 (logtest? (-> *target* water flags) (water-flags wt09)))) - (when s5-1 - (when (not (-> self player-in-water?)) - (set! gp-0 #t) - (level-hint-spawn - (text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (set! (-> self player-in-water?) s5-1) - ) - (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) - (let ((s5-2 #t)) - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (vector-! s3-0 (target-pos 0) (-> self bounds-start)) - (set! (-> s3-0 y) 0.0) - (vector-! s4-0 (-> self bounds-end) (-> self bounds-start)) - (if (< (vector-dot s3-0 s4-0) 0.0) - (set! s5-2 #f) - ) - ) - (when (and (not s5-2) (-> self player-in-bounds?)) - (set! gp-0 #t) - (level-hint-spawn - (text-id sunken-qbert-plat-hint) - "sksp0130" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (set! (-> self player-in-bounds?) s5-2) - ) - ) - (when gp-0 - (set! (-> self plat-states) (the-as uint 0)) - (set! (-> self last-plat-triggered) -1) - (send-to-all (-> self link) 'notify) - (let ((a1-9 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-9 from) self) - (set! (-> a1-9 num-params) 0) - (set! (-> a1-9 message) 'untrigger) - (let ((t9-8 send-event-function) - (v1-47 (-> self door)) - ) - (t9-8 - (if v1-47 - (-> v1-47 extra process) - ) - a1-9 - ) - ) - ) - (let ((a1-10 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-10 from) self) - (set! (-> a1-10 num-params) 0) - (set! (-> a1-10 message) 'untrigger) - (let ((t9-9 send-event-function) - (v1-51 (-> self door-plat)) - ) - (t9-9 - (if v1-51 - (-> v1-51 extra process) - ) - a1-10 - ) - ) - ) - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (start-hint-timer (text-id sunken-qbert-plat-hint)) + (close-specific-task! (game-task sunken-platforms) (task-status need-hint)) + (when (not (-> self puzzle-beaten?)) + (let ((v1-2 (-> block param 0))) + (when (!= v1-2 (-> self last-plat-triggered)) + (set! (-> self last-plat-triggered) (the-as int v1-2)) + (let ((s5-1 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) + (let ((v1-3 (ash 1 v1-2))) + (logxor! (-> self plat-states) (the-as uint v1-3)) + (if (not (logtest? v1-3 (-> self plat-states))) + (level-hint-spawn (text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* (game-task none)))) + (send-event proc 'notify) + (let ((a0-13 (= (-> self plat-states-needed-to-open-door) (-> self plat-states)))) + (if (!= s5-1 a0-13) (go qbert-plat-master-do-door a0-13)))))))))) + :code + (behavior () + (loop (when (not (-> self puzzle-beaten?)) + (when (task-complete? *game-info* (game-task sunken-platforms)) + (set! (-> self puzzle-beaten?) #t) + (set! (-> self plat-states) (-> self plat-states-needed-to-open-door)) + (set! (-> self play-door-cam?) #f) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'trigger) + (let ((t9-1 send-event-function) + (v1-8 (-> self door))) + (t9-1 (if v1-8 (-> v1-8 extra process)) a1-1))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'trigger) + (let ((t9-2 send-event-function) + (v1-12 (-> self door-plat))) + (t9-2 (if v1-12 (-> v1-12 extra process)) a1-2))) + (send-to-all (-> self link) 'notify))) + (when (and *target* (not (-> self puzzle-beaten?))) + (let ((gp-0 #f)) + (let ((s5-1 (logtest? (-> *target* water flags) (water-flags wt09)))) + (when s5-1 + (when (not (-> self player-in-water?)) + (set! gp-0 #t) + (level-hint-spawn (text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* (game-task none)))) + (set! (-> self player-in-water?) s5-1)) + (when (logtest? (-> *target* control status) (cshape-moving-flags onsurf)) + (let ((s5-2 #t)) + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector))) + (vector-! s3-0 (target-pos 0) (-> self bounds-start)) + (set! (-> s3-0 y) 0.0) + (vector-! s4-0 (-> self bounds-end) (-> self bounds-start)) + (if (< (vector-dot s3-0 s4-0) 0.0) (set! s5-2 #f))) + (when (and (not s5-2) (-> self player-in-bounds?)) + (set! gp-0 #t) + (level-hint-spawn (text-id sunken-qbert-plat-hint) "sksp0130" (the-as entity #f) *entity-pool* (game-task none))) + (set! (-> self player-in-bounds?) s5-2))) + (when gp-0 + (set! (-> self plat-states) (the-as uint 0)) + (set! (-> self last-plat-triggered) -1) + (send-to-all (-> self link) 'notify) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 0) + (set! (-> a1-9 message) 'untrigger) + (let ((t9-8 send-event-function) + (v1-47 (-> self door))) + (t9-8 (if v1-47 (-> v1-47 extra process)) a1-9))) + (let ((a1-10 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-10 from) self) + (set! (-> a1-10 num-params) 0) + (set! (-> a1-10 message) 'untrigger) + (let ((t9-9 send-event-function) + (v1-51 (-> self door-plat))) + (t9-9 (if v1-51 (-> v1-51 extra process)) a1-10)))))) + (suspend)))) (defstate qbert-plat-master-do-door (qbert-plat-master) - :code (behavior ((arg0 symbol)) - (when (not (-> self play-door-cam?)) + :code + (behavior ((arg0 symbol)) + (when (not (-> self play-door-cam?)) + (cond + (arg0 + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'trigger) + (let ((t9-0 send-event-function) + (v1-3 (-> self door))) + (t9-0 (if v1-3 (-> v1-3 extra process)) a1-0))) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'trigger) + (let ((t9-1 send-event-function) + (v1-7 (-> self door-plat))) + (t9-1 (if v1-7 (-> v1-7 extra process)) a1-1)))) + (else + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 0) + (set! (-> a1-2 message) 'untrigger) + (let ((t9-2 send-event-function) + (v1-11 (-> self door))) + (t9-2 (if v1-11 (-> v1-11 extra process)) a1-2))) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 0) + (set! (-> a1-3 message) 'untrigger) + (let ((t9-3 send-event-function) + (v1-15 (-> self door-plat))) + (t9-3 (if v1-15 (-> v1-15 extra process)) a1-3))))) + (go qbert-plat-master-idle)) + (set-time! (-> self state-time)) (cond (arg0 - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'trigger) - (let ((t9-0 send-event-function) - (v1-3 (-> self door)) - ) - (t9-0 - (if v1-3 - (-> v1-3 extra process) - ) - a1-0 - ) - ) - ) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'trigger) - (let ((t9-1 send-event-function) - (v1-7 (-> self door-plat)) - ) - (t9-1 - (if v1-7 - (-> v1-7 extra process) - ) - a1-1 - ) - ) - ) - ) + (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f () :to self) + (until (time-elapsed? (-> self state-time) (seconds 1.4)) + (suspend))) (else - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 0) - (set! (-> a1-2 message) 'untrigger) - (let ((t9-2 send-event-function) - (v1-11 (-> self door)) - ) - (t9-2 - (if v1-11 - (-> v1-11 extra process) - ) - a1-2 - ) - ) - ) - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 0) - (set! (-> a1-3 message) 'untrigger) - (let ((t9-3 send-event-function) - (v1-15 (-> self door-plat)) - ) - (t9-3 - (if v1-15 - (-> v1-15 extra process) - ) - a1-3 - ) - ) - ) - ) - ) - (go qbert-plat-master-idle) - ) - (set-time! (-> self state-time)) - (cond - (arg0 - (ambient-hint-spawn "gamcam08" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f '() :to self) - (until (time-elapsed? (-> self state-time) (seconds 1.4)) - (suspend) - ) - ) - (else - (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-close" 0 #f '() :to self) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - ) - ) - (cond - (arg0 - (let ((a1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-12 from) self) - (set! (-> a1-12 num-params) 0) - (set! (-> a1-12 message) 'trigger) - (let ((t9-13 send-event-function) - (v1-41 (-> self door)) - ) - (t9-13 - (if v1-41 - (-> v1-41 extra process) - ) - a1-12 - ) - ) - ) - (let ((a1-13 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-13 from) self) - (set! (-> a1-13 num-params) 0) - (set! (-> a1-13 message) 'trigger) - (let ((t9-14 send-event-function) - (v1-45 (-> self door-plat)) - ) - (t9-14 - (if v1-45 - (-> v1-45 extra process) - ) - a1-13 - ) - ) - ) - ) - (else - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 0) - (set! (-> a1-14 message) 'untrigger) - (let ((t9-15 send-event-function) - (v1-49 (-> self door)) - ) - (t9-15 - (if v1-49 - (-> v1-49 extra process) - ) - a1-14 - ) - ) - ) - (let ((a1-15 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-15 from) self) - (set! (-> a1-15 num-params) 0) - (set! (-> a1-15 message) 'untrigger) - (let ((t9-16 send-event-function) - (v1-53 (-> self door-plat)) - ) - (t9-16 - (if v1-53 - (-> v1-53 extra process) - ) - a1-15 - ) - ) - ) - (set! (-> self play-door-cam?) #f) - ) - ) - (go qbert-plat-master-idle) - ) - ) + (ambient-hint-spawn "gamcam07" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "qbert-show-door-close" 0 #f () :to self) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend)))) + (cond + (arg0 + (let ((a1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-12 from) self) + (set! (-> a1-12 num-params) 0) + (set! (-> a1-12 message) 'trigger) + (let ((t9-13 send-event-function) + (v1-41 (-> self door))) + (t9-13 (if v1-41 (-> v1-41 extra process)) a1-12))) + (let ((a1-13 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-13 from) self) + (set! (-> a1-13 num-params) 0) + (set! (-> a1-13 message) 'trigger) + (let ((t9-14 send-event-function) + (v1-45 (-> self door-plat))) + (t9-14 (if v1-45 (-> v1-45 extra process)) a1-13)))) + (else + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 0) + (set! (-> a1-14 message) 'untrigger) + (let ((t9-15 send-event-function) + (v1-49 (-> self door))) + (t9-15 (if v1-49 (-> v1-49 extra process)) a1-14))) + (let ((a1-15 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-15 from) self) + (set! (-> a1-15 num-params) 0) + (set! (-> a1-15 message) 'untrigger) + (let ((t9-16 send-event-function) + (v1-53 (-> self door-plat))) + (t9-16 (if v1-53 (-> v1-53 extra process)) a1-15))) + (set! (-> self play-door-cam?) #f))) + (go qbert-plat-master-idle))) (defstate qbert-plat-master-wait-for-door (qbert-plat-master) - :code (behavior () - (loop - (let* ((v1-0 (-> self door)) - (gp-0 (if v1-0 - (-> v1-0 extra process) - ) - ) - (v1-2 (-> self door-plat)) - (s5-0 (if v1-2 - (-> v1-2 extra process) - ) - ) - ) - (when (and gp-0 s5-0) - (logclear! (-> s5-0 mask) (process-mask platform)) - (when (-> self puzzle-beaten?) - (suspend) - (send-event gp-0 'trigger) - (send-event s5-0 'trigger) - ) - (go qbert-plat-master-idle) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (let* ((v1-0 (-> self door)) + (gp-0 (if v1-0 (-> v1-0 extra process))) + (v1-2 (-> self door-plat)) + (s5-0 (if v1-2 (-> v1-2 extra process)))) + (when (and gp-0 s5-0) + (logclear! (-> s5-0 mask) (process-mask platform)) + (when (-> self puzzle-beaten?) + (suspend) + (send-event gp-0 'trigger) + (send-event s5-0 'trigger)) + (go qbert-plat-master-idle))) + (suspend)))) (defmethod init-from-entity! ((this qbert-plat-master) (arg0 entity-actor)) (set! (-> this last-plat-triggered) -1) @@ -715,9 +449,7 @@ (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) - (set! (-> this plat-states-needed-to-open-door) - (the-as uint (get-matching-actor-type-mask (-> this link) qbert-plat)) - ) + (set! (-> this plat-states-needed-to-open-door) (the-as uint (get-matching-actor-type-mask (-> this link) qbert-plat))) (set! (-> this door) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this door-plat) (entity-actor-lookup arg0 'alt-actor 1)) (set-vector! (-> this bounds-start) -39034.88 0.0 27729.92 1.0) @@ -728,9 +460,6 @@ (set! (-> this puzzle-beaten?) v1-11) (when v1-11 (set! (-> this plat-states) (-> this plat-states-needed-to-open-door)) - (set! (-> this play-door-cam?) #f) - ) - ) + (set! (-> this play-door-cam?) #f))) (go qbert-plat-master-wait-for-door) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/shover.gc b/goal_src/jak1/levels/sunken/shover.gc index 8a9d6c5142..6eadc4ca5f 100644 --- a/goal_src/jak1/levels/sunken/shover.gc +++ b/goal_src/jak1/levels/sunken/shover.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path-h.gc") @@ -10,77 +9,56 @@ ;; dgos: L1, SUN, SUNKEN (declare-type shover process-drawable) + (define-extern *shover* shover) ;; unknown type ;; DECOMP BEGINS (deftype shover (process-drawable) - ((root collide-shape :override) - (shove-up float) - ) + ((root collide-shape :override) + (shove-up float)) (:states - shover-idle - ) - ) + shover-idle)) - -(defskelgroup *shover-sg* shover shover-lod0-jg shover-idle-ja - ((shover-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) +(defskelgroup *shover-sg* + shover + shover-lod0-jg + shover-idle-ja + ((shover-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) (defstate shover-idle (shover) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (when ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> block param 0)) - (-> *target* control) - (collide-action solid) - (collide-action) - ) - (let ((s4-0 (new 'stack 'attack-info))) - (calc-shove-up (-> self root) s4-0 (-> self shove-up)) - (level-hint-spawn (text-id sunken-hotpipes) "sksp0134" (the-as entity #f) *entity-pool* (game-task none)) - (if (or (= (-> *target* control unknown-surface00 mode) 'air) - (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) - (< 0.75 (-> *target* control poly-normal y)) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up)))) - ) - (send-event - proc - 'attack-or-shove - (-> block param 0) - (static-attack-info ((mode 'burn) - (shove-up (meters 0)) - (shove-back (meters 2)) - (vector (-> *target* control poly-normal)) - (angle 'shove) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (when ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> block param 0)) + (-> *target* control) + (collide-action solid) + (collide-action)) + (let ((s4-0 (new 'stack 'attack-info))) + (calc-shove-up (-> self root) s4-0 (-> self shove-up)) + (level-hint-spawn (text-id sunken-hotpipes) "sksp0134" (the-as entity #f) *entity-pool* (game-task none)) + (if (or (= (-> *target* control unknown-surface00 mode) 'air) + (>= (+ (current-time) (seconds -0.2)) (-> *target* control unknown-dword11)) + (< 0.75 (-> *target* control poly-normal y))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (vector (-> s4-0 vector)) (shove-up (-> s4-0 shove-up))))) + (send-event proc + 'attack-or-shove + (-> block param 0) + (static-attack-info ((mode 'burn) (shove-up (meters 0)) (shove-back (meters 2)) (vector (-> *target* control poly-normal)) (angle 'shove))))))))))) + :code anim-loop) (defmethod init-from-entity! ((this shover) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (set! (-> this shove-up) (res-lump-float arg0 'shove :default 12288.0)) (let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128)) - (s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player))) - ) + (s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint s3-0) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -88,46 +66,30 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 0) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) - (set-root-prim! s4-0 s3-1) - ) + (set-root-prim! s4-0 s3-1)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *shover-sg* '()) + (initialize-skeleton this *shover-sg* ()) (let ((v1-17 (new 'process 'path-control this 'path 0.0))) (set! (-> this path) v1-17) (logior! (-> v1-17 flags) (path-control-flag display draw-line draw-point draw-text)) - (if (<= (-> v1-17 curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) - ) + (if (<= (-> v1-17 curve num-cverts) 0) (go process-drawable-art-error "no path"))) (set! sv-16 (new 'static 'res-tag)) (let ((v1-23 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-23 (+! (-> this root trans x) (-> v1-23 0)) (+! (-> this root trans y) (-> v1-23 1)) - (+! (-> this root trans z) (-> v1-23 2)) - ) - ) + (+! (-> this root trans z) (-> v1-23 2)))) (let ((f0-13 (res-lump-float arg0 'rotoffset))) - (if (!= f0-13 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13) - ) - ) + (if (!= f0-13 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-13))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (set! *shover* this) (go shover-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/square-platform.gc b/goal_src/jak1/levels/sunken/square-platform.gc index cbad1e3a52..2162738405 100644 --- a/goal_src/jak1/levels/sunken/square-platform.gc +++ b/goal_src/jak1/levels/sunken/square-platform.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/basebutton.gc") (require "engine/common-obs/ticky.gc") (require "engine/common-obs/water-anim.gc") @@ -13,161 +12,144 @@ ;; dgos: L1, SUN, SUNKEN (declare-type square-platform baseplat) + (declare-type square-platform-master process-drawable) ;; DECOMP BEGINS (deftype square-platform (baseplat) - ((plat-id int32) - (pos-u float) - (water-entity entity-actor) - (splash-counter int32) - (start-splash-time time-frame) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (part4 sparticle-launch-control) - (up-pos vector :inline) - (down-pos vector :inline) - ) + ((plat-id int32) + (pos-u float) + (water-entity entity-actor) + (splash-counter int32) + (start-splash-time time-frame) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (part4 sparticle-launch-control) + (up-pos vector :inline) + (down-pos vector :inline)) (:methods - (square-platform-method-27 (_type_ symbol) none) - ) + (square-platform-method-27 (_type_ symbol) none)) (:states - square-platform-lowered - square-platform-lowering - square-platform-raised - square-platform-rising - ) - ) + square-platform-lowered + square-platform-lowering + square-platform-raised + square-platform-rising)) +(defskelgroup *square-platform-sg* + square-platform + square-platform-lod0-jg + square-platform-idle-ja + ((square-platform-lod0-mg (meters 20)) (square-platform-lod1-mg (meters 999999))) + :bounds (static-spherem 0 -11 0 8)) -(defskelgroup *square-platform-sg* square-platform square-platform-lod0-jg square-platform-idle-ja - ((square-platform-lod0-mg (meters 20)) (square-platform-lod1-mg (meters 999999))) - :bounds (static-spherem 0 -11 0 8) - ) - -(deftype square-platform-button (basebutton) - () - ) - +(deftype square-platform-button (basebutton) ()) (deftype square-platform-master (process-drawable) - ((button-id int32) - (plat-id int32) - (plat-mask uint32) - (plat-id-dir int32) - (wiggled? symbol) - (timeout time-frame) - (last-plat-activated-time time-frame) - (delay-til-wiggle time-frame) - (ticker ticky :inline) - ) + ((button-id int32) + (plat-id int32) + (plat-mask uint32) + (plat-id-dir int32) + (wiggled? symbol) + (timeout time-frame) + (last-plat-activated-time time-frame) + (delay-til-wiggle time-frame) + (ticker ticky :inline)) (:states - square-platform-master-activate - square-platform-master-idle - ) - ) - + square-platform-master-activate + square-platform-master-idle)) (defpartgroup group-square-platform-breach-splash :id 437 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d))) - ) + :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d)))) (defpart 2222 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 3)) - (:scale-x (meters 3.5) (meters 3.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2316) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 3)) + (:scale-x (meters 3.5) (meters 3.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2316) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2316 - :init-specs ((:fade-a -0.17066666)) - ) + :init-specs ((:fade-a -0.17066666))) (defpart 2315 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 3) (meters 1.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2316) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 3) (meters 1.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2316) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-square-platform-submerge-bubbles :id 438 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2223)) - ) + :parts ((sp-item 2223))) (defpart 2223 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 2.0) - (:x (meters -4) (meters 8)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 0.15) (meters 0.05)) - (:scale-y (meters 0.125) (meters 0.025)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:fade-a 0.8) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:userdata -663298.44) - (:func 'check-water-level-above-and-die) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2317) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 2.0) + (:x (meters -4) (meters 8)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 0.15) (meters 0.05)) + (:scale-y (meters 0.125) (meters 0.025)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:fade-a 0.8) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:userdata -663298.44) + (:func 'check-water-level-above-and-die) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2317) + (:rotate-y (degrees 0)))) (defpart 2317 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpartgroup group-square-platform-submerge-splash :id 439 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d))) - ) + :parts ((sp-item 2222 :flags (is-3d)) (sp-item 2315 :flags (is-3d)))) (defmethod square-platform-method-27 ((this square-platform) (arg0 symbol)) (local-vars (v0-3 sound-id) (sv-48 int)) @@ -175,232 +157,138 @@ (set! (-> s4-0 quad) (-> this root trans quad)) (+! (-> s4-0 y) -20480.0) (let* ((v1-1 (-> this water-entity)) - (a0-4 (if v1-1 - (-> v1-1 extra process) - ) - ) - ) + (a0-4 (if v1-1 (-> v1-1 extra process)))) (when (not a0-4) (set! (-> this water-entity) (entity-actor-lookup (-> this entity) 'alt-actor 0)) - (let ((v1-4 (-> this water-entity))) - (set! a0-4 (if v1-4 - (-> v1-4 extra process) - ) - ) - ) - ) + (let ((v1-4 (-> this water-entity))) (set! a0-4 (if v1-4 (-> v1-4 extra process))))) (when (the-as water-vol a0-4) (let ((f0-2 (get-ripple-height (the-as water-vol a0-4) s4-0)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> s4-0 quad)) (set! (-> s3-0 y) f0-2) (if (zero? (-> this start-splash-time)) - (set! v0-3 (cond - (arg0 - (if (>= (-> s4-0 y) f0-2) - (set-time! (-> this start-splash-time)) - ) - v0-3 - ) - (else - (when (>= f0-2 (-> s4-0 y)) - (set-time! (-> this start-splash-time)) - (let ((s2-0 sound-play-by-name) - (s1-0 (make-u128 #x6873616c (the-as uint #x70732d656772616c))) - (s0-0 (new-sound-id)) - ) - (set! sv-48 1024) - (let ((a3-0 (the int (* 1524.0 (rand-vu-float-range -0.8 0.8)))) - (t0-0 0) - (t1-0 1) - (t2-0 #t) - ) - (s2-0 (the-as sound-name s1-0) s0-0 sv-48 a3-0 t0-0 (the-as sound-group t1-0) t2-0) - ) - ) - ) - ) - ) - ) - ) + (set! v0-3 + (cond + (arg0 (if (>= (-> s4-0 y) f0-2) (set-time! (-> this start-splash-time))) v0-3) + (else + (when (>= f0-2 (-> s4-0 y)) + (set-time! (-> this start-splash-time)) + (let ((s2-0 sound-play-by-name) + (s1-0 (make-u128 #x6873616c (the-as uint #x70732d656772616c))) + (s0-0 (new-sound-id))) + (set! sv-48 1024) + (let ((a3-0 (the int (* 1524.0 (rand-vu-float-range -0.8 0.8)))) + (t0-0 0) + (t1-0 1) + (t2-0 #t)) + (s2-0 (the-as sound-name s1-0) s0-0 sv-48 a3-0 t0-0 (the-as sound-group t1-0) t2-0)))))))) (when (nonzero? (-> this start-splash-time)) (cond (arg0 - (let ((v1-21 (-> this splash-counter))) - (when (< v1-21 2) - (set! (-> this splash-counter) (+ v1-21 1)) - (spawn (-> this part2) s3-0) - ) - ) - ) - (else - (spawn (-> this part3) s4-0) - ) - ) - ) + (let ((v1-21 (-> this splash-counter))) + (when (< v1-21 2) + (set! (-> this splash-counter) (+ v1-21 1)) + (spawn (-> this part2) s3-0)))) + (else (spawn (-> this part3) s4-0)))) (when (not arg0) (let ((v1-25 (-> this splash-counter))) (when (< v1-25 2) (set! (-> this splash-counter) (+ v1-25 1)) - (spawn (-> this part4) s3-0) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (spawn (-> this part4) s3-0)))))))) + (none)) (defstate square-platform-lowered (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (if (and (= (-> proc type) square-platform-master) - (= (-> (the-as square-platform-master proc) plat-id) (-> self plat-id)) - ) - (go square-platform-rising) - ) - ) - ) - ) - :code (behavior () - (set! (-> self pos-u) 0.0) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (if (and (= (-> proc type) square-platform-master) (= (-> (the-as square-platform-master proc) plat-id) (-> self plat-id))) + (go square-platform-rising))))) + :code + (behavior () + (set! (-> self pos-u) 0.0) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate square-platform-rising (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go square-platform-lowering) - ) - ) - ) - :enter (behavior () - (set! (-> self start-splash-time) 0) - (set! (-> self splash-counter) 0) - 0 - ) - :trans (behavior () - (set! (-> self pos-u) - (seek-with-smooth (-> self pos-u) 1.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01) - ) - (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) - (plat-trans) - (when (= (-> self pos-u) 1.0) - (plat-post) - (go square-platform-raised) - ) - (square-platform-method-27 self #t) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go square-platform-lowering)))) + :enter + (behavior () + (set! (-> self start-splash-time) 0) + (set! (-> self splash-counter) 0) + 0) + :trans + (behavior () + (set! (-> self pos-u) (seek-with-smooth (-> self pos-u) 1.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01)) + (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) + (plat-trans) + (when (= (-> self pos-u) 1.0) + (plat-post) + (go square-platform-raised)) + (square-platform-method-27 self #t)) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defstate square-platform-raised (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('untrigger) - (go square-platform-lowering) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('untrigger) (go square-platform-lowering)))) :trans plat-trans - :code (behavior () - (set! (-> self pos-u) 1.0) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (set! (-> self pos-u) 1.0) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defstate square-platform-lowering (square-platform) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk 'bounce) - (baseplat-method-22 self) - ) - (('trigger) - (go square-platform-rising) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (set! (-> self start-splash-time) 0) - (set! (-> self splash-counter) 0) - 0 - ) - :trans (behavior () - (set! (-> self pos-u) - (seek-with-smooth (-> self pos-u) 0.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01) - ) - (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) - (plat-trans) - (when (= (-> self pos-u) 0.0) - (plat-post) - (go square-platform-lowered) - ) - (square-platform-method-27 self #f) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post plat-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk 'bounce) (baseplat-method-22 self)) + (('trigger) (go square-platform-rising)) + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (set! (-> self start-splash-time) 0) + (set! (-> self splash-counter) 0) + 0) + :trans + (behavior () + (set! (-> self pos-u) (seek-with-smooth (-> self pos-u) 0.0 (/ 1.0 (* 0.75 (-> *display* frames-per-second))) 0.8 0.01)) + (vector-lerp! (-> self basetrans) (-> self down-pos) (-> self up-pos) (-> self pos-u)) + (plat-trans) + (when (= (-> self pos-u) 0.0) + (plat-post) + (go square-platform-lowered)) + (square-platform-method-27 self #f)) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post plat-post) (defmethod deactivate ((this square-platform)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) - (if (nonzero? (-> this part4)) - (kill-and-free-particles (-> this part4)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) + (if (nonzero? (-> this part4)) (kill-and-free-particles (-> this part4))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this square-platform) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (if (nonzero? (-> this part4)) - (&+! (-> this part4) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (if (nonzero? (-> this part4)) (&+! (-> this part4) arg0)) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this square-platform) (arg0 entity-actor)) (local-vars (sv-16 res-tag) (sv-32 res-tag)) @@ -408,9 +296,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -419,48 +305,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-id) (actor-count-before (-> this link))) - (initialize-skeleton this *square-platform-sg* '()) + (initialize-skeleton this *square-platform-sg* ()) (baseplat-method-21 this) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (set! sv-16 (new 'static 'res-tag)) (let* ((v1-32 (res-lump-data (-> this entity) 'distance pointer :tag-ptr (& sv-16))) - (f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) - (-> (the-as (pointer float) v1-32)) - -8192.0 - ) - ) - ) + (f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0)) (-> (the-as (pointer float) v1-32)) -8192.0))) (set! sv-32 (new 'static 'res-tag)) (let* ((v1-35 (res-lump-data (-> this entity) 'distance pointer :tag-ptr (& sv-32))) - (f0-10 (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) - (-> (the-as (pointer float) v1-35) 1) - 16384.0 - ) - ) - ) + (f0-10 (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count)))) (-> (the-as (pointer float) v1-35) 1) 16384.0))) (set! (-> this down-pos quad) (-> this root trans quad)) (+! (-> this down-pos y) f30-0) (set! (-> this up-pos quad) (-> this root trans quad)) - (+! (-> this up-pos y) f0-10) - ) - ) + (+! (-> this up-pos y) f0-10))) (set! (-> this basetrans quad) (-> this down-pos quad)) (set! (-> this root trans quad) (-> this basetrans quad)) (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 437) this)) @@ -470,180 +337,133 @@ (ja-post) (update-transforms! (-> this root)) (go square-platform-lowered) - (none) - ) + (none)) (defstate square-platform-master-idle (square-platform-master) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (= (-> proc type) square-platform-button) - (set! (-> self button-id) (-> (the-as square-platform-button proc) button-id)) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (go square-platform-master-activate) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (= (-> proc type) square-platform-button) + (set! (-> self button-id) (-> (the-as square-platform-button proc) button-id)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (go square-platform-master-activate))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defstate square-platform-master-activate (square-platform-master) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self wiggled?) #f) - (sleep (-> self ticker) (-> self timeout)) - (set! (-> self plat-id) -1) - (send-to-all (-> self link) 'trigger) - (set! (-> self plat-id) 0) - (let ((gp-0 1)) - (let ((v1-7 (-> self button-id))) - (cond - ((zero? v1-7) - (let ((a0-4 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3)) - ) - ) - ((= v1-7 1) - (let ((v1-13 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4)) - ) - (set! gp-0 -1) - ) - ((= v1-7 2) - (let ((a0-17 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5)) - ) - ) - ((= v1-7 3) - (let ((v1-24 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6)) - ) - (set! gp-0 -1) - ) - ) - ) - (if (< gp-0 0) - (set! (-> self plat-id) 32) - ) - (set! (-> self plat-id-dir) gp-0) - ) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :trans (behavior () - (when (completed? (-> self ticker)) - (send-to-all (-> self link) 'untrigger) - (go square-platform-master-idle) - ) - (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) - (when (not (-> self wiggled?)) - (set! (-> self wiggled?) #t) - (send-to-all (-> self link) 'bounce) - ) - ) - (when (time-elapsed? (-> self last-plat-activated-time) (seconds 0.3)) - (set-time! (-> self last-plat-activated-time)) - (let ((v1-20 (-> self plat-id)) - (a0-5 (-> self plat-id-dir)) - (a1-3 (-> self plat-mask)) - ) - (loop - (+! v1-20 a0-5) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self wiggled?) #f) + (sleep (-> self ticker) (-> self timeout)) + (set! (-> self plat-id) -1) + (send-to-all (-> self link) 'trigger) + (set! (-> self plat-id) 0) + (let ((gp-0 1)) + (let ((v1-7 (-> self button-id))) (cond - ((<= v1-20 0) - (set! (-> self plat-id) 0) - (return #f) - ) - ((>= v1-20 32) - (set! (-> self plat-id) 32) - (return #f) - ) - (else - (when (logtest? a1-3 (ash 1 v1-20)) - (set! (-> self plat-id) v1-20) - (send-to-all (-> self link) 'trigger) - (return #f) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - ) + ((zero? v1-7) + (let ((a0-4 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3)))) + ((= v1-7 1) + (let ((v1-13 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4))) + (set! gp-0 -1)) + ((= v1-7 2) + (let ((a0-17 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5)))) + ((= v1-7 3) + (let ((v1-24 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6))) + (set! gp-0 -1)))) + (if (< gp-0 0) (set! (-> self plat-id) 32)) + (set! (-> self plat-id-dir) gp-0))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :trans + (behavior () + (when (completed? (-> self ticker)) + (send-to-all (-> self link) 'untrigger) + (go square-platform-master-idle)) + (when (reached-delay? (-> self ticker) (-> self delay-til-wiggle)) + (when (not (-> self wiggled?)) + (set! (-> self wiggled?) #t) + (send-to-all (-> self link) 'bounce))) + (when (time-elapsed? (-> self last-plat-activated-time) (seconds 0.3)) + (set-time! (-> self last-plat-activated-time)) + (let ((v1-20 (-> self plat-id)) + (a0-5 (-> self plat-id-dir)) + (a1-3 (-> self plat-mask))) + (loop (+! v1-20 a0-5) + (cond + ((<= v1-20 0) (set! (-> self plat-id) 0) (return #f)) + ((>= v1-20 32) (set! (-> self plat-id) 32) (return #f)) + (else + (when (logtest? a1-3 (ash 1 v1-20)) + (set! (-> self plat-id) v1-20) + (send-to-all (-> self link) 'trigger) + (return #f)))))))) + :code + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0)) (defmethod init-from-entity! ((this square-platform-master) (arg0 entity-actor)) (set! (-> this button-id) -1) (set! (-> this plat-id) -1) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (set! (-> this timeout) - (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 10.0)))) - ) + (set! (-> this timeout) (the-as time-frame (the int (* 300.0 (res-lump-float (-> this entity) 'timeout :default 10.0))))) (set! (-> this delay-til-wiggle) (+ (-> this timeout) (seconds -0.4))) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this plat-mask) (the-as uint (get-matching-actor-type-mask (-> this link) square-platform))) (go square-platform-master-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/steam-cap.gc b/goal_src/jak1/levels/sunken/steam-cap.gc index 15c836848f..052d580c9a 100644 --- a/goal_src/jak1/levels/sunken/steam-cap.gc +++ b/goal_src/jak1/levels/sunken/steam-cap.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") @@ -12,409 +11,392 @@ ;; DECOMP BEGINS (deftype steam-cap-control-pt (structure) - ((trans vector :inline) - (transv vector :inline) - ) - ) - + ((trans vector :inline) + (transv vector :inline))) (deftype steam-cap (process-drawable) - ((root collide-shape-moving :override) - (do-burst? symbol) - (do-falling-sound? symbol) - (do-landing-sound? symbol) - (begin-travel-up float) - (begin-travel-down float) - (sync sync-info :inline) - (part2 sparticle-launch-control) - (part3 sparticle-launch-control) - (down vector :inline) - (up vector :inline) - (control-pt steam-cap-control-pt 3 :inline) - ) + ((root collide-shape-moving :override) + (do-burst? symbol) + (do-falling-sound? symbol) + (do-landing-sound? symbol) + (begin-travel-up float) + (begin-travel-down float) + (sync sync-info :inline) + (part2 sparticle-launch-control) + (part3 sparticle-launch-control) + (down vector :inline) + (up vector :inline) + (control-pt steam-cap-control-pt 3 :inline)) (:methods - (steam-cap-method-20 (_type_) none) - (steam-cap-method-21 (_type_) quaternion) - ) + (steam-cap-method-20 (_type_) none) + (steam-cap-method-21 (_type_) quaternion)) (:states - steam-cap-idle - ) - ) - + steam-cap-idle)) (defpartgroup group-steam-cap-sides :id 441 :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 1718 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) - (sp-item 1719 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) - (sp-item 1720 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - (sp-item 1721 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) - (sp-item 1722 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) - (sp-item 1723 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - (sp-item 1724 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.6) :length (seconds 0.25) :offset 120) - ) - ) + :parts + ((sp-item 1718 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) + (sp-item 1719 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) + (sp-item 1720 + :fade-after (meters 100) + :falloff-to (meters 160) + :period (seconds 0.6) + :length (seconds 0.25) + :offset 120) + (sp-item 1721 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25)) + (sp-item 1722 :fade-after (meters 100) :falloff-to (meters 160) :period (seconds 0.6) :length (seconds 0.25) :offset 60) + (sp-item 1723 + :fade-after (meters 100) + :falloff-to (meters 160) + :period (seconds 0.6) + :length (seconds 0.25) + :offset 120) + (sp-item 1724 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.6) :length (seconds 0.25) :offset 120))) (defpart 1724 - :init-specs ((:num 1.0) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 1725) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:num 1.0) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 1725) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5)))) (defpart 1725 - :init-specs ((:fade-b -2.7306666)) - ) + :init-specs ((:fade-b -2.7306666))) (defpart 1718 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1721 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1719 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1722 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1720 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1723 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.0 2.0) - (:y (meters -0.5)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.10666667) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1726) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.0 2.0) + (:y (meters -0.5)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.10666667) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1726) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 2.5)))) (defpart 1726 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (defpartgroup group-steam-cap-plume :id 442 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 1727 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1728 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1729 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1730 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) - ) - ) + :parts + ((sp-item 1727 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1728 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1729 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1730 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)))) (defpartgroup group-steam-cap-plume-spread :id 443 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 1731 :fade-after (meters 120) :falloff-to (meters 160)) - (sp-item 1732 :fade-after (meters 120) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1731 :fade-after (meters 120) :falloff-to (meters 160)) + (sp-item 1732 :fade-after (meters 120) :falloff-to (meters 160)))) (defpart 1730 - :init-specs ((:num 0.4) - (:rot-x 5) - (:r 6144.0) - (:g 2867.2) - (:b 3276.8) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:accel-y (meters 0.000033333334)) - (:friction 0.94 0.02) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 1725) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5)) - ) - ) + :init-specs + ((:num 0.4) + (:rot-x 5) + (:r 6144.0) + (:g 2867.2) + (:b 3276.8) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:accel-y (meters 0.000033333334)) + (:friction 0.94 0.02) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 1725) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5)))) (defpart 1732 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:y (meters -0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1735) - (:conerot-x (degrees 90) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:y (meters -0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1735) + (:conerot-x (degrees 90) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 1731 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:y (meters -0.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.000033333334)) - (:friction 0.92 0.02) - (:timer (seconds 1)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1735) - (:conerot-x (degrees 90) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:y (meters -0.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.000033333334)) + (:friction 0.92 0.02) + (:timer (seconds 1)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1735) + (:conerot-x (degrees 90) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5)))) (defpart 1735 - :init-specs ((:fade-a -0.32)) - ) + :init-specs ((:fade-a -0.32))) (defpart 1727 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 0) (meters 1)) - (:y (meters -1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.51)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 0) (meters 1)) + (:y (meters -1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.51)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1728 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters 0) (meters 0.5)) - (:y (meters -1)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:accel-y (meters 0.00066666666)) - (:timer (seconds 0.51)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters 0) (meters 0.5)) + (:y (meters -1)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:accel-y (meters 0.00066666666)) + (:timer (seconds 0.51)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1729 - :init-specs ((:num 0.5) - (:x (meters 0.5) (meters 0.5)) - (:rot-x 5) - (:r 6144.0) - (:g 2457.6) - (:b 3276.8) - (:vel-y (meters 0.053333335)) - (:timer (seconds 0.51)) - (:flags (aux-list)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.5) + (:x (meters 0.5) (meters 0.5)) + (:rot-x 5) + (:r 6144.0) + (:g 2457.6) + (:b 3276.8) + (:vel-y (meters 0.053333335)) + (:timer (seconds 0.51)) + (:flags (aux-list)) + (:rotate-y (degrees 0) (degrees 360)))) -(defskelgroup *steam-cap-sg* steam-cap steam-cap-lod0-jg steam-cap-idle-ja - ((steam-cap-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *steam-cap-sg* + steam-cap + steam-cap-lod0-jg + steam-cap-idle-ja + ((steam-cap-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defmethod steam-cap-method-20 ((this steam-cap)) (when *target* (let* ((a1-0 (target-pos 0)) - (f0-0 (-> a1-0 y)) - ) + (f0-0 (-> a1-0 y))) (when (and (>= f0-0 (+ -8192.0 (-> this down y))) - (and (>= (+ -4096.0 (-> this root trans y)) f0-0) (zero? (-> this root riders num-riders))) - ) + (and (>= (+ -4096.0 (-> this root trans y)) f0-0) (zero? (-> this root riders num-riders)))) (let ((f0-1 (vector-vector-xz-distance-squared (-> this down) a1-0))) (when (>= 104857600.0 f0-1) (let ((s5-0 (>= 37748736.0 f0-1))) @@ -423,30 +405,15 @@ (let ((a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 x) (the-as float 1)) (set! (-> a1-1 y) (the-as float #f)) - (if (find-overlapping-shapes (-> this root) (the-as overlaps-others-params a1-1)) - (set! s5-0 #t) - ) - ) - ) - ) - (if s5-0 - (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 1.5))))) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (if (find-overlapping-shapes (-> this root) (the-as overlaps-others-params a1-1)) (set! s5-0 #t))))) + (if s5-0 (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 0.5)) (shove-back (meters 1.5)))))))))))) + (none)) (defmethod steam-cap-method-21 ((this steam-cap)) (local-vars (at-0 int) (at-1 int) (s5-0 symbol)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) + (vf2 :class vf)) (init-vf0-vector) (let ((f0-0 (get-current-phase (-> this sync)))) #t @@ -459,20 +426,9 @@ (when (= (-> s3-0 trans y) (-> this down y)) (set! (-> this do-burst?) #t) (let ((a0-2 (+ (the int (* 60.0 (- 1.0 f30-0))) 3))) - (if (zero? (rand-vu-int-count a0-2)) - (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0)) - ) - ) - ) - ) - ) + (if (zero? (rand-vu-int-count a0-2)) (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0))))))) (let ((a0-4 (+ (the int (* 60.0 (- 1.0 f30-0))) 1))) - (if (zero? (rand-vu-int-count a0-4)) - (spawn (-> this part) (-> this down)) - ) - ) - ) - ) + (if (zero? (rand-vu-int-count a0-4)) (spawn (-> this part) (-> this down)))))) ((< f0-0 (-> this begin-travel-down)) (let ((f30-1 (/ (- f0-0 (-> this begin-travel-up)) (- (-> this begin-travel-down) (-> this begin-travel-up))))) (set! s5-0 #f) @@ -483,183 +439,109 @@ (spawn (-> this part) (-> this down)) (spawn (-> this part) (-> this down)) (spawn (-> this part) (-> this down)) - (spawn (-> this part) (-> this down)) - ) + (spawn (-> this part) (-> this down))) (when (< f30-1 0.94) (spawn (-> this part2) (-> this down)) (let ((a1-8 (new 'stack-no-clear 'vector))) (set! (-> a1-8 quad) (-> this root trans quad)) (+! (-> a1-8 y) -3072.0) - (spawn (-> this part3) a1-8) - ) - ) - ) - ) + (spawn (-> this part3) a1-8))))) (else - (set! s5-0 #t) - (when (-> this do-falling-sound?) - (set! (-> this do-falling-sound?) #f) - (sound-play "sunk-top-falls") - ) - ) - ) - ) + (set! s5-0 #t) + (when (-> this do-falling-sound?) + (set! (-> this do-falling-sound?) #f) + (sound-play "sunk-top-falls"))))) (dotimes (s4-3 3) (let ((s2-0 (-> this control-pt s4-3)) - (s3-3 (new 'stack-no-clear 'vector)) - ) + (s3-3 (new 'stack-no-clear 'vector))) (set! (-> s3-3 quad) (-> s2-0 trans quad)) (cond (s5-0 - (+! (-> s2-0 transv y) (* -819200.0 (seconds-per-frame))) - (let ((a1-10 s3-3) - (v1-42 s3-3) - (a0-21 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-17 (seconds-per-frame))) - (.mov at-0 f0-17) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-21 quad) vf1) - (vector+! a1-10 v1-42 a0-21) - ) - (when (< (-> s3-3 y) (-> this down y)) - (when (-> this do-landing-sound?) - (set! (-> this do-landing-sound?) #f) - (sound-play "sunk-top-lands") - ) - (set! (-> s3-3 y) (-> this down y)) - (let ((f0-20 (-> s2-0 transv y))) - (when (< f0-20 0.0) - (let ((f0-22 (* 0.3 (- f0-20)))) - (set! (-> s2-0 transv y) f0-22) - (if (< 7782.4 f0-22) - (sound-play "sunk-top-lands" :vol 60) - ) - ) - ) - ) - ) - ) + (+! (-> s2-0 transv y) (* -819200.0 (seconds-per-frame))) + (let ((a1-10 s3-3) + (v1-42 s3-3) + (a0-21 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-17 (seconds-per-frame))) (.mov at-0 f0-17)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-21 quad) vf1) + (vector+! a1-10 v1-42 a0-21)) + (when (< (-> s3-3 y) (-> this down y)) + (when (-> this do-landing-sound?) + (set! (-> this do-landing-sound?) #f) + (sound-play "sunk-top-lands")) + (set! (-> s3-3 y) (-> this down y)) + (let ((f0-20 (-> s2-0 transv y))) + (when (< f0-20 0.0) + (let ((f0-22 (* 0.3 (- f0-20)))) + (set! (-> s2-0 transv y) f0-22) + (if (< 7782.4 f0-22) (sound-play "sunk-top-lands" :vol 60))))))) (else - (set! (-> this do-landing-sound?) #t) - (let ((f0-24 (* 0.000048828126 (- (-> this up y) (-> s2-0 trans y))))) - (cond - ((< 1.0 f0-24) - (set! f0-24 1.0) - ) - ((< f0-24 -1.0) - (set! f0-24 -1.0) - ) - ) - (+! (-> s2-0 transv y) (* 819200.0 (seconds-per-frame) f0-24)) - (let ((f1-24 (-> s2-0 transv y))) - (when (< 122880.0 (fabs f1-24)) - (if (>= f1-24 0.0) - (set! (-> s2-0 transv y) 122880.0) - (set! (-> s2-0 transv y) -122880.0) - ) - ) - ) - (let ((a1-14 s3-3) - (v1-61 s3-3) - (a0-26 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f1-27 (seconds-per-frame))) - (.mov at-1 f1-27) - ) - (.mov vf2 at-1) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-26 quad) vf1) - (vector+! a1-14 v1-61 a0-26) - ) - (let ((f1-29 (- (-> this up y) (-> s3-3 y))) - (v1-62 (>= f0-24 0.0)) - ) - (when (!= v1-62 (>= f1-29 0.0)) - (let ((f0-26 (-> s2-0 transv y))) - (when (< 40960.0 (fabs f0-26)) - (if (>= f0-26 0.0) - (set! (-> s2-0 transv y) 40960.0) - (set! (-> s2-0 transv y) -40960.0) - ) - ) - ) - (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) - ) - ) - ) - ) - ) - (set! (-> s2-0 trans quad) (-> s3-3 quad)) - ) - ) + (set! (-> this do-landing-sound?) #t) + (let ((f0-24 (* 0.000048828126 (- (-> this up y) (-> s2-0 trans y))))) + (cond + ((< 1.0 f0-24) (set! f0-24 1.0)) + ((< f0-24 -1.0) (set! f0-24 -1.0))) + (+! (-> s2-0 transv y) (* 819200.0 (seconds-per-frame) f0-24)) + (let ((f1-24 (-> s2-0 transv y))) + (when (< 122880.0 (fabs f1-24)) + (if (>= f1-24 0.0) (set! (-> s2-0 transv y) 122880.0) (set! (-> s2-0 transv y) -122880.0)))) + (let ((a1-14 s3-3) + (v1-61 s3-3) + (a0-26 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f1-27 (seconds-per-frame))) (.mov at-1 f1-27)) + (.mov vf2 at-1) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-26 quad) vf1) + (vector+! a1-14 v1-61 a0-26)) + (let ((f1-29 (- (-> this up y) (-> s3-3 y))) + (v1-62 (>= f0-24 0.0))) + (when (!= v1-62 (>= f1-29 0.0)) + (let ((f0-26 (-> s2-0 transv y))) + (when (< 40960.0 (fabs f0-26)) + (if (>= f0-26 0.0) (set! (-> s2-0 transv y) 40960.0) (set! (-> s2-0 transv y) -40960.0)))) + (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y)))))))) + (set! (-> s2-0 trans quad) (-> s3-3 quad)))) (let ((f0-31 0.0)) (dotimes (v1-71 3) - (+! f0-31 (-> this control-pt v1-71 trans y)) - ) + (+! f0-31 (-> this control-pt v1-71 trans y))) (let ((f0-32 (* 0.33333334 f0-31)) - (a1-16 (new 'stack-no-clear 'vector)) - ) + (a1-16 (new 'stack-no-clear 'vector))) (set! (-> a1-16 quad) (-> this root trans quad)) (set! (-> a1-16 y) f0-32) - (move-to-point! (-> this root) a1-16) - ) - ) + (move-to-point! (-> this root) a1-16))) (let ((v1-77 (new 'stack-no-clear 'vector)) (a0-35 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) + (s5-1 (new 'stack-no-clear 'vector))) (vector-! v1-77 (the-as vector (&-> this stack 176)) (the-as vector (-> this control-pt))) (vector-! a0-35 (the-as vector (&-> this stack 208)) (the-as vector (-> this control-pt))) (vector-cross! s5-1 v1-77 a0-35) (vector-normalize! s5-1 1.0) - (forward-up-nopitch->quaternion - (-> this root quat) - (vector-z-quaternion! (new-stack-vector0) (-> this root quat)) - s5-1 - ) - ) - ) - ) + (forward-up-nopitch->quaternion (-> this root quat) (vector-z-quaternion! (new-stack-vector0) (-> this root quat)) s5-1)))) (defstate steam-cap-idle (steam-cap) :trans rider-trans - :code (behavior () - (loop - (steam-cap-method-20 self) - (steam-cap-method-21 self) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop (steam-cap-method-20 self) + (steam-cap-method-21 self) + (suspend))) + :post rider-post) (defmethod relocate ((this steam-cap) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (if (nonzero? (-> this part3)) - (&+! (-> this part3) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (if (nonzero? (-> this part3)) (&+! (-> this part3) arg0)) + (call-parent-method this arg0)) (defmethod deactivate ((this steam-cap)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) - (if (nonzero? (-> this part3)) - (kill-and-free-particles (-> this part3)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) + (if (nonzero? (-> this part3)) (kill-and-free-particles (-> this part3))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this steam-cap) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -667,9 +549,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -678,55 +558,37 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (set! (-> this do-burst?) #f) (set! (-> this do-falling-sound?) #f) (set! (-> this do-landing-sound?) #f) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *steam-cap-sg* '()) + (initialize-skeleton this *steam-cap-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (update-transforms! (-> this root)) (load-params! (-> this sync) this (the-as uint 1800) 0.0 0.15 0.15) (let ((f30-0 0.4) - (f28-0 0.9) - ) + (f28-0 0.9)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-36 (res-lump-data arg0 'percent (pointer float) :tag-ptr (& sv-16)))) (when v1-36 (set! f30-0 (-> v1-36 0)) (set! f28-0 (-> v1-36 1)) - (if (>= 0.01 f30-0) - (set! f30-0 0.01) - ) - (if (>= 0.01 f28-0) - (set! f28-0 0.01) - ) - (if (>= f30-0 f28-0) - (set! f28-0 (+ 0.01 f30-0)) - ) + (if (>= 0.01 f30-0) (set! f30-0 0.01)) + (if (>= 0.01 f28-0) (set! f28-0 0.01)) + (if (>= f30-0 f28-0) (set! f28-0 (+ 0.01 f30-0))) (when (>= f30-0 1.0) (set! f28-0 (* 0.9 (/ f28-0 f30-0))) - (set! f30-0 0.9) - ) - ) - ) + (set! f30-0 0.9)))) (set! (-> this begin-travel-up) f30-0) - (set! (-> this begin-travel-down) f28-0) - ) + (set! (-> this begin-travel-down) f28-0)) (set! (-> this down quad) (-> this root trans quad)) (set! (-> this up quad) (-> this root trans quad)) (+! (-> this up y) 40960.0) @@ -735,18 +597,13 @@ (set! (-> this part3) (create-launch-control (-> *part-group-id-table* 443) this)) (vector-reset! (-> this root transv)) (let ((s5-1 (new 'stack-no-clear 'vector)) - (f30-1 0.0) - ) + (f30-1 0.0)) (dotimes (s4-2 3) (let ((s3-1 (-> this control-pt s4-2))) (set-vector! s5-1 0.0 0.0 10240.0 1.0) (vector-rotate-around-y! s5-1 s5-1 f30-1) (set! f30-1 (+ 21845.334 f30-1)) (vector+! (-> s3-1 trans) s5-1 (-> this root trans)) - (vector-reset! (-> s3-1 transv)) - ) - ) - ) + (vector-reset! (-> s3-1 transv))))) (go steam-cap-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sun-exit-chamber.gc b/goal_src/jak1/levels/sunken/sun-exit-chamber.gc index 836070bc68..88b8f4f212 100644 --- a/goal_src/jak1/levels/sunken/sun-exit-chamber.gc +++ b/goal_src/jak1/levels/sunken/sun-exit-chamber.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "levels/sunken/sunken-obs.gc") (require "engine/game/task/task-control.gc") (require "levels/sunken/sun-iris-door.gc") @@ -12,270 +11,224 @@ ;; dgos: L1, SUN, SUNKEN (declare-type blue-eco-charger process-drawable) + (declare-type exit-chamber-button basebutton) ;; DECOMP BEGINS (deftype blue-eco-charger-orb (process-drawable) - ((parent-process (pointer blue-eco-charger) :overlay-at parent) - (orbit-rot vector :inline) - (orbit-rotv vector :inline) - (targ-orbit-rotv vector :inline) - (rest-pos vector :inline) - ) + ((parent-process (pointer blue-eco-charger) :overlay-at parent) + (orbit-rot vector :inline) + (orbit-rotv vector :inline) + (targ-orbit-rotv vector :inline) + (rest-pos vector :inline)) (:methods - (blue-eco-charger-orb-method-20 (_type_ float) vector) - ) + (blue-eco-charger-orb-method-20 (_type_ float) vector)) (:states - blue-eco-charger-orb-active - blue-eco-charger-orb-idle - ) - ) + blue-eco-charger-orb-active + blue-eco-charger-orb-idle)) - -(defskelgroup *blue-eco-charger-orb-sg* blue-eco-charger-orb blue-eco-charger-orb-lod0-jg blue-eco-charger-orb-idle-ja - ((blue-eco-charger-orb-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1.1) - ) +(defskelgroup *blue-eco-charger-orb-sg* + blue-eco-charger-orb + blue-eco-charger-orb-lod0-jg + blue-eco-charger-orb-idle-ja + ((blue-eco-charger-orb-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1.1)) (deftype blue-eco-charger (process-drawable) - ((root collide-shape :override) - (charger-id int32) - (open-level float) - (master entity-actor) - ) + ((root collide-shape :override) + (charger-id int32) + (open-level float) + (master entity-actor)) (:methods - (blue-eco-charger-method-20 (_type_) object) - (blue-eco-charger-method-21 (_type_ symbol) object) - ) + (blue-eco-charger-method-20 (_type_) object) + (blue-eco-charger-method-21 (_type_ symbol) object)) (:states - blue-eco-charger-close - blue-eco-charger-idle - (blue-eco-charger-open symbol) - blue-eco-charger-stuck-open - ) - ) + blue-eco-charger-close + blue-eco-charger-idle + (blue-eco-charger-open symbol) + blue-eco-charger-stuck-open)) - -(defskelgroup *blue-eco-charger-sg* blue-eco-charger blue-eco-charger-lod0-jg blue-eco-charger-open-ja - ((blue-eco-charger-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.9 0 2.7) - ) +(defskelgroup *blue-eco-charger-sg* + blue-eco-charger + blue-eco-charger-lod0-jg + blue-eco-charger-open-ja + ((blue-eco-charger-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.9 0 2.7)) (deftype exit-chamber-items (structure) - ((door-pos vector :inline) - (door-quat quaternion :inline) - (button-pos vector :inline) - (button-quat quaternion :inline) - (fcell-pos vector :inline) - ) - ) - + ((door-pos vector :inline) + (door-quat quaternion :inline) + (button-pos vector :inline) + (button-quat quaternion :inline) + (fcell-pos vector :inline))) (deftype exit-chamber (process-drawable) - ((root collide-shape-moving :override) - (chargers-active uint32) - (move-player? symbol) - (move-fcell? symbol) - (play-assistant-message? symbol) - (wave-scale float) - (button (pointer exit-chamber-button)) - (door (pointer sun-iris-door)) - (fcell-handle handle) - (orig-trans vector :inline) - (last-pos vector :inline) - ) + ((root collide-shape-moving :override) + (chargers-active uint32) + (move-player? symbol) + (move-fcell? symbol) + (play-assistant-message? symbol) + (wave-scale float) + (button (pointer exit-chamber-button)) + (door (pointer sun-iris-door)) + (fcell-handle handle) + (orig-trans vector :inline) + (last-pos vector :inline)) (:methods - (exit-chamber-method-20 (_type_ float) float) - (exit-chamber-method-21 (_type_ exit-chamber-items) vector) - (exit-chamber-method-22 (_type_) none) - (exit-chamber-method-23 (_type_ symbol) object) - (exit-chamber-method-24 (_type_ float) none) - ) + (exit-chamber-method-20 (_type_ float) float) + (exit-chamber-method-21 (_type_ exit-chamber-items) vector) + (exit-chamber-method-22 (_type_) none) + (exit-chamber-method-23 (_type_ symbol) object) + (exit-chamber-method-24 (_type_ float) none)) (:states - exit-chamber-charger-puzzle - exit-chamber-charger-puzzle-beaten - exit-chamber-idle-in-sunken - (exit-chamber-idle-in-village symbol) - exit-chamber-lower - exit-chamber-rise - ) - ) + exit-chamber-charger-puzzle + exit-chamber-charger-puzzle-beaten + exit-chamber-idle-in-sunken + (exit-chamber-idle-in-village symbol) + exit-chamber-lower + exit-chamber-rise)) - -(defskelgroup *exit-chamber-sg* exit-chamber exit-chamber-lod0-jg exit-chamber-idle-ja - ((exit-chamber-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 16.5) - ) +(defskelgroup *exit-chamber-sg* + exit-chamber + exit-chamber-lod0-jg + exit-chamber-idle-ja + ((exit-chamber-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 16.5)) (defpartgroup group-exit-chamber-ripples :id 620 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2512 :flags (is-3d))) - ) + :parts ((sp-item 2512 :flags (is-3d)))) (defpart 2513 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:birth-func 'birth-func-ocean-height) - (:num 0.25) - (:x (meters 5) (meters 3)) - (:scale-x (meters 12) (meters 6)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.02)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:userdata 2048.0) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2514) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:birth-func 'birth-func-ocean-height) + (:num 0.25) + (:x (meters 5) (meters 3)) + (:scale-x (meters 12) (meters 6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.02)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:userdata 2048.0) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2514) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2514 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2512 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:birth-func 'birth-func-ocean-height) - (:num 0.5) - (:x (meters 6) (meters 4)) - (:scale-x (meters 3.5) (meters 2.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:userdata 2048.0) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2514) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:birth-func 'birth-func-ocean-height) + (:num 0.5) + (:x (meters 6) (meters 4)) + (:scale-x (meters 3.5) (meters 2.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:userdata 2048.0) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2514) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defmethod blue-eco-charger-orb-method-20 ((this blue-eco-charger-orb) (arg0 float)) - (set-vector! - (-> this targ-orbit-rotv) - (rand-vu-float-range 72817.78 258503.11) - (rand-vu-float-range 72817.78 258503.11) - (rand-vu-float-range 72817.78 258503.11) - 1.0 - ) - (vector-float*! (-> this targ-orbit-rotv) (-> this targ-orbit-rotv) arg0) - ) + (set-vector! (-> this targ-orbit-rotv) + (rand-vu-float-range 72817.78 258503.11) + (rand-vu-float-range 72817.78 258503.11) + (rand-vu-float-range 72817.78 258503.11) + 1.0) + (vector-float*! (-> this targ-orbit-rotv) (-> this targ-orbit-rotv) arg0)) (defstate blue-eco-charger-orb-idle (blue-eco-charger-orb) - :code (behavior () - (set! (-> self root trans quad) (-> self rest-pos quad)) - (loop - (let ((f0-0 (-> self parent-process 0 open-level))) - (if (< 0.0 f0-0) - (go blue-eco-charger-orb-active) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self root trans quad) (-> self rest-pos quad)) + (loop (let ((f0-0 (-> self parent-process 0 open-level))) (if (< 0.0 f0-0) (go blue-eco-charger-orb-active))) + (suspend))) + :post ja-post) (defstate blue-eco-charger-orb-active (blue-eco-charger-orb) - :code (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (blue-eco-charger-orb-method-20 self (-> self parent-process 0 open-level)) - (vector-reset! (-> self orbit-rotv)) - (loop - (let ((f30-0 (-> self parent-process 0 open-level))) - (if (>= 0.0 f30-0) - (go blue-eco-charger-orb-idle) - ) - (if (zero? (rand-vu-int-count 30)) - (blue-eco-charger-orb-method-20 self f30-0) - ) - (set! (-> self orbit-rotv x) - (seek-with-smooth (-> self orbit-rotv x) (-> self targ-orbit-rotv x) 873.81335 0.8 0.12136297) - ) - (set! (-> self orbit-rotv y) - (seek-with-smooth (-> self orbit-rotv y) (-> self targ-orbit-rotv y) 873.81335 0.8 0.12136297) - ) - (set! (-> self orbit-rotv z) - (seek-with-smooth (-> self orbit-rotv z) (-> self targ-orbit-rotv z) 873.81335 0.8 0.12136297) - ) - (let ((a1-5 (-> self orbit-rot)) - (v1-13 (-> self orbit-rot)) - (a0-6 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> self orbit-rotv) quad)) - (let ((f0-11 (seconds-per-frame))) - (.mov at-0 f0-11) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-6 quad) vf1) - (vector+! a1-5 v1-13 a0-6) - ) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 x) (* 1228.8 f30-0 (cos (-> self orbit-rot x)))) - (set! (-> gp-0 y) (* 1228.8 f30-0 (cos (-> self orbit-rot y)))) - (set! (-> gp-0 z) (* 1228.8 f30-0 (cos (-> self orbit-rot z)))) - (vector+! (-> self root trans) gp-0 (-> self rest-pos)) - (set-vector! - gp-0 - (cos (* 436.90668 (the float (mod (current-time) 150)))) - (cos (* 247.39902 (the float (mod (current-time) 264)))) - (cos (* 601.7998 (the float (mod (current-time) 108)))) - 1.0 - ) - (vector-normalize! gp-0 1.0) - (quaternion-vector-angle! (-> self root quat) gp-0 (* 463.8075 (the float (mod (current-time) 141)))) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) - (vector+! gp-1 gp-1 (-> self root trans)) - (eco-blue-glow gp-1) - (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) - (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) - (vector+! gp-1 gp-1 (-> self root trans)) - (vector-lerp! gp-1 gp-1 (-> self parent-process 0 root trans) (rand-vu-float-range 0.2 0.8)) - (eco-blue-glow gp-1) - ) - (suspend) - ;; og:preserve-this + :code + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) (init-vf0-vector) - ) - ) - ) - :post ja-post - ) + (blue-eco-charger-orb-method-20 self (-> self parent-process 0 open-level)) + (vector-reset! (-> self orbit-rotv)) + (loop (let ((f30-0 (-> self parent-process 0 open-level))) + (if (>= 0.0 f30-0) (go blue-eco-charger-orb-idle)) + (if (zero? (rand-vu-int-count 30)) (blue-eco-charger-orb-method-20 self f30-0)) + (set! (-> self orbit-rotv x) + (seek-with-smooth (-> self orbit-rotv x) (-> self targ-orbit-rotv x) 873.81335 0.8 0.12136297)) + (set! (-> self orbit-rotv y) + (seek-with-smooth (-> self orbit-rotv y) (-> self targ-orbit-rotv y) 873.81335 0.8 0.12136297)) + (set! (-> self orbit-rotv z) + (seek-with-smooth (-> self orbit-rotv z) (-> self targ-orbit-rotv z) 873.81335 0.8 0.12136297)) + (let ((a1-5 (-> self orbit-rot)) + (v1-13 (-> self orbit-rot)) + (a0-6 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> self orbit-rotv) quad)) + (let ((f0-11 (seconds-per-frame))) (.mov at-0 f0-11)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-6 quad) vf1) + (vector+! a1-5 v1-13 a0-6)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 x) (* 1228.8 f30-0 (cos (-> self orbit-rot x)))) + (set! (-> gp-0 y) (* 1228.8 f30-0 (cos (-> self orbit-rot y)))) + (set! (-> gp-0 z) (* 1228.8 f30-0 (cos (-> self orbit-rot z)))) + (vector+! (-> self root trans) gp-0 (-> self rest-pos)) + (set-vector! gp-0 + (cos (* 436.90668 (the float (mod (current-time) 150)))) + (cos (* 247.39902 (the float (mod (current-time) 264)))) + (cos (* 601.7998 (the float (mod (current-time) 108)))) + 1.0) + (vector-normalize! gp-0 1.0) + (quaternion-vector-angle! (-> self root quat) gp-0 (* 463.8075 (the float (mod (current-time) 141)))))) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) + (vector+! gp-1 gp-1 (-> self root trans)) + (eco-blue-glow gp-1) + (set! (-> gp-1 x) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 y) (rand-vu-float-range -4096.0 4096.0)) + (set! (-> gp-1 z) (rand-vu-float-range -4096.0 4096.0)) + (vector+! gp-1 gp-1 (-> self root trans)) + (vector-lerp! gp-1 gp-1 (-> self parent-process 0 root trans) (rand-vu-float-range 0.2 0.8)) + (eco-blue-glow gp-1)) + (suspend) + ;; og:preserve-this + (init-vf0-vector)))) + :post ja-post) (defbehavior blue-eco-charger-orb-init-by-other blue-eco-charger-orb ((arg0 entity-actor) (arg1 blue-eco-charger-orb)) (set! (-> self entity) arg0) @@ -285,163 +238,100 @@ (set! (-> self root scale quad) (-> arg1 root scale quad)) (+! (-> self root trans y) 14069.76) (set! (-> self rest-pos quad) (-> self root trans quad)) - (initialize-skeleton self *blue-eco-charger-orb-sg* '()) + (initialize-skeleton self *blue-eco-charger-orb-sg* ()) (ja-channel-set! 1) (ja :group! blue-eco-charger-orb-idle-ja :num! min) (set-vector! (-> self orbit-rot) 0.0 0.0 0.0 1.0) (go blue-eco-charger-orb-idle) - (none) - ) + (none)) (defmethod blue-eco-charger-method-21 ((this blue-eco-charger) (arg0 symbol)) (let* ((v1-0 (-> this master)) - (a0-1 (if v1-0 - (-> v1-0 extra process) - ) - ) - ) + (a0-1 (if v1-0 (-> v1-0 extra process)))) (when (not a0-1) (set! (-> this master) (entity-actor-lookup (-> this entity) 'alt-actor 0)) - (let ((v1-3 (-> this master))) - (set! a0-1 (if v1-3 - (-> v1-3 extra process) - ) - ) - ) - ) - (if a0-1 - (send-event - a0-1 - 'notify - (if arg0 - 1 - 2 - ) - (-> this charger-id) - ) - ) - ) - ) + (let ((v1-3 (-> this master))) (set! a0-1 (if v1-3 (-> v1-3 extra process))))) + (if a0-1 (send-event a0-1 'notify (if arg0 1 2) (-> this charger-id))))) (defmethod blue-eco-charger-method-20 ((this blue-eco-charger)) (and (and *target* (>= 16384.0 (vector-vector-distance (-> this root trans) (-> *target* control trans)))) - (send-event *target* 'query 'powerup (pickup-type eco-blue)) - ) - ) + (send-event *target* 'query 'powerup (pickup-type eco-blue)))) (defstate blue-eco-charger-idle (blue-eco-charger) - :code (behavior () - (set! (-> self open-level) 0.0) - (ja-channel-set! 1) - (ja :group! blue-eco-charger-open-ja :num! min) - (loop - (when (logtest? (-> self draw status) (draw-status was-drawn)) - (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (not (send-event *target* 'query 'powerup (pickup-type eco-blue))) - ) - (level-hint-spawn - (text-id sunken-blue-eco-charger-hint) - "sksp0125" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (when (blue-eco-charger-method-20 self) - (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) - (go blue-eco-charger-open #t) - ) - (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-open #t) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self open-level) 0.0) + (ja-channel-set! 1) + (ja :group! blue-eco-charger-open-ja :num! min) + (loop (when (logtest? (-> self draw status) (draw-status was-drawn)) + (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (send-event *target* 'query 'powerup (pickup-type eco-blue)))) + (level-hint-spawn (text-id sunken-blue-eco-charger-hint) "sksp0125" (the-as entity #f) *entity-pool* (game-task none)))) + (when (blue-eco-charger-method-20 self) + (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) + (go blue-eco-charger-open #t)) + (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) (go blue-eco-charger-open #t)) + (suspend))) + :post ja-post) (defstate blue-eco-charger-open (blue-eco-charger) - :enter (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (if arg0 - (sound-play "blue-eco-start") - ) - (blue-eco-charger-method-21 self #t) - ) - :trans (behavior () - (if (blue-eco-charger-method-20 self) - (set-time! (-> self state-time)) - ) - (update! (-> self sound)) - ) - :code (behavior ((arg0 symbol)) - (ja-no-eval :num! (seek!)) - (while (not (ja-done? 0)) - (suspend) - (ja :num! (seek!)) - (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (loop - (cond - ((zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (when (time-elapsed? (-> self state-time) (seconds 20)) - (level-hint-spawn - (text-id sunken-blue-eco-charger-all-hint) - "sksp0133" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (go blue-eco-charger-close) - ) - ) - (else - (go blue-eco-charger-stuck-open) - ) - ) - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (if arg0 (sound-play "blue-eco-start")) + (blue-eco-charger-method-21 self #t)) + :trans + (behavior () + (if (blue-eco-charger-method-20 self) (set-time! (-> self state-time))) + (update! (-> self sound))) + :code + (behavior ((arg0 symbol)) + (ja-no-eval :num! (seek!)) + (while (not (ja-done? 0)) + (suspend) + (ja :num! (seek!)) + (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1))))) + (loop (cond + ((zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (when (time-elapsed? (-> self state-time) (seconds 20)) + (level-hint-spawn (text-id sunken-blue-eco-charger-all-hint) + "sksp0133" + (the-as entity #f) + *entity-pool* + (game-task none)) + (go blue-eco-charger-close))) + (else (go blue-eco-charger-stuck-open))) + (suspend))) + :post ja-post) (defstate blue-eco-charger-stuck-open (blue-eco-charger) - :trans (behavior () - (update! (-> self sound)) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :trans + (behavior () + (update! (-> self sound))) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate blue-eco-charger-close (blue-eco-charger) - :exit (behavior () - (stop! (-> self sound)) - ) - :code (behavior () - (ja-no-eval :num! (seek! 0.0)) - (while (not (ja-done? 0)) - (when (blue-eco-charger-method-20 self) - (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) - (go blue-eco-charger-open #t) - ) - (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-open #t) - ) - (update! (-> self sound)) - (suspend) - (ja :num! (seek! 0.0)) - (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1)))) - ) - (blue-eco-charger-method-21 self #f) - (go blue-eco-charger-idle) - ) - :post ja-post - ) + :exit + (behavior () + (stop! (-> self sound))) + :code + (behavior () + (ja-no-eval :num! (seek! 0.0)) + (while (not (ja-done? 0)) + (when (blue-eco-charger-method-20 self) + (increment-success-for-hint (text-id sunken-blue-eco-charger-hint)) + (go blue-eco-charger-open #t)) + (if (nonzero? (get-reminder (get-task-control (game-task sunken-room)) 0)) (go blue-eco-charger-open #t)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek! 0.0)) + (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (ja-group) data 0 length) -1))))) + (blue-eco-charger-method-21 self #f) + (go blue-eco-charger-idle)) + :post ja-post) (defmethod init-from-entity! ((this blue-eco-charger) (arg0 entity-actor)) (set! (-> this open-level) 0.0) @@ -453,28 +343,18 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 8192.0 0.0 0.0 16384.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) 6553.6) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *blue-eco-charger-sg* '()) + (initialize-skeleton this *blue-eco-charger-sg* ()) (let ((f0-6 (res-lump-float (-> this entity) 'rotoffset))) - (if (!= f0-6 0.0) - (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6) - ) - ) + (if (!= f0-6 0.0) (quaternion-rotate-y! (-> this root quat) (-> this root quat) f0-6))) (ja-channel-set! 1) (let ((s4-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) @@ -482,65 +362,51 @@ (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this charger-id) (+ (actor-count-before (-> this link)) 1)) (process-spawn blue-eco-charger-orb (-> this entity) this :to this) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "blue-eco-charg" :fo-max 35) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "blue-eco-charg" :fo-max 35) (-> this root trans))) (if (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (go blue-eco-charger-idle) - (go blue-eco-charger-open #f) - ) - (none) - ) - -(deftype exit-chamber-button (basebutton) - () - ) + (go blue-eco-charger-idle) + (go blue-eco-charger-open #f)) + (none)) +(deftype exit-chamber-button (basebutton) ()) (defbehavior exit-chamber-button-init-by-other exit-chamber-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol)) (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0) - (none) - ) + (none)) (defmethod exit-chamber-method-20 ((this exit-chamber) (arg0 float)) (set! (-> this root trans y) - (+ (-> this orig-trans y) (* 2252.8 arg0 (cos (* 36.40889 (the float (mod (current-time) 1800)))))) - ) - ) + (+ (-> this orig-trans y) (* 2252.8 arg0 (cos (* 36.40889 (the float (mod (current-time) 1800)))))))) (defpart 2515 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.6) (meters 0.2)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 40.0 24.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:accel-y (meters 0.00066666666)) - (:friction 0.96) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:userdata 0.0) - (:func 'check-water-level-above-and-die) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.6) (meters 0.2)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 40.0 24.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:accel-y (meters 0.00066666666)) + (:friction 0.96) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:userdata 0.0) + (:func 'check-water-level-above-and-die))) (defmethod exit-chamber-method-24 ((this exit-chamber) (arg0 float)) (let ((s4-0 (-> this node-list data 3 bone transform)) (f30-0 (rand-vu-float-range 0.0 65536.0)) (f28-0 (rand-vu-float-range 8192.0 40960.0)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (set-vector! gp-0 (* (sin f30-0) arg0) f28-0 (* (cos f30-0) arg0) 1.0) (vector-matrix*! gp-0 gp-0 s4-0) (vector-float*! gp-0 gp-0 (/ 1.0 (-> gp-0 w))) (set! (-> *part-id-table* 2515 init-specs 13 initial-valuef) (+ 24576.0 (-> gp-0 y))) - (launch-particles (-> *part-id-table* 2515) gp-0) - ) - (none) - ) + (launch-particles (-> *part-id-table* 2515) gp-0)) + (none)) (defmethod exit-chamber-method-21 ((this exit-chamber) (arg0 exit-chamber-items)) (let ((s5-0 (-> this node-list data 3 bone transform))) @@ -553,36 +419,27 @@ (vector-float*! (-> arg0 button-pos) (-> arg0 button-pos) (/ 1.0 (-> arg0 button-pos w))) (quaternion-copy! (-> arg0 button-quat) (-> arg0 door-quat)) (set-vector! (-> arg0 fcell-pos) 0.0 68300.8 0.0 1.0) - (vector-matrix*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) s5-0) - ) - (vector-float*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) (/ 1.0 (-> arg0 fcell-pos w))) - ) + (vector-matrix*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) s5-0)) + (vector-float*! (-> arg0 fcell-pos) (-> arg0 fcell-pos) (/ 1.0 (-> arg0 fcell-pos w)))) (defmethod exit-chamber-method-23 ((this exit-chamber) (arg0 symbol)) (new 'stack-no-clear 'vector) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector<-cspace! (-> this last-pos) (-> this node-list data 3)) (vector-! s5-0 (-> this last-pos) (-> this root trans)) - (set! (-> this draw bounds quad) (-> s5-0 quad)) - ) + (set! (-> this draw bounds quad) (-> s5-0 quad))) (+! (-> this draw bounds y) 16384.0) (set! (-> this draw bounds w) 67584.0) (let ((s5-1 (new 'stack-no-clear 'exit-chamber-items))) (exit-chamber-method-21 this s5-1) - (if (-> this button) - (send-event (ppointer->process (-> this button)) 'move-to (-> s5-1 button-pos) (-> s5-1 button-quat)) - ) + (if (-> this button) (send-event (ppointer->process (-> this button)) 'move-to (-> s5-1 button-pos) (-> s5-1 button-quat))) (when (and *target* (-> this move-player?)) (let ((a1-6 (new 'stack-no-clear 'vector))) (set! (-> a1-6 quad) (-> s5-1 button-pos quad)) (+! (-> a1-6 y) 2662.4) - (move-to-point! (-> *target* control) a1-6) - ) - (vector-reset! (-> *target* control transv)) - ) - (if (-> this door) - (send-event (ppointer->process (-> this door)) 'move-to (-> s5-1 door-pos) (-> s5-1 door-quat)) - ) + (move-to-point! (-> *target* control) a1-6)) + (vector-reset! (-> *target* control transv))) + (if (-> this door) (send-event (ppointer->process (-> this door)) 'move-to (-> s5-1 door-pos) (-> s5-1 door-quat))) (when arg0 (let ((a0-12 (handle->process (-> this fcell-handle)))) (when a0-12 @@ -591,437 +448,294 @@ (set! (-> this move-fcell?) #t) (let ((v1-50 (-> this entity extra perm))) (logior! (-> v1-50 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-50 user-int8 0) 1) - ) - ) - (send-event a0-12 'trans (-> s5-1 fcell-pos)) - ) - ) - ) - ) - ) - ) + (set! (-> v1-50 user-int8 0) 1))) + (send-event a0-12 'trans (-> s5-1 fcell-pos)))))))) (defstate exit-chamber-charger-puzzle (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 object)) - (case message - (('notify) - (case (-> block param 0) - ((1) - (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let* ((a1-2 (-> block param 1)) - (v1-5 (logior (-> self chargers-active) (ash 1 a1-2))) - ) - (set! (-> self chargers-active) v1-5) - (when (= v1-5 62) - (save-reminder (get-task-control (game-task sunken-room)) 1 0) - (go exit-chamber-charger-puzzle-beaten) - (return #t) - v0-0 - ) - ) - ) - ) - ((2) - (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) - (let ((a1-6 (-> block param 1))) - (set! v0-0 (logclear (-> self chargers-active) (ash 1 a1-6))) - ) - (set! (-> self chargers-active) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (loop - (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) - (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status hidden)) - ) - (suspend) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 object)) + (case message + (('notify) + (case (-> block param 0) + ((1) + (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (let* ((a1-2 (-> block param 1)) + (v1-5 (logior (-> self chargers-active) (ash 1 a1-2)))) + (set! (-> self chargers-active) v1-5) + (when (= v1-5 62) + (save-reminder (get-task-control (game-task sunken-room)) 1 0) + (go exit-chamber-charger-puzzle-beaten) + (return #t) + v0-0)))) + ((2) + (when (zero? (get-reminder (get-task-control (game-task sunken-room)) 0)) + (let ((a1-6 (-> block param 1))) (set! v0-0 (logclear (-> self chargers-active) (ash 1 a1-6)))) + (set! (-> self chargers-active) (the-as uint v0-0)) + v0-0)))))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (loop (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden))) + (suspend))) + :post ja-post) (defstate exit-chamber-charger-puzzle-beaten (exit-chamber) - :code (behavior () - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "exit-chamber-door-open" 0 #f '() :to self) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2.5)) - (suspend) - ) - (send-event (ppointer->process (-> self door)) 'trigger) - (go exit-chamber-idle-in-sunken) - ) - ) + :code + (behavior () + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "exit-chamber-door-open" 0 #f () :to self) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2.5)) + (suspend)) + (send-event (ppointer->process (-> self door)) 'trigger) + (go exit-chamber-idle-in-sunken))) (defstate exit-chamber-idle-in-sunken (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-1 object)) - (case message - (('trigger) - (go exit-chamber-rise) - (return #t) - v0-1 - ) - (('notify) - (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) - (let ((a0-5 (handle->process (-> self fcell-handle)))) - (when a0-5 - (let ((v1-10 (new 'stack-no-clear 'vector))) - (set-vector! v1-10 0.0 64102.4 0.0 1.0) - (vector+! v1-10 v1-10 (-> self last-pos)) - (send-event a0-5 'set-movie-pos v1-10) - ) - ) - ) - ) - ) - ) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (save-reminder (get-task-control (game-task sunken-room)) 1 0) - (set! (-> self wave-scale) 0.0) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (if (-> self button) - (send-event (ppointer->process (-> self button)) 'untrigger) - ) - (loop - (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) - (logclear! (-> self draw status) (draw-status hidden)) - (logior! (-> self draw status) (draw-status hidden)) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-1 object)) + (case message + (('trigger) (go exit-chamber-rise) (return #t) v0-1) + (('notify) + (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) + (let ((a0-5 (handle->process (-> self fcell-handle)))) + (when a0-5 + (let ((v1-10 (new 'stack-no-clear 'vector))) + (set-vector! v1-10 0.0 64102.4 0.0 1.0) + (vector+! v1-10 v1-10 (-> self last-pos)) + (send-event a0-5 'set-movie-pos v1-10)))))))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (save-reminder (get-task-control (game-task sunken-room)) 1 0) + (set! (-> self wave-scale) 0.0) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (if (-> self button) (send-event (ppointer->process (-> self button)) 'untrigger)) + (loop (if (>= 214228270000.0 (vector-vector-distance-squared (camera-pos) (-> self root trans))) + (logclear! (-> self draw status) (draw-status hidden)) + (logior! (-> self draw status) (draw-status hidden))) + (suspend)))) (defstate exit-chamber-rise (exit-chamber) - :enter (behavior () - (set! (-> self move-player?) #f) - ) - :trans (behavior () - (if (not (-> self move-player?)) - (rider-trans) - ) - ) - :code (behavior () - (aybabtu 2) - (let ((v1-1 (handle->process (-> self fcell-handle)))) - (if v1-1 - (clear-collide-with-as (-> (the-as fuel-cell v1-1) root)) - ) - ) - (close-specific-task! (game-task sunken-room) (task-status need-reminder)) - (send-event *target* 'reset-pickup 'eco) - (let ((gp-0 (get-process *default-dead-pool* sunkencam #x4000))) - (set! (-> (the-as sunkencam (-> (when gp-0 - (let ((t9-5 (method-of-type sunkencam activate))) - (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> gp-0 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - (suspend) - (set-time! (-> self state-time)) - (let ((gp-1 #f)) - (ja-no-eval :group! exit-chamber-start-door-shut-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self move-player?) #f)) + :trans + (behavior () + (if (not (-> self move-player?)) (rider-trans))) + :code + (behavior () + (aybabtu 2) + (let ((v1-1 (handle->process (-> self fcell-handle)))) + (if v1-1 (clear-collide-with-as (-> (the-as fuel-cell v1-1) root)))) + (close-specific-task! (game-task sunken-room) (task-status need-reminder)) + (send-event *target* 'reset-pickup 'eco) + (let ((gp-0 (get-process *default-dead-pool* sunkencam #x4000))) + (set! (-> (the-as sunkencam + (-> (when gp-0 + (let ((t9-5 (method-of-type sunkencam activate))) + (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000))) + (run-now-in-process gp-0 pov-camera-init-by-other (-> self root trans) *sunkencam-sg* "qbert-show-door-open" 0 #f ()) + (-> gp-0 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0 + (suspend) + (set-time! (-> self state-time)) + (let ((gp-1 #f)) + (ja-no-eval :group! exit-chamber-start-door-shut-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.75)) (-> self door)) + (set! gp-1 #t) + (send-event (ppointer->process (-> self door)) 'untrigger)) + (suspend) + (ja :num! (seek!)))) + (set! (-> self move-player?) #t) + (ja-no-eval :group! exit-chamber-start-in-room-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.75)) (-> self door)) - (set! gp-1 #t) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (set! (-> self move-player?) #t) - (ja-no-eval :group! exit-chamber-start-in-room-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (load-state-want-levels 'sunken 'village2) - (ja-no-eval :group! exit-chamber-middle-in-water-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (exit-chamber-method-24 self 51200.0) - (update-trans! (-> self sound) (-> self last-pos)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek!)) - ) - (stop! (-> self sound)) - (load-state-want-display-level 'village2 'display) - (load-state-want-display-level 'sunken 'special) - (let ((gp-2 #f)) - (ja-no-eval :group! exit-chamber-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (load-state-want-levels 'sunken 'village2) + (ja-no-eval :group! exit-chamber-middle-in-water-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (exit-chamber-method-24 self 51200.0) + (update-trans! (-> self sound) (-> self last-pos)) + (update! (-> self sound)) + (suspend) + (ja :num! (seek!))) + (stop! (-> self sound)) + (load-state-want-display-level 'village2 'display) + (load-state-want-display-level 'sunken 'special) + (let ((gp-2 #f)) + (ja-no-eval :group! exit-chamber-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek! (-> self wave-scale) 1.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale)) + (if (and (-> self move-player?) (>= (ja-aframe-num 0) 310.0)) (set! (-> self move-player?) #f)) + (let ((a0-36 (new 'stack-no-clear 'vector))) + (set! (-> a0-36 quad) (-> self last-pos quad)) + (+! (-> a0-36 y) 51814.4) + (when (>= (-> a0-36 y) (ocean-get-height a0-36)) + (if (not gp-2) (set! gp-2 #t)) + (spawn (-> self part) (-> self last-pos)) + (spawn (-> self part) (-> self last-pos)) + (spawn (-> self part) (-> self last-pos)))) + (suspend) + (ja :num! (seek!)))) + (kill-and-free-particles (-> self part)) + (load-state-want-vis 'vi2) + (send-event *target* 'dry) + (let ((v1-143 (handle->process (-> self fcell-handle)))) + (if v1-143 (restore-collide-with-as (-> (the-as fuel-cell v1-143) root)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) (seek! (-> self wave-scale) 1.0 0.0016666667) (exit-chamber-method-20 self (-> self wave-scale)) - (if (and (-> self move-player?) (>= (ja-aframe-num 0) 310.0)) - (set! (-> self move-player?) #f) - ) - (let ((a0-36 (new 'stack-no-clear 'vector))) - (set! (-> a0-36 quad) (-> self last-pos quad)) - (+! (-> a0-36 y) 51814.4) - (when (>= (-> a0-36 y) (ocean-get-height a0-36)) - (if (not gp-2) - (set! gp-2 #t) - ) - (spawn (-> self part) (-> self last-pos)) - (spawn (-> self part) (-> self last-pos)) - (spawn (-> self part) (-> self last-pos)) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (kill-and-free-particles (-> self part)) - (load-state-want-vis 'vi2) - (send-event *target* 'dry) - (let ((v1-143 (handle->process (-> self fcell-handle)))) - (if v1-143 - (restore-collide-with-as (-> (the-as fuel-cell v1-143) root)) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (seek! (-> self wave-scale) 1.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - (suspend) - ) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 2.5)) - (seek! (-> self wave-scale) 1.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - (suspend) - ) - (go exit-chamber-idle-in-village #f) - ) - :post (behavior () - (if (-> self move-player?) - (transform-post) - (rider-post) - ) - (exit-chamber-method-23 self #t) - ) - ) + (suspend)) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 2.5)) + (seek! (-> self wave-scale) 1.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale)) + (suspend)) + (go exit-chamber-idle-in-village #f)) + :post + (behavior () + (if (-> self move-player?) (transform-post) (rider-post)) + (exit-chamber-method-23 self #t))) (defstate exit-chamber-idle-in-village (exit-chamber) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go exit-chamber-lower) - ) - (('notify) - (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) - (let ((a0-5 (handle->process (-> self fcell-handle)))) - (when a0-5 - (let ((v1-8 (new 'stack-no-clear 'vector))) - (set-vector! v1-8 0.0 64102.4 0.0 1.0) - (vector+! v1-8 v1-8 (-> self last-pos)) - (send-event a0-5 'set-movie-pos v1-8) - ) - ) - ) - ) - ) - ) - ) - :enter (behavior ((arg0 symbol)) - (logior! (-> self mask) (process-mask platform)) - (set-time! (-> self state-time)) - ) - :exit (behavior () - (logclear! (-> self mask) (process-mask platform)) - ) - :trans (behavior () - (rider-trans) - (when *target* - (let ((f30-0 (vector-vector-xz-distance (target-pos 0) (-> self last-pos)))) - (when (-> self door) - (if (and *target* (>= 114688.0 f30-0)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go exit-chamber-lower)) + (('notify) + (when (and (= (-> proc type) fuel-cell) (= (-> block param 0) 'pickup)) + (let ((a0-5 (handle->process (-> self fcell-handle)))) + (when a0-5 + (let ((v1-8 (new 'stack-no-clear 'vector))) + (set-vector! v1-8 0.0 64102.4 0.0 1.0) + (vector+! v1-8 v1-8 (-> self last-pos)) + (send-event a0-5 'set-movie-pos v1-8)))))))) + :enter + (behavior ((arg0 symbol)) + (logior! (-> self mask) (process-mask platform)) + (set-time! (-> self state-time))) + :exit + (behavior () + (logclear! (-> self mask) (process-mask platform))) + :trans + (behavior () + (rider-trans) + (when *target* + (let ((f30-0 (vector-vector-xz-distance (target-pos 0) (-> self last-pos)))) + (when (-> self door) + (if (and *target* (>= 114688.0 f30-0)) (send-event (ppointer->process (-> self door)) 'trigger) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) - ) - (when (and (-> self play-assistant-message?) (>= f30-0 57344.0)) - (set! (-> self play-assistant-message?) #f) - (level-hint-spawn - (text-id sunken-room-resolution) - "asstvb22" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) - ) - :code (behavior ((arg0 symbol)) - (set! (-> self move-player?) #f) - (set! (-> self wave-scale) 1.0) - (save-reminder (get-task-control (game-task sunken-room)) 2 0) - (if (-> self button) - (send-event (ppointer->process (-> self button)) 'untrigger) - ) - (when arg0 - (logior! (-> self draw status) (draw-status skip-bones)) - (exit-chamber-method-20 self 1.0) - (suspend) - (logclear! (-> self draw status) (draw-status skip-bones)) - ) - (loop - (exit-chamber-method-20 self 1.0) - (suspend) - ) - ) - :post (behavior () - (rider-post) - (exit-chamber-method-23 self #t) - (if (and *target* (>= (vector-vector-xz-distance (target-pos 0) (-> self last-pos)) 40960.0)) - (spawn (-> self part) (-> self last-pos)) - ) - ) - ) + (send-event (ppointer->process (-> self door)) 'untrigger))) + (when (and (-> self play-assistant-message?) (>= f30-0 57344.0)) + (set! (-> self play-assistant-message?) #f) + (level-hint-spawn (text-id sunken-room-resolution) "asstvb22" (the-as entity #f) *entity-pool* (game-task none)))))) + :code + (behavior ((arg0 symbol)) + (set! (-> self move-player?) #f) + (set! (-> self wave-scale) 1.0) + (save-reminder (get-task-control (game-task sunken-room)) 2 0) + (if (-> self button) (send-event (ppointer->process (-> self button)) 'untrigger)) + (when arg0 + (logior! (-> self draw status) (draw-status skip-bones)) + (exit-chamber-method-20 self 1.0) + (suspend) + (logclear! (-> self draw status) (draw-status skip-bones))) + (loop (exit-chamber-method-20 self 1.0) + (suspend))) + :post + (behavior () + (rider-post) + (exit-chamber-method-23 self #t) + (if (and *target* (>= (vector-vector-xz-distance (target-pos 0) (-> self last-pos)) 40960.0)) + (spawn (-> self part) (-> self last-pos))))) (defstate exit-chamber-lower (exit-chamber) - :enter (behavior () - (set! (-> self move-player?) #t) - (let ((v1-2 (handle->process (-> self fcell-handle)))) - (if v1-2 - (clear-collide-with-as (-> (the-as fuel-cell v1-2) root)) - ) - ) - ) - :trans (behavior () - (if (not (-> self move-player?)) - (rider-trans) - ) - (seek! (-> self wave-scale) 0.0 0.0016666667) - (exit-chamber-method-20 self (-> self wave-scale)) - ) - :code (behavior () - (let ((v1-1 (process-spawn - sunkencam - :init pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as sunkencam (-> v1-1 0)) seq) (the-as uint 1)) - ) - (load-state-want-display-level 'sunken 'display) - (suspend) - (set-time! (-> self state-time)) - (let ((gp-1 #f) - (s5-0 #f) - ) - (ja-no-eval :group! exit-chamber-dive-start-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set! (-> self move-player?) #t) + (let ((v1-2 (handle->process (-> self fcell-handle)))) + (if v1-2 (clear-collide-with-as (-> (the-as fuel-cell v1-2) root))))) + :trans + (behavior () + (if (not (-> self move-player?)) (rider-trans)) + (seek! (-> self wave-scale) 0.0 0.0016666667) + (exit-chamber-method-20 self (-> self wave-scale))) + :code + (behavior () + (let ((v1-1 (process-spawn sunkencam + :init + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + () + :to + self))) + (set! (-> (the-as sunkencam (-> v1-1 0)) seq) (the-as uint 1))) + (load-state-want-display-level 'sunken 'display) + (suspend) + (set-time! (-> self state-time)) + (let ((gp-1 #f) + (s5-0 #f)) + (ja-no-eval :group! exit-chamber-dive-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.25)) (-> self door)) + (set! gp-1 #t) + (send-event (ppointer->process (-> self door)) 'untrigger)) + (when (+ (current-time) (seconds -0.1)) + (let ((a0-9 (new 'stack-no-clear 'vector))) + (set! (-> a0-9 quad) (-> self last-pos quad)) + (+! (-> a0-9 y) 64102.4) + (when (< (-> a0-9 y) (+ 12288.0 (ocean-get-height a0-9))) + (if (not s5-0) (set! s5-0 #t)))) + (spawn (-> self part) (-> self last-pos))) + (suspend) + (ja :num! (seek!)))) + (load-state-want-levels 'sunken 'sunkenb) + (kill-and-free-particles (-> self part)) + (ja-no-eval :group! exit-chamber-dive-middle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (when (and (not gp-1) (time-elapsed? (-> self state-time) (seconds 0.25)) (-> self door)) - (set! gp-1 #t) - (send-event (ppointer->process (-> self door)) 'untrigger) - ) - (when (+ (current-time) (seconds -0.1)) - (let ((a0-9 (new 'stack-no-clear 'vector))) - (set! (-> a0-9 quad) (-> self last-pos quad)) - (+! (-> a0-9 y) 64102.4) - (when (< (-> a0-9 y) (+ 12288.0 (ocean-get-height a0-9))) - (if (not s5-0) - (set! s5-0 #t) - ) - ) - ) - (spawn (-> self part) (-> self last-pos)) - ) + (exit-chamber-method-24 self 47104.0) + (update-trans! (-> self sound) (-> self last-pos)) + (update! (-> self sound)) (suspend) - (ja :num! (seek!)) - ) - ) - (load-state-want-levels 'sunken 'sunkenb) - (kill-and-free-particles (-> self part)) - (ja-no-eval :group! exit-chamber-dive-middle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (exit-chamber-method-24 self 47104.0) - (update-trans! (-> self sound) (-> self last-pos)) - (update! (-> self sound)) - (suspend) - (ja :num! (seek!)) - ) - (stop! (-> self sound)) - (load-state-want-display-level 'sunkenb 'display) - (load-state-want-vis 'sub) - (ja-no-eval :group! exit-chamber-dive-end-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self move-player?) #f) - (if (-> self door) - (send-event (ppointer->process (-> self door)) 'trigger) - ) - (let ((v1-109 (handle->process (-> self fcell-handle)))) - (if v1-109 - (restore-collide-with-as (-> (the-as fuel-cell v1-109) root)) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (suspend) - ) - (set-continue! *game-info* "sunkenb-start") - (go exit-chamber-idle-in-sunken) - ) - :post (behavior () - (if (-> self move-player?) - (transform-post) - (rider-post) - ) - (exit-chamber-method-23 self #t) - ) - ) + (ja :num! (seek!))) + (stop! (-> self sound)) + (load-state-want-display-level 'sunkenb 'display) + (load-state-want-vis 'sub) + (ja-no-eval :group! exit-chamber-dive-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self move-player?) #f) + (if (-> self door) (send-event (ppointer->process (-> self door)) 'trigger)) + (let ((v1-109 (handle->process (-> self fcell-handle)))) + (if v1-109 (restore-collide-with-as (-> (the-as fuel-cell v1-109) root)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 3)) + (suspend)) + (set-continue! *game-info* "sunkenb-start") + (go exit-chamber-idle-in-sunken)) + :post + (behavior () + (if (-> self move-player?) (transform-post) (rider-post)) + (exit-chamber-method-23 self #t))) (defmethod init-from-entity! ((this exit-chamber) (arg0 entity-actor)) (process-entity-status! this (entity-perm-status bit-3) #t) @@ -1034,9 +748,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -1045,123 +757,67 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 67584.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *exit-chamber-sg* '()) + (initialize-skeleton this *exit-chamber-sg* ()) (logior! (-> this skel status) (janim-status inited)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 620) this)) (ja-channel-set! 1) (let ((s4-1 (get-reminder (get-task-control (game-task sunken-room)) 0))) (let ((s2-0 #f) - (s3-1 (new 'stack-no-clear 'matrix)) - ) - (let ((a0-17 (-> this entity extra perm))) - (set! (-> this move-fcell?) (nonzero? (-> a0-17 user-int8 0))) - ) + (s3-1 (new 'stack-no-clear 'matrix))) + (let ((a0-17 (-> this entity extra perm))) (set! (-> this move-fcell?) (nonzero? (-> a0-17 user-int8 0)))) (let ((v1-35 s4-1)) (cond ((zero? v1-35) (set! (-> this chargers-active) (the-as uint 0)) (let ((s1-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s1-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s1-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s1-0 frame-num) 0.0))) ((= v1-35 1) (set! (-> this chargers-active) (the-as uint 62)) (let ((s1-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s1-1 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s1-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s1-1 frame-num) 0.0))) ((= v1-35 2) (set! (-> this chargers-active) (the-as uint 62)) (let ((s1-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s1-2 - (the-as art-joint-anim (-> this draw art-group data 6)) - num-func-identity - ) - (set! (-> s1-2 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 6)) data 0 length) -1)) - ) - ) - ) - ) - ) + (joint-control-channel-group-eval! s1-2 (the-as art-joint-anim (-> this draw art-group data 6)) num-func-identity) + (set! (-> s1-2 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 6)) data 0 length) -1))))))) (ja-post) (update-transforms! (-> this root)) (exit-chamber-method-21 this (the-as exit-chamber-items s3-1)) (let ((s1-3 #t)) (let ((v1-64 s4-1)) (cond - ((zero? v1-64) - (set! s1-3 #f) - ) + ((zero? v1-64) (set! s1-3 #f)) ((= v1-64 2) - (if (or (not *target*) (< 114688.0 (vector-vector-xz-distance (target-pos 0) (-> this last-pos)))) - (set! s1-3 #f) - ) - ) - ) - ) - (set! (-> this door) (process-spawn sun-iris-door (-> s3-1 vector) (-> s3-1 vector 1) s1-3 :to this)) - ) - (set! (-> this button) - (process-spawn exit-chamber-button (-> s3-1 vector 2) (-> s3-1 vector 3) arg0 #f :to this) - ) + (if (or (not *target*) (< 114688.0 (vector-vector-xz-distance (target-pos 0) (-> this last-pos)))) (set! s1-3 #f))))) + (set! (-> this door) (process-spawn sun-iris-door (-> s3-1 vector) (-> s3-1 vector 1) s1-3 :to this))) + (set! (-> this button) (process-spawn exit-chamber-button (-> s3-1 vector 2) (-> s3-1 vector 3) arg0 #f :to this)) (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "chamber-move" :fo-min 300 :fo-max 400) (-> this root trans)) - ) + (new 'process 'ambient-sound (static-sound-spec "chamber-move" :fo-min 300 :fo-max 400) (-> this root trans))) (when (not (task-complete? *game-info* (game-task sunken-room))) (let ((a0-40 (new 'stack-no-clear 'vector))) - (if s2-0 - (set! (-> a0-40 quad) (-> (&+ s3-1 64) vector 0 quad)) - (set-vector! a0-40 2357755.5 -882327.1 -6879603.0 1.0) - ) - (set! (-> this fcell-handle) (ppointer->handle (birth-pickup-at-point - a0-40 - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - ) - ) - ) - ) - ) + (if s2-0 (set! (-> a0-40 quad) (-> (&+ s3-1 64) vector 0 quad)) (set-vector! a0-40 2357755.5 -882327.1 -6879603.0 1.0)) + (set! (-> this fcell-handle) + (ppointer->handle (birth-pickup-at-point a0-40 + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f))))))) (set! (-> this orig-trans quad) (-> this root trans quad)) (set! (-> this last-pos quad) (-> this root trans quad)) (set! (-> this move-player?) #f) (exit-chamber-method-23 this #t) (set! (-> this move-player?) #f) (cond - ((zero? s4-1) - (go exit-chamber-charger-puzzle) - ) - ((= s4-1 1) - (go exit-chamber-idle-in-sunken) - ) - ((= s4-1 2) - (go exit-chamber-idle-in-village #t) - ) - ) - ) - (none) - ) + ((zero? s4-1) (go exit-chamber-charger-puzzle)) + ((= s4-1 1) (go exit-chamber-idle-in-sunken)) + ((= s4-1 2) (go exit-chamber-idle-in-village #t)))) + (none)) diff --git a/goal_src/jak1/levels/sunken/sun-iris-door.gc b/goal_src/jak1/levels/sunken/sun-iris-door.gc index b1556ddfc3..80203c0204 100644 --- a/goal_src/jak1/levels/sunken/sun-iris-door.gc +++ b/goal_src/jak1/levels/sunken/sun-iris-door.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") ;; name: sun-iris-door.gc @@ -11,35 +10,32 @@ ;; DECOMP BEGINS (deftype sun-iris-door (process-drawable) - ((root collide-shape :override) - (timeout float) - (proximity? symbol) - (directional-proximity? symbol) - (move-to? symbol) - (locked-by-task? symbol) - (close-dist float) - (open-dist float) - (move-to-pos vector :inline) - (outward-vec vector :inline) - (move-to-quat quaternion :inline) - ) + ((root collide-shape :override) + (timeout float) + (proximity? symbol) + (directional-proximity? symbol) + (move-to? symbol) + (locked-by-task? symbol) + (close-dist float) + (open-dist float) + (move-to-pos vector :inline) + (outward-vec vector :inline) + (move-to-quat quaternion :inline)) (:methods - (should-close? (_type_) symbol) - (should-open? (_type_) symbol) - ) + (should-close? (_type_) symbol) + (should-open? (_type_) symbol)) (:states - sun-iris-door-closed - sun-iris-door-closing - sun-iris-door-open - sun-iris-door-opening - ) - ) + sun-iris-door-closed + sun-iris-door-closing + sun-iris-door-open + sun-iris-door-opening)) - -(defskelgroup *sun-iris-door-sg* sun-iris-door sun-iris-door-lod0-jg sun-iris-door-idle-ja - ((sun-iris-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.5) - ) +(defskelgroup *sun-iris-door-sg* + sun-iris-door + sun-iris-door-lod0-jg + sun-iris-door-idle-ja + ((sun-iris-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.5)) (defmethod should-open? ((this sun-iris-door)) (let ((f30-0 1228800.0)) @@ -50,105 +46,69 @@ (when *target* (vector-! s5-0 (target-pos 0) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec)))) - ) + (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec))))) (vector-! s5-0 (camera-pos) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> this outward-vec))) - ) - ) + (fabs (vector-dot s5-0 (-> this outward-vec))))) (else - (if *target* - (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0))) - ) - (vector-vector-xz-distance (-> this root trans) (camera-pos)) - ) - ) - ) - ) + (if *target* (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0)))) + (vector-vector-xz-distance (-> this root trans) (camera-pos)))))) (when (or (>= (-> this open-dist) f30-0) (>= (-> this open-dist) f0-7)) - (if (or (not (-> this locked-by-task?)) (task-complete? *game-info* (-> this entity extra perm task))) - (return #t) - ) - ) - ) - ) - #f - ) + (if (or (not (-> this locked-by-task?)) (task-complete? *game-info* (-> this entity extra perm task))) (return #t))))) + #f) (defstate sun-iris-door-closed (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go sun-iris-door-opening) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :trans (behavior () - (when (-> self proximity?) - (if (should-open? self) - (go sun-iris-door-opening) - ) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go sun-iris-door-opening)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :trans + (behavior () + (when (-> self proximity?) + (if (should-open? self) (go sun-iris-door-opening)))) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)))) (defstate sun-iris-door-opening (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (go sun-iris-door-closing) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :code (behavior () - (sound-play "irisdoor2") - (ja-no-eval :num! (seek!)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-post) - (go sun-iris-door-open) - ) - :post (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (go sun-iris-door-closing)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :code + (behavior () + (sound-play "irisdoor2") + (ja-no-eval :num! (seek!)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-post) + (go sun-iris-door-open)) + :post + (behavior () + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)) + (else (transform-post))))) (defmethod should-close? ((this sun-iris-door)) (let ((f30-0 1228800.0)) @@ -159,140 +119,91 @@ (when *target* (vector-! s5-0 (target-pos 0) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec)))) - ) + (set! f30-0 (fabs (vector-dot s5-0 (-> this outward-vec))))) (vector-! s5-0 (camera-pos) (-> this root trans)) (set! (-> s5-0 y) 0.0) - (fabs (vector-dot s5-0 (-> this outward-vec))) - ) - ) + (fabs (vector-dot s5-0 (-> this outward-vec))))) (else - (if *target* - (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0))) - ) - (vector-vector-xz-distance (-> this root trans) (camera-pos)) - ) - ) - ) - ) + (if *target* (set! f30-0 (vector-vector-xz-distance (-> this root trans) (target-pos 0)))) + (vector-vector-xz-distance (-> this root trans) (camera-pos)))))) (when (and (>= f30-0 (-> this close-dist)) (>= f0-7 (-> this close-dist))) (cond ((and *target* (-> this directional-proximity?)) (let ((s4-6 (new 'stack-no-clear 'vector)) - (s5-3 (new 'stack-no-clear 'vector)) - ) + (s5-3 (new 'stack-no-clear 'vector))) (vector-! s4-6 (target-pos 0) (-> this root trans)) (set! (-> s4-6 y) 0.0) (vector-! s5-3 (camera-pos) (-> this root trans)) (set! (-> s5-3 y) 0.0) (case (>= (vector-dot (-> this outward-vec) s4-6) 0.0) - (((>= (vector-dot (-> this outward-vec) s5-3) 0.0)) - (return #t) - ) - ) - ) - ) - (else - (return #t) - ) - ) - ) - ) - ) - #f - ) + (((>= (vector-dot (-> this outward-vec) s5-3) 0.0)) (return #t))))) + (else (return #t)))))) + #f) (defstate sun-iris-door-open (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v0-0 (the-as object (current-time)))) - (set! (-> self state-time) (the-as time-frame v0-0)) - v0-0 - ) - ) - (('untrigger) - (go sun-iris-door-closing) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (logclear! (-> self draw status) (draw-status hidden)) - ) - :trans (behavior () - (when (-> self proximity?) - (if (should-close? self) - (go sun-iris-door-closing) - ) - ) - (if (and (!= (-> self timeout) 0.0) (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout))))) - (go sun-iris-door-closing) - ) - ) - :code (behavior () - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - :post (behavior () - (when (-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((v0-0 (the-as object (current-time)))) (set! (-> self state-time) (the-as time-frame v0-0)) v0-0)) + (('untrigger) (go sun-iris-door-closing)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :enter + (behavior () + (set-time! (-> self state-time)) + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (logclear! (-> self draw status) (draw-status hidden))) + :trans + (behavior () + (when (-> self proximity?) + (if (should-close? self) (go sun-iris-door-closing))) + (if (and (!= (-> self timeout) 0.0) (time-elapsed? (-> self state-time) (the int (* 300.0 (-> self timeout))))) + (go sun-iris-door-closing))) + :code + (behavior () + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend))) + :post + (behavior () + (when (-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)))) (defstate sun-iris-door-closing (sun-iris-door) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go sun-iris-door-opening) - ) - (('move-to) - (set! (-> self move-to?) #t) - (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) - (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1))) - ) - ) - ) - :code (behavior () - (sound-play "irisdoor2") - (ja-no-eval :num! (seek! 0.0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (ja-post) - (go sun-iris-door-closed) - ) - :post (behavior () - (cond - ((-> self move-to?) - (set! (-> self move-to?) #f) - (move-to-point! (-> self root) (-> self move-to-pos)) - (quaternion-copy! (-> self root quat) (-> self move-to-quat)) - (ja-post) - ) - (else - (transform-post) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go sun-iris-door-opening)) + (('move-to) + (set! (-> self move-to?) #t) + (set! (-> self move-to-pos quad) (-> (the-as vector (-> block param 0)) quad)) + (quaternion-copy! (-> self move-to-quat) (the-as quaternion (-> block param 1)))))) + :code + (behavior () + (sound-play "irisdoor2") + (ja-no-eval :num! (seek! 0.0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (ja-post) + (go sun-iris-door-closed)) + :post + (behavior () + (cond + ((-> self move-to?) + (set! (-> self move-to?) #f) + (move-to-point! (-> self root) (-> self move-to-pos)) + (quaternion-copy! (-> self root quat) (-> self move-to-quat)) + (ja-post)) + (else (transform-post))))) (defmethod init-from-entity! ((this sun-iris-door) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -305,14 +216,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *sun-iris-door-sg* '()) + (initialize-skeleton this *sun-iris-door-sg* ()) (set! (-> this close-dist) 49152.0) (set! (-> this open-dist) 40960.0) (set! (-> this timeout) (res-lump-float arg0 'timeout)) @@ -321,41 +230,28 @@ (when (name= (-> this name) "sun-iris-door-6") (set! (-> this close-dist) 16384.0) (set! (-> this open-dist) 8192.0) - (set! (-> this directional-proximity?) #t) - ) + (set! (-> this directional-proximity?) #t)) (set! (-> this locked-by-task?) (nonzero? (-> this entity extra perm task))) (let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0))) (set-vector! (-> this root scale) f0-11 f0-11 f0-11 1.0) (set! (-> this draw bounds w) (* 18432.0 f0-11)) - (let ((v1-25 (-> this root root-prim))) - (set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11)) - ) - ) + (let ((v1-25 (-> this root root-prim))) (set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11)))) (set! sv-16 (new 'static 'res-tag)) (let ((v1-28 (res-lump-data (-> this entity) 'trans-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-28 (+! (-> this root trans x) (-> v1-28 0)) (+! (-> this root trans y) (-> v1-28 1)) - (+! (-> this root trans z) (-> v1-28 2)) - ) - ) + (+! (-> this root trans z) (-> v1-28 2)))) (let ((f30-0 (quaternion-y-angle (-> this root quat)))) - (set-vector! (-> this outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0) - ) + (set-vector! (-> this outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0)) (ja-channel-set! 1) (let ((s5-2 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim (-> this draw art-group data 3)) - num-func-identity - ) - (set! (-> s5-2 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim (-> this draw art-group data 3)) num-func-identity) + (set! (-> s5-2 frame-num) 0.0)) (update-transforms! (-> this root)) (ja-post) (go sun-iris-door-closed) - (none) - ) + (none)) (defbehavior sun-iris-door-init-by-other sun-iris-door ((arg0 vector) (arg1 quaternion) (arg2 symbol)) (set! (-> self move-to?) #f) @@ -367,29 +263,20 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s3-0 s2-0) - ) + (set-root-prim! s3-0 s2-0)) (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) (backup-collide-with-as s3-0) - (set! (-> self root) s3-0) - ) + (set! (-> self root) s3-0)) (set! (-> self root trans quad) (-> arg0 quad)) (quaternion-copy! (-> self root quat) arg1) - (initialize-skeleton self *sun-iris-door-sg* '()) + (initialize-skeleton self *sun-iris-door-sg* ()) (set! (-> self close-dist) 49152.0) (set! (-> self open-dist) 40960.0) (set! (-> self timeout) 0.0) (set! (-> self proximity?) #f) (set! (-> self directional-proximity?) #f) (ja-channel-set! 1) - (if arg2 - (ja :group! sun-iris-door-idle-ja :num! max) - (ja :group! sun-iris-door-idle-ja :num! min) - ) + (if arg2 (ja :group! sun-iris-door-idle-ja :num! max) (ja :group! sun-iris-door-idle-ja :num! min)) (transform-post) - (if arg2 - (go sun-iris-door-open) - (go sun-iris-door-closed) - ) - (none) - ) + (if arg2 (go sun-iris-door-open) (go sun-iris-door-closed)) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-fish.gc b/goal_src/jak1/levels/sunken/sunken-fish.gc index 950f07d017..3e68fde2c8 100644 --- a/goal_src/jak1/levels/sunken/sunken-fish.gc +++ b/goal_src/jak1/levels/sunken/sunken-fish.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/geometry/path.gc") @@ -12,56 +11,56 @@ ;; DECOMP BEGINS (deftype sunkenfisha (process-drawable) - ((path-u float) - (path-speed float) - (path-speed-seek-speed float) - (targ-path-speed float) - (path-normal-speed-lo float) - (path-normal-speed-hi float) - (path-dir float) - (change-path-dir-time time-frame) - (local-path-offset vector :inline) - (targ-local-path-offset vector :inline) - (local-path-offset-dir vector :inline) - (max-local-path-offset vector :inline) - (facing-rot vector :inline) - (path-trans-offset vector :inline) - ) + ((path-u float) + (path-speed float) + (path-speed-seek-speed float) + (targ-path-speed float) + (path-normal-speed-lo float) + (path-normal-speed-hi float) + (path-dir float) + (change-path-dir-time time-frame) + (local-path-offset vector :inline) + (targ-local-path-offset vector :inline) + (local-path-offset-dir vector :inline) + (max-local-path-offset vector :inline) + (facing-rot vector :inline) + (path-trans-offset vector :inline)) (:methods - (sunkenfisha-method-20 (_type_) float) - (sunkenfisha-method-21 (_type_ vector float vector) vector) - (sunkenfisha-method-22 (_type_) none) - (sunkenfisha-method-23 (_type_) quaternion) - (sunkenfisha-method-24 (_type_) vector) - (sunkenfisha-method-25 (_type_) none) - (sunkenfisha-method-26 (_type_) float) - (sunkenfisha-method-27 (_type_) float) - ) + (sunkenfisha-method-20 (_type_) float) + (sunkenfisha-method-21 (_type_ vector float vector) vector) + (sunkenfisha-method-22 (_type_) none) + (sunkenfisha-method-23 (_type_) quaternion) + (sunkenfisha-method-24 (_type_) vector) + (sunkenfisha-method-25 (_type_) none) + (sunkenfisha-method-26 (_type_) float) + (sunkenfisha-method-27 (_type_) float)) (:states - sunkenfisha-idle - ) - ) + sunkenfisha-idle)) +(defskelgroup *sunkenfisha-red-yellow-sg* + sunkenfisha + sunkenfisha-red-yellow-lod0-jg + -1 + ((sunkenfisha-red-yellow-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) -(defskelgroup *sunkenfisha-red-yellow-sg* sunkenfisha sunkenfisha-red-yellow-lod0-jg -1 - ((sunkenfisha-red-yellow-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) +(defskelgroup *sunkenfisha-yellow-blue-sg* + sunkenfisha + sunkenfisha-yellow-blue-lod0-jg + -1 + ((sunkenfisha-yellow-blue-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) -(defskelgroup *sunkenfisha-yellow-blue-sg* sunkenfisha sunkenfisha-yellow-blue-lod0-jg -1 - ((sunkenfisha-yellow-blue-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) - -(defskelgroup *sunkenfisha-yellow-eye-sg* sunkenfisha sunkenfisha-yellow-eye-lod0-jg -1 - ((sunkenfisha-yellow-eye-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1.5 0 2.5) - ) +(defskelgroup *sunkenfisha-yellow-eye-sg* + sunkenfisha + sunkenfisha-yellow-eye-lod0-jg + -1 + ((sunkenfisha-yellow-eye-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1.5 0 2.5)) (defmethod sunkenfisha-method-22 ((this sunkenfisha)) 0 - (none) - ) + (none)) (defmethod sunkenfisha-method-21 ((this sunkenfisha) (arg0 vector) (arg1 float) (arg2 vector)) (eval-path-curve! (-> this path) arg0 arg1 'interp) @@ -69,145 +68,94 @@ (let ((s2-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s2-0 arg1) (let ((f0-2 (atan (-> s2-0 x) (-> s2-0 z))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (vector-rotate-around-y! s4-1 arg2 f0-2) - (vector+! arg0 arg0 s4-1) - ) - ) - ) + (vector+! arg0 arg0 s4-1)))) (defmethod sunkenfisha-method-24 ((this sunkenfisha)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'matrix)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)) (when (>= (* 4096.0 (seconds-per-frame)) (vector-length s4-0)) (until (< (* 16384.0 (seconds-per-frame)) (vector-length s4-0)) (set! (-> this targ-local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this targ-local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) - (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)) - ) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) + (vector-! s4-0 (-> this targ-local-path-offset) (-> this local-path-offset)))) (vector-normalize! s4-0 1.0) - (matrix-from-two-vectors-max-angle-partial! - s3-0 - (-> this local-path-offset-dir) - s4-0 - (* 16384.0 (seconds-per-frame)) - 0.1 - ) + (matrix-from-two-vectors-max-angle-partial! s3-0 + (-> this local-path-offset-dir) + s4-0 + (* 16384.0 (seconds-per-frame)) + 0.1) (vector-matrix*! (-> this local-path-offset-dir) (-> this local-path-offset-dir) s3-0) (vector-normalize! (-> this local-path-offset-dir) 1.0) (vector-float*! gp-0 (-> this local-path-offset-dir) (* 4096.0 (seconds-per-frame))) - (vector+! (-> this local-path-offset) (-> this local-path-offset) gp-0) - ) - ) + (vector+! (-> this local-path-offset) (-> this local-path-offset) gp-0))) (defmethod sunkenfisha-method-25 ((this sunkenfisha)) (let* ((f0-0 (-> this path-speed)) - (f1-1 (seek f0-0 (-> this targ-path-speed) (* (-> this path-speed-seek-speed) (seconds-per-frame)))) - ) + (f1-1 (seek f0-0 (-> this targ-path-speed) (* (-> this path-speed-seek-speed) (seconds-per-frame))))) (set! (-> this path-speed) f1-1) (let ((f30-0 (+ (-> this path-u) (* (-> this path-dir) f1-1 (seconds-per-frame))))) (cond - ((< f30-0 0.0) - (set! f30-0 (- f30-0)) - (sunkenfisha-method-20 this) - ) - ((< 1.0 f30-0) - (+! f30-0 (* 2.0 (- 1.0 f30-0))) - (sunkenfisha-method-20 this) - ) - ) - (set! (-> this path-u) f30-0) - ) - ) - (none) - ) + ((< f30-0 0.0) (set! f30-0 (- f30-0)) (sunkenfisha-method-20 this)) + ((< 1.0 f30-0) (+! f30-0 (* 2.0 (- 1.0 f30-0))) (sunkenfisha-method-20 this))) + (set! (-> this path-u) f30-0))) + (none)) (defmethod sunkenfisha-method-23 ((this sunkenfisha)) (let ((s5-0 (new 'stack-no-clear 'vector))) (set-vector! s5-0 (- (vector-x-angle (-> this root transv))) (vector-y-angle (-> this root transv)) 0.0 1.0) - (set! (-> this facing-rot x) - (deg-seek-smooth (-> this facing-rot x) (-> s5-0 x) (* 16384.0 (seconds-per-frame)) 0.1) - ) - (set! (-> this facing-rot y) - (deg-seek-smooth (-> this facing-rot y) (-> s5-0 y) (* 32768.0 (seconds-per-frame)) 0.1) - ) - ) - (quaternion-zxy! (-> this root quat) (-> this facing-rot)) - ) + (set! (-> this facing-rot x) (deg-seek-smooth (-> this facing-rot x) (-> s5-0 x) (* 16384.0 (seconds-per-frame)) 0.1)) + (set! (-> this facing-rot y) (deg-seek-smooth (-> this facing-rot y) (-> s5-0 y) (* 32768.0 (seconds-per-frame)) 0.1))) + (quaternion-zxy! (-> this root quat) (-> this facing-rot))) (defmethod sunkenfisha-method-20 ((this sunkenfisha)) (set! (-> this path-dir) (- (-> this path-dir))) (set! (-> this path-speed) 0.0) - (set! (-> this targ-path-speed) - (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi)) - ) + (set! (-> this targ-path-speed) (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi))) (set! (-> this change-path-dir-time) (+ (current-time) (rand-vu-int-range (seconds 5) (seconds 18)))) - (set! (-> this targ-local-path-offset y) - (* 0.5 (+ (-> this targ-local-path-offset y) (-> this local-path-offset y))) - ) + (set! (-> this targ-local-path-offset y) (* 0.5 (+ (-> this targ-local-path-offset y) (-> this local-path-offset y)))) (let* ((f0-8 (-> this local-path-offset x)) - (f1-3 (- (-> this targ-local-path-offset x) f0-8)) - ) + (f1-3 (- (-> this targ-local-path-offset x) f0-8))) (when (< (fabs f1-3) 12288.0) (if (>= f1-3 0.0) - (set! (-> this targ-local-path-offset x) (fmin (+ 12288.0 f0-8) (-> this max-local-path-offset x))) - (set! (-> this targ-local-path-offset x) (fmax (+ -12288.0 f0-8) (- (-> this max-local-path-offset x)))) - ) - ) - ) - ) + (set! (-> this targ-local-path-offset x) (fmin (+ 12288.0 f0-8) (-> this max-local-path-offset x))) + (set! (-> this targ-local-path-offset x) (fmax (+ -12288.0 f0-8) (- (-> this max-local-path-offset x)))))))) (defstate sunkenfisha-idle (sunkenfisha) - :trans (behavior () - (local-vars (at-0 int)) - (rlet ((vf0 :class vf) - (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (if (>= (current-time) (-> self change-path-dir-time)) - (sunkenfisha-method-20 self) - ) - (sunkenfisha-method-24 self) - (sunkenfisha-method-25 self) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (sunkenfisha-method-21 self gp-0 (-> self path-u) (-> self local-path-offset)) - (vector-! (-> self root transv) gp-0 (-> self root trans)) - (set! (-> self root trans quad) (-> gp-0 quad)) - ) - (let ((v1-16 (-> self root transv))) - (.lvf vf1 (&-> (-> self root transv) quad)) - (let ((f0-1 (-> *display* frames-per-second))) - (.mov at-0 f0-1) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> v1-16 quad) vf1) - ) - (sunkenfisha-method-23 self) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! sunkenfisha-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :trans + (behavior () + (local-vars (at-0 int)) + (rlet ((vf0 :class vf) + (vf1 :class vf) + (vf2 :class vf)) + (init-vf0-vector) + (if (>= (current-time) (-> self change-path-dir-time)) (sunkenfisha-method-20 self)) + (sunkenfisha-method-24 self) + (sunkenfisha-method-25 self) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (sunkenfisha-method-21 self gp-0 (-> self path-u) (-> self local-path-offset)) + (vector-! (-> self root transv) gp-0 (-> self root trans)) + (set! (-> self root trans quad) (-> gp-0 quad))) + (let ((v1-16 (-> self root transv))) + (.lvf vf1 (&-> (-> self root transv) quad)) + (let ((f0-1 (-> *display* frames-per-second))) (.mov at-0 f0-1)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> v1-16 quad) vf1)) + (sunkenfisha-method-23 self))) + :code + (behavior () + (loop (ja-no-eval :group! sunkenfisha-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod sunkenfisha-method-26 ((this sunkenfisha)) (set! (-> this root) (new 'process 'trsqv)) @@ -215,58 +163,35 @@ (set-vector! (-> this root scale) 6.0 6.0 6.0 1.0) (let ((v1-3 (rand-vu-int-count 3))) (cond - ((zero? v1-3) - (initialize-skeleton this *sunkenfisha-red-yellow-sg* '()) - ) - ((= v1-3 1) - (initialize-skeleton this *sunkenfisha-yellow-blue-sg* '()) - ) - ((= v1-3 2) - (initialize-skeleton this *sunkenfisha-yellow-eye-sg* '()) - ) - ) - ) + ((zero? v1-3) (initialize-skeleton this *sunkenfisha-red-yellow-sg* ())) + ((= v1-3 1) (initialize-skeleton this *sunkenfisha-yellow-blue-sg* ())) + ((= v1-3 2) (initialize-skeleton this *sunkenfisha-yellow-eye-sg* ())))) (ja-channel-set! 1) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 6)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 6)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0))) (defmethod sunkenfisha-method-27 ((this sunkenfisha)) (local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag)) (vector-reset! (-> this path-trans-offset)) (set! (-> this path-u) (rand-vu-float-range 0.0 1.0)) - (if (zero? (rand-vu-int-count 2)) - (set! (-> this path-dir) 1.0) - (set! (-> this path-dir) -1.0) - ) + (if (zero? (rand-vu-int-count 2)) (set! (-> this path-dir) 1.0) (set! (-> this path-dir) -1.0)) (set-vector! (-> this max-local-path-offset) 16384.0 28672.0 0.0 1.0) (set! sv-16 (new 'static 'res-tag)) (let ((v1-5 (res-lump-data (-> this entity) 'path-max-offset (pointer float) :tag-ptr (& sv-16)))) (when v1-5 (set! (-> this max-local-path-offset x) (-> v1-5 0)) - (set! (-> this max-local-path-offset y) (-> v1-5 1)) - ) - ) + (set! (-> this max-local-path-offset y) (-> v1-5 1)))) (set-vector! (-> this local-path-offset) 0.0 0.0 0.0 1.0) (set! (-> this local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) (set! (-> this targ-local-path-offset quad) (-> this local-path-offset quad)) (set! (-> this targ-local-path-offset x) - (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset x)) (-> this max-local-path-offset x))) (set! (-> this targ-local-path-offset y) - (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y)) - ) + (rand-vu-float-range (- (-> this max-local-path-offset y)) (-> this max-local-path-offset y))) (vector-! (-> this local-path-offset-dir) (-> this targ-local-path-offset) (-> this local-path-offset)) (vector-normalize! (-> this local-path-offset-dir) 1.0) (set! (-> this change-path-dir-time) (+ (current-time) (rand-vu-int-range (seconds 5) (seconds 18)))) @@ -277,50 +202,32 @@ (when v1-16 (+! (-> this path-trans-offset x) (-> v1-16 0)) (+! (-> this path-trans-offset y) (-> v1-16 1)) - (+! (-> this path-trans-offset z) (-> v1-16 2)) - ) - ) - (if (< (-> this path curve num-cverts) 2) - (go process-drawable-art-error "bad path") - ) + (+! (-> this path-trans-offset z) (-> v1-16 2)))) + (if (< (-> this path curve num-cverts) 2) (go process-drawable-art-error "bad path")) (let ((f28-0 8192.0) - (f30-0 26624.0) - ) + (f30-0 26624.0)) (set! sv-48 (new 'static 'res-tag)) (let ((v1-23 (res-lump-data (-> this entity) 'speed (pointer float) :tag-ptr (& sv-48)))) (when v1-23 (set! f28-0 (-> v1-23 0)) - (set! f30-0 (-> v1-23 1)) - ) - ) + (set! f30-0 (-> v1-23 1)))) (let ((f0-35 (path-distance (-> this path)))) (set! (-> this path-normal-speed-lo) (/ f28-0 f0-35)) - (set! (-> this path-normal-speed-hi) (/ f30-0 f0-35)) - ) - ) - (set! (-> this path-speed-seek-speed) - (* 2.0 (- (-> this path-normal-speed-hi) (-> this path-normal-speed-lo))) - ) - (set! (-> this path-speed) - (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi)) - ) + (set! (-> this path-normal-speed-hi) (/ f30-0 f0-35)))) + (set! (-> this path-speed-seek-speed) (* 2.0 (- (-> this path-normal-speed-hi) (-> this path-normal-speed-lo)))) + (set! (-> this path-speed) (rand-vu-float-range (-> this path-normal-speed-lo) (-> this path-normal-speed-hi))) (set! (-> this targ-path-speed) (-> this path-speed)) (let ((s4-0 (new 'stack-no-clear 'vector))) (path-control-method-14 (-> this path) s4-0 (-> this path-u)) - (set-vector! (-> this facing-rot) 0.0 (atan (-> s4-0 x) (-> s4-0 z)) 0.0 1.0) - ) - (if (< (-> this path-dir) 0.0) - (set! (-> this facing-rot y) (- (-> this facing-rot y))) - ) - ) + (set-vector! (-> this facing-rot) 0.0 (atan (-> s4-0 x) (-> s4-0 z)) 0.0 1.0)) + (if (< (-> this path-dir) 0.0) (set! (-> this facing-rot y) (- (-> this facing-rot y))))) (defbehavior sunkenfisha-init-by-other sunkenfisha ((arg0 entity-actor)) (set! (-> self entity) arg0) (sunkenfisha-method-26 self) (sunkenfisha-method-27 self) (go sunkenfisha-idle) - (none) - ) + (none)) (defmethod init-from-entity! ((this sunkenfisha) (arg0 entity-actor)) (sunkenfisha-method-26 this) @@ -328,9 +235,6 @@ (let ((s5-0 (+ (res-lump-value (-> this entity) 'count uint128 :default (the-as uint128 1)) -1))) (while (> (the-as int s5-0) 0) (process-spawn sunkenfisha (-> this entity) :to this) - (+! s5-0 -1) - ) - ) + (+! s5-0 -1))) (go sunkenfisha-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-obs.gc b/goal_src/jak1/levels/sunken/sunken-obs.gc index 1c7c85b4c6..51ce6e1f15 100644 --- a/goal_src/jak1/levels/sunken/sunken-obs.gc +++ b/goal_src/jak1/levels/sunken/sunken-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/plat.gc") (require "engine/camera/pov-camera.gc") (require "engine/game/main.gc") @@ -11,89 +10,80 @@ ;; dgos: L1, SUN, SUNKEN (declare-type seaweed basic) + (define-extern *seaweed* seaweed) ;; DECOMP BEGINS -(deftype water-vol-deadly (process-hidden) - () - ) - +(deftype water-vol-deadly (process-hidden) ()) (deftype side-to-side-plat (plat) - ((part-ry float) - ) - ) + ((part-ry float))) - -(defskelgroup *side-to-side-plat-sg* side-to-side-plat side-to-side-plat-lod0-jg side-to-side-plat-idle-ja - ((side-to-side-plat-lod0-mg (meters 20)) (side-to-side-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 14) - ) +(defskelgroup *side-to-side-plat-sg* + side-to-side-plat + side-to-side-plat-lod0-jg + side-to-side-plat-idle-ja + ((side-to-side-plat-lod0-mg (meters 20)) (side-to-side-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 14)) (defpartgroup group-side-to-side-plat :id 436 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1713 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1714 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1713 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1714 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 1713 - :init-specs ((:num 4.0) - (:x (meters -11) (meters 22)) - (:y (meters 1)) - (:rot-x 5) - (:r 5324.8) - (:g 4096.0) - (:b 3686.4) - (:vel-y (meters 0.0033333334)) - (:fade-b -16.383999) - (:timer (seconds 0.085)) - (:flags (aux-list)) - (:conerot-x (degrees 140) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:num 4.0) + (:x (meters -11) (meters 22)) + (:y (meters 1)) + (:rot-x 5) + (:r 5324.8) + (:g 4096.0) + (:b 3686.4) + (:vel-y (meters 0.0033333334)) + (:fade-b -16.383999) + (:timer (seconds 0.085)) + (:flags (aux-list)) + (:conerot-x (degrees 140) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)) + (:rotate-y (degrees 18)))) (defpart 1714 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:x (meters -11) (meters 22)) - (:y (meters 1.5)) - (:scale-x (meters 2) (meters 1)) - (:scale-y :copy scale-x) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:fade-g -0.42666668) - (:fade-a -0.32) - (:accel-y (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 130) (degrees 100.00001)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:x (meters -11) (meters 22)) + (:y (meters 1.5)) + (:scale-x (meters 2) (meters 1)) + (:scale-y :copy scale-x) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:fade-g -0.42666668) + (:fade-a -0.32) + (:accel-y (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 130) (degrees 100.00001)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)) + (:rotate-y (degrees 18)))) (defmethod get-unlit-skel ((this side-to-side-plat)) - *side-to-side-plat-sg* - ) + *side-to-side-plat-sg*) (defmethod baseplat-method-24 ((this side-to-side-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -102,257 +92,182 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod baseplat-method-26 ((this side-to-side-plat)) (set! (-> this part-ry) (+ 16384.0 (quaternion-y-angle (-> this root quat)))) - (none) - ) + (none)) (defmethod baseplat-method-25 ((this side-to-side-plat)) (let ((v0-0 (create-launch-control (-> *part-group-id-table* 436) this))) (set! (-> this part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) + (the-as sparticle-launch-group v0-0))) (defmethod baseplat-method-20 ((this side-to-side-plat)) (when (nonzero? (-> this part)) (set! (-> *part-id-table* 1713 init-specs 14 initial-valuef) (-> this part-ry)) (set! (-> *part-id-table* 1714 init-specs 19 initial-valuef) (-> this part-ry)) - (spawn (-> this part) (-> this root trans)) - ) - (none) - ) + (spawn (-> this part) (-> this root trans))) + (none)) (deftype sunkencam (pov-camera) - ((ppointer-override (pointer sunkencam) :overlay-at ppointer) - (seq uint64) - ) - ) + ((ppointer-override (pointer sunkencam) :overlay-at ppointer) + (seq uint64))) - -(defskelgroup *sunkencam-sg* sunkencam sunkencam-lod0-jg -1 - ((sunkencam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *sunkencam-sg* + sunkencam + sunkencam-lod0-jg + -1 + ((sunkencam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this sunkencam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (sunkencam) :virtual #t - :exit (behavior () - (set! (-> *screen-filter* draw?) #f) - ) - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! sunkencam-start-door-shut-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sunkencam-start-in-room-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-45 *screen-filter*)) - (set! (-> v1-45 draw?) #t) - (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) - ) - (set-blackout-frames (seconds 0.1)) - (ja-no-eval :group! sunkencam-middle-in-water-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-blackout-frames (seconds 0.5)) - (let ((gp-0 2)) - (ja-no-eval :group! sunkencam-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + :exit + (behavior () + (set! (-> *screen-filter* draw?) #f)) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! sunkencam-start-door-shut-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (+! gp-0 -1) - (if (zero? gp-0) - (set! (-> *screen-filter* draw?) #f) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (set-blackout-frames (seconds 0.1)) - ) - ((= v1-0 1) - (ja-no-eval :group! sunkencam-dive-start-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((v1-116 *screen-filter*)) - (set! (-> v1-116 draw?) #t) - (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50)) - ) - (set-blackout-frames (seconds 0.1)) - (ja-no-eval :group! sunkencam-dive-middle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set-blackout-frames (seconds 0.1)) - (let ((gp-1 2)) - (ja-no-eval :group! sunkencam-dive-end-ja :num! (seek!) :frame-num 0.0) + (ja :num! (seek!))) + (ja-no-eval :group! sunkencam-start-in-room-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (+! gp-1 -1) - (if (zero? gp-1) - (set! (-> *screen-filter* draw?) #f) - ) (suspend) - (ja :num! (seek!)) - ) - ) - (let ((gp-2 *camera*)) - (send-event gp-2 'teleport) - (send-event gp-2 'change-state cam-fixed 0) - (send-event gp-2 'change-state *camera-base-mode* 0) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (suspend) - ) - ) - ((= v1-0 2) - (ja-no-eval :group! sunkencam-helix-hit-switch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! sunkencam-helix-door-shuts-ja :num! (seek! max 0.67) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 0.67)) - ) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-helix-show-rising-water-ja) - (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) - 0.67 - ) - ) - ((= v1-0 3) - (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup1-rise1-ja) - (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) - 1.0 - ) - ) - ((= v1-0 4) - (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup1-rise2-ja) - (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) - 1.3 - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.2)) - (suspend) - ) - ) - ((= v1-0 5) - (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup2-rise1-ja) - (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) - 1.0 - ) - ) - ((= v1-0 6) - (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) - (pov-camera-play-and-reposition - (the-as art-joint-anim sunkencam-square-platform-setup2-rise2-ja) - (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) - 1.0 - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) + (ja :num! (seek!))) + (let ((v1-45 *screen-filter*)) + (set! (-> v1-45 draw?) #t) + (set! (-> v1-45 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))) + (set-blackout-frames (seconds 0.1)) + (ja-no-eval :group! sunkencam-middle-in-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-blackout-frames (seconds 0.5)) + (let ((gp-0 2)) + (ja-no-eval :group! sunkencam-end-out-of-water-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (+! gp-0 -1) + (if (zero? gp-0) (set! (-> *screen-filter* draw?) #f)) + (suspend) + (ja :num! (seek!)))) + (set-blackout-frames (seconds 0.1))) + ((= v1-0 1) + (ja-no-eval :group! sunkencam-dive-start-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((v1-116 *screen-filter*)) + (set! (-> v1-116 draw?) #t) + (set! (-> v1-116 color) (new 'static 'rgba :g #x20 :b #x40 :a #x50))) + (set-blackout-frames (seconds 0.1)) + (ja-no-eval :group! sunkencam-dive-middle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set-blackout-frames (seconds 0.1)) + (let ((gp-1 2)) + (ja-no-eval :group! sunkencam-dive-end-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (+! gp-1 -1) + (if (zero? gp-1) (set! (-> *screen-filter* draw?) #f)) + (suspend) + (ja :num! (seek!)))) + (let ((gp-2 *camera*)) + (send-event gp-2 'teleport) + (send-event gp-2 'change-state cam-fixed 0) + (send-event gp-2 'change-state *camera-base-mode* 0)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (suspend))) + ((= v1-0 2) + (ja-no-eval :group! sunkencam-helix-hit-switch-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! sunkencam-helix-door-shuts-ja :num! (seek! max 0.67) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 0.67))) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-helix-show-rising-water-ja) + (new 'static 'vector :x 2449408.0 :y -1822720.0 :z -7299072.0) + 0.67)) + ((= v1-0 3) + (ambient-hint-spawn "gamcam34" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup1-rise1-ja) + (new 'static 'vector :x 2707456.0 :y -630784.0 :z -6635520.0) + 1.0)) + ((= v1-0 4) + (ambient-hint-spawn "gamcam35" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup1-rise2-ja) + (new 'static 'vector :x 2834432.0 :y -634880.0 :z -6811648.0) + 1.3) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.2)) + (suspend))) + ((= v1-0 5) + (ambient-hint-spawn "gamcam37" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup2-rise1-ja) + (new 'static 'vector :x 2695168.0 :y -544768.0 :z -7077888.0) + 1.0)) + ((= v1-0 6) + (ambient-hint-spawn "gamcam36" (the-as vector #f) *entity-pool* 'camera) + (pov-camera-play-and-reposition (the-as art-joint-anim sunkencam-square-platform-setup2-rise2-ja) + (new 'static 'vector :x 2482176.0 :y -516096.0 :z -6922240.0) + 1.0)) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) (deftype seaweed (process-drawable) - ((anim-speed float) - ) + ((anim-speed float)) (:states - seaweed-idle - ) - ) + seaweed-idle)) - -(defskelgroup *seaweed-sg* seaweed seaweed-lod0-jg -1 - ((seaweed-lod0-mg (meters 999999))) - :bounds (static-spherem 0 6 0 7) - ) +(defskelgroup *seaweed-sg* + seaweed + seaweed-lod0-jg + -1 + ((seaweed-lod0-mg (meters 999999))) + :bounds (static-spherem 0 6 0 7)) (defstate seaweed-idle (seaweed) - :code (behavior () - (ja-no-eval :num! (seek! max (-> self anim-speed))) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - (loop - (ja-no-eval :group! seaweed-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) - (until (ja-done? 0) + :code + (behavior () + (ja-no-eval :num! (seek! max (-> self anim-speed))) + (while (not (ja-done? 0)) (suspend) - (ja :num! (seek! max (-> self anim-speed))) - ) - ) - ) - :post ja-post - ) + (ja-eval)) + (loop (ja-no-eval :group! seaweed-idle-ja :num! (seek! max (-> self anim-speed)) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max (-> self anim-speed)))))) + :post ja-post) (defmethod init-from-entity! ((this seaweed) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *seaweed-sg* '()) + (initialize-skeleton this *seaweed-sg* ()) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) (set! (-> s5-1 frame-num) - (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> this skel active-channels) 0) - (-> this skel root-channel 0 frame-group) - ) - data - 0 - length - ) - -1 - ) - ) - ) - ) - ) + (rand-vu-float-range 0.0 + (the float + (+ (-> (if (> (-> this skel active-channels) 0) (-> this skel root-channel 0 frame-group)) data 0 length) -1))))) (set! (-> this anim-speed) (rand-vu-float-range 0.2 0.4)) (set! *seaweed* this) (go seaweed-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-part.gc b/goal_src/jak1/levels/sunken/sunken-part.gc index 18fd6f05ab..ec7d7c84a3 100644 --- a/goal_src/jak1/levels/sunken/sunken-part.gc +++ b/goal_src/jak1/levels/sunken/sunken-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") @@ -13,2493 +12,2523 @@ ;; DECOMP BEGINS -(deftype sunken-part (part-spawner) - () - ) - +(deftype sunken-part (part-spawner) ()) (defpartgroup group-sunken-heatpipe-183 :id 332 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1420 :fade-after (meters 80) :falloff-to (meters 80) :binding 1419) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1419 :flags (bit1 start-dead launch-asap)) - (sp-item 1421 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1420 :fade-after (meters 80) :falloff-to (meters 80) :binding 1419) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1419 :flags (bit1 start-dead launch-asap)) + (sp-item 1421 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1420 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.5)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.5)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.25)))) (defpart 1419 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4)) - (:y (meters 4.2222223)) - (:z (meters 1.15)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4)) + (:y (meters 4.2222223)) + (:z (meters 1.15)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1422 - :init-specs ((:fade-a -0.64)) - ) + :init-specs ((:fade-a -0.64))) (defpart 1421 - :init-specs ((:num 0.25) - (:x (meters -2.5)) - (:y (meters 0.2)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 5)) - ) - ) + :init-specs + ((:num 0.25) + (:x (meters -2.5)) + (:y (meters 0.2)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 5)))) (defpartgroup group-sunken-tunnel-bubbles-27 :id 333 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1425 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1425 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1426 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1426 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1427 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1428 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1425 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1425 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1426 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1426 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1427 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1428 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1427 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 0)))) (defpart 1428 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters 10) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters 10) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 0)))) (defpart 1425 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1426 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -37) (meters 64)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -37) (meters 64)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1429 - :init-specs ((:fade-a 0.0) (:next-time (seconds 6) (seconds 5.997)) (:next-launcher 1430)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 6) (seconds 5.997)) (:next-launcher 1430))) (defpart 1430 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 1423 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.1)) - (:scale-x (meters 1.5)) - (:scale-y (meters 0.9)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0) - (:vel-x (meters -0.21333334) 1 (meters 0.42666668)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:scalevel-x (meters -0.0050000004)) - (:scalevel-y (meters 0.0016666667)) - (:fade-a 1.6) - (:timer (seconds 12) (seconds 3.997)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.1)) - (:next-launcher 1431) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.1)) + (:scale-x (meters 1.5)) + (:scale-y (meters 0.9)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0) + (:vel-x (meters -0.21333334) 1 (meters 0.42666668)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:scalevel-x (meters -0.0050000004)) + (:scalevel-y (meters 0.0016666667)) + (:fade-a 1.6) + (:timer (seconds 12) (seconds 3.997)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.1)) + (:next-launcher 1431))) (defpart 1431 - :init-specs ((:scale-x (meters 1.2)) - (:scale-y (meters 1)) - (:scalevel-x (meters 0.010000001)) - (:scalevel-y (meters -0.0033333334)) - (:fade-a 0.0) - (:next-time (seconds 0.1)) - (:next-launcher 1432) - ) - ) + :init-specs + ((:scale-x (meters 1.2)) + (:scale-y (meters 1)) + (:scalevel-x (meters 0.010000001)) + (:scalevel-y (meters -0.0033333334)) + (:fade-a 0.0) + (:next-time (seconds 0.1)) + (:next-launcher 1432))) (defpart 1432 - :init-specs ((:scale-x (meters 1.5)) - (:scale-y (meters 0.9)) - (:scalevel-x (meters -0.010000001)) - (:scalevel-y (meters 0.0033333334)) - (:next-time (seconds 0.1)) - (:next-launcher 1431) - ) - ) + :init-specs + ((:scale-x (meters 1.5)) + (:scale-y (meters 0.9)) + (:scalevel-x (meters -0.010000001)) + (:scalevel-y (meters 0.0033333334)) + (:next-time (seconds 0.1)) + (:next-launcher 1431))) (defpart 1433 - :init-specs ((:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 0)) - (:rot-x 9) - (:r 2048.0) - (:g 1638.4) - (:b 1228.8) - (:omega 0.0) - (:vel-x (meters 0)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 16)) - (:flags (bit2 bit3 bit7 aux-list)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 0)) + (:rot-x 9) + (:r 2048.0) + (:g 1638.4) + (:b 1228.8) + (:omega 0.0) + (:vel-x (meters 0)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 16)) + (:flags (bit2 bit3 bit7 aux-list)))) (defpart 1424 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:fade-a 0.7111111) - (:timer (seconds 8)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.017)) - (:next-launcher 1434) - (:conerot-x (degrees 110) (degrees 70)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:fade-a 0.7111111) + (:timer (seconds 8)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.017)) + (:next-launcher 1434) + (:conerot-x (degrees 110) (degrees 70)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4)))) (defpart 1434 - :init-specs ((:vel-y (meters 0.006666667) (meters 0.0016666667)) - (:accel-y (meters -0.00006666667)) - (:next-time (seconds 0.25)) - (:next-launcher 1435) - ) - ) + :init-specs + ((:vel-y (meters 0.006666667) (meters 0.0016666667)) + (:accel-y (meters -0.00006666667)) + (:next-time (seconds 0.25)) + (:next-launcher 1435))) (defpart 1435 - :init-specs ((:fade-a -0.14222223)) - ) + :init-specs ((:fade-a -0.14222223))) (defpartgroup group-sunken-tunnel-bubbles-32 :id 334 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1436 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1436 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1437 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1437 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1438 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1439 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1436 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1436 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1437 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1437 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1438 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1439 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1438 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -23.000002)))) (defpart 1439 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -23.000002)))) (defpart 1436 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -23.000002)))) (defpart 1437 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -24) (meters 48)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -24) (meters 48)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -23.000002)))) (defpartgroup group-sunken-tunnel-bubbles-33 :id 335 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1440 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1440 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1441 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1441 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1442 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1443 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1440 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1440 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1441 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1441 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1442 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1443 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1442 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.02) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.02) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1443 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.02) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.02) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1440 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.5) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.5) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpart 1441 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.5) - (:x (meters -13) (meters 25)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.5) + (:x (meters -13) (meters 25)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpartgroup group-sunken-tunnel-bubbles-199 :id 336 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1444 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1444 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1445 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1445 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1446 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1447 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1444 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1444 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1445 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1445 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1446 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1447 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1446 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1447 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 26.000002)))) (defpart 1444 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpart 1445 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 36)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 26.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 36)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 26.000002)))) (defpartgroup group-sunken-tunnel-bubbles-281 :id 337 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1448 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1448 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1449 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1449 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1450 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1451 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1448 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1448 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1449 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1449 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1450 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1451 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1450 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90)))) (defpart 1451 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90)))) (defpart 1448 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90)))) (defpart 1449 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90)))) (defpartgroup group-sunken-tunnel-bubbles-202 :id 338 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1452 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1452 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1453 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1453 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1454 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1455 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1452 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1452 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1453 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1453 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1454 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1455 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1454 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -5)))) (defpart 1455 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -5)))) (defpart 1452 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters -15) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters -15) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -5)))) (defpart 1453 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -22) (meters 44)) - (:y (meters -2)) - (:z (meters 10) (meters 5)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -22) (meters 44)) + (:y (meters -2)) + (:z (meters 10) (meters 5)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -5)))) (defpartgroup group-sunken-window-bubbles-35 :id 339 :bounds (static-bspherem 0 8 0 32) - :parts ((sp-item 1456 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1456 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1457 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1456 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1456 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1457 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1457 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -65) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -65) (degrees 30)))) (defpart 1456 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -65) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -65) (degrees 30)))) (defpartgroup group-sunken-helix-bubbles-398 :id 340 :bounds (static-bspherem 0 4 0 40) - :parts ((sp-item 1458 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1458 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1458 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.75) - (:x (meters -5) (meters 10)) - (:y (meters -10) (meters 15)) - (:z (meters -29) (meters 6)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1459) - (:rotate-y (degrees -67.5) 6 (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.75) + (:x (meters -5) (meters 10)) + (:y (meters -10) (meters 15)) + (:z (meters -29) (meters 6)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1459) + (:rotate-y (degrees -67.5) 6 (degrees 45)))) (defpart 1459 - :init-specs ((:fade-a 0.0) (:next-time (seconds 3) (seconds 2.997)) (:next-launcher 1460)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 3) (seconds 2.997)) (:next-launcher 1460))) (defpart 1460 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-sunken-helix-bubbles-397 :id 341 :bounds (static-bspherem 0 4 0 40) - :parts ((sp-item 1461 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1461 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1461 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.75) - (:x (meters -5) (meters 10)) - (:y (meters -20) (meters 30)) - (:z (meters -29) (meters 6)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 9)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1459) - (:rotate-y (degrees -67.5) 7 (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.75) + (:x (meters -5) (meters 10)) + (:y (meters -20) (meters 30)) + (:z (meters -29) (meters 6)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 9)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1459) + (:rotate-y (degrees -67.5) 7 (degrees 45)))) (defpartgroup group-sunken-heatpipe-355 :id 342 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1463 :fade-after (meters 80) :falloff-to (meters 80) :binding 1462) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1462 :flags (bit1 start-dead launch-asap)) - (sp-item 1464 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1463 :fade-after (meters 80) :falloff-to (meters 80) :binding 1462) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1462 :flags (bit1 start-dead launch-asap)) + (sp-item 1464 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1463 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 145)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 145)))) (defpart 1462 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1464 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 145)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 145)))) (defpartgroup group-sunken-heatpipe-361 :id 343 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1466 :fade-after (meters 80) :falloff-to (meters 80) :binding 1465) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1465 :flags (bit1 start-dead launch-asap)) - (sp-item 1467 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1466 :fade-after (meters 80) :falloff-to (meters 80) :binding 1465) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1465 :flags (bit1 start-dead launch-asap)) + (sp-item 1467 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1466 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 220)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 220)))) (defpart 1465 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.5555553)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.5555553)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1467 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 220)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 220)))) (defpartgroup group-sunken-heatpipe-360 :id 344 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1469 :fade-after (meters 80) :falloff-to (meters 80) :binding 1468) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1468 :flags (bit1 start-dead launch-asap)) - (sp-item 1470 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1469 :fade-after (meters 80) :falloff-to (meters 80) :binding 1468) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1468 :flags (bit1 start-dead launch-asap)) + (sp-item 1470 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1469 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 400.00003)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 400.00003)))) (defpart 1468 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.5555553)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.5555553)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1470 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 400.00003)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 400.00003)))) (defpartgroup group-sunken-heatpipe-377 :id 345 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1472 :fade-after (meters 80) :falloff-to (meters 80) :binding 1471) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1471 :flags (bit1 start-dead launch-asap)) - (sp-item 1473 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1472 :fade-after (meters 80) :falloff-to (meters 80) :binding 1471) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1471 :flags (bit1 start-dead launch-asap)) + (sp-item 1473 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1472 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 375.00003)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 375.00003)))) (defpart 1471 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.6666665)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.6666665)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1473 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 375.00003)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 375.00003)))) (defpartgroup group-sunken-heatpipe-376 :id 346 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1475 :fade-after (meters 80) :falloff-to (meters 80) :binding 1474) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1474 :flags (bit1 start-dead launch-asap)) - (sp-item 1476 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1475 :fade-after (meters 80) :falloff-to (meters 80) :binding 1474) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1474 :flags (bit1 start-dead launch-asap)) + (sp-item 1476 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1475 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 195)))) (defpart 1474 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.6666665)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.6666665)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1476 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 195)))) (defpartgroup group-sunken-heatpipe-375 :id 347 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1478 :fade-after (meters 80) :falloff-to (meters 80) :binding 1477) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1477 :flags (bit1 start-dead launch-asap)) - (sp-item 1479 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1478 :fade-after (meters 80) :falloff-to (meters 80) :binding 1477) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1477 :flags (bit1 start-dead launch-asap)) + (sp-item 1479 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1478 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 392)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 392)))) (defpart 1477 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1479 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 392)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 392)))) (defpartgroup group-sunken-heatpipe-374 :id 348 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1481 :fade-after (meters 80) :falloff-to (meters 80) :binding 1480) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1480 :flags (bit1 start-dead launch-asap)) - (sp-item 1482 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1481 :fade-after (meters 80) :falloff-to (meters 80) :binding 1480) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1480 :flags (bit1 start-dead launch-asap)) + (sp-item 1482 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1481 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 212)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 212)))) (defpart 1480 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1482 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 212)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 212)))) (defpartgroup group-sunken-heatpipe-363 :id 349 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1484 :fade-after (meters 80) :falloff-to (meters 80) :binding 1483) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1483 :flags (bit1 start-dead launch-asap)) - (sp-item 1485 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1484 :fade-after (meters 80) :falloff-to (meters 80) :binding 1483) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1483 :flags (bit1 start-dead launch-asap)) + (sp-item 1485 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1484 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees -63)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees -63)))) (defpart 1483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.4222223)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.4222223)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1485 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 95)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees -63)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 95)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees -63)))) (defpartgroup group-sunken-heatpipe-362 :id 350 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1487 :fade-after (meters 80) :falloff-to (meters 80) :binding 1486) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1486 :flags (bit1 start-dead launch-asap)) - (sp-item 1488 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1487 :fade-after (meters 80) :falloff-to (meters 80) :binding 1486) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1486 :flags (bit1 start-dead launch-asap)) + (sp-item 1488 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1487 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 124.99999)))) (defpart 1486 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.4222223)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.4222223)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1488 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 124.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 124.99999)))) (defpartgroup group-sunken-heatpipe-364 :id 351 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1490 :fade-after (meters 80) :falloff-to (meters 80) :binding 1489) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1489 :flags (bit1 start-dead launch-asap)) - (sp-item 1491 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1490 :fade-after (meters 80) :falloff-to (meters 80) :binding 1489) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1489 :flags (bit1 start-dead launch-asap)) + (sp-item 1491 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1490 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 62)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 62)))) (defpart 1489 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.9777778)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.9777778)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1491 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 62)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 62)))) (defpartgroup group-sunken-heatpipe-365 :id 352 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1493 :fade-after (meters 80) :falloff-to (meters 80) :binding 1492) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1492 :flags (bit1 start-dead launch-asap)) - (sp-item 1494 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1493 :fade-after (meters 80) :falloff-to (meters 80) :binding 1492) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1492 :flags (bit1 start-dead launch-asap)) + (sp-item 1494 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1493 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees -124)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees -124)))) (defpart 1492 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1494 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees -124)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees -124)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part2.gc b/goal_src/jak1/levels/sunken/sunken-part2.gc index 8df783aaee..65d421b123 100644 --- a/goal_src/jak1/levels/sunken/sunken-part2.gc +++ b/goal_src/jak1/levels/sunken/sunken-part2.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -15,2329 +14,2449 @@ (defpartgroup group-sunken-window-bubbles-34 :id 353 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1495 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1495 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1496 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1495 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1495 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1496 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1496 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 7.0000005) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 7.0000005) (degrees 50.000004)))) (defpart 1495 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 7.0000005) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 7.0000005) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-36 :id 354 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1497 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1497 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1498 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1497 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1497 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1498 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1498 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1497 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-30 :id 355 :bounds (static-bspherem 0 4 0 30) - :parts ((sp-item 1499 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1499 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1500 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1499 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1499 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1500 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1500 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -20) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -20) (degrees 50.000004)))) (defpart 1499 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -20) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -20) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-31 :id 356 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1501 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1501 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1502 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1501 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1501 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1502 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1502 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -120) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -120) (degrees 50.000004)))) (defpart 1501 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -120) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -120) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-29 :id 357 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1503 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1503 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1504 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1503 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1503 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1504 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1504 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1503 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-159 :id 358 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1505 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1505 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1506 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1505 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1505 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1506 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1506 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 60) (degrees 50.000004)))) (defpart 1505 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 60) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-161 :id 359 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1507 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1507 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1508 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1507 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1507 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1508 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1508 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 70) (degrees 50.000004)))) (defpart 1507 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 70) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-204 :id 360 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1509 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1509 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1510 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1509 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1509 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1510 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1510 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 8) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 30) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 8) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 30) (degrees 50.000004)))) (defpart 1509 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 8) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 8) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-205 :id 361 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1511 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1511 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1512 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1511 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1511 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1512 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1512 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpart 1511 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-203 :id 362 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1513 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1513 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1514 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1513 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1513 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1514 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1514 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 80) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 80) (degrees 50.000004)))) (defpart 1513 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 80) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 80) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-42 :id 363 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1515 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1515 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1516 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1515 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1515 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1516 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1516 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -25) (meters 50)) - (:y (meters -2)) - (:z (meters 4) (meters 4)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -25) (meters 50)) + (:y (meters -2)) + (:z (meters 4) (meters 4)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 195)))) (defpart 1515 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -25) (meters 50)) - (:y (meters -2)) - (:z (meters 4) (meters 4)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 195)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -25) (meters 50)) + (:y (meters -2)) + (:z (meters 4) (meters 4)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 195)))) (defpartgroup group-sunken-window-bubbles-41 :id 364 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1517 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1517 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1518 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1517 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1517 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1518 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1518 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -70) (degrees 50.000004)))) (defpart 1517 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -70) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -70) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-206 :id 365 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1519 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1519 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1520 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1519 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1519 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1520 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1520 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 170) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 170) (degrees 30)))) (defpart 1519 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 0) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 170) (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 0) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 170) (degrees 30)))) (defpartgroup group-sunken-window-bubbles-201 :id 366 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1521 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1521 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1522 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1521 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1521 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1522 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1522 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -40) (degrees 50.000004)))) (defpart 1521 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -40) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-3 :id 367 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1523 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1523 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1524 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1523 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1523 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1524 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1524 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpart 1523 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters 2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 160) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters 2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 160) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-2 :id 368 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1525 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1525 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1526 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1525 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1525 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1526 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1526 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.1) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 4) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 249.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.1) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 4) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 249.99998) (degrees 50.000004)))) (defpart 1525 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters 4) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.015)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 249.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters 4) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.015)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 249.99998) (degrees 50.000004)))) (defpartgroup group-sunken-heatpipe-382 :id 369 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1528 :fade-after (meters 80) :falloff-to (meters 80) :binding 1527) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1527 :flags (bit1 start-dead launch-asap)) - (sp-item 1529 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1528 :fade-after (meters 80) :falloff-to (meters 80) :binding 1527) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1527 :flags (bit1 start-dead launch-asap)) + (sp-item 1529 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1528 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 50.000004)))) (defpart 1527 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 6.2222223)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 6.2222223)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1529 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 50.000004)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 50.000004)))) (defpartgroup group-sunken-heatpipe-381 :id 370 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1531 :fade-after (meters 80) :falloff-to (meters 80) :binding 1530) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1530 :flags (bit1 start-dead launch-asap)) - (sp-item 1532 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1531 :fade-after (meters 80) :falloff-to (meters 80) :binding 1530) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1530 :flags (bit1 start-dead launch-asap)) + (sp-item 1532 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1531 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 80)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 80)))) (defpart 1530 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 7.5555553)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 7.5555553)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1532 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 80)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 80)))) (defpartgroup group-sunken-heatpipe-380 :id 371 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1534 :fade-after (meters 80) :falloff-to (meters 80) :binding 1533) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1533 :flags (bit1 start-dead launch-asap)) - (sp-item 1535 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1534 :fade-after (meters 80) :falloff-to (meters 80) :binding 1533) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1533 :flags (bit1 start-dead launch-asap)) + (sp-item 1535 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1534 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 47.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 47.5)))) (defpart 1533 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 6.2222223)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 6.2222223)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1535 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 47.5)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 47.5)))) (defpartgroup group-sunken-heatpipe-379 :id 372 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1537 :fade-after (meters 80) :falloff-to (meters 80) :binding 1536) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1536 :flags (bit1 start-dead launch-asap)) - (sp-item 1538 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1537 :fade-after (meters 80) :falloff-to (meters 80) :binding 1536) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1536 :flags (bit1 start-dead launch-asap)) + (sp-item 1538 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1537 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 70)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 70)))) (defpart 1536 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 7.111111)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 7.111111)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1538 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 70)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 70)))) (defpartgroup group-sunken-heatpipe-378 :id 373 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1540 :fade-after (meters 80) :falloff-to (meters 80) :binding 1539) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1539 :flags (bit1 start-dead launch-asap)) - (sp-item 1541 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1540 :fade-after (meters 80) :falloff-to (meters 80) :binding 1539) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1539 :flags (bit1 start-dead launch-asap)) + (sp-item 1541 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1540 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 23.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 23.000002)))) (defpart 1539 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.111111)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.111111)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1541 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 23.000002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 23.000002)))) (defpartgroup group-sunken-window-bubbles-402 :id 374 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1542 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1542 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1543 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1542 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1542 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1543 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1543 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 190) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 190) (degrees 40)))) (defpart 1542 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 190) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 190) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-401 :id 375 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1544 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1544 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1545 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1544 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1544 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1545 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1545 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 105) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 105) (degrees 40)))) (defpart 1544 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 105) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 105) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-400 :id 376 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1546 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1546 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1547 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1546 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1546 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1547 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1547 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 20) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 20) (degrees 40)))) (defpart 1546 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 20) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 20) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-399 :id 377 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1548 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1548 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1549 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1548 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1548 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1549 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1549 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 225) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 225) (degrees 40)))) (defpart 1548 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 225) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 225) (degrees 40)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part3.gc b/goal_src/jak1/levels/sunken/sunken-part3.gc index 4abb8750d1..3be07c4fa8 100644 --- a/goal_src/jak1/levels/sunken/sunken-part3.gc +++ b/goal_src/jak1/levels/sunken/sunken-part3.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -15,1605 +14,1668 @@ (defpartgroup group-sunken-heatpipe-383 :id 378 :bounds (static-bspherem 0 1 0 3) - :parts ((sp-item 1551 :fade-after (meters 80) :falloff-to (meters 80) :binding 1550) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1550 :flags (bit1 start-dead launch-asap)) - (sp-item 1552 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1551 :fade-after (meters 80) :falloff-to (meters 80) :binding 1550) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1550 :flags (bit1 start-dead launch-asap)) + (sp-item 1552 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1551 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees -90)))) (defpart 1550 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1552 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees -90)))) (defpartgroup group-sunken-heatpipe-198 :id 379 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1554 :fade-after (meters 80) :falloff-to (meters 80) :binding 1553) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1553 :flags (bit1 start-dead launch-asap)) - (sp-item 1555 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1554 :fade-after (meters 80) :falloff-to (meters 80) :binding 1553) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1553 :flags (bit1 start-dead launch-asap)) + (sp-item 1555 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1554 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 120)))) (defpart 1553 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.3333334)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.3333334)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1555 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 120)))) (defpartgroup group-sunken-heatpipe-189 :id 380 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1557 :fade-after (meters 80) :falloff-to (meters 80) :binding 1556) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1556 :flags (bit1 start-dead launch-asap)) - (sp-item 1558 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1557 :fade-after (meters 80) :falloff-to (meters 80) :binding 1556) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1556 :flags (bit1 start-dead launch-asap)) + (sp-item 1558 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1557 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.7) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.7) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 116)))) (defpart 1556 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:x (meters 1.1555556)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:x (meters 1.1555556)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1558 - :init-specs ((:num 0.05) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:num 0.05) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 116)))) (defpartgroup group-sunken-heatpipe-193 :id 381 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1560 :fade-after (meters 80) :falloff-to (meters 80) :binding 1559) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1559 :flags (bit1 start-dead launch-asap)) - (sp-item 1561 :fade-after (meters 64) :falloff-to (meters 64)) - (sp-item 1562 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1560 :fade-after (meters 80) :falloff-to (meters 80) :binding 1559) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1559 :flags (bit1 start-dead launch-asap)) + (sp-item 1561 :fade-after (meters 64) :falloff-to (meters 64)) + (sp-item 1562 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1560 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.4) - (:x (meters 0)) - (:y (meters -1.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 116)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.4) + (:x (meters 0)) + (:y (meters -1.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 116)))) (defpart 1559 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.1555556)) - (:y (meters 0)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.1555556)) + (:y (meters 0)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1561 - :init-specs ((:num 1.0) - (:y (meters -1.4) (meters 2.8)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:vel-y (meters 0.0046666665)) - (:fade-g 2.2755556) - (:accel-y (meters 0.0002)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90) (degrees 360)) - ) - ) + :init-specs + ((:num 1.0) + (:y (meters -1.4) (meters 2.8)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:vel-y (meters 0.0046666665)) + (:fade-g 2.2755556) + (:accel-y (meters 0.0002)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90) (degrees 360)))) (defpart 1562 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters -1.4) (meters 2.8)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 8.0 40.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:fade-a -0.16) - (:accel-y (meters 0.00066666666)) - (:friction 0.8) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters -1.4) (meters 2.8)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 8.0 40.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:fade-a -0.16) + (:accel-y (meters 0.00066666666)) + (:friction 0.8) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpartgroup group-sunken-heatpipe-207 :id 382 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1564 :fade-after (meters 80) :falloff-to (meters 80) :binding 1563) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1563 :flags (bit1 start-dead launch-asap)) - (sp-item 1565 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1564 :fade-after (meters 80) :falloff-to (meters 80) :binding 1563) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1563 :flags (bit1 start-dead launch-asap)) + (sp-item 1565 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1564 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.4)) - (:y (meters 0)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 0.7)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.4)) + (:y (meters 0)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 0.7)) + (:rotate-y (degrees 25.000002)))) (defpart 1563 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.1555557)) - (:y (meters 4)) - (:z (meters 0.6)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.1555557)) + (:y (meters 4)) + (:z (meters 0.6)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1565 - :init-specs ((:num 0.2) - (:x (meters -1.4)) - (:y (meters 0)) - (:rot-x 6) - (:r 3276.8) - (:g 2457.6) - (:b 2867.2) - (:fade-g 1.3653333) - (:accel-y (meters 0.0002)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 2.8)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.4)) + (:y (meters 0)) + (:rot-x 6) + (:r 3276.8) + (:g 2457.6) + (:b 2867.2) + (:fade-g 1.3653333) + (:accel-y (meters 0.0002)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 2.8)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-sunken-window-bubbles-388 :id 383 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1566 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1566 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1567 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1566 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1566 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1567 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1567 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpart 1566 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-387 :id 384 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1568 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1568 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1569 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1568 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1568 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1569 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1569 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 40) (degrees 50.000004)))) (defpart 1568 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 40) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 40) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-386 :id 385 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1570 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1570 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1571 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1570 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1570 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1571 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1571 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpart 1570 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 130) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 130) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-384 :id 386 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1572 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1572 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1573 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1572 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1572 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1573 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1573 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -204.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -204.99998) (degrees 50.000004)))) (defpart 1572 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 24)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -204.99998) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 24)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -204.99998) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-385 :id 387 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1574 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1574 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1575 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1574 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1574 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1575 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1575 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -185) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -185) (degrees 50.000004)))) (defpart 1574 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -185) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -185) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-394 :id 388 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1576 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1576 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1577 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1576 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1576 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1577 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1577 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -60) (degrees 50.000004)))) (defpart 1576 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -60) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -60) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-390 :id 389 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1578 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1578 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1579 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1578 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1578 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1579 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1579 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -45) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -45) (degrees 50.000004)))) (defpart 1578 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -45) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -45) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-393 :id 390 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1582 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1582 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1583 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1582 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1582 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1583 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1583 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 90) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 90) (degrees 50.000004)))) (defpart 1582 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 90) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 90) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-392 :id 391 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1584 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1584 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1585 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1584 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1584 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1585 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1585 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 135) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 135) (degrees 50.000004)))) (defpart 1584 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 135) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 135) (degrees 50.000004)))) (defpartgroup group-sunken-window-bubbles-38 :id 392 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1586 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1586 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1587 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1586 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1586 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1587 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1587 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 145) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 145) (degrees 40)))) (defpart 1586 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 145) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 145) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-200 :id 393 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1588 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1588 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1589 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1588 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1588 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1589 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1589 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -10) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees 45) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -10) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees 45) (degrees 40)))) (defpart 1588 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 30)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 45) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 30)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 45) (degrees 40)))) (defpartgroup group-sunken-window-bubbles-391 :id 394 :bounds (static-bspherem 0 4 0 32) - :parts ((sp-item 1580 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1580 :fade-after (meters 160) :falloff-to (meters 160) :period (seconds 2) :length (seconds 0.017) :binding 1423) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) - (sp-item 1581 :fade-after (meters 100) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1580 + :fade-after (meters 100) + :falloff-to (meters 100) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1580 + :fade-after (meters 160) + :falloff-to (meters 160) + :period (seconds 2) + :length (seconds 0.017) + :binding 1423) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1423 :flags (bit1 start-dead launch-asap) :binding 1424) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1424 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit1 start-dead)) + (sp-item 1581 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1581 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.06) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3) (meters 0.15)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:vel-y (meters 0.005) (meters 0.0033333334)) - (:fade-a 0.16) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.33) (seconds 0.657)) - (:next-launcher 1429) - (:rotate-y (degrees -90) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.06) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3) (meters 0.15)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:vel-y (meters 0.005) (meters 0.0033333334)) + (:fade-a 0.16) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.33) (seconds 0.657)) + (:next-launcher 1429) + (:rotate-y (degrees -90) (degrees 40)))) (defpart 1580 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:y (meters -2)) - (:z (meters -2) (meters 10)) - (:scale-x (meters 0.3)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:vel-y (meters 0.005) (meters 0.0016666667)) - (:timer (seconds 16)) - (:flags (bit2 bit3)) - (:rotate-y (degrees -90) (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:y (meters -2)) + (:z (meters -2) (meters 10)) + (:scale-x (meters 0.3)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:vel-y (meters 0.005) (meters 0.0016666667)) + (:timer (seconds 16)) + (:flags (bit2 bit3)) + (:rotate-y (degrees -90) (degrees 40)))) diff --git a/goal_src/jak1/levels/sunken/sunken-part4.gc b/goal_src/jak1/levels/sunken/sunken-part4.gc index cc94fdc11e..d9f7d10ef2 100644 --- a/goal_src/jak1/levels/sunken/sunken-part4.gc +++ b/goal_src/jak1/levels/sunken/sunken-part4.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -15,2499 +14,2390 @@ (defpartgroup group-sunken-heatpipe-282 :id 395 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1591 :fade-after (meters 80) :falloff-to (meters 80) :binding 1590) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1590 :flags (bit1 start-dead launch-asap)) - (sp-item 1592 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1591 :fade-after (meters 80) :falloff-to (meters 80) :binding 1590) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1590 :flags (bit1 start-dead launch-asap)) + (sp-item 1592 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1591 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 112.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 112.99999)))) (defpart 1590 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.1111112)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.1111112)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1592 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 112.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 112.99999)))) (defpartgroup group-sunken-heatpipe-285 :id 396 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1594 :fade-after (meters 80) :falloff-to (meters 80) :binding 1593) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1593 :flags (bit1 start-dead launch-asap)) - (sp-item 1595 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1594 :fade-after (meters 80) :falloff-to (meters 80) :binding 1593) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1593 :flags (bit1 start-dead launch-asap)) + (sp-item 1595 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1594 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 100.00001)))) (defpart 1593 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1595 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 100.00001)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 100.00001)))) (defpartgroup group-sunken-heatpipe-288 :id 397 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1597 :fade-after (meters 80) :falloff-to (meters 80) :binding 1596) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1596 :flags (bit1 start-dead launch-asap)) - (sp-item 1598 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1597 :fade-after (meters 80) :falloff-to (meters 80) :binding 1596) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1596 :flags (bit1 start-dead launch-asap)) + (sp-item 1598 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1597 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 85)))) (defpart 1596 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1598 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 85)))) (defpartgroup group-sunken-heatpipe-299 :id 398 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1600 :fade-after (meters 80) :falloff-to (meters 80) :binding 1599) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1599 :flags (bit1 start-dead launch-asap)) - (sp-item 1601 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1600 :fade-after (meters 80) :falloff-to (meters 80) :binding 1599) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1599 :flags (bit1 start-dead launch-asap)) + (sp-item 1601 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1600 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 60)))) (defpart 1599 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1601 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 60)))) (defpartgroup group-sunken-heatpipe-302 :id 399 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1603 :fade-after (meters 80) :falloff-to (meters 80) :binding 1602) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1602 :flags (bit1 start-dead launch-asap)) - (sp-item 1604 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1603 :fade-after (meters 80) :falloff-to (meters 80) :binding 1602) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1602 :flags (bit1 start-dead launch-asap)) + (sp-item 1604 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1603 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 47)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 47)))) (defpart 1602 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.7777778)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.7777778)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1604 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 47)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 47)))) (defpartgroup group-sunken-heatpipe-367 :id 400 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1606 :fade-after (meters 80) :falloff-to (meters 80) :binding 1605) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1605 :flags (bit1 start-dead launch-asap)) - (sp-item 1607 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1606 :fade-after (meters 80) :falloff-to (meters 80) :binding 1605) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1605 :flags (bit1 start-dead launch-asap)) + (sp-item 1607 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1606 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 30)))) (defpart 1605 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.6666667)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.6666667)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1607 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 30)))) (defpartgroup group-sunken-heatpipe-371 :id 401 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1609 :fade-after (meters 80) :falloff-to (meters 80) :binding 1608) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1608 :flags (bit1 start-dead launch-asap)) - (sp-item 1610 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1609 :fade-after (meters 80) :falloff-to (meters 80) :binding 1608) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1608 :flags (bit1 start-dead launch-asap)) + (sp-item 1610 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1609 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 7.0000005)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 7.0000005)))) (defpart 1608 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.5555556)) - (:y (meters 3.3333333)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.5555556)) + (:y (meters 3.3333333)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1610 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 7.0000005)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 7.0000005)))) (defpartgroup group-sunken-heatpipe-308 :id 402 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1612 :fade-after (meters 80) :falloff-to (meters 80) :binding 1611) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1611 :flags (bit1 start-dead launch-asap)) - (sp-item 1613 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1612 :fade-after (meters 80) :falloff-to (meters 80) :binding 1611) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1611 :flags (bit1 start-dead launch-asap)) + (sp-item 1613 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1612 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 90)))) (defpart 1611 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 3.7777777)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 3.7777777)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1613 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 90)))) (defpartgroup group-sunken-heatpipe-312 :id 403 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1615 :fade-after (meters 80) :falloff-to (meters 80) :binding 1614) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1614 :flags (bit1 start-dead launch-asap)) - (sp-item 1616 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1615 :fade-after (meters 80) :falloff-to (meters 80) :binding 1614) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1614 :flags (bit1 start-dead launch-asap)) + (sp-item 1616 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1615 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -192.00002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -192.00002)))) (defpart 1614 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -4.4444447)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -4.4444447)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1616 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -192.00002)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -192.00002)))) (defpartgroup group-sunken-heatpipe-316 :id 404 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1618 :fade-after (meters 80) :falloff-to (meters 80) :binding 1617) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1617 :flags (bit1 start-dead launch-asap)) - (sp-item 1619 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1618 :fade-after (meters 80) :falloff-to (meters 80) :binding 1617) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1617 :flags (bit1 start-dead launch-asap)) + (sp-item 1619 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1618 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -162)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -162)))) (defpart 1617 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.1111112)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.1111112)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1619 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -162)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -162)))) (defpartgroup group-sunken-heatpipe-320 :id 405 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1621 :fade-after (meters 80) :falloff-to (meters 80) :binding 1620) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1620 :flags (bit1 start-dead launch-asap)) - (sp-item 1622 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1621 :fade-after (meters 80) :falloff-to (meters 80) :binding 1620) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1620 :flags (bit1 start-dead launch-asap)) + (sp-item 1622 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1621 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -105)))) (defpart 1620 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.6666667)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.6666667)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1622 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 98)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 98)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -105)))) (defpartgroup group-sunken-heatpipe-324 :id 406 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1624 :fade-after (meters 80) :falloff-to (meters 80) :binding 1623) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1623 :flags (bit1 start-dead launch-asap)) - (sp-item 1625 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1624 :fade-after (meters 80) :falloff-to (meters 80) :binding 1623) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1623 :flags (bit1 start-dead launch-asap)) + (sp-item 1625 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1624 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -85)))) (defpart 1623 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.22222222)) - (:y (meters 4.2222223)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.22222222)) + (:y (meters 4.2222223)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1625 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.5)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.5)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -85)))) (defpartgroup group-sunken-heatpipe-328 :id 407 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1627 :fade-after (meters 80) :falloff-to (meters 80) :binding 1626) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1626 :flags (bit1 start-dead launch-asap)) - (sp-item 1628 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1627 :fade-after (meters 80) :falloff-to (meters 80) :binding 1626) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1626 :flags (bit1 start-dead launch-asap)) + (sp-item 1628 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1627 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.2)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -67)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.2)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -67)))) (defpart 1626 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.8888889)) - (:y (meters 4.2222223)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.8888889)) + (:y (meters 4.2222223)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1628 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.5)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 96.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -67)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.5)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 96.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -67)))) (defpartgroup group-sunken-heatpipe-332 :id 408 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1630 :fade-after (meters 80) :falloff-to (meters 80) :binding 1629) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1629 :flags (bit1 start-dead launch-asap)) - (sp-item 1631 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1630 :fade-after (meters 80) :falloff-to (meters 80) :binding 1629) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1629 :flags (bit1 start-dead launch-asap)) + (sp-item 1631 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1630 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -20)))) (defpart 1629 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.3333333)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.3333333)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1631 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 103)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -20)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 103)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -20)))) (defpartgroup group-sunken-heatpipe-333 :id 409 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1633 :fade-after (meters 80) :falloff-to (meters 80) :binding 1632) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1632 :flags (bit1 start-dead launch-asap)) - (sp-item 1634 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1633 :fade-after (meters 80) :falloff-to (meters 80) :binding 1632) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1632 :flags (bit1 start-dead launch-asap)) + (sp-item 1634 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1633 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.9)) - (:y (meters 0.9)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 115)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.9)) + (:y (meters 0.9)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 115)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 30)))) (defpart 1632 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.3333335)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.3333335)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1634 - :init-specs ((:num 0.2) - (:x (meters -1.9)) - (:y (meters 1.2)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 115)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.9)) + (:y (meters 1.2)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 115)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 30)))) (defpartgroup group-sunken-heatpipe-334 :id 410 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1636 :fade-after (meters 80) :falloff-to (meters 80) :binding 1635) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1635 :flags (bit1 start-dead launch-asap)) - (sp-item 1637 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1636 :fade-after (meters 80) :falloff-to (meters 80) :binding 1635) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1635 :flags (bit1 start-dead launch-asap)) + (sp-item 1637 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1636 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -1.9)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -1.9)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 20)))) (defpart 1635 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 5.111111)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 5.111111)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1637 - :init-specs ((:num 0.2) - (:x (meters -1.9)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 20)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -1.9)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 20)))) (defpartgroup group-sunken-heatpipe-335 :id 411 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1639 :fade-after (meters 80) :falloff-to (meters 80) :binding 1638) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1638 :flags (bit1 start-dead launch-asap)) - (sp-item 1640 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1639 :fade-after (meters 80) :falloff-to (meters 80) :binding 1638) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1638 :flags (bit1 start-dead launch-asap)) + (sp-item 1640 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1639 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 0)))) (defpart 1638 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 4.4444447)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 4.4444447)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1640 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 0)))) (defpartgroup group-sunken-heatpipe-336 :id 412 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1642 :fade-after (meters 80) :falloff-to (meters 80) :binding 1641) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1641 :flags (bit1 start-dead launch-asap)) - (sp-item 1643 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1642 :fade-after (meters 80) :falloff-to (meters 80) :binding 1641) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1641 :flags (bit1 start-dead launch-asap)) + (sp-item 1643 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1642 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -15)))) (defpart 1641 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.7777777)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.7777777)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1643 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -15)))) (defpartgroup group-sunken-heatpipe-337 :id 413 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1645 :fade-after (meters 80) :falloff-to (meters 80) :binding 1644) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1644 :flags (bit1 start-dead launch-asap)) - (sp-item 1646 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1645 :fade-after (meters 80) :falloff-to (meters 80) :binding 1644) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1644 :flags (bit1 start-dead launch-asap)) + (sp-item 1646 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1645 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -37)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -37)))) (defpart 1644 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.4444444)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.4444444)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1646 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -37)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -37)))) (defpartgroup group-sunken-heatpipe-338 :id 414 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1648 :fade-after (meters 80) :falloff-to (meters 80) :binding 1647) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1647 :flags (bit1 start-dead launch-asap)) - (sp-item 1649 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1648 :fade-after (meters 80) :falloff-to (meters 80) :binding 1647) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1647 :flags (bit1 start-dead launch-asap)) + (sp-item 1649 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1648 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -62)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -62)))) (defpart 1647 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1649 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -62)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -62)))) (defpartgroup group-sunken-heatpipe-339 :id 415 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1651 :fade-after (meters 80) :falloff-to (meters 80) :binding 1650) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1650 :flags (bit1 start-dead launch-asap)) - (sp-item 1652 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1651 :fade-after (meters 80) :falloff-to (meters 80) :binding 1650) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1650 :flags (bit1 start-dead launch-asap)) + (sp-item 1652 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1651 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 99)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 99)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -85)))) (defpart 1650 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0.44444445)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0.44444445)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1652 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 99)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -85)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 99)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -85)))) (defpartgroup group-sunken-heatpipe-340 :id 416 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1654 :fade-after (meters 80) :falloff-to (meters 80) :binding 1653) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1653 :flags (bit1 start-dead launch-asap)) - (sp-item 1655 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1654 :fade-after (meters 80) :falloff-to (meters 80) :binding 1653) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1653 :flags (bit1 start-dead launch-asap)) + (sp-item 1655 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1654 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.5)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 160)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.5)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 160)))) (defpart 1653 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.1111112)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.1111112)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1655 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.8)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 105)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 160)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.8)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 105)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 160)))) (defpartgroup group-sunken-heatpipe-341 :id 417 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1657 :fade-after (meters 80) :falloff-to (meters 80) :binding 1656) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1656 :flags (bit1 start-dead launch-asap)) - (sp-item 1658 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1657 :fade-after (meters 80) :falloff-to (meters 80) :binding 1656) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1656 :flags (bit1 start-dead launch-asap)) + (sp-item 1658 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1657 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees 177)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees 177)))) (defpart 1656 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 3.7777777)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 3.7777777)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1658 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 100.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees 177)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 100.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees 177)))) (defpartgroup group-sunken-heatpipe-357 :id 418 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1660 :fade-after (meters 80) :falloff-to (meters 80) :binding 1659) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1659 :flags (bit1 start-dead launch-asap)) - (sp-item 1661 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1660 :fade-after (meters 80) :falloff-to (meters 80) :binding 1659) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1659 :flags (bit1 start-dead launch-asap)) + (sp-item 1661 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1660 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.1)) - (:rotate-y (degrees 131)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.1)) + (:rotate-y (degrees 131)))) (defpart 1659 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 3.5555556)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 3.5555556)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1661 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.4)) - (:rotate-y (degrees 131)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.4)) + (:rotate-y (degrees 131)))) (defpartgroup group-sunken-heatpipe-356 :id 419 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1663 :fade-after (meters 80) :falloff-to (meters 80) :binding 1662) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1662 :flags (bit1 start-dead launch-asap)) - (sp-item 1664 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1663 :fade-after (meters 80) :falloff-to (meters 80) :binding 1662) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1662 :flags (bit1 start-dead launch-asap)) + (sp-item 1664 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1663 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.1)) - (:rotate-y (degrees 311)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.1)) + (:rotate-y (degrees 311)))) (defpart 1662 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 1.7777778)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 1.7777778)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1664 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.4)) - (:rotate-y (degrees 311)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.4)) + (:rotate-y (degrees 311)))) (defpartgroup group-sunken-heatpipe-354 :id 420 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1666 :fade-after (meters 80) :falloff-to (meters 80) :binding 1665) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1665 :flags (bit1 start-dead launch-asap)) - (sp-item 1667 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1666 :fade-after (meters 80) :falloff-to (meters 80) :binding 1665) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1665 :flags (bit1 start-dead launch-asap)) + (sp-item 1667 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1666 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2.2)) - (:y (meters 0.3)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1.15)) - (:rotate-y (degrees 325)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2.2)) + (:y (meters 0.3)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1.15)) + (:rotate-y (degrees 325)))) (defpart 1665 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 2.6666667)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 2.6666667)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1667 - :init-specs ((:num 0.2) - (:x (meters -2.2)) - (:y (meters 0.6)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 97)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4.6)) - (:rotate-y (degrees 325)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2.2)) + (:y (meters 0.6)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 97)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4.6)) + (:rotate-y (degrees 325)))) (defpartgroup group-sunken-sheild :id 565 :bounds (static-bspherem 0 0 0 32) - :parts ((sp-item 2311) (sp-item 2312 :flags (is-3d))) - ) + :parts ((sp-item 2311) (sp-item 2312 :flags (is-3d)))) (defpart 2312 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.1 0.6) - (:x (meters 0) (meters 1.5)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.06) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.8) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.067) (seconds 0.065)) - (:next-launcher 2313) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.1 0.6) + (:x (meters 0) (meters 1.5)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.06) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.8) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.067) (seconds 0.065)) + (:next-launcher 2313) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2313 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 2311 - :init-specs ((:num 4.0 2.0) - (:x (meters 2) (meters 17)) - (:y (meters -6)) - (:rot-x 8) - (:r 16384.0) - (:g 12288.0) - (:b 12288.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:fade-b -32.768) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 2314) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 4.0 2.0) + (:x (meters 2) (meters 17)) + (:y (meters -6)) + (:rot-x 8) + (:r 16384.0) + (:g 12288.0) + (:b 12288.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:fade-b -32.768) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 2314) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2314 - :init-specs ((:fade-b 32.768)) - ) + :init-specs ((:fade-b 32.768))) diff --git a/goal_src/jak1/levels/sunken/sunken-part5.gc b/goal_src/jak1/levels/sunken/sunken-part5.gc index c777ec5a24..f491b70ef5 100644 --- a/goal_src/jak1/levels/sunken/sunken-part5.gc +++ b/goal_src/jak1/levels/sunken/sunken-part5.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -15,1409 +14,1349 @@ (defpartgroup group-sunken-heatpipe-227 :id 421 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1669 :fade-after (meters 80) :falloff-to (meters 80) :binding 1668) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1668 :flags (bit1 start-dead launch-asap)) - (sp-item 1670 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1669 :fade-after (meters 80) :falloff-to (meters 80) :binding 1668) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1668 :flags (bit1 start-dead launch-asap)) + (sp-item 1670 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1669 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 106)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -131)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 106)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -131)))) (defpart 1668 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.7777778)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.7777778)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1670 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 106)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -131)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 106)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -131)))) (defpartgroup group-sunken-heatpipe-238 :id 422 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1672 :fade-after (meters 80) :falloff-to (meters 80) :binding 1671) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1671 :flags (bit1 start-dead launch-asap)) - (sp-item 1673 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1672 :fade-after (meters 80) :falloff-to (meters 80) :binding 1671) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1671 :flags (bit1 start-dead launch-asap)) + (sp-item 1673 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1672 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -100.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -100.00001)))) (defpart 1671 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.44444445)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.44444445)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1673 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -100.00001)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -100.00001)))) (defpartgroup group-sunken-heatpipe-239 :id 423 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1675 :fade-after (meters 80) :falloff-to (meters 80) :binding 1674) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1674 :flags (bit1 start-dead launch-asap)) - (sp-item 1676 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1675 :fade-after (meters 80) :falloff-to (meters 80) :binding 1674) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1674 :flags (bit1 start-dead launch-asap)) + (sp-item 1676 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1675 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -124.99999)))) (defpart 1674 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -1.1111112)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -1.1111112)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1676 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -124.99999)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -124.99999)))) (defpartgroup group-sunken-heatpipe-240 :id 424 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1678 :fade-after (meters 80) :falloff-to (meters 80) :binding 1677) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1677 :flags (bit1 start-dead launch-asap)) - (sp-item 1679 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1678 :fade-after (meters 80) :falloff-to (meters 80) :binding 1677) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1677 :flags (bit1 start-dead launch-asap)) + (sp-item 1679 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1678 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -93)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -93)))) (defpart 1677 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters 0)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters 0)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1679 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -93)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -93)))) (defpartgroup group-sunken-heatpipe-241 :id 425 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1681 :fade-after (meters 80) :falloff-to (meters 80) :binding 1680) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1680 :flags (bit1 start-dead launch-asap)) - (sp-item 1682 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1681 :fade-after (meters 80) :falloff-to (meters 80) :binding 1680) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1680 :flags (bit1 start-dead launch-asap)) + (sp-item 1682 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1681 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -110)))) (defpart 1680 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -0.6666667)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -0.6666667)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1682 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -110)))) (defpartgroup group-sunken-heatpipe-242 :id 426 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1684 :fade-after (meters 80) :falloff-to (meters 80) :binding 1683) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1683 :flags (bit1 start-dead launch-asap)) - (sp-item 1685 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1684 :fade-after (meters 80) :falloff-to (meters 80) :binding 1683) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1683 :flags (bit1 start-dead launch-asap)) + (sp-item 1685 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1684 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -135)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -135)))) (defpart 1683 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1685 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 108.00001)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -135)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 108.00001)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -135)))) (defpartgroup group-sunken-heatpipe-243 :id 427 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1687 :fade-after (meters 80) :falloff-to (meters 80) :binding 1686) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1686 :flags (bit1 start-dead launch-asap)) - (sp-item 1688 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1687 :fade-after (meters 80) :falloff-to (meters 80) :binding 1686) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1686 :flags (bit1 start-dead launch-asap)) + (sp-item 1688 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1687 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -147)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -147)))) (defpart 1686 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.4444444)) - (:y (meters 4.4444447)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.4444444)) + (:y (meters 4.4444447)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1688 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -147)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -147)))) (defpartgroup group-sunken-heatpipe-278 :id 428 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1690 :fade-after (meters 80) :falloff-to (meters 80) :binding 1689) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1689 :flags (bit1 start-dead launch-asap)) - (sp-item 1691 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1690 :fade-after (meters 80) :falloff-to (meters 80) :binding 1689) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1689 :flags (bit1 start-dead launch-asap)) + (sp-item 1691 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1690 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -165)))) (defpart 1689 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.0222223)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.0222223)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1691 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -165)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -165)))) (defpartgroup group-sunken-heatpipe-251 :id 429 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1693 :fade-after (meters 80) :falloff-to (meters 80) :binding 1692) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1692 :flags (bit1 start-dead launch-asap)) - (sp-item 1694 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1693 :fade-after (meters 80) :falloff-to (meters 80) :binding 1692) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1692 :flags (bit1 start-dead launch-asap)) + (sp-item 1694 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1693 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -136)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -136)))) (defpart 1692 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -2.1333334)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -2.1333334)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1694 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -136)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -136)))) (defpartgroup group-sunken-heatpipe-254 :id 430 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1696 :fade-after (meters 80) :falloff-to (meters 80) :binding 1695) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1695 :flags (bit1 start-dead launch-asap)) - (sp-item 1697 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1696 :fade-after (meters 80) :falloff-to (meters 80) :binding 1695) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1695 :flags (bit1 start-dead launch-asap)) + (sp-item 1697 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1696 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -185)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -185)))) (defpart 1695 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -3.911111)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -3.911111)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1697 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -185)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -185)))) (defpartgroup group-sunken-heatpipe-264 :id 431 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1699 :fade-after (meters 80) :falloff-to (meters 80) :binding 1698) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1698 :flags (bit1 start-dead launch-asap)) - (sp-item 1700 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1699 :fade-after (meters 80) :falloff-to (meters 80) :binding 1698) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1698 :flags (bit1 start-dead launch-asap)) + (sp-item 1700 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1699 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -203)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -203)))) (defpart 1698 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -4.6666665)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -4.6666665)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1700 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -203)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -203)))) (defpartgroup group-sunken-heatpipe-265 :id 432 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1702 :fade-after (meters 80) :falloff-to (meters 80) :binding 1701) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1701 :flags (bit1 start-dead launch-asap)) - (sp-item 1703 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1702 :fade-after (meters 80) :falloff-to (meters 80) :binding 1701) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1701 :flags (bit1 start-dead launch-asap)) + (sp-item 1703 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1702 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.4)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -217)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.4)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -217)))) (defpart 1701 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -5.3333335)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -5.3333335)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1703 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.70000005)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -217)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.70000005)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -217)))) (defpartgroup group-sunken-heatpipe-266 :id 433 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1705 :fade-after (meters 80) :falloff-to (meters 80) :binding 1704) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1704 :flags (bit1 start-dead launch-asap)) - (sp-item 1706 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1705 :fade-after (meters 80) :falloff-to (meters 80) :binding 1704) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1704 :flags (bit1 start-dead launch-asap)) + (sp-item 1706 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1705 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.6)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 107)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -243)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.6)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 107)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -243)))) (defpart 1704 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -6.4444447)) - (:y (meters 4.888889)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -6.4444447)) + (:y (meters 4.888889)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1706 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 0.90000004)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 107)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -243)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 0.90000004)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 107)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -243)))) (defpartgroup group-sunken-heatpipe-267 :id 434 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1708 :fade-after (meters 80) :falloff-to (meters 80) :binding 1707) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1707 :flags (bit1 start-dead launch-asap)) - (sp-item 1709 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1708 :fade-after (meters 80) :falloff-to (meters 80) :binding 1707) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1707 :flags (bit1 start-dead launch-asap)) + (sp-item 1709 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1708 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -267)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -267)))) (defpart 1707 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -7.7777777)) - (:y (meters 5.111111)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -7.7777777)) + (:y (meters 5.111111)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1709 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -267)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -267)))) (defpartgroup group-sunken-heatpipe-268 :id 435 :bounds (static-bspherem 0 1 0 3.5) - :parts ((sp-item 1711 :fade-after (meters 80) :falloff-to (meters 80) :binding 1710) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1710 :flags (bit1 start-dead launch-asap)) - (sp-item 1712 :fade-after (meters 64) :falloff-to (meters 64)) - ) - ) + :parts + ((sp-item 1711 :fade-after (meters 80) :falloff-to (meters 80) :binding 1710) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1710 :flags (bit1 start-dead launch-asap)) + (sp-item 1712 :fade-after (meters 64) :falloff-to (meters 64)))) (defpart 1711 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 1.0) - (:x (meters -2)) - (:y (meters 0.7)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 32.0) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) 4 (meters 1)) - (:rotate-y (degrees -300)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 1.0) + (:x (meters -2)) + (:y (meters 0.7)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 32.0) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) 4 (meters 1)) + (:rotate-y (degrees -300)))) (defpart 1710 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:x (meters -9.333333)) - (:y (meters 4.6666665)) - (:z (meters 0.9)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:fade-a 1.28) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.085) (seconds 0.08)) - (:next-launcher 1422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:x (meters -9.333333)) + (:y (meters 4.6666665)) + (:z (meters 0.9)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446) 1 (meters 0.008888889)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:fade-a 1.28) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.085) (seconds 0.08)) + (:next-launcher 1422))) (defpart 1712 - :init-specs ((:num 0.2) - (:x (meters -2)) - (:y (meters 1)) - (:rot-x 6) - (:r 4096.0) - (:g 2662.4) - (:b 3276.8) - (:fade-g 2.048) - (:accel-y (meters 0.00033333333)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2 bit3 aux-list)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 90)) - (:conerot-radius (meters 0) (meters 4)) - (:rotate-y (degrees -300)) - ) - ) + :init-specs + ((:num 0.2) + (:x (meters -2)) + (:y (meters 1)) + (:rot-x 6) + (:r 4096.0) + (:g 2662.4) + (:b 3276.8) + (:fade-g 2.048) + (:accel-y (meters 0.00033333333)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2 bit3 aux-list)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 90)) + (:conerot-radius (meters 0) (meters 4)) + (:rotate-y (degrees -300)))) diff --git a/goal_src/jak1/levels/sunken/sunken-pipegame.gc b/goal_src/jak1/levels/sunken/sunken-pipegame.gc index 1563369e8d..7bd29e7157 100644 --- a/goal_src/jak1/levels/sunken/sunken-pipegame.gc +++ b/goal_src/jak1/levels/sunken/sunken-pipegame.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/ticky.gc") (require "engine/geometry/path.gc") (require "engine/common-obs/collectables.gc") @@ -14,923 +13,740 @@ ;; DECOMP BEGINS -(deftype sunken-pipegame-button (basebutton) - () - ) - +(deftype sunken-pipegame-button (basebutton) ()) (deftype sunken-pipegame-prize (structure) - ((puzzle-delay time-frame) - (pipe-travel-time-to-far time-frame) - (pipe-travel-time-to-jar time-frame) - (actor-handle handle) - (jar-pos vector :inline) - (far-pos vector :inline) - (sucked-up-jar-part-pos vector :inline) - (sucked-up-far-part-pos vector :inline) - (blown-out-jar-part-pos vector :inline) - (blown-out-far-part-pos vector :inline) - (sucked-up-part sparticle-launch-control) - (blown-out-part sparticle-launch-control) - ) - ) - + ((puzzle-delay time-frame) + (pipe-travel-time-to-far time-frame) + (pipe-travel-time-to-jar time-frame) + (actor-handle handle) + (jar-pos vector :inline) + (far-pos vector :inline) + (sucked-up-jar-part-pos vector :inline) + (sucked-up-far-part-pos vector :inline) + (blown-out-jar-part-pos vector :inline) + (blown-out-far-part-pos vector :inline) + (sucked-up-part sparticle-launch-control) + (blown-out-part sparticle-launch-control))) (deftype sunken-pipegame (process-drawable) - ((abort-audio-if-beaten? symbol) - (challenges-mask uint32) - (challenge int32) - (ticker ticky :inline) - (button (pointer sunken-pipegame-button) 3) - (prize sunken-pipegame-prize 3 :inline) - ) + ((abort-audio-if-beaten? symbol) + (challenges-mask uint32) + (challenge int32) + (ticker ticky :inline) + (button (pointer sunken-pipegame-button) 3) + (prize sunken-pipegame-prize 3 :inline)) (:methods - (sunken-pipegame-method-20 (_type_) uint) - (sunken-pipegame-method-21 (_type_ symbol) symbol) - (sunken-pipegame-method-22 (_type_ symbol) none) - ) + (sunken-pipegame-method-20 (_type_) uint) + (sunken-pipegame-method-21 (_type_ symbol) symbol) + (sunken-pipegame-method-22 (_type_ symbol) none)) (:states - sunken-pipegame-beat-challenge - sunken-pipegame-begin-play - sunken-pipegame-end-play - sunken-pipegame-idle - sunken-pipegame-start-up - ) - ) - + sunken-pipegame-beat-challenge + sunken-pipegame-begin-play + sunken-pipegame-end-play + sunken-pipegame-idle + sunken-pipegame-start-up)) (defpartgroup group-pipegame-jar-suck0 :id 448 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d))) - ) + :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d)))) (defpart 1741 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1745 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 1742 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters 0) (meters 8)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:fade-a -3.657143) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters 0) (meters 8)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:fade-a -3.657143) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.5)))) (defpart 1743 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1744 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-jar-suck1 :id 449 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d))) - ) + :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d)))) (defpart 1746 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0 64.0) - (:g 64.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0 64.0) + (:g 64.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1747 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1748 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-jar-suck2 :id 450 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d))) - ) + :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d)))) (defpart 1749 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 10.0) - (:y (meters 6)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0) - (:g 0.0 64.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-y (meters 0.006666667)) - (:fade-a 1.4222223) - (:accel-y (meters 0.0033333334)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1745) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 10.0) + (:y (meters 6)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0) + (:g 0.0 64.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-y (meters 0.006666667)) + (:fade-a 1.4222223) + (:accel-y (meters 0.0033333334)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1745) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters -10)))) (defpart 1750 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters 4)) - (:scale-x (meters 7) (meters 1)) - (:scale-y (meters 7) (meters 3)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters 4)) + (:scale-x (meters 7) (meters 1)) + (:scale-y (meters 7) (meters 3)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1751 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow0 :id 451 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d))) - ) + :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d)))) (defpart 1752 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 64.0 128.0) - (:g 0.0 32.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 64.0 128.0) + (:g 0.0 32.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1756 - :init-specs ((:fade-a -1.4222223)) - ) + :init-specs ((:fade-a -1.4222223))) (defpart 1753 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 5.0) - (:y (meters 0) (meters -8)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 64.0 64.0) - (:fade-a -3.657143) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 5.0) + (:y (meters 0) (meters -8)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 64.0 64.0) + (:fade-a -3.657143) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.5)))) (defpart 1754 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1755 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 128.0 128.0) - (:g 0.0 64.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 128.0 128.0) + (:g 0.0 64.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow1 :id 452 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d))) - ) + :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d)))) (defpart 1757 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0 32.0) - (:g 64.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0 32.0) + (:g 64.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1758 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1759 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0 64.0) - (:g 128.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0 64.0) + (:g 128.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpartgroup group-pipegame-blow2 :id 453 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d))) - ) + :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d)))) (defpart 1760 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0) - (:y (meters 0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y (meters 1) (meters 0.5)) - (:r 0.0) - (:g 0.0 32.0) - (:b 64.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters -0.033333335)) - (:scalevel-y (meters 0.006666667)) - (:accel-y (meters -0.006666667)) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.147)) - (:next-launcher 1756) - (:conerot-x (degrees 150) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0) + (:y (meters 0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y (meters 1) (meters 0.5)) + (:r 0.0) + (:g 0.0 32.0) + (:b 64.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters -0.033333335)) + (:scalevel-y (meters 0.006666667)) + (:accel-y (meters -0.006666667)) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.147)) + (:next-launcher 1756) + (:conerot-x (degrees 150) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1761 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 1.0) - (:y (meters -3.5)) - (:scale-x (meters 3) (meters 0.5)) - (:rot-z (degrees 180)) - (:scale-y (meters 13) (meters 3)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 1.0) + (:y (meters -3.5)) + (:scale-x (meters 3) (meters 0.5)) + (:rot-z (degrees 180)) + (:scale-y (meters 13) (meters 3)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1762 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 0.3)) - (:scale-x (meters 5.5) (meters 2)) - (:scale-y (meters 5.5) (meters 2)) - (:r 0.0) - (:g 0.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 0.3)) + (:scale-x (meters 5.5) (meters 2)) + (:scale-y (meters 5.5) (meters 2)) + (:r 0.0) + (:g 0.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defbehavior sunken-pipegame-button-init-by-other sunken-pipegame-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol)) (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0) - (none) - ) + (none)) (defmethod sunken-pipegame-method-20 ((this sunken-pipegame)) (let ((gp-0 0)) - (if (task-complete? *game-info* (game-task sunken-pipe)) - (+! gp-0 1) - ) - (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0) - (+! gp-0 2) - ) - (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1) - (+! gp-0 4) - ) - (the-as uint gp-0) - ) - ) + (if (task-complete? *game-info* (game-task sunken-pipe)) (+! gp-0 1)) + (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0) (+! gp-0 2)) + (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1) (+! gp-0 4)) + (the-as uint gp-0))) (defstate sunken-pipegame-start-up (sunken-pipegame) - :code (behavior () - (suspend) - (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f) - (go sunken-pipegame-idle) - ) - ) + :code + (behavior () + (suspend) + (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f) + (go sunken-pipegame-idle))) (defstate sunken-pipegame-idle (sunken-pipegame) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (when (= (-> proc type) sunken-pipegame-button) - (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) - (go sunken-pipegame-begin-play) - ) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) + (when (= (-> proc type) sunken-pipegame-button) + (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) + (go sunken-pipegame-begin-play))))) + :code + (behavior () + (loop (suspend)))) (defstate sunken-pipegame-begin-play (sunken-pipegame) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (case (-> proc type) - ((fuel-cell buzzer) - (go sunken-pipegame-beat-challenge) - ) - ) - ) - ) - ) - :enter (behavior () - (sunken-pipegame-method-21 self #f) - (set! (-> self abort-audio-if-beaten?) #f) - (dotimes (gp-0 3) - (let ((v1-4 (-> self button gp-0))) - (if (and (!= gp-0 (-> self challenge)) (not (logtest? (ash 1 gp-0) (-> self challenges-mask)))) - (send-event (ppointer->process v1-4) 'trigger) - ) - ) - ) - ) - :code (behavior () - (local-vars (v1-112 symbol)) - (let ((gp-0 (current-time))) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (go sunken-pipegame-end-play) - ) - (kill-current-level-hint '(camera) '() 'exit) - (let ((v1-10 (-> self challenge))) - (cond - ((zero? v1-10) - (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f '() :to self) - ) - ((= v1-10 1) - (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f '() :to self) - ) - ((= v1-10 2) - (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) - (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f '() :to self) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) + (case (-> proc type) + ((fuel-cell buzzer) (go sunken-pipegame-beat-challenge)))))) + :enter + (behavior () + (sunken-pipegame-method-21 self #f) + (set! (-> self abort-audio-if-beaten?) #f) + (dotimes (gp-0 3) + (let ((v1-4 (-> self button gp-0))) + (if (and (!= gp-0 (-> self challenge)) (not (logtest? (ash 1 gp-0) (-> self challenges-mask)))) + (send-event (ppointer->process v1-4) 'trigger))))) + :code + (behavior () + (local-vars (v1-112 symbol)) + (let ((gp-0 (current-time))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play)) + (kill-current-level-hint '(camera) () 'exit) + (let ((v1-10 (-> self challenge))) + (cond + ((zero? v1-10) + (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f () :to self)) + ((= v1-10 1) + (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f () :to self)) + ((= v1-10 2) + (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) + (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f () :to self)))) + (set-time! (-> self state-time)) + (let ((f30-0 0.0)) + (until (time-elapsed? (-> self state-time) (seconds 2)) + (let ((s5-3 (-> self prize (-> self challenge)))) + (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos)) + (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos))) + (+! f30-0 (* 1024.0 (seconds-per-frame))) + (let ((s5-4 (new 'stack-no-clear 'vector))) + (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) + (let* ((f28-0 (-> s5-4 y)) + (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-40 (the-as number (logior #x3f800000 v1-39)))) + (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0)))) + (let ((a1-18 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-18 from) self) + (set! (-> a1-18 num-params) 1) + (set! (-> a1-18 message) 'trans) + (set! (-> a1-18 param 0) (the-as uint s5-4)) + (let ((t9-17 send-event-function) + (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle)))) + (t9-17 a0-32 a1-18)))) + (suspend)) + (let ((f28-1 0.0)) + (until (= f28-1 20480.0) + (let ((s5-5 (-> self prize (-> self challenge)))) + (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos)) + (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos)) + (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (seconds-per-frame)))) + (let ((s4-0 (new 'stack-no-clear 'vector))) + (set! (-> s4-0 quad) (-> s5-5 jar-pos quad)) + (let* ((f26-0 (-> s4-0 y)) + (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-66 (the-as number (logior #x3f800000 v1-65)))) + (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1)))) + (let ((a1-22 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-22 from) self) + (set! (-> a1-22 num-params) 1) + (set! (-> a1-22 message) 'trans) + (set! (-> a1-22 param 0) (the-as uint s4-0)) + (let ((t9-22 send-event-function) + (a0-45 (handle->process (-> s5-5 actor-handle)))) + (t9-22 a0-45 a1-22))))) + (suspend)))) + (until (time-elapsed? gp-0 (-> self prize (-> self challenge) pipe-travel-time-to-far)) + (let ((s5-6 (-> self prize (-> self challenge)))) + (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos)) + (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos))) + (suspend))) + (sunken-pipegame-method-22 self #t) + (let ((f30-1 20480.0)) + (until (= f30-1 0.0) + (set! f30-1 (seek f30-1 0.0 (* 81920.0 (seconds-per-frame)))) + (let ((gp-1 (-> self prize (-> self challenge)))) + (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos)) + (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos)) + (let ((v1-96 (new 'stack-no-clear 'vector))) + (set! (-> v1-96 quad) (-> gp-1 far-pos quad)) + (+! (-> v1-96 y) f30-1) + (let ((a1-32 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-32 from) self) + (set! (-> a1-32 num-params) 1) + (set! (-> a1-32 message) 'trans) + (set! (-> a1-32 param 0) (the-as uint v1-96)) + (let ((t9-29 send-event-function) + (a0-64 (handle->process (-> gp-1 actor-handle)))) + (t9-29 a0-64 a1-32))))) + (suspend))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play)) + (until v1-112 + (suspend) + (set! v1-112 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) (set-time! (-> self state-time)) - (let ((f30-0 0.0)) + (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay)) + (until (time-elapsed? (-> self state-time) (seconds 0.5)) + (completed? (-> self ticker)) + (suspend)) + (level-hint-spawn (text-id sunken-pipegame-hint) "sksp0123" (the-as entity #f) *entity-pool* (game-task none)) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (until (completed? (-> self ticker)) + (suspend)) + (kill-current-level-hint '(camera) () 'exit) + (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) + (set! (-> self abort-audio-if-beaten?) #t) + (set-time! (-> self state-time)) + (let ((f30-2 0.0)) (until (time-elapsed? (-> self state-time) (seconds 2)) - (let ((s5-3 (-> self prize (-> self challenge)))) - (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos)) - (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos)) - ) - (+! f30-0 (* 1024.0 (seconds-per-frame))) - (let ((s5-4 (new 'stack-no-clear 'vector))) - (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) - (let* ((f28-0 (-> s5-4 y)) - (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-40 (the-as number (logior #x3f800000 v1-39))) - ) - (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0))) - ) - (let ((a1-18 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-18 from) self) - (set! (-> a1-18 num-params) 1) - (set! (-> a1-18 message) 'trans) - (set! (-> a1-18 param 0) (the-as uint s5-4)) - (let ((t9-17 send-event-function) - (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle))) - ) - (t9-17 a0-32 a1-18) - ) - ) - ) - (suspend) - ) - (let ((f28-1 0.0)) - (until (= f28-1 20480.0) - (let ((s5-5 (-> self prize (-> self challenge)))) - (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos)) - (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos)) - (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (seconds-per-frame)))) - (let ((s4-0 (new 'stack-no-clear 'vector))) - (set! (-> s4-0 quad) (-> s5-5 jar-pos quad)) - (let* ((f26-0 (-> s4-0 y)) - (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-66 (the-as number (logior #x3f800000 v1-65))) - ) - (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1))) - ) - (let ((a1-22 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-22 from) self) - (set! (-> a1-22 num-params) 1) - (set! (-> a1-22 message) 'trans) - (set! (-> a1-22 param 0) (the-as uint s4-0)) - (let ((t9-22 send-event-function) - (a0-45 (handle->process (-> s5-5 actor-handle))) - ) - (t9-22 a0-45 a1-22) - ) - ) - ) - ) - (suspend) - ) - ) - ) - (until (time-elapsed? gp-0 (-> self prize (-> self challenge) pipe-travel-time-to-far)) - (let ((s5-6 (-> self prize (-> self challenge)))) - (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos)) - (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos)) - ) - (suspend) - ) - ) - (sunken-pipegame-method-22 self #t) - (let ((f30-1 20480.0)) - (until (= f30-1 0.0) - (set! f30-1 (seek f30-1 0.0 (* 81920.0 (seconds-per-frame)))) - (let ((gp-1 (-> self prize (-> self challenge)))) - (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos)) - (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos)) - (let ((v1-96 (new 'stack-no-clear 'vector))) - (set! (-> v1-96 quad) (-> gp-1 far-pos quad)) - (+! (-> v1-96 y) f30-1) - (let ((a1-32 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-32 from) self) - (set! (-> a1-32 num-params) 1) - (set! (-> a1-32 message) 'trans) - (set! (-> a1-32 param 0) (the-as uint v1-96)) - (let ((t9-29 send-event-function) - (a0-64 (handle->process (-> gp-1 actor-handle))) - ) - (t9-29 a0-64 a1-32) - ) - ) - ) - ) - (suspend) - ) - ) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (go sunken-pipegame-end-play) - ) - (until v1-112 - (suspend) - (set! v1-112 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (set-time! (-> self state-time)) - (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay)) - (until (time-elapsed? (-> self state-time) (seconds 0.5)) - (completed? (-> self ticker)) - (suspend) - ) - (level-hint-spawn (text-id sunken-pipegame-hint) "sksp0123" (the-as entity #f) *entity-pool* (game-task none)) - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (until (completed? (-> self ticker)) - (suspend) - ) - (kill-current-level-hint '(camera) '() 'exit) - (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) - (set! (-> self abort-audio-if-beaten?) #t) - (set-time! (-> self state-time)) - (let ((f30-2 0.0)) - (until (time-elapsed? (-> self state-time) (seconds 2)) - (let ((gp-2 (-> self prize (-> self challenge)))) - (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos)) - (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos)) - (+! f30-2 (* 1024.0 (seconds-per-frame))) - (let ((s5-7 (new 'stack-no-clear 'vector))) - (set! (-> s5-7 quad) (-> gp-2 far-pos quad)) - (let* ((f28-2 (-> s5-7 y)) - (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-147 (the-as number (logior #x3f800000 v1-146))) - ) - (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2))) - ) - (let ((a1-42 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-42 from) self) - (set! (-> a1-42 num-params) 1) - (set! (-> a1-42 message) 'trans) - (set! (-> a1-42 param 0) (the-as uint s5-7)) - (let ((t9-41 send-event-function) - (a0-91 (handle->process (-> gp-2 actor-handle))) - ) - (t9-41 a0-91 a1-42) - ) - ) - ) - ) - (suspend) - ) - (let ((f28-3 0.0)) - (until (= f28-3 20480.0) - (let ((gp-3 (-> self prize (-> self challenge)))) - (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos)) - (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos)) - (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (seconds-per-frame)))) - (let ((s5-8 (new 'stack-no-clear 'vector))) - (set! (-> s5-8 quad) (-> gp-3 far-pos quad)) - (let* ((f26-1 (-> s5-8 y)) - (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-170 (the-as number (logior #x3f800000 v1-169))) - ) - (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3))) - ) - (let ((a1-46 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-46 from) self) - (set! (-> a1-46 num-params) 1) - (set! (-> a1-46 message) 'trans) - (set! (-> a1-46 param 0) (the-as uint s5-8)) - (let ((t9-46 send-event-function) - (a0-104 (handle->process (-> gp-3 actor-handle))) - ) - (t9-46 a0-104 a1-46) - ) - ) - ) - ) - (suspend) - ) - ) - ) - (sunken-pipegame-method-22 self #f) - (set! (-> self abort-audio-if-beaten?) #f) - (let ((v1-184 (-> self prize (-> self challenge))) - (a0-109 (new 'stack-no-clear 'vector)) - ) - (set! (-> a0-109 quad) (-> v1-184 jar-pos quad)) - (+! (-> a0-109 y) 40960.0) - (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (-> self prize (-> self challenge) pipe-travel-time-to-jar)) - (let ((gp-4 (-> self prize (-> self challenge)))) - (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos)) - (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos)) - ) - (suspend) - ) - (let ((f30-3 20480.0)) - (until (= f30-3 0.0) - (set! f30-3 (seek f30-3 0.0 (* 40960.0 (seconds-per-frame)))) - (let ((v1-203 (new 'stack-no-clear 'vector))) - (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) - (+! (-> v1-203 y) f30-3) - (let ((a1-57 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-57 from) self) - (set! (-> a1-57 num-params) 1) - (set! (-> a1-57 message) 'trans) - (set! (-> a1-57 param 0) (the-as uint v1-203)) - (let ((t9-52 send-event-function) - (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle))) - ) - (t9-52 a0-128 a1-57) - ) - ) - ) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1.5)) - (suspend) - ) - (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) - (go sunken-pipegame-end-play) - ) - ) + (let ((gp-2 (-> self prize (-> self challenge)))) + (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos)) + (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos)) + (+! f30-2 (* 1024.0 (seconds-per-frame))) + (let ((s5-7 (new 'stack-no-clear 'vector))) + (set! (-> s5-7 quad) (-> gp-2 far-pos quad)) + (let* ((f28-2 (-> s5-7 y)) + (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-147 (the-as number (logior #x3f800000 v1-146)))) + (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2)))) + (let ((a1-42 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-42 from) self) + (set! (-> a1-42 num-params) 1) + (set! (-> a1-42 message) 'trans) + (set! (-> a1-42 param 0) (the-as uint s5-7)) + (let ((t9-41 send-event-function) + (a0-91 (handle->process (-> gp-2 actor-handle)))) + (t9-41 a0-91 a1-42))))) + (suspend)) + (let ((f28-3 0.0)) + (until (= f28-3 20480.0) + (let ((gp-3 (-> self prize (-> self challenge)))) + (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos)) + (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos)) + (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (seconds-per-frame)))) + (let ((s5-8 (new 'stack-no-clear 'vector))) + (set! (-> s5-8 quad) (-> gp-3 far-pos quad)) + (let* ((f26-1 (-> s5-8 y)) + (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-170 (the-as number (logior #x3f800000 v1-169)))) + (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3)))) + (let ((a1-46 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-46 from) self) + (set! (-> a1-46 num-params) 1) + (set! (-> a1-46 message) 'trans) + (set! (-> a1-46 param 0) (the-as uint s5-8)) + (let ((t9-46 send-event-function) + (a0-104 (handle->process (-> gp-3 actor-handle)))) + (t9-46 a0-104 a1-46))))) + (suspend)))) + (sunken-pipegame-method-22 self #f) + (set! (-> self abort-audio-if-beaten?) #f) + (let ((v1-184 (-> self prize (-> self challenge))) + (a0-109 (new 'stack-no-clear 'vector))) + (set! (-> a0-109 quad) (-> v1-184 jar-pos quad)) + (+! (-> a0-109 y) 40960.0) + (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (-> self prize (-> self challenge) pipe-travel-time-to-jar)) + (let ((gp-4 (-> self prize (-> self challenge)))) + (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos)) + (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos))) + (suspend)) + (let ((f30-3 20480.0)) + (until (= f30-3 0.0) + (set! f30-3 (seek f30-3 0.0 (* 40960.0 (seconds-per-frame)))) + (let ((v1-203 (new 'stack-no-clear 'vector))) + (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) + (+! (-> v1-203 y) f30-3) + (let ((a1-57 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-57 from) self) + (set! (-> a1-57 num-params) 1) + (set! (-> a1-57 message) 'trans) + (set! (-> a1-57 param 0) (the-as uint v1-203)) + (let ((t9-52 send-event-function) + (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle)))) + (t9-52 a0-128 a1-57)))) + (suspend))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1.5)) + (suspend)) + (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) + (go sunken-pipegame-end-play))) (defstate sunken-pipegame-beat-challenge (sunken-pipegame) - :code (behavior () - (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) - (if (-> self abort-audio-if-beaten?) - (kill-current-level-hint '(camera) '() 'exit) - ) - (go sunken-pipegame-end-play) - ) - ) + :code + (behavior () + (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) + (if (-> self abort-audio-if-beaten?) (kill-current-level-hint '(camera) () 'exit)) + (go sunken-pipegame-end-play))) (defstate sunken-pipegame-end-play (sunken-pipegame) - :code (behavior () - (local-vars (v1-3 symbol)) - (sunken-pipegame-method-21 self #t) - (set! (-> self abort-audio-if-beaten?) #f) - (until v1-3 - (suspend) - (set! v1-3 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) - ) - (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) - (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) - ) - (set! (-> self challenge) -1) - (dotimes (gp-0 3) - (let ((v1-18 (-> self button gp-0))) - (if (not (logtest? (ash 1 gp-0) (-> self challenges-mask))) - (send-event (ppointer->process v1-18) 'untrigger) - ) - ) - ) - (go sunken-pipegame-idle) - ) - ) + :code + (behavior () + (local-vars (v1-3 symbol)) + (sunken-pipegame-method-21 self #t) + (set! (-> self abort-audio-if-beaten?) #f) + (until v1-3 + (suspend) + (set! v1-3 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed)))))) + (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) + (logior! (-> self challenges-mask) (ash 1 (-> self challenge)))) + (set! (-> self challenge) -1) + (dotimes (gp-0 3) + (let ((v1-18 (-> self button gp-0))) + (if (not (logtest? (ash 1 gp-0) (-> self challenges-mask))) (send-event (ppointer->process v1-18) 'untrigger)))) + (go sunken-pipegame-idle))) (defmethod sunken-pipegame-method-22 ((this sunken-pipegame) (arg0 symbol)) (let* ((v1-0 (-> this challenge)) - (a2-0 v1-0) - ) + (a2-0 v1-0)) (cond ((zero? a2-0) (let ((v1-5 (handle->process (-> this prize v1-0 actor-handle)))) (when v1-5 (if arg0 - (restore-collide-with-as (-> (the-as collectable v1-5) root)) - (clear-collide-with-as (-> (the-as collectable v1-5) root)) - ) - ) - ) - ) + (restore-collide-with-as (-> (the-as collectable v1-5) root)) + (clear-collide-with-as (-> (the-as collectable v1-5) root)))))) ((or (= a2-0 1) (= a2-0 2)) (let ((v1-13 (handle->process (-> this prize v1-0 actor-handle)))) (when v1-13 (if arg0 - (restore-collide-with-as (-> (the-as collectable v1-13) root)) - (clear-collide-with-as (-> (the-as collectable v1-13) root)) - ) - ) - ) - ) - ) - ) - (none) - ) + (restore-collide-with-as (-> (the-as collectable v1-13) root)) + (clear-collide-with-as (-> (the-as collectable v1-13) root)))))))) + (none)) (defmethod sunken-pipegame-method-21 ((this sunken-pipegame) (arg0 symbol)) - (if arg0 - (logior! (-> this mask) (process-mask actor-pause)) - (logclear! (-> this mask) (process-mask actor-pause)) - ) + (if arg0 (logior! (-> this mask) (process-mask actor-pause)) (logclear! (-> this mask) (process-mask actor-pause))) (let ((v1-4 (-> this child))) (while v1-4 - (if arg0 - (logior! (-> v1-4 0 mask) (process-mask actor-pause)) - (logclear! (-> v1-4 0 mask) (process-mask actor-pause)) - ) - (set! v1-4 (-> v1-4 0 brother)) - ) - ) - #f - ) + (if arg0 (logior! (-> v1-4 0 mask) (process-mask actor-pause)) (logclear! (-> v1-4 0 mask) (process-mask actor-pause))) + (set! v1-4 (-> v1-4 0 brother)))) + #f) (defmethod deactivate ((this sunken-pipegame)) (dotimes (s5-0 3) (let ((s4-0 (-> this prize s5-0))) - (if (nonzero? (-> s4-0 sucked-up-part)) - (kill-and-free-particles (-> s4-0 sucked-up-part)) - ) - (if (nonzero? (-> s4-0 blown-out-part)) - (kill-and-free-particles (-> s4-0 blown-out-part)) - ) - ) - ) + (if (nonzero? (-> s4-0 sucked-up-part)) (kill-and-free-particles (-> s4-0 sucked-up-part))) + (if (nonzero? (-> s4-0 blown-out-part)) (kill-and-free-particles (-> s4-0 blown-out-part))))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod relocate ((this sunken-pipegame) (arg0 int)) (dotimes (v1-0 3) (let ((a0-4 (-> this prize v1-0))) (when (nonzero? (-> a0-4 sucked-up-part)) - (if (nonzero? (-> a0-4 sucked-up-part)) - (&+! (-> a0-4 sucked-up-part) arg0) - ) - ) + (if (nonzero? (-> a0-4 sucked-up-part)) (&+! (-> a0-4 sucked-up-part) arg0))) (when (nonzero? (-> a0-4 blown-out-part)) - (if (nonzero? (-> a0-4 blown-out-part)) - (&+! (-> a0-4 blown-out-part) arg0) - ) - ) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> a0-4 blown-out-part)) (&+! (-> a0-4 blown-out-part) arg0))))) + (call-parent-method this arg0)) (defmethod init-from-entity! ((this sunken-pipegame) (arg0 entity-actor)) (set! (-> this abort-audio-if-beaten?) #f) (stack-size-set! (-> this main-thread) 512) (set! (-> this challenge) -1) (dotimes (v1-3 3) - (set! (-> this prize v1-3 actor-handle) (the-as handle #f)) - ) + (set! (-> this prize v1-3 actor-handle) (the-as handle #f))) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this challenges-mask) (sunken-pipegame-method-20 this)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'quaternion)) - ) + (s3-0 (new 'stack-no-clear 'quaternion))) (quaternion-identity! s3-0) (dotimes (s2-0 3) (let* ((s0-0 (-> this prize s2-0)) (v1-17 (ash 1 s2-0)) - (s1-1 (logtest? v1-17 (-> this challenges-mask))) - ) + (s1-1 (logtest? v1-17 (-> this challenges-mask)))) (eval-path-curve-div! (-> this path) (-> s0-0 jar-pos) (the float (* s2-0 2)) 'interp) (eval-path-curve-div! (-> this path) (-> s0-0 far-pos) (the float (+ (* s2-0 2) 1)) 'interp) (set! (-> s0-0 sucked-up-jar-part-pos quad) (-> s0-0 jar-pos quad)) @@ -952,17 +768,9 @@ (+! (-> s0-0 far-pos y) 11673.6) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f this (the-as fact-info #f)))) (let ((a1-10 (handle->process (-> s0-0 actor-handle)))) - (if a1-10 - (clear-collide-with-as (-> (the-as collectable a1-10) root)) - ) - ) - ) - ) + (if a1-10 (clear-collide-with-as (-> (the-as collectable a1-10) root)))))) ((= v1-30 1) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 5.5)) @@ -975,18 +783,11 @@ (+! (-> s0-0 blown-out-far-part-pos y) 4096.0) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f this (the-as fact-info #f)))) (let ((s0-1 (handle->process (-> s0-0 actor-handle)))) (when s0-1 (send-event s0-1 'movie-pos 1) - (clear-collide-with-as (-> (the-as collectable s0-1) root)) - ) - ) - ) - ) + (clear-collide-with-as (-> (the-as collectable s0-1) root)))))) ((= v1-30 2) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 4.5)) @@ -999,28 +800,14 @@ (+! (-> s0-0 blown-out-far-part-pos y) 4096.0) (when (not s1-1) (set! (-> s0-0 actor-handle) - (ppointer->handle - (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f this (the-as fact-info #f)) - ) - ) + (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f this (the-as fact-info #f)))) (let ((s0-2 (handle->process (-> s0-0 actor-handle)))) (when s0-2 (send-event s0-2 'movie-pos 2) - (clear-collide-with-as (-> (the-as collectable s0-2) root)) - ) - ) - ) - ) - ) - ) + (clear-collide-with-as (-> (the-as collectable s0-2) root)))))))) (vector+! s4-0 s4-0 (-> this root trans)) (let ((v1-102 (process-spawn sunken-pipegame-button s4-0 s3-0 arg0 s1-1 :to this))) (set! (-> this button s2-0) (the-as (pointer sunken-pipegame-button) v1-102)) - (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0) - ) - ) - ) - ) + (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0))))) (go sunken-pipegame-start-up) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/sunken-water.gc b/goal_src/jak1/levels/sunken/sunken-water.gc index 1c8cfc129e..19fb43c5f5 100644 --- a/goal_src/jak1/levels/sunken/sunken-water.gc +++ b/goal_src/jak1/levels/sunken/sunken-water.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/water-anim.gc") (require "engine/util/sync-info.gc") (require "engine/gfx/mood/time-of-day.gc") @@ -13,176 +12,124 @@ ;; DECOMP BEGINS (deftype sunken-water (water-anim) - ((use-sync? symbol) - (playing-deadly-sound? symbol) - (deadly-time float) - (deadly-fade float) - (sync sync-info :inline) - (safe-color-mult vector :inline) - (safe-color-emissive vector :inline) - (deadly-color-mult vector :inline) - (deadly-color-emissive vector :inline) - ) + ((use-sync? symbol) + (playing-deadly-sound? symbol) + (deadly-time float) + (deadly-fade float) + (sync sync-info :inline) + (safe-color-mult vector :inline) + (safe-color-emissive vector :inline) + (deadly-color-mult vector :inline) + (deadly-color-emissive vector :inline)) (:methods - (draw-ripple (_type_) symbol) - ) - ) + (draw-ripple (_type_) symbol))) - -(define ripple-for-sunken-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-sunken-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defpartgroup group-sunken-water-deadly-water :id 446 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1736 :fade-after (meters 50))) - ) + :parts ((sp-item 1736 :fade-after (meters 50)))) (defpart 1736 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 1) (meters 4)) - (:scale-y (meters 0.25)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 96.0 32.0) - (:scalevel-x (meters 0.1875)) - (:scalevel-y (meters -0.001875)) - (:fade-a -3.2) - (:timer (seconds 0.27)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2022) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 1) (meters 4)) + (:scale-y (meters 0.25)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 96.0 32.0) + (:scalevel-x (meters 0.1875)) + (:scalevel-y (meters -0.001875)) + (:fade-a -3.2) + (:timer (seconds 0.27)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2022))) (defpart 2022 - :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28)) - ) + :init-specs ((:r 255.0) (:g 128.0 128.0) (:b 0.0) (:fade-a -1.28))) (defmethod draw-ripple ((this sunken-water)) (set! (-> this draw ripple send-query) #t) (let ((gp-0 (-> this draw ripple query))) - (let ((a0-1 (current-time))) - (set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127)) - ) + (let ((a0-1 (current-time))) (set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127))) (set! (-> gp-0 vertex-skip) 128) (dotimes (s5-0 (-> gp-0 vertex-count)) - (launch-particles (-> *part-id-table* 1736) (-> gp-0 data s5-0)) - ) - ) - #f - ) + (launch-particles (-> *part-id-table* 1736) (-> gp-0 data s5-0)))) + #f) (defstate water-vol-idle (sunken-water) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('notify) - (if (= (-> block param 0) 'attack) - (sound-play "get-shocked") - ) - ) - (else - ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block) - ) - ) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) - (if t9-0 - (t9-0) - ) - ) - (cond - ((-> self use-sync?) - (cond - ((< (get-current-phase (-> self sync)) (-> self deadly-time)) - (when (!= (-> self deadly-fade) 1.0) - (seek! (-> self deadly-fade) 1.0 (* 8.0 (seconds-per-frame))) - (let ((f30-0 (-> self deadly-fade))) - (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-0) - (vector-lerp! - (-> self draw color-emissive) - (-> self safe-color-emissive) - (-> self deadly-color-emissive) - f30-0 - ) - (set! (-> self draw color-mult w) 0.5) - (if (= f30-0 1.0) - (logior! (-> self flags) (water-flags wt19)) - ) - ) - ) - (draw-ripple self) - (when (not (-> self playing-deadly-sound?)) - (set! (-> self playing-deadly-sound?) #t) - (sound-play "water-on") - ) - (update! (-> self sound)) - ) - (else - (logclear! (-> self flags) (water-flags wt19)) - (when (!= (-> self deadly-fade) 0.0) - (seek! (-> self deadly-fade) 0.0 (* 8.0 (seconds-per-frame))) - (let ((f30-1 (-> self deadly-fade))) - (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-1) - (vector-lerp! - (-> self draw color-emissive) - (-> self safe-color-emissive) - (-> self deadly-color-emissive) - f30-1 - ) - (set! (-> self draw color-mult w) 0.5) - (if (= f30-1 0.0) - (logclear! (-> self flags) (water-flags wt19)) - ) - ) - ) - (when (-> self playing-deadly-sound?) - (set! (-> self playing-deadly-sound?) #f) - (stop! (-> self sound)) - (sound-play "water-off") - ) - ) - ) - (set-fade! - *palette-fade-controls* - 3 - (-> self deadly-fade) - (vector-vector-distance (-> self root trans) (camera-pos)) - (the-as vector #f) - ) - ) - (else - (when (logtest? (water-flags wt19) (-> self flags)) - (draw-ripple self) - (update! (-> self sound)) - (set! (-> self playing-deadly-sound?) #t) - ) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('notify) (if (= (-> block param 0) 'attack) (sound-play "get-shocked"))) + (else ((-> (method-of-type water-anim water-vol-idle) event) proc argc message block)))) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans))) (if t9-0 (t9-0))) + (cond + ((-> self use-sync?) + (cond + ((< (get-current-phase (-> self sync)) (-> self deadly-time)) + (when (!= (-> self deadly-fade) 1.0) + (seek! (-> self deadly-fade) 1.0 (* 8.0 (seconds-per-frame))) + (let ((f30-0 (-> self deadly-fade))) + (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-0) + (vector-lerp! (-> self draw color-emissive) (-> self safe-color-emissive) (-> self deadly-color-emissive) f30-0) + (set! (-> self draw color-mult w) 0.5) + (if (= f30-0 1.0) (logior! (-> self flags) (water-flags wt19))))) + (draw-ripple self) + (when (not (-> self playing-deadly-sound?)) + (set! (-> self playing-deadly-sound?) #t) + (sound-play "water-on")) + (update! (-> self sound))) + (else + (logclear! (-> self flags) (water-flags wt19)) + (when (!= (-> self deadly-fade) 0.0) + (seek! (-> self deadly-fade) 0.0 (* 8.0 (seconds-per-frame))) + (let ((f30-1 (-> self deadly-fade))) + (vector-lerp! (-> self draw color-mult) (-> self safe-color-mult) (-> self deadly-color-mult) f30-1) + (vector-lerp! (-> self draw color-emissive) (-> self safe-color-emissive) (-> self deadly-color-emissive) f30-1) + (set! (-> self draw color-mult w) 0.5) + (if (= f30-1 0.0) (logclear! (-> self flags) (water-flags wt19))))) + (when (-> self playing-deadly-sound?) + (set! (-> self playing-deadly-sound?) #f) + (stop! (-> self sound)) + (sound-play "water-off")))) + (set-fade! *palette-fade-controls* + 3 + (-> self deadly-fade) + (vector-vector-distance (-> self root trans) (camera-pos)) + (the-as vector #f))) + (else + (when (logtest? (water-flags wt19) (-> self flags)) + (draw-ripple self) + (update! (-> self sound)) + (set! (-> self playing-deadly-sound?) #t))))) + :post ja-post) (defmethod water-vol-method-25 ((this sunken-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-25))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-25))) (t9-0 this)) (set! (-> this playing-deadly-sound?) #f) (set-vector! (-> this safe-color-mult) 0.125 0.225 0.22 0.5) (set-vector! (-> this safe-color-emissive) 0.0 0.0 0.0 1.0) @@ -191,63 +138,39 @@ (let ((s5-0 (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15))) (let ((f0-16 (res-lump-float (-> this entity) 'percent :default -1.0))) (if (or (< f0-16 0.0) (< 1.0 f0-16)) - (set! f0-16 (cond - (s5-0 - 0.5 - ) - ((logtest? (water-flags wt19) (-> this flags)) - 1.0 - ) - (else - 0.0 - ) - ) - ) - ) + (set! f0-16 + (cond + (s5-0 0.5) + ((logtest? (water-flags wt19) (-> this flags)) 1.0) + (else 0.0)))) (when (and s5-0 (or (= f0-16 0.0) (= f0-16 1.0))) (set! s5-0 #f) - (if (= f0-16 0.0) - (logior! (-> this flags) (water-flags wt19)) - (logclear! (-> this flags) (water-flags wt19)) - ) - ) + (if (= f0-16 0.0) (logior! (-> this flags) (water-flags wt19)) (logclear! (-> this flags) (water-flags wt19)))) (set! (-> this use-sync?) s5-0) - (set! (-> this deadly-time) f0-16) - ) + (set! (-> this deadly-time) f0-16)) (when s5-0 (if (< (get-current-phase (-> this sync)) (-> this deadly-time)) - (set! (-> this flags) (the-as water-flags (logior (water-flags wt19) (-> this flags)))) - (set! (-> this flags) (the-as water-flags (logclear (-> this flags) (water-flags wt19)))) - ) - ) - ) - (none) - ) + (set! (-> this flags) (the-as water-flags (logior (water-flags wt19) (-> this flags)))) + (set! (-> this flags) (the-as water-flags (logclear (-> this flags) (water-flags wt19))))))) + (none)) (defmethod water-vol-method-22 ((this sunken-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (set! (-> this play-ambient-sound?) #f) (cond ((logtest? (water-flags wt19) (-> this flags)) (set! (-> this draw color-mult quad) (-> this deadly-color-mult quad)) (set! (-> this draw color-emissive quad) (-> this deadly-color-emissive quad)) - (set! (-> this deadly-fade) 1.0) - ) + (set! (-> this deadly-fade) 1.0)) (else - (set! (-> this draw color-mult quad) (-> this safe-color-mult quad)) - (set! (-> this draw color-emissive quad) (-> this safe-color-emissive quad)) - (set! (-> this deadly-fade) 0.0) - ) - ) + (set! (-> this draw color-mult quad) (-> this safe-color-mult quad)) + (set! (-> this draw color-emissive quad) (-> this safe-color-emissive quad)) + (set! (-> this deadly-fade) 0.0))) (let ((s5-0 (new 'process 'ripple-control))) (set! (-> this draw ripple) s5-0) (set! (-> s5-0 global-scale) 3072.0) (set! (-> s5-0 close-fade-dist) 163840.0) (set! (-> s5-0 far-fade-dist) 245760.0) (set! (-> s5-0 waveform) ripple-for-sunken-water) - (set! (-> s5-0 query) (new 'process 'ripple-merc-query 100)) - ) - (none) - ) + (set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))) + (none)) diff --git a/goal_src/jak1/levels/sunken/target-tube.gc b/goal_src/jak1/levels/sunken/target-tube.gc index 6700c544a9..eaf718471a 100644 --- a/goal_src/jak1/levels/sunken/target-tube.gc +++ b/goal_src/jak1/levels/sunken/target-tube.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/target/target-death.gc") (require "engine/anim/aligner.gc") (require "engine/geometry/path.gc") @@ -12,186 +11,166 @@ (define-extern *tube-surface* surface) ;; unknown type - ;; DECOMP BEGINS -(define *tube-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 524288.0 - :tiltv 5461.3335 - :tiltvv 131072.0 - :transv-max 1.0 - :target-speed 32768.0 - :seek0 1.0 - :seek90 1.0 - :seek180 1.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - ) - ) +(define *tube-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 524288.0 + :tiltv 5461.3335 + :tiltvv 131072.0 + :transv-max 1.0 + :target-speed 32768.0 + :seek0 1.0 + :seek90 1.0 + :seek180 1.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0)) -(define *tube-jump-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 262144.0 - :tiltv 5461.3335 - :tiltvv 131072.0 - :transv-max 1.0 - :seek0 0.8 - :seek90 0.7 - :seek180 0.8 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags (surface-flags jump) - ) - ) +(define *tube-jump-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 262144.0 + :tiltv 5461.3335 + :tiltvv 131072.0 + :transv-max 1.0 + :seek0 0.8 + :seek90 0.7 + :seek180 0.8 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags (surface-flags jump))) -(define *tube-hit-mods* (new 'static 'surface - :name 'tube - :turnv 21845.334 - :turnvv 262144.0 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 1.0 - :target-speed 40960.0 - :fric 1.0 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - ) - ) +(define *tube-hit-mods* + (new 'static + 'surface + :name 'tube + :turnv 21845.334 + :turnvv 262144.0 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 1.0 + :target-speed 40960.0 + :fric 1.0 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air)) -(let ((v1-3 (new 'static 'surface - :name '*tube-surface* - :turnv 1.0 - :turnvv 1.0 - :tiltv 1.0 - :tiltvv 1.0 - :transv-max 94208.0 - :target-speed 1.0 - :seek0 32768.0 - :seek90 94208.0 - :seek180 8192.0 - :fric 0.98 - :nonlin-fric-dist 4091904.0 - :slip-factor 0.7 - :slope-down-factor 81920.0 - :slope-slip-angle 16384.0 - :bend-speed 4.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :flags (surface-flags no-turn-around always-rotate-toward-transv) - ) - ) - ) +(let ((v1-3 (new 'static + 'surface + :name '*tube-surface* + :turnv 1.0 + :turnvv 1.0 + :tiltv 1.0 + :tiltvv 1.0 + :transv-max 94208.0 + :target-speed 1.0 + :seek0 32768.0 + :seek90 94208.0 + :seek180 8192.0 + :fric 0.98 + :nonlin-fric-dist 4091904.0 + :slip-factor 0.7 + :slope-down-factor 81920.0 + :slope-slip-angle 16384.0 + :bend-speed 4.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :flags (surface-flags no-turn-around always-rotate-toward-transv)))) (set! *tube-surface* v1-3) (set! (-> v1-3 mult-hook) (the-as (function surface surface surface int none) nothing)) (set! (-> v1-3 touch-hook) nothing) - (set! (-> v1-3 active-hook) nothing) - ) + (set! (-> v1-3 active-hook) nothing)) (deftype tube-info (basic) - ((entity basic) - (tube handle) - (downhill vector :inline) - (centertube vector :inline) - (downtube vector :inline) - (sidetube vector :inline) - (foretube vector :inline) - (old-transv vector :inline) - (mod-x float) - (mod-y float) - (start-time time-frame) - (turn-anim-targ float) - (turn-anim-frame float) - (turn-anim-vel float) - (tube-sound-id sound-id) - (tube-sound-vol float) - ) - ) - - -(deftype tube-bank (basic) - () - ) + ((entity basic) + (tube handle) + (downhill vector :inline) + (centertube vector :inline) + (downtube vector :inline) + (sidetube vector :inline) + (foretube vector :inline) + (old-transv vector :inline) + (mod-x float) + (mod-y float) + (start-time time-frame) + (turn-anim-targ float) + (turn-anim-frame float) + (turn-anim-vel float) + (tube-sound-id sound-id) + (tube-sound-vol float))) +(deftype tube-bank (basic) ()) (define *TUBE-bank* (new 'static 'tube-bank)) (defbehavior tube-sounds target () - (seek! - (-> self tube tube-sound-vol) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - 100.0 - 0.0 - ) - (* 200.0 (seconds-per-frame)) - ) + (seek! (-> self tube tube-sound-vol) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) 100.0 0.0) + (* 200.0 (seconds-per-frame))) (let ((f30-0 (-> self tube tube-sound-vol)) - (f0-5 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 122880.0)) - ) - (sound-play - "slide-loop" - :id (-> self tube tube-sound-id) - :vol f30-0 - :pitch f0-5 - :position (the-as symbol (-> self control trans)) - ) - ) - ) + (f0-5 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 122880.0))) + (sound-play "slide-loop" + :id (-> self tube tube-sound-id) + :vol + f30-0 + :pitch + f0-5 + :position + (the-as symbol (-> self control trans))))) (defbehavior tube-thrust target ((arg0 float) (arg1 float)) (let ((s4-1 (vector-! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self control trans)))) (vector-flatten! s4-1 s4-1 (-> self tube downtube)) (vector-flatten! s4-1 s4-1 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s4-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s4-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :a #x80)) (vector-matrix*! s4-1 s4-1 (-> self control unknown-matrix00)) (vector-float*! s4-1 s4-1 2.0) (if (< (-> self control unknown-surface01 target-speed) (vector-length s4-1)) - (vector-normalize! s4-1 (-> self control unknown-surface01 target-speed)) - ) + (vector-normalize! s4-1 (-> self control unknown-surface01 target-speed))) (vector-v++! (-> self control unknown-vector00) s4-1) (when (logtest? (-> self control status) (cshape-moving-flags twall)) (let ((s3-0 (-> self tube old-transv))) @@ -199,137 +178,90 @@ (vector-reflect! s4-1 s3-0 (-> self control unknown-vector71)) (let ((f30-1 (vector-dot (-> self tube sidetube) (-> self tube old-transv))) (s2-0 (new-stack-vector0)) - (f28-0 (vector-dot (-> self tube sidetube) s4-1)) - ) + (f28-0 (vector-dot (-> self tube sidetube) s4-1))) 0.0 (vector-! s2-0 s4-1 (vector-float*! s2-0 (-> self tube sidetube) f28-0)) (let* ((f0-8 (vector-length s2-0)) - (f1-0 f0-8) - ) + (f1-0 f0-8)) (cond - ((< 0.0 f30-1) - (if (< f28-0 (- f30-1)) - (set! f28-0 (- f30-1)) - ) - ) - ((< f30-1 0.0) - (if (< (- f30-1) f28-0) - (set! f28-0 (- f30-1)) - ) - ) - ) - (vector+! s4-1 (vector-float*! s4-1 (-> self tube sidetube) f28-0) (vector-float*! s2-0 s2-0 (/ f0-8 f1-0))) - ) - ) + ((< 0.0 f30-1) (if (< f28-0 (- f30-1)) (set! f28-0 (- f30-1)))) + ((< f30-1 0.0) (if (< (- f30-1) f28-0) (set! f28-0 (- f30-1))))) + (vector+! s4-1 (vector-float*! s4-1 (-> self tube sidetube) f28-0) (vector-float*! s2-0 s2-0 (/ f0-8 f1-0))))) (vector-flatten! s4-1 s4-1 (-> self control local-normal)) (let ((s2-1 (new-stack-vector0))) (let ((f0-11 (vector-dot (-> self tube downtube) s4-1))) 0.0 - (vector-! s2-1 s4-1 (vector-float*! s2-1 (-> self tube downtube) f0-11)) - ) + (vector-! s2-1 s4-1 (vector-float*! s2-1 (-> self tube downtube) f0-11))) (let* ((f0-12 (vector-length s2-1)) (f1-2 f0-12) - (f2-5 (fmax (-> self control unknown-float01) (vector-dot s3-0 (-> self tube downtube)))) - ) - (vector+! s4-1 (vector-float*! s4-1 (-> self tube downtube) f2-5) (vector-float*! s2-1 s2-1 (/ f0-12 f1-2))) - ) - ) - ) + (f2-5 (fmax (-> self control unknown-float01) (vector-dot s3-0 (-> self tube downtube))))) + (vector+! s4-1 (vector-float*! s4-1 (-> self tube downtube) f2-5) (vector-float*! s2-1 s2-1 (/ f0-12 f1-2)))))) (vector-matrix*! s4-1 s4-1 (-> self control unknown-matrix00)) (let ((f0-14 (-> self control unknown-vector00 y))) (set! (-> self control unknown-vector00 quad) (-> s4-1 quad)) - (set! (-> self control unknown-vector00 y) f0-14) - ) - ) - ) + (set! (-> self control unknown-vector00 y) f0-14)))) (let ((s4-2 (new 'stack-no-clear 'vector))) (set! (-> s4-2 quad) (-> self tube downtube quad)) (let ((s3-1 (new 'stack-no-clear 'vector))) (set! (-> s3-1 quad) (-> self tube sidetube quad)) (vector-flatten! s3-1 s3-1 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s3-1 - (meters 2) - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s3-1 + (meters 2) + (new 'static 'rgba :r #xff :g #xff :a #x80)) (vector-matrix*! s3-1 s3-1 (-> self control unknown-matrix00)) (vector-normalize! s3-1 (* arg0 (-> self control unknown-surface01 seek90))) - (vector-v++! (-> self control unknown-vector00) s3-1) - ) + (vector-v++! (-> self control unknown-vector00) s3-1)) (vector-flatten! s4-2 s4-2 (-> self control local-normal)) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - s4-2 - (meters 2) - (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + s4-2 + (meters 2) + (new 'static 'rgba :r #xff :g #x80 :b #x40 :a #x80)) (vector-matrix*! s4-2 s4-2 (-> self control unknown-matrix00)) - (vector-normalize! - s4-2 - (* (-> self control unknown-surface01 slope-down-factor) (fmax 0.2 (-> self control surface-angle))) - ) - (vector-v++! (-> self control unknown-vector00) s4-2) - ) + (vector-normalize! s4-2 + (* (-> self control unknown-surface01 slope-down-factor) (fmax 0.2 (-> self control surface-angle)))) + (vector-v++! (-> self control unknown-vector00) s4-2)) (let* ((f1-6 (-> self control unknown-surface01 fric)) (f1-9 (- 1.0 (* 60.0 (seconds-per-frame) (- 1.0 f1-6)))) - (f0-21 (* 0.5 (+ 1.0 f1-9))) - ) + (f0-21 (* 0.5 (+ 1.0 f1-9)))) (set! (-> self control unknown-vector00 x) (* (-> self control unknown-vector00 x) f0-21)) - (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-21)) - ) - (let ((f30-2 - (- (-> self control unknown-surface01 transv-max) (if (< arg1 0.0) - (* arg1 (-> self control unknown-surface01 seek0)) - (* arg1 (-> self control unknown-surface01 seek180)) - ) - ) - ) - ) + (set! (-> self control unknown-vector00 z) (* (-> self control unknown-vector00 z) f0-21))) + (let ((f30-2 (- (-> self control unknown-surface01 transv-max) + (if (< arg1 0.0) (* arg1 (-> self control unknown-surface01 seek0)) (* arg1 (-> self control unknown-surface01 seek180)))))) (if (>= (vector-xz-length (-> self control unknown-vector00)) f30-2) - (vector-xz-normalize! (-> self control unknown-vector00) f30-2) - ) - ) + (vector-xz-normalize! (-> self control unknown-vector00) f30-2))) (let ((gp-1 (new-stack-vector0))) (vector-matrix*! gp-1 (-> self control unknown-vector00) (-> self control unknown-matrix01)) (vector-float*! gp-1 gp-1 0.5) - (add-debug-vector - *display-target-marks* - (bucket-id debug-no-zbuf) - (-> self control trans) - gp-1 - (meters 0.00024414062) - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-vector *display-target-marks* + (bucket-id debug-no-zbuf) + (-> self control trans) + gp-1 + (meters 0.00024414062) + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "ltransv" - (new 'static 'rgba :g #xff :b #xff :a #x80) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "ltransv" + (new 'static 'rgba :g #xff :b #xff :a #x80)) (vector-matrix*! gp-1 (new 'static 'vector :z 40960.0 :w 1.0) (-> self control unknown-matrix01)) (vector-float*! gp-1 gp-1 0.5) (vector+! gp-1 gp-1 (-> self control trans)) - (add-debug-text-sphere - *display-target-marks* - (bucket-id debug-no-zbuf) - gp-1 - 819.2 - "nose" - (new 'static 'rgba :r #xff :g #xff :a #x80) - ) - ) + (add-debug-text-sphere *display-target-marks* + (bucket-id debug-no-zbuf) + gp-1 + 819.2 + "nose" + (new 'static 'rgba :r #xff :g #xff :a #x80))) (tube-sounds) 0 - (none) - ) + (none)) (defbehavior target-tube-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -340,203 +272,130 @@ (flag-setup) (build-conversions (-> self control transv)) (if (logtest? (-> self state-flags) (state-flags timed-invulnerable)) - (set! (-> self control unknown-surface01 turnv) (* 3.0 (-> self control unknown-surface01 turnv))) - ) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) - (-> self control local-normal) - ) + (set! (-> self control unknown-surface01 turnv) (* 3.0 (-> self control unknown-surface01 turnv)))) + (forward-up-nopitch->quaternion (-> self control dir-targ) + (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control dir-targ)) + (-> self control local-normal)) (do-rotations1) - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - (vector-flatten! - (-> self tube downhill) - (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) - (-> self control local-normal) - ) + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube)) + (vector-flatten! (-> self tube downhill) + (vector-negate! (new-stack-vector0) (-> self control dynam gravity-normal)) + (-> self control local-normal)) (vector-normalize! (-> self tube downhill) 1.0) (set! (-> self control unknown-float12) 1.0) (let ((f30-0 (analog-input (the-as int (-> self control unknown-cpad-info00 leftx)) 128.0 32.0 110.0 1.0))) (set! (-> self tube mod-x) f30-0) (let ((f0-5 (analog-input (the-as int (-> self control unknown-cpad-info00 lefty)) 128.0 32.0 110.0 1.0))) (set! (-> self tube mod-y) f0-5) - (tube-thrust f30-0 f0-5) - ) - ) + (tube-thrust f30-0 f0-5))) (add-gravity) (do-rotations2) (reverse-conversions (-> self control transv)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) (set! (-> self control reaction) target-collision-reaction) - (fill-cache-integrate-and-collide! - (-> self control) - (-> self control transv) - (-> self control root-prim collide-with) - ) + (fill-cache-integrate-and-collide! (-> self control) (-> self control transv) (-> self control root-prim collide-with)) (if (logtest? (-> self control root-prim prim-core action) (collide-action edgegrab-possible)) - (find-edge-grabs! *target* *collide-cache*) - ) + (find-edge-grabs! *target* *collide-cache*)) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x80 :g #x60 :b #x40 :a #x80))) (bend-gravity) (post-flag-setup) - (set! (-> self control surf) *tube-surface*) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self control surf) *tube-surface*)) + (set-time-ratios *display* (the float gp-0))) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x40 :b #x40 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) + 'draw + (new 'static 'rgba :r #x40 :b #x40 :a #x80))) (ja-post) (if *debug-segment* - (add-frame - (-> *display* frames (-> *display* on-screen) frame profile-bar 0) - 'draw - (new 'static 'rgba :r #x80 :a #x80) - ) - ) + (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) 'draw (new 'static 'rgba :r #x80 :a #x80))) (joint-points) (do-target-shadow) (target-powerup-process) - (none) - ) + (none)) (defstate target-tube-start (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (cond - ((and (= message 'query) (= (-> block param 0) 'mode)) - 'tube - ) - (else - (case message - (('end-mode) - (go - target-jump - (-> *TARGET-bank* tube-jump-height-min) - (-> *TARGET-bank* tube-jump-height-max) - (the-as surface #f) - ) - ) - (('touched) - (send-event proc 'attack (-> block param 0) 'tube 0 0) - #f - ) - (('attack 'attack-or-shove 'attack-invinc) - (target-attacked - 'attack-or-shove - (the-as attack-info (-> block param 1)) - proc - (the-as touching-shapes-entry (-> block param 0)) - target-tube-hit - ) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - ) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-tube) - (= (-> self next-state name) 'target-tube-jump) - (= (-> self next-state name) 'target-tube-hit) - ) - ) - (let ((v1-7 (-> self manipy))) - (when v1-7 - (deactivate (-> v1-7 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (logclear! (-> self control root-prim prim-core action) (collide-action tube)) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) - (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (send-event *camera* 'clear-slave-option #x6000) - (sound-stop (-> self tube tube-sound-id)) - (set! (-> self tube tube-sound-id) (new 'static 'sound-id)) - (send-event (handle->process (-> self tube tube)) 'end-mode) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (cond + ((and (= message 'query) (= (-> block param 0) 'mode)) 'tube) + (else + (case message + (('end-mode) + (go target-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max) (the-as surface #f))) + (('touched) (send-event proc 'attack (-> block param 0) 'tube 0 0) #f) + (('attack 'attack-or-shove 'attack-invinc) + (target-attacked 'attack-or-shove + (the-as attack-info (-> block param 1)) + proc + (the-as touching-shapes-entry (-> block param 0)) + target-tube-hit)) + (else (target-generic-event-handler proc argc message block)))))) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-tube) + (= (-> self next-state name) 'target-tube-jump) + (= (-> self next-state name) 'target-tube-hit))) + (let ((v1-7 (-> self manipy))) + (when v1-7 + (deactivate (-> v1-7 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)))) + (logclear! (-> self control root-prim prim-core action) (collide-action tube)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (send-event *camera* 'clear-slave-option #x6000) + (sound-stop (-> self tube tube-sound-id)) + (set! (-> self tube tube-sound-id) (new 'static 'sound-id)) + (send-event (handle->process (-> self tube tube)) 'end-mode) + (target-exit))) + :code + (behavior ((arg0 handle)) + (send-event *camera* 'set-slave-option #x6000) (target-exit) - ) - ) - :code (behavior ((arg0 handle)) - (send-event *camera* 'set-slave-option #x6000) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set! (-> self control surf) *tube-surface*) - (if (zero? (-> self tube)) - (set! (-> self tube) (new 'process 'tube-info)) - ) - (set! (-> self tube tube) arg0) - (set! (-> self tube entity) #f) - (let ((a0-4 (handle->process arg0))) - (if a0-4 - (set! (-> self tube entity) (-> a0-4 entity)) - ) - ) - (set-time! (-> self tube start-time)) - (set! (-> self tube tube-sound-id) (new-sound-id)) - (set! (-> self tube tube-sound-vol) 0.0) - (target-collide-set! 'tube 0.0) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) (collide-action tube)) - (remove-exit) - (cond - ((< (the-as - float - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - ) - 0.5 - ) - (vector-normalize-copy! (-> self control transv) (-> self tube downtube) 40960.0) - (forward-up-nopitch->quaternion - (-> self control dir-targ) - (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) - (-> self control dynam gravity-normal) - ) - (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)) - ) - (else - (go target-tube) - ) - ) - ) - :post target-post - ) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set! (-> self control surf) *tube-surface*) + (if (zero? (-> self tube)) (set! (-> self tube) (new 'process 'tube-info))) + (set! (-> self tube tube) arg0) + (set! (-> self tube entity) #f) + (let ((a0-4 (handle->process arg0))) (if a0-4 (set! (-> self tube entity) (-> a0-4 entity)))) + (set-time! (-> self tube start-time)) + (set! (-> self tube tube-sound-id) (new-sound-id)) + (set! (-> self tube tube-sound-vol) 0.0) + (target-collide-set! 'tube 0.0) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action tube)) + (remove-exit) + (cond + ((< (the-as float + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube))) + 0.5) + (vector-normalize-copy! (-> self control transv) (-> self tube downtube) 40960.0) + (forward-up-nopitch->quaternion (-> self control dir-targ) + (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> self control transv) 1.0) + (-> self control dynam gravity-normal)) + (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max))) + (else (go target-tube)))) + :post target-post) (defbehavior target-tube-turn-anim target () (let ((gp-0 (the int (-> *display* time-ratio)))) @@ -545,318 +404,236 @@ (set! (-> self control unknown-int40) s5-0) (set! (-> self tube turn-anim-targ) (fmax -20.0 (fmin 20.0 (-> self tube turn-anim-targ)))) (or (not (>= (* (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) 0.0)) - (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - ) + (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ)))) (+! (-> self tube turn-anim-vel) (* (- (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) - (lerp-scale - 20.0 - (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - 30.0 - 60.0 - ) - (-> self control unknown-float01) - 0.0 - 36864.0 - ) - (seconds-per-frame) - ) - ) + (lerp-scale 20.0 + (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) 30.0 60.0) + (-> self control unknown-float01) + 0.0 + 36864.0) + (seconds-per-frame))) (set! (-> self tube turn-anim-vel) - (fmax - -100.0 - (fmin - 100.0 - (* (-> self tube turn-anim-vel) (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 36864.0)) - ) - ) - ) + (fmax -100.0 + (fmin 100.0 (* (-> self tube turn-anim-vel) (lerp-scale 0.96 0.9 (-> self control unknown-float01) 0.0 36864.0))))) (+! (-> self tube turn-anim-frame) (* (-> self tube turn-anim-vel) (seconds-per-frame))) (set! (-> self tube turn-anim-frame) (fmax -20.0 (fmin 20.0 (-> self tube turn-anim-frame)))) (cond ((and (>= (-> self tube turn-anim-frame) 20.0) (>= (-> self tube turn-anim-vel) 0.0)) - (set! (-> self tube turn-anim-vel) 0.0) - ) + (set! (-> self tube turn-anim-vel) 0.0)) ((and (>= -20.0 (-> self tube turn-anim-frame)) (>= 0.0 (-> self tube turn-anim-vel))) - (set! (-> self tube turn-anim-vel) 0.0) - ) - ) - ) - (set-time-ratios *display* (the float gp-0)) - ) + (set! (-> self tube turn-anim-vel) 0.0)))) + (set-time-ratios *display* (the float gp-0))) (ja :group! eichar-tube-turn-ja :num! (identity (ja-aframe (-> self tube turn-anim-frame) 0))) 0 - (none) - ) + (none)) (defstate target-tube (target) - :event (-> target-tube-start event) - :enter (behavior () - (set! (-> self control unknown-surface00) *tube-mods*) - (set! (-> self control surf) *tube-surface*) - ) - :exit (-> target-tube-start exit) - :trans (behavior () - (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) - (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)) - ) - ) - :code (behavior () - (case (ja-group) - ((eichar-duck-high-jump-ja eichar-jump-loop-ja) - (ja-channel-push! 1 (seconds 0.04)) - (ja-no-eval :group! eichar-tube-jump-land-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self tube turn-anim-frame) 0.0) - ) - (else - (ja-channel-push! 1 (seconds 0.04)) - ) - ) - (loop - (set! (-> self tube turn-anim-targ) (* 20.0 (-> self tube mod-x))) - (target-tube-turn-anim) - (suspend) - ) - ) - :post (behavior () - (target-tube-post) - ) - ) + :event + (-> target-tube-start + event) + :enter + (behavior () + (set! (-> self control unknown-surface00) *tube-mods*) + (set! (-> self control surf) *tube-surface*)) + :exit + (-> target-tube-start + exit) + :trans + (behavior () + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1)) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2)) + (pad-buttons x)) + (can-jump? #f)) + (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)))) + :code + (behavior () + (case (ja-group) + ((eichar-duck-high-jump-ja eichar-jump-loop-ja) + (ja-channel-push! 1 (seconds 0.04)) + (ja-no-eval :group! eichar-tube-jump-land-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self tube turn-anim-frame) 0.0)) + (else (ja-channel-push! 1 (seconds 0.04)))) + (loop (set! (-> self tube turn-anim-targ) (* 20.0 (-> self tube mod-x))) + (target-tube-turn-anim) + (suspend))) + :post + (behavior () + (target-tube-post))) (defstate target-tube-jump (target) - :event (-> target-tube-start event) - :enter (behavior ((arg0 float) (arg1 float)) - (set-time! (-> self state-time)) - (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) - (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) - (set! (-> self control unknown-surface00) *tube-jump-mods*) - ) - :exit (-> target-tube-start exit) - :trans (behavior () - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-tube) - ) - (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) - (seek! - (-> self control unknown-float122) - (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) - (seconds-per-frame) - ) - ) - :code (behavior ((arg0 float) (arg1 float)) - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! eichar-duck-high-jump-ja :num! (identity (ja-aframe 16.0 0))) - (let ((f30-0 35.0) - (f28-0 1.0) - ) - (until (ja-done? 0) - (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (f26-0 (- f30-0 (ja-aframe-num 0))) - (f0-8 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 -245760.0))))) - (a0-7 (-> self skel root-channel 0)) - ) - (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) - (let ((v1-17 (and (< 0.0 f24-0) (< 0.0 f26-0)))) - (set! (-> a0-7 param 1) (if v1-17 - f0-8 - f28-0 - ) - ) - ) - (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) - ) - (suspend) - ) - ) - (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) - (loop - (suspend) - (ja :group! eichar-jump-loop-ja :num! (loop!)) - ) - ) - :post (-> target-tube post) - ) + :event + (-> target-tube-start + event) + :enter + (behavior ((arg0 float) (arg1 float)) + (set-time! (-> self state-time)) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (logclear! (-> self control status) (cshape-moving-flags onsurf onground tsurf)) + (set! (-> self control unknown-surface00) *tube-jump-mods*)) + :exit + (-> target-tube-start + exit) + :trans + (behavior () + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-tube)) + (mod-var-jump #t #t (cpad-hold? (-> self control unknown-cpad-info00 number) x) (-> self control transv)) + (seek! (-> self control unknown-float122) + (fmax 0.0 (fmin 1.0 (* 0.00012207031 (+ -2048.0 (-> self control unknown-float01))))) + (seconds-per-frame))) + :code + (behavior ((arg0 float) (arg1 float)) + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! eichar-duck-high-jump-ja :num! (identity (ja-aframe 16.0 0))) + (let ((f30-0 35.0) + (f28-0 1.0)) + (until (ja-done? 0) + (let* ((f24-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (f26-0 (- f30-0 (ja-aframe-num 0))) + (f0-8 (fmin (fmin 3.0 f26-0) (/ (* 5.0 f26-0) (the float (time-to-apex f24-0 -245760.0))))) + (a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (let ((v1-17 (and (< 0.0 f24-0) (< 0.0 f26-0)))) (set! (-> a0-7 param 1) (if v1-17 f0-8 f28-0))) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)) + (suspend))) + (ja-no-eval :group! eichar-jump-loop-ja :num! (loop!) :frame-num 0.0) + (loop (suspend) + (ja :group! eichar-jump-loop-ja :num! (loop!)))) + :post + (-> target-tube + post)) (defstate target-tube-hit (target) - :event (-> target-tube-start event) - :enter (behavior ((arg0 symbol) (arg1 attack-info)) - (send-event - (handle->process (-> self tube tube)) - 'update - (-> self tube centertube) - (-> self tube downtube) - (-> self tube sidetube) - (-> self tube foretube) - ) - ) - :exit (behavior () - (if (!= (-> self next-state name) 'target-tube-death) - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - ) - (logclear! (-> self state-flags) (state-flags sf02 do-not-notice grabbed first-person-mode)) - ((-> target-tube-start exit)) - ) - :code (behavior ((arg0 symbol) (arg1 attack-info)) - (let ((gp-0 (-> self attack-info))) - (set-time! (-> self state-time)) - (logior! (-> self state-flags) (state-flags being-attacked)) - (set-time! (-> self game hit-time)) - (when (not (logtest? (-> arg1 mask) (attack-mask vector))) - (vector-! - (-> arg1 vector) - (vector+float*! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self tube downtube) 20480.0) - (-> self control trans) - ) - (let ((s3-2 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control unknown-vector71) (-> arg1 vector))) - ) + :event + (-> target-tube-start + event) + :enter + (behavior ((arg0 symbol) (arg1 attack-info)) + (send-event (handle->process (-> self tube tube)) + 'update + (-> self tube centertube) + (-> self tube downtube) + (-> self tube sidetube) + (-> self tube foretube))) + :exit + (behavior () + (if (!= (-> self next-state name) 'target-tube-death) (logclear! (-> self state-flags) (state-flags being-attacked dying))) + (logclear! (-> self state-flags) (state-flags sf02 do-not-notice grabbed first-person-mode)) + ((-> target-tube-start exit))) + :code + (behavior ((arg0 symbol) (arg1 attack-info)) + (let ((gp-0 (-> self attack-info))) + (set-time! (-> self state-time)) + (logior! (-> self state-flags) (state-flags being-attacked)) + (set-time! (-> self game hit-time)) + (when (not (logtest? (-> arg1 mask) (attack-mask vector))) + (vector-! (-> arg1 vector) + (vector+float*! (new 'stack-no-clear 'vector) (-> self tube foretube) (-> self tube downtube) 20480.0) + (-> self control trans)) + (let ((s3-2 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control unknown-vector71) (-> arg1 vector)))) + 0.0 + (vector-! s3-2 (-> arg1 vector) (vector-float*! s3-2 (-> self control unknown-vector71) f30-0)) + (let* ((f0-3 (vector-length s3-2)) + (f1-0 f0-3)) + (if (< f30-0 0.0) (set! f30-0 (* 0.5 f30-0))) + (vector+! (-> arg1 vector) + (vector-float*! (-> arg1 vector) (-> self control unknown-vector71) f30-0) + (vector-float*! s3-2 s3-2 (/ f0-3 f1-0))))) + (logior! (-> arg1 mask) (attack-mask vector))) + (when (and (logtest? (-> arg1 mask) (attack-mask mode)) + (= (-> arg1 mode) 'darkeco) + (not (logtest? (-> arg1 mask) (attack-mask shove-up)))) + (set! (-> arg1 shove-up) 12288.0) + (logior! (-> arg1 mask) (attack-mask shove-up))) + (let ((v1-30 gp-0)) + (set! (-> v1-30 attacker) (the-as handle #f)) + (set! (-> v1-30 mode) 'generic) + (set! (-> v1-30 shove-back) 6144.0) + (set! (-> v1-30 shove-up) 12288.0) + (set! (-> v1-30 angle) #f) + (set! (-> v1-30 trans quad) (-> self control trans quad)) + (set! (-> v1-30 control) 0.0) + (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout))) + (combine! gp-0 arg1) + (when (= arg0 'attack) + (pickup-collectable! (-> self fact) (pickup-type eco-green) (- (-> *FACT-bank* health-single-inc)) (the-as handle #f)) + (target-hit-effect gp-0)) + (set! (-> self control unknown-surface00) *smack-mods*) + (target-hit-setup-anim gp-0) + (target-hit-move gp-0 (target-hit-orient gp-0 (-> gp-0 vector)) target-falling-anim-trans 1.0) + (let ((s5-2 (new-stack-vector0)) + (f30-1 (vector-dot (-> self tube downtube) (-> self control transv)))) 0.0 - (vector-! s3-2 (-> arg1 vector) (vector-float*! s3-2 (-> self control unknown-vector71) f30-0)) - (let* ((f0-3 (vector-length s3-2)) - (f1-0 f0-3) - ) - (if (< f30-0 0.0) - (set! f30-0 (* 0.5 f30-0)) - ) - (vector+! - (-> arg1 vector) - (vector-float*! (-> arg1 vector) (-> self control unknown-vector71) f30-0) - (vector-float*! s3-2 s3-2 (/ f0-3 f1-0)) - ) - ) - ) - (logior! (-> arg1 mask) (attack-mask vector)) - ) - (when (and (logtest? (-> arg1 mask) (attack-mask mode)) - (= (-> arg1 mode) 'darkeco) - (not (logtest? (-> arg1 mask) (attack-mask shove-up))) - ) - (set! (-> arg1 shove-up) 12288.0) - (logior! (-> arg1 mask) (attack-mask shove-up)) - ) - (let ((v1-30 gp-0)) - (set! (-> v1-30 attacker) (the-as handle #f)) - (set! (-> v1-30 mode) 'generic) - (set! (-> v1-30 shove-back) 6144.0) - (set! (-> v1-30 shove-up) 12288.0) - (set! (-> v1-30 angle) #f) - (set! (-> v1-30 trans quad) (-> self control trans quad)) - (set! (-> v1-30 control) 0.0) - (set! (-> v1-30 invinc-time) (-> *TARGET-bank* hit-invulnerable-timeout)) - ) - (combine! gp-0 arg1) - (when (= arg0 'attack) - (pickup-collectable! - (-> self fact) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - (target-hit-effect gp-0) - ) - (set! (-> self control unknown-surface00) *smack-mods*) - (target-hit-setup-anim gp-0) - (target-hit-move gp-0 (target-hit-orient gp-0 (-> gp-0 vector)) target-falling-anim-trans 1.0) - (let ((s5-2 (new-stack-vector0)) - (f30-1 (vector-dot (-> self tube downtube) (-> self control transv))) - ) - 0.0 - (vector-! s5-2 (-> self control transv) (vector-float*! s5-2 (-> self tube downtube) f30-1)) - (let ((f0-14 (vector-length s5-2)) - (f2-2 (fmax 40960.0 f30-1)) - (f1-2 0.0) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self tube downtube) f2-2) - (vector-float*! s5-2 s5-2 (/ f1-2 f0-14)) - ) - ) - ) - (let ((s5-3 forward-up-nopitch->quaternion) - (s4-2 (-> self control dir-targ)) - (t9-9 vector-normalize!) - (a0-35 (new-stack-vector0)) - ) - (set! (-> a0-35 quad) (-> self control transv quad)) - (s5-3 s4-2 (t9-9 a0-35 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ))) - ) - (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) - (go target-tube-death (-> gp-0 mode)) - ) - ) - (go target-tube) - ) - :post target-post - ) + (vector-! s5-2 (-> self control transv) (vector-float*! s5-2 (-> self tube downtube) f30-1)) + (let ((f0-14 (vector-length s5-2)) + (f2-2 (fmax 40960.0 f30-1)) + (f1-2 0.0)) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self tube downtube) f2-2) + (vector-float*! s5-2 s5-2 (/ f1-2 f0-14))))) + (let ((s5-3 forward-up-nopitch->quaternion) + (s4-2 (-> self control dir-targ)) + (t9-9 vector-normalize!) + (a0-35 (new-stack-vector0))) + (set! (-> a0-35 quad) (-> self control transv quad)) + (s5-3 s4-2 (t9-9 a0-35 1.0) (vector-y-quaternion! (new-stack-vector0) (-> self control dir-targ)))) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact health))) (go target-tube-death (-> gp-0 mode)))) + (go target-tube)) + :post target-post) (defstate target-tube-death (target) - :event (-> target-death event) - :exit (behavior () - (logclear! (-> self state-flags) (state-flags being-attacked dying)) - (target-exit) - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ((-> target-tube-start exit)) - ) - :code (behavior ((arg0 symbol)) - (local-vars (v1-40 symbol)) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) - (apply-settings *setting-control*) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-surface00) *neutral-mods*) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! eichar-deatha-ja :num! (seek! (ja-aframe 134.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (compute-alignment! (-> self align)) - (let ((gp-2 (new 'stack-no-clear 'vector))) - (when (not (logtest? (-> self align flags) (align-flags disabled))) - (vector-matrix*! gp-2 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) - (vector-float*! (-> self control transv) gp-2 (-> *display* frames-per-second)) - ) - ) - (suspend) - (ja :num! (seek! (ja-aframe 134.0 0))) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set-time! (-> self state-time)) - (until v1-40 - (suspend) - (set! v1-40 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?)))) - ) - (go target-tube) - ) - :post target-no-stick-post - ) + :event + (-> target-death + event) + :exit + (behavior () + (logclear! (-> self state-flags) (state-flags being-attacked dying)) + (target-exit) + (remove-setting! 'process-mask) + (apply-settings *setting-control*) + ((-> target-tube-start exit))) + :code + (behavior ((arg0 symbol)) + (local-vars (v1-40 symbol)) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (add-setting! 'process-mask 'set 0.0 (process-mask enemy platform projectile death)) + (apply-settings *setting-control*) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-surface00) *neutral-mods*) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! eichar-deatha-ja :num! (seek! (ja-aframe 134.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (compute-alignment! (-> self align)) + (let ((gp-2 (new 'stack-no-clear 'vector))) + (when (not (logtest? (-> self align flags) (align-flags disabled))) + (vector-matrix*! gp-2 (the-as vector (-> self align delta)) (-> self control unknown-matrix01)) + (vector-float*! (-> self control transv) gp-2 (-> *display* frames-per-second)))) + (suspend) + (ja :num! (seek! (ja-aframe 134.0 0)))) + (set! (-> self control transv quad) (the-as uint128 0)) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set-time! (-> self state-time)) + (until v1-40 + (suspend) + (set! v1-40 (and (time-elapsed? (-> self state-time) (seconds 1)) (not (movie?))))) + (go target-tube)) + :post target-no-stick-post) (deftype slide-control (process-drawable) - ((target handle) - (pos float) - (trans vector :inline) - (rot vector :inline) - (side vector :inline) - ) + ((target handle) + (pos float) + (trans vector :inline) + (rot vector :inline) + (side vector :inline)) (:state-methods - slide-control-watch - slide-control-ride - ) - ) - + slide-control-watch + slide-control-ride)) (defun distance-from-tangent ((arg0 path-control) (arg1 float) (arg2 vector) (arg3 vector) (arg4 vector) (arg5 vector)) (eval-path-curve-div! arg0 arg2 arg1 'interp) @@ -867,15 +644,9 @@ (vector-rotate-y! arg4 arg3 -16384.0) (set! (-> arg4 y) 0.0) (let* ((a2-5 (vector+! (new 'stack-no-clear 'vector) arg2 arg4)) - (f0-3 (vector-line-distance-point! arg5 arg2 a2-5 s2-1)) - ) - (if (< 0.0 (vector-dot arg3 (vector-! (new 'stack-no-clear 'vector) arg5 s2-1))) - (set! f0-3 (- f0-3)) - ) - f0-3 - ) - ) - ) + (f0-3 (vector-line-distance-point! arg5 arg2 a2-5 s2-1))) + (if (< 0.0 (vector-dot arg3 (vector-! (new 'stack-no-clear 'vector) arg5 s2-1))) (set! f0-3 (- f0-3))) + f0-3))) (defbehavior find-target-point slide-control ((arg0 vector)) (local-vars (f0-2 float)) @@ -883,105 +654,70 @@ (s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'vector)) (f28-0 (+ -0.1 (-> self pos))) - (f26-0 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0)) - ) + (f26-0 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0))) 0.0 (let ((f30-0 f28-0)) (until (or (and (< f26-0 f0-2) (>= f0-2 0.0)) (< (the float (+ (-> self path curve num-cverts) -1)) f28-0)) (set! f0-2 (distance-from-tangent (-> self path) f28-0 s4-0 s5-0 gp-0 arg0)) (when (or (>= f26-0 f0-2) (< f26-0 0.0)) (set! f26-0 f0-2) - (set! f30-0 f28-0) - ) - (set! f28-0 (+ 0.01 f28-0)) - ) + (set! f30-0 f28-0)) + (set! f28-0 (+ 0.01 f28-0))) (distance-from-tangent (-> self path) f30-0 s4-0 s5-0 gp-0 arg0) (set! (-> self trans quad) (-> s4-0 quad)) (set! (-> self rot quad) (-> s5-0 quad)) (set! (-> self side quad) (-> gp-0 quad)) - (set! (-> self pos) f30-0) - ) - ) - (-> self pos) - ) + (set! (-> self pos) f30-0))) + (-> self pos)) (defstate slide-control-watch (slide-control) :virtual #t - :enter (behavior () - (eval-path-curve-div! (-> self path) (-> self trans) 0.2 'interp) - (eval-path-curve-div! (-> self path) (-> self root trans) 0.2 'interp) - (path-control-method-12 (-> self path) (-> self rot) 0.2) - (set! (-> self pos) 0.2) - ) - :trans (behavior () - (if (and (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (< 0.0 (vector-dot - (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) - (-> self rot) - ) - ) - (send-event *target* 'change-mode 'tube self) - ) - ) - (go-virtual slide-control-ride) - ) - ) - :code anim-loop - ) + :enter + (behavior () + (eval-path-curve-div! (-> self path) (-> self trans) 0.2 'interp) + (eval-path-curve-div! (-> self path) (-> self root trans) 0.2 'interp) + (path-control-method-12 (-> self path) (-> self rot) 0.2) + (set! (-> self pos) 0.2)) + :trans + (behavior () + (if (and (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (< 0.0 (vector-dot (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) (-> self rot))) + (send-event *target* 'change-mode 'tube self))) + (go-virtual slide-control-ride))) + :code anim-loop) (defstate slide-control-ride (slide-control) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (go-virtual slide-control-watch) - ) - (('update) - (let* ((s4-0 proc) - (gp-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) - (if gp-0 - (find-target-point (-> (the-as process-drawable gp-0) root trans)) - ) - (set! (-> (the-as vector (-> block param 0)) quad) (-> self trans quad)) - (set! (-> (the-as vector (-> block param 1)) quad) (-> self rot quad)) - (set! (-> (the-as vector (-> block param 2)) quad) (-> self side quad)) - (eval-path-curve-div! (-> self path) (the-as vector (-> block param 3)) (+ 0.2 (-> self pos)) 'interp) - (if (>= (-> self pos) (+ -0.2 (the float (+ (-> self path curve num-cverts) -1)))) - (send-event gp-0 'end-mode) - ) - ) - (-> self pos) - ) - ) - ) - :enter (behavior () - (set! (-> self pos) 0.0) - (set! (-> self target) (process->handle *target*)) - (process-entity-status! self (entity-perm-status bit-3) #t) - ) - :exit (behavior () - (set! (-> self target) (the-as handle #f)) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - :trans (behavior () - (let ((gp-0 (handle->process (-> self target)))) - (cond - ((if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) - gp-0 - ) - ) - (else - (go-virtual slide-control-watch) - ) - ) - ) - ) - :code anim-loop - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (go-virtual slide-control-watch)) + (('update) + (let* ((s4-0 proc) + (gp-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) + (if gp-0 (find-target-point (-> (the-as process-drawable gp-0) root trans))) + (set! (-> (the-as vector (-> block param 0)) quad) (-> self trans quad)) + (set! (-> (the-as vector (-> block param 1)) quad) (-> self rot quad)) + (set! (-> (the-as vector (-> block param 2)) quad) (-> self side quad)) + (eval-path-curve-div! (-> self path) (the-as vector (-> block param 3)) (+ 0.2 (-> self pos)) 'interp) + (if (>= (-> self pos) (+ -0.2 (the float (+ (-> self path curve num-cverts) -1)))) (send-event gp-0 'end-mode))) + (-> self pos)))) + :enter + (behavior () + (set! (-> self pos) 0.0) + (set! (-> self target) (process->handle *target*)) + (process-entity-status! self (entity-perm-status bit-3) #t)) + :exit + (behavior () + (set! (-> self target) (the-as handle #f)) + (process-entity-status! self (entity-perm-status bit-3) #f)) + :trans + (behavior () + (let ((gp-0 (handle->process (-> self target)))) + (cond + ((if (and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable)) gp-0)) + (else (go-virtual slide-control-watch))))) + :code anim-loop) (defmethod init-from-entity! ((this slide-control) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) @@ -991,5 +727,4 @@ (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> this target) (the-as handle #f)) (go (method-of-object this slide-control-watch)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/wall-plat.gc b/goal_src/jak1/levels/sunken/wall-plat.gc index 5c4de5f3cd..d2b1c89b37 100644 --- a/goal_src/jak1/levels/sunken/wall-plat.gc +++ b/goal_src/jak1/levels/sunken/wall-plat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") @@ -14,176 +13,119 @@ ;; DECOMP BEGINS (deftype wall-plat (process-drawable) - ((root collide-shape-moving :override) - (use-sync? symbol) - (extended-amount float) - (in-trans vector :inline) - (out-trans vector :inline) - (sync sync-info-paused :inline) - ) + ((root collide-shape-moving :override) + (use-sync? symbol) + (extended-amount float) + (in-trans vector :inline) + (out-trans vector :inline) + (sync sync-info-paused :inline)) (:states - wall-plat-extended - wall-plat-extending - wall-plat-retracted - wall-plat-retracting - wall-plat-sync-idle - ) - ) + wall-plat-extended + wall-plat-extending + wall-plat-retracted + wall-plat-retracting + wall-plat-sync-idle)) - -(defskelgroup *wall-plat-sg* wall-plat wall-plat-lod0-jg -1 - ((wall-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 1 -2 0 6.5) - ) +(defskelgroup *wall-plat-sg* + wall-plat + wall-plat-lod0-jg + -1 + ((wall-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 1 -2 0 6.5)) (defstate wall-plat-retracted (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (go wall-plat-extending) - ) - ) - ) - :code (behavior () - (set! (-> self extended-amount) 0.0) - (move-to-point! (-> self root) (-> self in-trans)) - (transform-post) - (clear-collide-with-as (-> self root)) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (go wall-plat-extending)))) + :code + (behavior () + (set! (-> self extended-amount) 0.0) + (move-to-point! (-> self root) (-> self in-trans)) + (transform-post) + (clear-collide-with-as (-> self root)) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate wall-plat-extending (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (sound-play "wall-plat") - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (sound-play "wall-plat")) :trans rider-trans - :code (behavior () - (restore-collide-with-as (-> self root)) - (set-time! (-> self state-time)) - (loop - (seek! (-> self extended-amount) 1.0 (* 2.5 (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) - (move-to-point! (-> self root) gp-0) - ) - (suspend) - (if (= (-> self extended-amount) 1.0) - (go wall-plat-extended) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (restore-collide-with-as (-> self root)) + (set-time! (-> self state-time)) + (loop (seek! (-> self extended-amount) 1.0 (* 2.5 (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) + (move-to-point! (-> self root) gp-0)) + (suspend) + (if (= (-> self extended-amount) 1.0) (go wall-plat-extended)))) + :post rider-post) (defstate wall-plat-extended (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('untrigger) - (go wall-plat-retracting) - ) - ) - ) - :code (behavior () - (set! (-> self extended-amount) 1.0) - (move-to-point! (-> self root) (-> self out-trans)) - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('untrigger) (go wall-plat-retracting)))) + :code + (behavior () + (set! (-> self extended-amount) 1.0) + (move-to-point! (-> self root) (-> self out-trans)) + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep-code)) + (suspend)))) (defstate wall-plat-retracting (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (sound-play "wall-plat") - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (sound-play "wall-plat")) :trans rider-trans - :code (behavior () - (set-time! (-> self state-time)) - (loop - (seek! (-> self extended-amount) 0.0 (* 2.5 (seconds-per-frame))) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) - (move-to-point! (-> self root) gp-0) - ) - (suspend) - (if (= (-> self extended-amount) 0.0) - (go wall-plat-retracted) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop (seek! (-> self extended-amount) 0.0 (* 2.5 (seconds-per-frame))) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector-lerp! gp-0 (-> self in-trans) (-> self out-trans) (-> self extended-amount)) + (move-to-point! (-> self root) gp-0)) + (suspend) + (if (= (-> self extended-amount) 0.0) (go wall-plat-retracted)))) + :post rider-post) (defstate wall-plat-sync-idle (wall-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) - :enter (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) + :enter + (behavior () + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) :trans rider-trans - :code (behavior () - (let ((gp-0 #f)) - (loop - (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-lerp! s5-0 (-> self in-trans) (-> self out-trans) f30-0) - (move-to-point! (-> self root) s5-0) - ) - (cond - ((= f30-0 0.0) - (set! gp-0 #f) - (clear-collide-with-as (-> self root)) - ) - ((= f30-0 1.0) - (set! gp-0 #f) - (restore-collide-with-as (-> self root)) - ) - (else - (when (not gp-0) - (sound-play "wall-plat") - (set! gp-0 #t) - ) - (restore-collide-with-as (-> self root)) - ) - ) - ) - (suspend) - ) - ) - ) - :post rider-post - ) + :code + (behavior () + (let ((gp-0 #f)) + (loop (let ((f30-0 (get-current-phase-with-mirror (-> self sync)))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (vector-lerp! s5-0 (-> self in-trans) (-> self out-trans) f30-0) + (move-to-point! (-> self root) s5-0)) + (cond + ((= f30-0 0.0) (set! gp-0 #f) (clear-collide-with-as (-> self root))) + ((= f30-0 1.0) (set! gp-0 #f) (restore-collide-with-as (-> self root))) + (else (when (not gp-0) (sound-play "wall-plat") (set! gp-0 #t)) (restore-collide-with-as (-> self root))))) + (suspend)))) + :post rider-post) (defmethod init-from-entity! ((this wall-plat) (arg0 entity-actor)) (set! (-> this extended-amount) 0.0) @@ -191,9 +133,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -202,45 +142,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *wall-plat-sg* '()) + (initialize-skeleton this *wall-plat-sg* ()) (logior! (-> this skel status) (janim-status inited)) (set! (-> this use-sync?) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.2 0.2)) (let ((f30-0 (quaternion-y-angle (-> this root quat))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (set-vector! s4-1 0.0 0.0 (+ 1638.4 (res-lump-float arg0 'tunemeters)) 1.0) (vector-rotate-around-y! s4-1 s4-1 f30-0) (vector+! (-> this out-trans) (-> this root trans) s4-1) (set-vector! s4-1 0.0 0.0 20480.0 1.0) (vector-rotate-around-y! s4-1 s4-1 f30-0) - (vector+! (-> this in-trans) (-> this out-trans) s4-1) - ) + (vector+! (-> this in-trans) (-> this out-trans) s4-1)) (ja-channel-push! 1 0) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (cond - ((-> this use-sync?) - (logclear! (-> this mask) (process-mask actor-pause)) - (go wall-plat-sync-idle) - ) - (else - (go wall-plat-retracted) - ) - ) - (none) - ) + ((-> this use-sync?) (logclear! (-> this mask) (process-mask actor-pause)) (go wall-plat-sync-idle)) + (else (go wall-plat-retracted))) + (none)) diff --git a/goal_src/jak1/levels/sunken/wedge-plats.gc b/goal_src/jak1/levels/sunken/wedge-plats.gc index f7a91b1888..804b462495 100644 --- a/goal_src/jak1/levels/sunken/wedge-plats.gc +++ b/goal_src/jak1/levels/sunken/wedge-plats.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/baseplat.gc") ;; name: wedge-plats.gc @@ -9,36 +8,29 @@ ;; dgos: L1, SUN, SUNKEN (declare-type wedge-plat-outer process) + (declare-type wedge-plat-master process) + (declare-type wedge-plat process) ;; DECOMP BEGINS (deftype wedge-plat-master (process) - ((center vector :inline) - (rotspeed float) - (rotate-inner float) - (rotate-outer float) - ) + ((center vector :inline) + (rotspeed float) + (rotate-inner float) + (rotate-outer float)) (:states - wedge-plat-master-idle - ) - ) - + wedge-plat-master-idle)) (defstate wedge-plat-master-idle (wedge-plat-master) - :code (behavior () - (loop - (set! (-> self rotate-inner) - (the float (sar (shl (the int (+ (-> self rotate-inner) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48)) - ) - (set! (-> self rotate-outer) - (the float (sar (shl (the int (- (-> self rotate-outer) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48)) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (set! (-> self rotate-inner) + (the float (sar (shl (the int (+ (-> self rotate-inner) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48))) + (set! (-> self rotate-outer) + (the float (sar (shl (the int (- (-> self rotate-outer) (* (-> self rotspeed) (seconds-per-frame)))) 48) 48))) + (suspend)))) (defmethod init-from-entity! ((this wedge-plat-master) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -49,135 +41,91 @@ (set! (-> this rotate-outer) 0.0) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-master-idle) - (none) - ) + (none)) (deftype wedge-plat (baseplat) - ((master wedge-plat-master) - (distance float) - (offset float) - ) + ((master wedge-plat-master) + (distance float) + (offset float)) (:methods - (wedge-plat-method-27 (_type_) symbol) - ) + (wedge-plat-method-27 (_type_) symbol)) (:states - wedge-plat-idle - wedge-plat-tip - ) - ) + wedge-plat-idle + wedge-plat-tip)) - -(defskelgroup *wedge-plat-sg* wedge-plat wedge-plat-lod0-jg wedge-plat-idle-ja - ((wedge-plat-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 6) - ) +(defskelgroup *wedge-plat-sg* + wedge-plat + wedge-plat-lod0-jg + wedge-plat-idle-ja + ((wedge-plat-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 6)) (defmethod wedge-plat-method-27 ((this wedge-plat)) (let* ((a0-1 (-> this master)) - (v1-0 (if a0-1 - (-> (the-as process-drawable (-> a0-1 ppointer)) brother) - ) - ) - ) + (v1-0 (if a0-1 (-> (the-as process-drawable (-> a0-1 ppointer)) brother)))) (when v1-0 (let ((s4-0 (&-> v1-0 27)) (f30-0 (-> this distance)) (f28-0 (the float (sar (shl (the int (+ (the-as float (-> v1-0 32)) (-> this offset))) 48) 48))) - (s5-0 #f) - ) - (quaternion-axis-angle! - (-> this root quat) - 0.0 - 1.0 - 0.0 - (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48)) - ) + (s5-0 #f)) + (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48))) (set! (-> this basetrans x) (+ (the-as float (-> s4-0 0)) (* f30-0 (cos f28-0)))) (set! (-> this basetrans y) (the-as float (-> s4-0 1))) (set! (-> this basetrans z) (+ (the-as float (-> s4-0 2)) (* f30-0 (sin f28-0)))) - (let ((f0-16 (cos f28-0))) - (if (or (< 0.95 f0-16) (< f0-16 -0.95)) - (set! s5-0 #t) - ) - ) - s5-0 - ) - ) - ) - ) + (let ((f0-16 (cos f28-0))) (if (or (< 0.95 f0-16) (< f0-16 -0.95)) (set! s5-0 #t))) + s5-0)))) (defstate wedge-plat-idle (wedge-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) :trans plat-trans - :code (behavior () - (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) - (loop - (if (wedge-plat-method-27 self) - (go wedge-plat-tip) - ) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) + (loop (if (wedge-plat-method-27 self) (go wedge-plat-tip)) + (suspend))) + :post plat-post) (defstate wedge-plat-tip (wedge-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - #f - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('touch) (send-event proc 'no-look-around (seconds 1.5)) #f))) :trans plat-trans - :code (behavior () - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 100.0 0))) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) - (wedge-plat-method-27 self) - (suspend) - ) - (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 153.0 0))) - ) - (go wedge-plat-idle) - ) - :post plat-post - ) + :code + (behavior () + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 100.0 0)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) + (wedge-plat-method-27 self) + (suspend)) + (ja-no-eval :group! wedge-plat-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 153.0 0)))) + (go wedge-plat-idle)) + :post plat-post) (defmethod init-from-entity! ((this wedge-plat) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -186,14 +134,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *wedge-plat-sg* '()) + (initialize-skeleton this *wedge-plat-sg* ()) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root)) (baseplat-method-21 this) @@ -202,128 +148,86 @@ (set! (-> this distance) (res-lump-float arg0 'distance :default 36864.0)) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-idle) - (none) - ) + (none)) -(deftype wedge-plat-outer (wedge-plat) - () +(deftype wedge-plat-outer (wedge-plat) () (:states - wedge-plat-outer-idle - wedge-plat-outer-tip - ) - ) + wedge-plat-outer-idle + wedge-plat-outer-tip)) - -(defskelgroup *wedge-plat-outer-sg* wedge-plat-outer wedge-plat-outer-lod0-jg wedge-plat-outer-idle-ja - ((wedge-plat-outer-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *wedge-plat-outer-sg* + wedge-plat-outer + wedge-plat-outer-lod0-jg + wedge-plat-outer-idle-ja + ((wedge-plat-outer-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod wedge-plat-method-27 ((this wedge-plat-outer)) (let* ((a0-1 (-> this master)) - (v1-0 (if a0-1 - (-> (the-as process-drawable (-> a0-1 ppointer)) brother) - ) - ) - ) + (v1-0 (if a0-1 (-> (the-as process-drawable (-> a0-1 ppointer)) brother)))) (when v1-0 (let ((s4-0 (&-> v1-0 27)) (f30-0 (-> this distance)) (f28-0 (the float (sar (shl (the int (+ (the-as float (-> v1-0 33)) (-> this offset))) 48) 48))) - (s5-0 #f) - ) - (quaternion-axis-angle! - (-> this root quat) - 0.0 - 1.0 - 0.0 - (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48)) - ) + (s5-0 #f)) + (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 (the float (sar (shl (the int (- 49152.0 f28-0)) 48) 48))) (set! (-> this basetrans x) (+ (the-as float (-> s4-0 0)) (* f30-0 (cos f28-0)))) (set! (-> this basetrans y) (the-as float (-> s4-0 1))) (set! (-> this basetrans z) (+ (the-as float (-> s4-0 2)) (* f30-0 (sin f28-0)))) - (let ((f0-16 (sin f28-0))) - (if (or (< 0.95 f0-16) (< f0-16 -0.95)) - (set! s5-0 #t) - ) - ) - s5-0 - ) - ) - ) - ) + (let ((f0-16 (sin f28-0))) (if (or (< 0.95 f0-16) (< f0-16 -0.95)) (set! s5-0 #t))) + s5-0)))) (defstate wedge-plat-outer-idle (wedge-plat-outer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)))) :trans plat-trans - :code (behavior () - (loop - (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) - (if (wedge-plat-method-27 self) - (go wedge-plat-outer-tip) - ) - (suspend) - ) - ) - :post plat-post - ) + :code + (behavior () + (loop (ja :num-func num-func-identity :frame-num (ja-aframe 0.0 0)) + (if (wedge-plat-method-27 self) (go wedge-plat-outer-tip)) + (suspend))) + :post plat-post) (defstate wedge-plat-outer-tip (wedge-plat-outer) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('bonk) - (baseplat-method-22 self) - ) - (('touch) - (send-event proc 'no-look-around (seconds 1.5)) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('bonk) (baseplat-method-22 self)) + (('touch) (send-event proc 'no-look-around (seconds 1.5))))) :trans plat-trans - :code (behavior () - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 60.0 0))) - ) - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 100.0 0))) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) - (wedge-plat-method-27 self) - (suspend) - ) - (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) - (until (ja-done? 0) - (wedge-plat-method-27 self) - (suspend) - (ja :num! (seek! (ja-aframe 153.0 0))) - ) - (go wedge-plat-outer-idle) - ) - :post plat-post - ) + :code + (behavior () + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 60.0 0)) :frame-num (ja-aframe 0.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 60.0 0)))) + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 100.0 0)) :frame-num (ja-aframe 60.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 100.0 0)))) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (ja :num-func num-func-identity :frame-num (ja-aframe 100.0 0)) + (wedge-plat-method-27 self) + (suspend)) + (ja-no-eval :group! wedge-plat-outer-tip-ja :num! (seek! (ja-aframe 153.0 0)) :frame-num (ja-aframe 100.0 0)) + (until (ja-done? 0) + (wedge-plat-method-27 self) + (suspend) + (ja :num! (seek! (ja-aframe 153.0 0)))) + (go wedge-plat-outer-idle)) + :post plat-post) (defmethod init-from-entity! ((this wedge-plat-outer) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -332,14 +236,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *wedge-plat-sg* '()) + (initialize-skeleton this *wedge-plat-sg* ()) (logior! (-> this skel status) (janim-status inited)) (update-transforms! (-> this root)) (baseplat-method-21 this) @@ -348,5 +250,4 @@ (set! (-> this distance) (res-lump-float arg0 'distance :default 69632.0)) (logclear! (-> this mask) (process-mask actor-pause)) (go wedge-plat-outer-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/sunken/whirlpool.gc b/goal_src/jak1/levels/sunken/whirlpool.gc index 301f379deb..81815652f5 100644 --- a/goal_src/jak1/levels/sunken/whirlpool.gc +++ b/goal_src/jak1/levels/sunken/whirlpool.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SUN.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") @@ -12,282 +11,273 @@ ;; DECOMP BEGINS (deftype whirlpool (process-drawable) - ((root collide-shape :override) - (spin-ry float) - (spin-speed-idle float) - (spin-speed-delta float) - (sync sync-info-paused :inline) - ) + ((root collide-shape :override) + (spin-ry float) + (spin-speed-idle float) + (spin-speed-delta float) + (sync sync-info-paused :inline)) (:methods - (whirlpool-method-20 (_type_ float) cshape-moving-flags) - ) + (whirlpool-method-20 (_type_ float) cshape-moving-flags)) (:states - whirlpool-idle - ) - ) + whirlpool-idle)) - -(defskelgroup *whirlpool-sg* whirlpool whirlpool-lod0-jg whirlpool-idle-ja - ((whirlpool-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0.6 0 3) - ) +(defskelgroup *whirlpool-sg* + whirlpool + whirlpool-lod0-jg + whirlpool-idle-ja + ((whirlpool-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0.6 0 3)) (defpartgroup group-whirlpool-swirl :id 447 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1739 :fade-after (meters 60) :falloff-to (meters 60) :binding 1737) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - ) - ) + :parts + ((sp-item 1739 :fade-after (meters 60) :falloff-to (meters 60) :binding 1737) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)))) (defpart 1739 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters 6.6)) - (:scale-x (meters 0.2)) - (:scale-y :copy scale-x) - (:g 0.0) - (:a 128.0) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters 6.6)) + (:scale-x (meters 0.2)) + (:scale-y :copy scale-x) + (:g 0.0) + (:a 128.0) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3)))) (defpart 1737 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 4) (meters 1)) - (:scale-x (meters 3.2)) - (:scale-y (meters 1)) - (:r 150.0) - (:g 150.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.01)) - (:scalevel-x (meters -0.004888889)) - (:fade-a 0.42666668) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1740) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 4) (meters 1)) + (:scale-x (meters 3.2)) + (:scale-y (meters 1)) + (:r 150.0) + (:g 150.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.01)) + (:scalevel-x (meters -0.004888889)) + (:fade-a 0.42666668) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1740))) (defpart 1740 - :init-specs ((:fade-a 0.0)) - ) + :init-specs ((:fade-a 0.0))) (defpart 1738 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.3) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 32.0) - (:fade-a -1.8285716) - (:timer (seconds 0.1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.3) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 32.0) + (:fade-a -1.8285716) + (:timer (seconds 0.1)) + (:flags (bit2 bit3)))) (defmethod whirlpool-method-20 ((this whirlpool) (arg0 float)) (let* ((gp-0 (target-pos 0)) - (f28-0 (vector-vector-xz-distance (-> this root trans) gp-0)) - ) + (f28-0 (vector-vector-xz-distance (-> this root trans) gp-0))) (when (< f28-0 40960.0) (let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0))) (f26-0 (* f0-2 f0-2)) @@ -295,8 +285,7 @@ (f30-0 (* 0.5 f26-0 arg0 (seconds-per-frame))) (f24-0 (+ f0-7 f30-0)) (f28-1 (- f28-0 (fmin f28-0 (* 0.16874999 f26-0 (fabs arg0) (seconds-per-frame))))) - (s4-1 (new 'stack-no-clear 'vector)) - ) + (s4-1 (new 'stack-no-clear 'vector))) (set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0) (vector+! s4-1 s4-1 (-> this root trans)) (set! (-> s4-1 x) (* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))) @@ -305,52 +294,30 @@ (let ((gp-1 (-> *target* control))) (send-event (-> gp-1 process) 'rotate-y-angle f30-0) (fill-cache-for-shape! gp-1 8192.0 (-> gp-1 root-prim collide-with)) - (let ((s3-0 (-> gp-1 status))) - (integrate-and-collide! gp-1 s4-1) - (set! (-> gp-1 status) s3-0) - s3-0 - ) - ) - ) - ) - ) - ) + (let ((s3-0 (-> gp-1 status))) (integrate-and-collide! gp-1 s4-1) (set! (-> gp-1 status) s3-0) s3-0)))))) (defstate whirlpool-idle (whirlpool) - :trans (behavior () - (let ((f30-0 - (+ (* (get-current-phase-with-mirror (-> self sync)) (-> self spin-speed-delta)) (-> self spin-speed-idle)) - ) - ) - (when (>= (fabs f30-0) 45511.11) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self root trans quad)) - (+! (-> a1-0 y) -8192.0) - (spawn (-> self part) a1-0) - ) - ) - (+! (-> self spin-ry) (* f30-0 (seconds-per-frame))) - (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self spin-ry)) - (if (and *target* (logtest? (-> *target* water flags) (water-flags wt09))) - (whirlpool-method-20 self f30-0) - ) - (update! (-> self sound)) - (let ((f0-9 (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))))) - (update-vol! (-> self sound) (the int (* 100.0 f0-9))) - ) - ) - ) + :trans + (behavior () + (let ((f30-0 (+ (* (get-current-phase-with-mirror (-> self sync)) (-> self spin-speed-delta)) (-> self spin-speed-idle)))) + (when (>= (fabs f30-0) 45511.11) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self root trans quad)) + (+! (-> a1-0 y) -8192.0) + (spawn (-> self part) a1-0))) + (+! (-> self spin-ry) (* f30-0 (seconds-per-frame))) + (quaternion-axis-angle! (-> self root quat) 0.0 1.0 0.0 (-> self spin-ry)) + (if (and *target* (logtest? (-> *target* water flags) (water-flags wt09))) (whirlpool-method-20 self f30-0)) + (update! (-> self sound)) + (let ((f0-9 (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))))) + (update-vol! (-> self sound) (the int (* 100.0 f0-9)))))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod deactivate ((this whirlpool)) - (if (nonzero? (-> this sound)) - (stop! (-> this sound)) - ) + (if (nonzero? (-> this sound)) (stop! (-> this sound))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) (defmethod init-from-entity! ((this whirlpool) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) @@ -362,43 +329,29 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *whirlpool-sg* '()) + (initialize-skeleton this *whirlpool-sg* ()) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (let ((f30-0 32768.0) - (f28-0 145635.56) - ) + (f28-0 145635.56)) (set! sv-16 (new 'static 'res-tag)) (let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16)))) (when v1-17 (set! f30-0 (-> v1-17 0)) - (set! f28-0 (-> v1-17 1)) - ) - ) + (set! f28-0 (-> v1-17 1)))) (set! (-> this spin-speed-idle) f30-0) - (set! (-> this spin-speed-delta) (- f28-0 f30-0)) - ) + (set! (-> this spin-speed-delta) (- f28-0 f30-0))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 447) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "whirlpool" :fo-max 55) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "whirlpool" :fo-max 55) (-> this root trans))) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (ja-post) (update-transforms! (-> this root)) (go whirlpool-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/billy.gc b/goal_src/jak1/levels/swamp/billy.gc index d6b95f6739..4ecd17c595 100644 --- a/goal_src/jak1/levels/swamp/billy.gc +++ b/goal_src/jak1/levels/swamp/billy.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "levels/swamp/swamp-rat.gc") ;; name: billy.gc @@ -13,225 +12,174 @@ ;; DECOMP BEGINS (deftype billy (process-taskable) - ((child-override (pointer billy-snack) :overlay-at child) - (farthy handle) - (path-data path-control 3) - (path-snacks path-control :overlay-at (-> path-data 0)) - (path-starts path-control :overlay-at (-> path-data 1)) - (path-waypts path-control :overlay-at (-> path-data 2)) - (passed-last-stage symbol) - (spawn-rats symbol) - (current-wave int32) - (wave-start-time time-frame) - (num-snacks int32) - (num-rats int32) - (max-rats int32) - (rat-speed float) - (offending-rat handle) - ) + ((child-override (pointer billy-snack) :overlay-at child) + (farthy handle) + (path-data path-control 3) + (path-snacks path-control :overlay-at (-> path-data 0)) + (path-starts path-control :overlay-at (-> path-data 1)) + (path-waypts path-control :overlay-at (-> path-data 2)) + (passed-last-stage symbol) + (spawn-rats symbol) + (current-wave int32) + (wave-start-time time-frame) + (num-snacks int32) + (num-rats int32) + (max-rats int32) + (rat-speed float) + (offending-rat handle)) (:states - billy-done - billy-playing - ) - ) - + billy-done + billy-playing)) (defmethod relocate ((this billy) (arg0 int)) (countdown (v1-0 3) - (if (nonzero? (-> this path-data v1-0)) - (&+! (-> this path-data v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path-data v1-0)) (&+! (-> this path-data v1-0) arg0))) + (call-parent-method this arg0)) (deftype billy-snack (process-drawable) - ((num-rats int32) - ) + ((num-rats int32)) (:states - billy-snack-eat - billy-snack-idle - ) - ) + billy-snack-eat + billy-snack-idle)) - -(defskelgroup *farthy-snack-sg* farthy-snack farthy-snack-lod0-jg farthy-snack-idle-ja - ((farthy-snack-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *farthy-snack-sg* + farthy-snack + farthy-snack-lod0-jg + farthy-snack-idle-ja + ((farthy-snack-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defstate billy-snack-eat (billy-snack) - :code (behavior () - (ja :group! farthy-snack-eat-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (deactivate self) - (loop - (suspend) - ) - ) - :post ja-post - ) - -(defstate billy-snack-idle (billy-snack) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('eat) - (go billy-snack-eat) - ) - ) - ) - :code (behavior () - (loop + :code + (behavior () + (ja :group! farthy-snack-eat-ja) (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek!))) + (deactivate self) + (loop (suspend))) + :post ja-post) + +(defstate billy-snack-idle (billy-snack) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('eat) (go billy-snack-eat)))) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defbehavior billy-snack-init-by-other billy-snack ((arg0 vector)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) - (initialize-skeleton self *farthy-snack-sg* '()) + (initialize-skeleton self *farthy-snack-sg* ()) (set! (-> self num-rats) 0) (go billy-snack-idle) - (none) - ) + (none)) (deftype billy-rat (swamp-rat) - ((dest-type uint64) - (snack handle) - (destination vector :inline) - (billy (pointer billy)) - ) + ((dest-type uint64) + (snack handle) + (destination vector :inline) + (billy (pointer billy))) (:states - billy-rat-eat - billy-rat-salivate - ) - ) - + billy-rat-eat + billy-rat-salivate)) (defun rat-about-to-eat? ((arg0 billy-rat) (arg1 billy)) - (the-as symbol (and (= (-> arg0 dest-type) 2) (> (-> arg1 num-snacks) 0) (handle->process (-> arg0 snack)))) - ) + (the-as symbol (and (= (-> arg0 dest-type) 2) (> (-> arg1 num-snacks) 0) (handle->process (-> arg0 snack))))) (defstate nav-enemy-idle (billy-rat) :virtual #t - :enter (behavior () - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-common-post - ) + :enter + (behavior () + (go-virtual nav-enemy-chase)) + :post nav-enemy-common-post) (defstate nav-enemy-die (billy-rat) :virtual #t - :code (behavior () - (nav-enemy-fall-and-play-death-anim - (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) - 1.0 - 1.0 - 1000000000000000.0 - 600 - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-die) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (nav-enemy-fall-and-play-death-anim (the-as art-joint-anim (-> self draw art-group data (-> self nav-info die-anim))) + 1.0 + 1.0 + 1000000000000000.0 + 600) + (send-event (ppointer->process (-> self billy)) 'billy-rat-die) + (cleanup-for-death self))) (defstate billy-rat-eat (billy-rat) - :trans (behavior () - (seek-to-point-toward-point! (-> self collide-info) (-> self destination) 131072.0 (seconds 0.01)) - ) - :code (behavior () - (send-event (handle->process (-> self snack)) 'eat) - (sound-play "rat-gulp") - (ja-channel-push! 1 (seconds 0.05)) - (ja :group! swamp-rat-eat-ja) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (go-virtual nav-enemy-chase) - ) - :post nav-enemy-simple-post - ) + :trans + (behavior () + (seek-to-point-toward-point! (-> self collide-info) (-> self destination) 131072.0 (seconds 0.01))) + :code + (behavior () + (send-event (handle->process (-> self snack)) 'eat) + (sound-play "rat-gulp") + (ja-channel-push! 1 (seconds 0.05)) + (ja :group! swamp-rat-eat-ja) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (go-virtual nav-enemy-chase)) + :post nav-enemy-simple-post) (defstate billy-rat-salivate (billy-rat) :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (dotimes (gp-0 1) - (sound-play "rat-eat") - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info victory-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - (if (= (-> self dest-type) 3) - (go billy-rat-eat) - (go-virtual nav-enemy-chase) - ) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (dotimes (gp-0 1) + (sound-play "rat-eat") + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (ja-no-eval :group! + (-> self draw art-group data (-> self nav-info victory-anim)) + :num! (seek! max f30-0) + :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) + (if (= (-> self dest-type) 3) (go billy-rat-eat) (go-virtual nav-enemy-chase))) + :post nav-enemy-simple-post) (defstate nav-enemy-victory (billy-rat) :virtual #t - :enter (behavior () - (let ((t9-1 (-> (find-parent-state) enter))) - (if t9-1 - (t9-1) - ) - ) - (when (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf19)) - (if (rat-about-to-eat? self (-> self billy 0)) + :enter + (behavior () + (let ((t9-1 (-> (find-parent-state) enter))) (if t9-1 (t9-1))) + (when (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (logclear! (-> self nav flags) (nav-control-flags navcf19)) + (if (rat-about-to-eat? self (-> self billy 0)) (go billy-rat-salivate) - (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination) - ) - ) - ) - ) + (send-event (ppointer->process (-> self billy)) 'billy-rat-needs-destination))))) (defstate nav-enemy-stare (billy-rat) :virtual #t - :enter (behavior () - (go-virtual nav-enemy-chase) - ) - ) + :enter + (behavior () + (go-virtual nav-enemy-chase))) (defstate nav-enemy-chase (billy-rat) :virtual #t - :trans (behavior () - (set! (-> self speed-scale) (-> self billy 0 rat-speed)) - (if (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (time-elapsed? (-> self state-time) (-> self chase-rest-time)) - ) - (go-virtual nav-enemy-victory) - ) - ) - :post (behavior () - (swamp-rat-update-wiggle-target (-> self destination)) - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (set! (-> self speed-scale) (-> self billy 0 rat-speed)) + (if (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (time-elapsed? (-> self state-time) (-> self chase-rest-time))) + (go-virtual nav-enemy-victory))) + :post + (behavior () + (swamp-rat-update-wiggle-target (-> self destination)) + (nav-enemy-travel-post))) (defbehavior billy-rat-init-by-other billy-rat ((arg0 billy) (arg1 vector) (arg2 vector)) (set! (-> self billy) (the-as (pointer billy) (process->ppointer arg0))) @@ -241,37 +189,34 @@ (vector-! s4-0 arg2 arg1) (set! (-> s4-0 y) 0.0) (vector-normalize! s4-0 1.0) - (swamp-rat-init-by-other arg0 arg1 s4-0 (pickup-type none) #t) - ) - (none) - ) + (swamp-rat-init-by-other arg0 arg1 s4-0 (pickup-type none) #t)) + (none)) -(defskelgroup *billy-sg* billy billy-lod0-jg billy-idle-breath-ja - ((billy-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - :longest-edge (meters 1) - :shadow billy-shadow-mg - ) +(defskelgroup *billy-sg* + billy + billy-lod0-jg + billy-idle-breath-ja + ((billy-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :longest-edge (meters 1) + :shadow billy-shadow-mg) -(defskelgroup *billy-sidekick-sg* billy-sidekick billy-sidekick-lod0-jg billy-sidekick-idle-ja - ((billy-sidekick-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *billy-sidekick-sg* + billy-sidekick + billy-sidekick-lod0-jg + billy-sidekick-idle-ja + ((billy-sidekick-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defbehavior billy-kill-all-but-farthy billy () (let* ((gp-0 (the-as (pointer process-tree) (-> self child-override))) - (s5-0 (-> (the-as (pointer billy-snack) gp-0) 0 brother)) - ) + (s5-0 (-> (the-as (pointer billy-snack) gp-0) 0 brother))) (while gp-0 (if (not (or (= gp-0 (-> self farthy process)) (type-type? (-> (ppointer->process gp-0) type) fuel-cell))) - (deactivate (-> gp-0 0)) - ) + (deactivate (-> gp-0 0))) (set! gp-0 s5-0) - (set! s5-0 (-> gp-0 0 brother)) - ) - ) - #f - ) + (set! s5-0 (-> gp-0 0 brother)))) + #f) (defmethod play-anim! ((this billy) (arg0 symbol)) (case (current-status (-> this tasks)) @@ -284,269 +229,197 @@ (eval-path-curve-div! (-> this path-snacks) s5-1 (the float s4-0) 'exact) (+! (-> s5-1 x) -40960.0) (+! (-> s5-1 z) 20480.0) - (manipy-spawn s5-1 (-> this entity) *farthy-snack-sg* #f :to this) - ) - ) - ) - (new 'static 'spool-anim - :name "billy-introduction" - :index 5 - :parts 14 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - (346 blackout 10) - (349 blackout 0) - (494 blackout 10) - (497 blackout 0) - (1145 blackout 10) - (1148 blackout 0) - (1518 blackout 10) - (1521 blackout 0) - ) - ) - ) + (manipy-spawn s5-1 (-> this entity) *farthy-snack-sg* #f :to this)))) + (new 'static + 'spool-anim + :name "billy-introduction" + :index 5 + :parts 14 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45") + (346 blackout 10) + (349 blackout 0) + (494 blackout 10) + (497 blackout 0) + (1145 blackout 10) + (1148 blackout 0) + (1518 blackout 10) + (1521 blackout 0)))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (set! (-> this blend-on-exit) (the-as art-joint-anim #t)) (set! (-> this will-talk) #t) - (new 'static 'spool-anim - :name "billy-reminder-1" - :index 8 - :parts 2 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - ) - ) - ) + (new 'static + 'spool-anim + :name "billy-reminder-1" + :index 8 + :parts 2 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45")))) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim - :name "billy-resolution" - :index 9 - :parts 2 - :command-list '((0 kill "swamp-blimp-3") - (0 kill "swamp-tetherrock-14") - (0 kill "swamp-tetherrock-15") - (0 kill "flutflut-3") - (0 kill "tar-plat-26") - (0 kill "tar-plat-25") - (0 kill "babak-380") - (0 kill "eco-164") - (0 kill "eco-165") - (0 kill "eco-140") - (0 kill "launcher-97") - (0 kill "swamp-rat-nest-5") - (0 kill "swamp-rat-nest-4") - (0 kill "swamp-rat-nest-3") - (0 kill "swamp-rat-nest-2") - (0 kill "sharkey-9") - (0 kill "launcher-46") - (0 kill "launcher-44") - (0 kill "launcher-42") - (0 kill "swamp-spike-43") - (0 kill "swamp-spike-44") - (0 kill "swamp-spike-45") - ) - ) - ) + (close-current! (-> this tasks))) + (new 'static + 'spool-anim + :name "billy-resolution" + :index 9 + :parts 2 + :command-list + '((0 kill "swamp-blimp-3") + (0 kill "swamp-tetherrock-14") + (0 kill "swamp-tetherrock-15") + (0 kill "flutflut-3") + (0 kill "tar-plat-26") + (0 kill "tar-plat-25") + (0 kill "babak-380") + (0 kill "eco-164") + (0 kill "eco-165") + (0 kill "eco-140") + (0 kill "launcher-97") + (0 kill "swamp-rat-nest-5") + (0 kill "swamp-rat-nest-4") + (0 kill "swamp-rat-nest-3") + (0 kill "swamp-rat-nest-2") + (0 kill "sharkey-9") + (0 kill "launcher-46") + (0 kill "launcher-44") + (0 kill "launcher-42") + (0 kill "swamp-spike-43") + (0 kill "swamp-spike-44") + (0 kill "swamp-spike-45")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this billy)) (case (current-status (-> this tasks)) - (((task-status invalid) (task-status need-resolution)) - (-> this draw art-group data 10) - ) - (else - (-> this draw art-group data 3) - ) - ) - ) + (((task-status invalid) (task-status need-resolution)) (-> this draw art-group data 10)) + (else (-> this draw art-group data 3)))) (defmethod process-taskable-method-38 ((this billy)) (case (current-status (-> this tasks)) - (((task-status need-reminder-a) (task-status need-reminder)) - (go (method-of-object this query)) - ) - (((task-status need-reward-speech)) - (go (method-of-object this play-anim)) - ) - (else - (call-parent-method this) - ) - ) - (none) - ) + (((task-status need-reminder-a) (task-status need-reminder)) (go (method-of-object this query))) + (((task-status need-reward-speech)) (go (method-of-object this play-anim))) + (else (call-parent-method this))) + (none)) (defmethod get-accept-anim ((this billy) (arg0 symbol)) - (if arg0 - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "billy-accept" :index 6 :parts 3 :command-list '()) - ) + (if arg0 (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "billy-accept" :index 6 :parts 3 :command-list ())) (defmethod get-reject-anim ((this billy) (arg0 symbol)) - (new 'static 'spool-anim :name "billy-reject" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "billy-reject" :index 7 :parts 3 :command-list ())) (defstate billy-done (billy) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('billy-rat-needs-destination) - (let* ((gp-0 proc) - (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) billy-rat)) - gp-0 - ) - ) - ) - (when v1-2 - (set! (-> (the-as billy-rat v1-2) dest-type) (the-as uint 1)) - (get-random-point (-> self path-waypts) (-> (the-as billy-rat v1-2) destination)) - ) - ) - ) - ) - ) - :enter (behavior () - (init! - (-> self query) - (lookup-text! *common-text* (text-id play-again?) #f) - 40 - 150 - 30 - #f - (lookup-text! *common-text* (text-id quit) #f) - ) - (ja-channel-set! 1) - (ja :group! (get-art-elem self)) - (send-event *target* 'end-mode) - (when (and (handle->process (-> self offending-rat)) (zero? (-> self num-snacks))) - (send-event *camera* 'change-target (handle->process (-> self offending-rat))) - (send-event *camera* 'change-state cam-standoff 0) - (send-event *camera* 'set-standoff-height 0.0) - (send-event *camera* 'set-standoff-dist 20480.0) - (send-event *camera* 'set-standoff-height 16384.0) - (send-event *camera-combiner* 'stop-tracking) - (send-event *camera-combiner* 'start-tracking (ppointer->process (-> *camera* slave 0))) - (let ((a0-24 (get-reminder (-> self tasks) 0))) - (save-reminder (-> self tasks) (seekl a0-24 255 1) 0) - ) - (let ((f0-2 (rand-float-gen))) - (cond - ((< 0.75 f0-2) - (play-ambient (-> self ambient) "BIL-TA04" #t (the-as vector #f)) - ) - ((< 0.5 f0-2) - (play-ambient (-> self ambient) "BIL-TA05" #t (the-as vector #f)) - ) - ((< 0.25 f0-2) - (play-ambient (-> self ambient) "BIL-TA4A" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "BIL-TA5A" #t (the-as vector #f)) - ) - ) - ) - ) - ) - :exit (behavior () - (billy-kill-all-but-farthy) - (send-event *camera* 'change-target *target*) - (send-event *camera* 'change-state *camera-base-mode* 0) - ) - :trans (behavior () - (cond - ((> (-> self num-snacks) 0) - (when (process-grab? *target*) - (close-current! (-> self tasks)) - (go-virtual play-anim) - ) - ) - ((< (-> self num-snacks) 0) - (go-virtual idle) - ) - (else - (process-grab? *target*) - (when (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) - (let ((gp-0 (get-response (-> self query)))) - (cond - ((and (= gp-0 'yes) (process-release? *target*)) - (go-virtual enter-playing) - ) - ((= gp-0 'no) - (go-virtual play-reject) - ) - ) - ) - ) - ) - ) - (spool-push *art-control* "billy-reject" 0 self -99.0) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('billy-rat-needs-destination) + (let* ((gp-0 proc) + (v1-2 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) billy-rat)) gp-0))) + (when v1-2 + (set! (-> (the-as billy-rat v1-2) dest-type) (the-as uint 1)) + (get-random-point (-> self path-waypts) (-> (the-as billy-rat v1-2) destination))))))) + :enter + (behavior () + (init! (-> self query) + (lookup-text! *common-text* (text-id play-again?) #f) + 40 + 150 + 30 + #f + (lookup-text! *common-text* (text-id quit) #f)) + (ja-channel-set! 1) + (ja :group! (get-art-elem self)) + (send-event *target* 'end-mode) + (when (and (handle->process (-> self offending-rat)) (zero? (-> self num-snacks))) + (send-event *camera* 'change-target (handle->process (-> self offending-rat))) + (send-event *camera* 'change-state cam-standoff 0) + (send-event *camera* 'set-standoff-height 0.0) + (send-event *camera* 'set-standoff-dist 20480.0) + (send-event *camera* 'set-standoff-height 16384.0) + (send-event *camera-combiner* 'stop-tracking) + (send-event *camera-combiner* 'start-tracking (ppointer->process (-> *camera* slave 0))) + (let ((a0-24 (get-reminder (-> self tasks) 0))) (save-reminder (-> self tasks) (seekl a0-24 255 1) 0)) + (let ((f0-2 (rand-float-gen))) + (cond + ((< 0.75 f0-2) (play-ambient (-> self ambient) "BIL-TA04" #t (the-as vector #f))) + ((< 0.5 f0-2) (play-ambient (-> self ambient) "BIL-TA05" #t (the-as vector #f))) + ((< 0.25 f0-2) (play-ambient (-> self ambient) "BIL-TA4A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA5A" #t (the-as vector #f))))))) + :exit + (behavior () + (billy-kill-all-but-farthy) + (send-event *camera* 'change-target *target*) + (send-event *camera* 'change-state *camera-base-mode* 0)) + :trans + (behavior () + (cond + ((> (-> self num-snacks) 0) (when (process-grab? *target*) (close-current! (-> self tasks)) (go-virtual play-anim))) + ((< (-> self num-snacks) 0) (go-virtual idle)) + (else + (process-grab? *target*) + (when (and *target* (logtest? (-> *target* state-flags) (state-flags grabbed))) + (let ((gp-0 (get-response (-> self query)))) + (cond + ((and (= gp-0 'yes) (process-release? *target*)) (go-virtual enter-playing)) + ((= gp-0 'no) (go-virtual play-reject))))))) + (spool-push *art-control* "billy-reject" 0 self -99.0)) :code process-taskable-anim-loop - :post (behavior () - (ja-post) - ) - ) + :post + (behavior () + (ja-post))) (defbehavior billy-game-update-wave billy () (let* ((a0-2 (/ (the-as uint (+ (get-reminder (-> self tasks) 0) 1)) (the-as uint 5))) - (v1-4 (min 3 (the-as int a0-2))) - ) + (v1-4 (min 3 (the-as int a0-2)))) (cond ((zero? v1-4) (let ((v1-5 (-> self current-wave))) @@ -558,30 +431,21 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-5 2) (set! (-> self max-rats) 8) (set! (-> self rat-speed) 1.2) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-5 4) (set! (-> self max-rats) 10) (set! (-> self rat-speed) 1.35) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 25)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) ((= v1-4 1) (let ((v1-30 (-> self current-wave))) (cond @@ -592,30 +456,21 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-30 2) (set! (-> self max-rats) 7) (set! (-> self rat-speed) 1.2) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-30 4) (set! (-> self max-rats) 10) (set! (-> self rat-speed) 1.3) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 22)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) ((= v1-4 2) (let ((v1-55 (-> self current-wave))) (cond @@ -626,432 +481,259 @@ (set! (-> self passed-last-stage) #f) (when (time-elapsed? (-> self wave-start-time) (seconds 15)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-55 2) (set! (-> self max-rats) 7) (set! (-> self rat-speed) 1.1) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 18)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) + (set-time! (-> self wave-start-time)))) ((= v1-55 4) (set! (-> self max-rats) 9) (set! (-> self rat-speed) 1.25) (set! (-> self spawn-rats) #t) (when (time-elapsed? (-> self wave-start-time) (seconds 20)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) + (set-time! (-> self wave-start-time))))))) (else - (let ((v1-80 (-> self current-wave))) - (cond - ((zero? v1-80) - (set! (-> self max-rats) 5) - (set! (-> self rat-speed) 0.9) - (set! (-> self spawn-rats) #t) - (set! (-> self passed-last-stage) #f) - (when (time-elapsed? (-> self wave-start-time) (seconds 15)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ((= v1-80 2) - (set! (-> self max-rats) 6) - (set! (-> self rat-speed) 1.0) - (set! (-> self spawn-rats) #t) - (when (time-elapsed? (-> self wave-start-time) (seconds 18)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ((= v1-80 4) - (set! (-> self max-rats) 8) - (set! (-> self rat-speed) 1.1) - (set! (-> self spawn-rats) #t) - (when (time-elapsed? (-> self wave-start-time) (seconds 20)) - (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - ) - ) - ) - ) - ) - (none) - ) + (let ((v1-80 (-> self current-wave))) + (cond + ((zero? v1-80) + (set! (-> self max-rats) 5) + (set! (-> self rat-speed) 0.9) + (set! (-> self spawn-rats) #t) + (set! (-> self passed-last-stage) #f) + (when (time-elapsed? (-> self wave-start-time) (seconds 15)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time)))) + ((= v1-80 2) + (set! (-> self max-rats) 6) + (set! (-> self rat-speed) 1.0) + (set! (-> self spawn-rats) #t) + (when (time-elapsed? (-> self wave-start-time) (seconds 18)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time)))) + ((= v1-80 4) + (set! (-> self max-rats) 8) + (set! (-> self rat-speed) 1.1) + (set! (-> self spawn-rats) #t) + (when (time-elapsed? (-> self wave-start-time) (seconds 20)) + (+! (-> self current-wave) 1) + (set-time! (-> self wave-start-time))))))))) + (none)) (defbehavior billy-game-update billy () (let ((v1-0 (-> self current-wave))) (cond - ((or (zero? v1-0) (= v1-0 2) (= v1-0 4)) - (billy-game-update-wave) - ) - ((= v1-0 5) - (set! (-> self spawn-rats) #f) - (set! (-> self passed-last-stage) #t) - ) - ((begin (set! (-> self spawn-rats) #f) (zero? (-> self num-rats))) + ((or (zero? v1-0) (= v1-0 2) (= v1-0 4)) (billy-game-update-wave)) + ((= v1-0 5) (set! (-> self spawn-rats) #f) (set! (-> self passed-last-stage) #t)) + ((begin + (set! (-> self spawn-rats) #f) + (zero? (-> self num-rats))) (when (time-elapsed? (-> self wave-start-time) (seconds 3)) (+! (-> self current-wave) 1) - (set-time! (-> self wave-start-time)) - ) - ) - (else - (set-time! (-> self wave-start-time)) - ) - ) - ) + (set-time! (-> self wave-start-time)))) + (else (set-time! (-> self wave-start-time))))) (when (and (< (-> self num-rats) (-> self max-rats)) (-> self spawn-rats)) (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (get-random-point (-> self path-starts) gp-0) (get-random-point (-> self path-waypts) s5-0) - (if (process-spawn billy-rat self gp-0 s5-0 :to self) - (+! (-> self num-rats) 1) - ) - ) - ) + (if (process-spawn billy-rat self gp-0 s5-0 :to self) (+! (-> self num-rats) 1)))) 0 - (none) - ) + (none)) (defstate billy-playing (billy) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('billy-rat-die) - (+! (-> self num-rats) -1) - (let* ((f0-2 (rand-float-gen)) - (f0-3 (* 3.0 f0-2)) - ) - (cond - ((< 1.0 f0-3) - #f - ) - ((< 0.8333333 f0-3) - (play-ambient (-> self ambient) "SKSP009F" #t (the-as vector #f)) - ) - ((< 0.6666667 f0-3) - (play-ambient (-> self ambient) "BIL-TA02" #t (the-as vector #f)) - ) - ((< 0.5 f0-3) - (play-ambient (-> self ambient) "BIL-TA08" #t (the-as vector #f)) - ) - ((< 0.33333334 f0-3) - (play-ambient (-> self ambient) "BIL-TA09" #t (the-as vector #f)) - ) - ((< 0.16666667 f0-3) - (play-ambient (-> self ambient) "BIL-TA2A" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "BIL-TA4B" #t (the-as vector #f)) - ) - ) - ) - ) - (('billy-rat-needs-destination) - (let* ((s5-0 proc) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) billy-rat)) - (the-as billy-rat s5-0) - ) - ) - ) - (when gp-0 - (let ((f0-6 (rand-float-gen))) - (cond - ((< 0.75 f0-6) - (play-ambient (-> self ambient) "BIL-TA01" #t (the-as vector #f)) - ) - ((< 0.5 f0-6) - (play-ambient (-> self ambient) "BIL-TA03" #t (the-as vector #f)) - ) - ((< 0.25 f0-6) - (play-ambient (-> self ambient) "BIL-TA1A" #t (the-as vector #f)) - ) - (else - (play-ambient (-> self ambient) "BIL-TA3A" #t (the-as vector #f)) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('billy-rat-die) + (+! (-> self num-rats) -1) + (let* ((f0-2 (rand-float-gen)) + (f0-3 (* 3.0 f0-2))) (cond - ((rat-about-to-eat? gp-0 self) - (set! (-> self num-snacks) 0) - (set! (-> self offending-rat) (process->handle gp-0)) - (set! (-> gp-0 dest-type) (the-as uint 3)) - (let ((v0-1 (the-as object (-> gp-0 destination)))) - (set! (-> (the-as vector v0-1) quad) (-> (the-as billy-snack (-> gp-0 snack process 0)) root trans quad)) - v0-1 - ) - ) - ((or (= (-> gp-0 dest-type) 2) (= (-> gp-0 dest-type) 3) (<= (-> self num-snacks) 0)) - (set! (-> gp-0 dest-type) (the-as uint 1)) - (get-random-point (-> self path-starts) (-> gp-0 destination)) - ) - (else - (let ((s3-0 100) - (s4-0 0) - (s2-0 (the-as (pointer process-tree) (-> self child-override))) - (s5-1 (the-as process-tree #f)) - ) - (while s2-0 - (let* ((s1-0 (ppointer->process s2-0)) - (v1-47 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) billy-snack)) - s1-0 - ) - ) - ) - (cond - ((not v1-47) - ) - ((< (-> (the-as billy-snack v1-47) num-rats) s3-0) - (set! s5-1 v1-47) - (set! s3-0 (-> (the-as billy-snack v1-47) num-rats)) - (set! s4-0 1) - ) - ((= (-> (the-as billy-snack v1-47) num-rats) s3-0) - (+! s4-0 1) - ) - ) - ) - (set! s2-0 (-> s2-0 0 brother)) - ) - (cond - ((zero? s4-0) - (set! (-> gp-0 dest-type) (the-as uint 1)) - (get-random-point (-> self path-waypts) (-> gp-0 destination)) - ) - (else + ((< 1.0 f0-3) #f) + ((< 0.8333333 f0-3) (play-ambient (-> self ambient) "SKSP009F" #t (the-as vector #f))) + ((< 0.6666667 f0-3) (play-ambient (-> self ambient) "BIL-TA02" #t (the-as vector #f))) + ((< 0.5 f0-3) (play-ambient (-> self ambient) "BIL-TA08" #t (the-as vector #f))) + ((< 0.33333334 f0-3) (play-ambient (-> self ambient) "BIL-TA09" #t (the-as vector #f))) + ((< 0.16666667 f0-3) (play-ambient (-> self ambient) "BIL-TA2A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA4B" #t (the-as vector #f)))))) + (('billy-rat-needs-destination) + (let* ((s5-0 proc) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) billy-rat)) (the-as billy-rat s5-0)))) + (when gp-0 + (let ((f0-6 (rand-float-gen))) + (cond + ((< 0.75 f0-6) (play-ambient (-> self ambient) "BIL-TA01" #t (the-as vector #f))) + ((< 0.5 f0-6) (play-ambient (-> self ambient) "BIL-TA03" #t (the-as vector #f))) + ((< 0.25 f0-6) (play-ambient (-> self ambient) "BIL-TA1A" #t (the-as vector #f))) + (else (play-ambient (-> self ambient) "BIL-TA3A" #t (the-as vector #f))))) + (cond + ((rat-about-to-eat? gp-0 self) + (set! (-> self num-snacks) 0) + (set! (-> self offending-rat) (process->handle gp-0)) + (set! (-> gp-0 dest-type) (the-as uint 3)) + (let ((v0-1 (the-as object (-> gp-0 destination)))) + (set! (-> (the-as vector v0-1) quad) (-> (the-as billy-snack (-> gp-0 snack process 0)) root trans quad)) + v0-1)) + ((or (= (-> gp-0 dest-type) 2) (= (-> gp-0 dest-type) 3) (<= (-> self num-snacks) 0)) + (set! (-> gp-0 dest-type) (the-as uint 1)) + (get-random-point (-> self path-starts) (-> gp-0 destination))) + (else + (let ((s3-0 100) + (s4-0 0) + (s2-0 (the-as (pointer process-tree) (-> self child-override))) + (s5-1 (the-as process-tree #f))) + (while s2-0 + (let* ((s1-0 (ppointer->process s2-0)) + (v1-47 (if (and (nonzero? s1-0) (type-type? (-> s1-0 type) billy-snack)) s1-0))) + (cond + ((not v1-47)) + ((< (-> (the-as billy-snack v1-47) num-rats) s3-0) + (set! s5-1 v1-47) + (set! s3-0 (-> (the-as billy-snack v1-47) num-rats)) + (set! s4-0 1)) + ((= (-> (the-as billy-snack v1-47) num-rats) s3-0) (+! s4-0 1)))) + (set! s2-0 (-> s2-0 0 brother))) + (cond + ((zero? s4-0) (set! (-> gp-0 dest-type) (the-as uint 1)) (get-random-point (-> self path-waypts) (-> gp-0 destination))) + (else (set! (-> gp-0 snack) (process->handle (the-as billy-snack s5-1))) (+! (-> (the-as billy-snack s5-1) num-rats) 1) (set! (-> gp-0 dest-type) (the-as uint 2)) (set! (-> gp-0 destination quad) (-> (the-as billy-snack s5-1) root trans quad)) - (set! (-> gp-0 destination x) (+ 6799.36 (-> gp-0 destination x))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - :enter (behavior () - (add-setting! 'music 'danger 0.0 0) - (ja-channel-set! 0) - (clear-collide-with-as (-> self root)) - (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f)) - (set-time! (-> self wave-start-time)) - (set! (-> self num-snacks) 0) - (set! (-> self num-rats) 0) - (set! (-> self current-wave) 0) - (set! (-> self offending-rat) (the-as handle #f)) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (dotimes (s5-1 (+ (the int (the float (+ (-> self path-snacks curve num-cverts) -1))) 1)) - (eval-path-curve-div! (-> self path-snacks) gp-1 (the float s5-1) 'exact) - (if (process-spawn billy-snack gp-1 :to self) - (+! (-> self num-snacks) 1) - ) - ) - ) - (backup-load-state-and-set-cmds *load-state* '()) - (let* ((gp-2 '((kill "swamp-blimp-3") - (kill "swamp-tetherrock-14") - (kill "swamp-tetherrock-15") - (kill "flutflut-3") - (kill "tar-plat-26") - (kill "tar-plat-25") - (kill "babak-380") - (kill "eco-164") - (kill "eco-165") - (kill "eco-140") - (kill "launcher-97") - (kill "swamp-rat-nest-5") - (kill "swamp-rat-nest-4") - (kill "swamp-rat-nest-3") - (kill "swamp-rat-nest-2") - (kill "sharkey-9") - (kill "launcher-46") - (kill "launcher-44") - (kill "launcher-42") - (kill "swamp-spike-43") - (kill "swamp-spike-44") - (kill "swamp-spike-45") - ) - ) - (a1-8 (car gp-2)) - ) - (while (not (null? gp-2)) - (execute-command *load-state* (the-as pair a1-8)) - (set! gp-2 (cdr gp-2)) - (set! a1-8 (car gp-2)) - ) - ) - ) - :exit (behavior () - (restore-collide-with-as (-> self root)) - (restore-load-state-and-cleanup *load-state*) - (set! (-> *ACTOR-bank* birth-max) 1000) - (remove-setting! 'music) - ) - :trans (behavior () - (spool-push *art-control* "billy-resolution" 0 self -99.0) - (spool-push *art-control* "billy-reject" 0 self -99.0) - ) - :code (behavior () - (loop - (billy-game-update) - (if (or (zero? (-> self num-snacks)) - (and (zero? (-> self num-rats)) (-> self passed-last-stage)) - (and *cheat-mode* (cpad-pressed? 1 x)) - ) - (go billy-done) - ) - (suspend) - ) - ) - :post (behavior () - (ja-post) - ) - ) + (set! (-> gp-0 destination x) (+ 6799.36 (-> gp-0 destination x))))))))))))) + :enter + (behavior () + (add-setting! 'music 'danger 0.0 0) + (ja-channel-set! 0) + (clear-collide-with-as (-> self root)) + (init! (-> self query) (the-as string #f) 40 150 25 #t (lookup-text! *common-text* (text-id quit) #f)) + (set-time! (-> self wave-start-time)) + (set! (-> self num-snacks) 0) + (set! (-> self num-rats) 0) + (set! (-> self current-wave) 0) + (set! (-> self offending-rat) (the-as handle #f)) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (dotimes (s5-1 (+ (the int (the float (+ (-> self path-snacks curve num-cverts) -1))) 1)) + (eval-path-curve-div! (-> self path-snacks) gp-1 (the float s5-1) 'exact) + (if (process-spawn billy-snack gp-1 :to self) (+! (-> self num-snacks) 1)))) + (backup-load-state-and-set-cmds *load-state* ()) + (let* ((gp-2 '((kill "swamp-blimp-3") + (kill "swamp-tetherrock-14") + (kill "swamp-tetherrock-15") + (kill "flutflut-3") + (kill "tar-plat-26") + (kill "tar-plat-25") + (kill "babak-380") + (kill "eco-164") + (kill "eco-165") + (kill "eco-140") + (kill "launcher-97") + (kill "swamp-rat-nest-5") + (kill "swamp-rat-nest-4") + (kill "swamp-rat-nest-3") + (kill "swamp-rat-nest-2") + (kill "sharkey-9") + (kill "launcher-46") + (kill "launcher-44") + (kill "launcher-42") + (kill "swamp-spike-43") + (kill "swamp-spike-44") + (kill "swamp-spike-45"))) + (a1-8 (car gp-2))) + (while (not (null? gp-2)) + (execute-command *load-state* (the-as pair a1-8)) + (set! gp-2 (cdr gp-2)) + (set! a1-8 (car gp-2))))) + :exit + (behavior () + (restore-collide-with-as (-> self root)) + (restore-load-state-and-cleanup *load-state*) + (set! (-> *ACTOR-bank* birth-max) 1000) + (remove-setting! 'music)) + :trans + (behavior () + (spool-push *art-control* "billy-resolution" 0 self -99.0) + (spool-push *art-control* "billy-reject" 0 self -99.0)) + :code + (behavior () + (loop (billy-game-update) + (if (or (zero? (-> self num-snacks)) + (and (zero? (-> self num-rats)) (-> self passed-last-stage)) + (and *cheat-mode* (cpad-pressed? 1 x))) + (go billy-done)) + (suspend))) + :post + (behavior () + (ja-post))) (defstate enter-playing (billy) :virtual #t - :trans (behavior () - (when (send-event *target* 'change-mode 'billy) - (send-event *target* 'trans 'reset) - (let ((v1-8 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (cond - (v1-8 - (move-to-point! (-> *target* control) (-> v1-8 extra trans)) - (go billy-playing) - ) - (else - ) - ) - ) - ) - ) - ) + :trans + (behavior () + (when (send-event *target* 'change-mode 'billy) + (send-event *target* 'trans 'reset) + (let ((v1-8 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (cond + (v1-8 (move-to-point! (-> *target* control) (-> v1-8 extra trans)) (go billy-playing)) + (else)))))) (defmethod process-taskable-method-43 ((this billy)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f30-0 (rand-float-gen))) (cond - ((< 0.9411765 f30-0) - (play-ambient (-> this ambient) "BIL-AM01" #f (-> this root trans)) - ) - ((< 0.88235295 f30-0) - (play-ambient (-> this ambient) "BIL-AM02" #f (-> this root trans)) - ) - ((< 0.8235294 f30-0) - (play-ambient (-> this ambient) "BIL-AM03" #f (-> this root trans)) - ) - ((< 0.7647059 f30-0) - (play-ambient (-> this ambient) "BIL-AM04" #f (-> this root trans)) - ) - ((< 0.7058824 f30-0) - (play-ambient (-> this ambient) "BIL-AM05" #f (-> this root trans)) - ) - ((< 0.64705884 f30-0) - (play-ambient (-> this ambient) "BIL-AM06" #f (-> this root trans)) - ) - ((< 0.5882353 f30-0) - (play-ambient (-> this ambient) "BIL-AM07" #f (-> this root trans)) - ) - ((< 0.5294118 f30-0) - (play-ambient (-> this ambient) "BIL-AM08" #f (-> this root trans)) - ) - ((< 0.47058824 f30-0) - (play-ambient (-> this ambient) "BIL-AM1A" #f (-> this root trans)) - ) - ((< 0.4117647 f30-0) - (play-ambient (-> this ambient) "BIL-AM2A" #f (-> this root trans)) - ) - ((< 0.3529412 f30-0) - (play-ambient (-> this ambient) "BIL-AM2B" #f (-> this root trans)) - ) - ((= (current-status (-> this tasks)) (task-status invalid)) - #f - ) - ((< 0.29411766 f30-0) - (play-ambient (-> this ambient) "BIL-LO01" #f (-> this root trans)) - ) - ((< 0.23529412 f30-0) - (play-ambient (-> this ambient) "BIL-LO02" #f (-> this root trans)) - ) - ((< 0.1764706 f30-0) - (play-ambient (-> this ambient) "BIL-LO03" #f (-> this root trans)) - ) - ((< 0.11764706 f30-0) - (play-ambient (-> this ambient) "BIL-LO1A" #f (-> this root trans)) - ) - ((< 0.05882353 f30-0) - (play-ambient (-> this ambient) "BIL-LO2A" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "BIL-LO2B" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.9411765 f30-0) (play-ambient (-> this ambient) "BIL-AM01" #f (-> this root trans))) + ((< 0.88235295 f30-0) (play-ambient (-> this ambient) "BIL-AM02" #f (-> this root trans))) + ((< 0.8235294 f30-0) (play-ambient (-> this ambient) "BIL-AM03" #f (-> this root trans))) + ((< 0.7647059 f30-0) (play-ambient (-> this ambient) "BIL-AM04" #f (-> this root trans))) + ((< 0.7058824 f30-0) (play-ambient (-> this ambient) "BIL-AM05" #f (-> this root trans))) + ((< 0.64705884 f30-0) (play-ambient (-> this ambient) "BIL-AM06" #f (-> this root trans))) + ((< 0.5882353 f30-0) (play-ambient (-> this ambient) "BIL-AM07" #f (-> this root trans))) + ((< 0.5294118 f30-0) (play-ambient (-> this ambient) "BIL-AM08" #f (-> this root trans))) + ((< 0.47058824 f30-0) (play-ambient (-> this ambient) "BIL-AM1A" #f (-> this root trans))) + ((< 0.4117647 f30-0) (play-ambient (-> this ambient) "BIL-AM2A" #f (-> this root trans))) + ((< 0.3529412 f30-0) (play-ambient (-> this ambient) "BIL-AM2B" #f (-> this root trans))) + ((= (current-status (-> this tasks)) (task-status invalid)) #f) + ((< 0.29411766 f30-0) (play-ambient (-> this ambient) "BIL-LO01" #f (-> this root trans))) + ((< 0.23529412 f30-0) (play-ambient (-> this ambient) "BIL-LO02" #f (-> this root trans))) + ((< 0.1764706 f30-0) (play-ambient (-> this ambient) "BIL-LO03" #f (-> this root trans))) + ((< 0.11764706 f30-0) (play-ambient (-> this ambient) "BIL-LO1A" #f (-> this root trans))) + ((< 0.05882353 f30-0) (play-ambient (-> this ambient) "BIL-LO2A" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "BIL-LO2B" #f (-> this root trans))))))) (defstate play-anim (billy) :virtual #t - :exit (behavior () - (billy-kill-all-but-farthy) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (billy-kill-all-but-farthy) + ((-> (method-of-type process-taskable play-anim) exit)))) (defstate idle (billy) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (ja :group! (get-art-elem self)) - (let* ((f30-0 5.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2))) + (loop (ja :group! (get-art-elem self)) + (let* ((f30-0 5.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (process-taskable-method-43 self) + (suspend) + (ja :num! (seek!))))) + (when (ja-group? billy-idle-breath-ja) + (ja-no-eval :group! billy-idle-shoo-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (process-taskable-method-43 self) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (when (ja-group? billy-idle-breath-ja) - (ja-no-eval :group! billy-idle-shoo-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))))))) (defmethod target-above-threshold? ((this billy)) - (the-as - symbol - (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))) - ) - ) + (the-as symbol (and *target* (not (logtest? (-> *target* control root-prim prim-core action) (collide-action flut)))))) (defmethod init-from-entity! ((this billy) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *billy-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -1059,15 +741,11 @@ (dotimes (s5-0 3) (let ((v1-3 (new 'process 'curve-control this 'path (the float s5-0)))) (set! (-> this path-data s5-0) v1-3) - (logior! (-> v1-3 flags) (path-control-flag display draw-line draw-point draw-text)) - ) - ) + (logior! (-> v1-3 flags) (path-control-flag display draw-line draw-point draw-text)))) (set! (-> this path) (-> this path-snacks)) (set! (-> this farthy) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *billy-sidekick-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *billy-sidekick-sg* #f :to this))) (send-event (handle->process (-> this farthy)) 'center-joint 3) (send-event (handle->process (-> this farthy)) 'anim-mode 'clone-anim) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/kermit.gc b/goal_src/jak1/levels/swamp/kermit.gc index 549f21cb31..977fc345a7 100644 --- a/goal_src/jak1/levels/swamp/kermit.gc +++ b/goal_src/jak1/levels/swamp/kermit.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: kermit.gc @@ -16,467 +15,412 @@ (defpartgroup group-kermit-charging-up :id 298 :bounds (static-bspherem 0 5 0 5) - :parts ((sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1356) - (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1357) - (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1358) - (sp-item 1360) - (sp-item 1361 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1362 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1363 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1358 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) - (sp-item 1356 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) - (sp-item 1358 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) - (sp-item 1356 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) - (sp-item 1358 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - (sp-item 1357 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) - ) - ) + :parts + ((sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1356) + (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1357) + (sp-item 1359 :fade-after (meters 140) :falloff-to (meters 140) :binding 1358) + (sp-item 1360) + (sp-item 1361 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1362 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1363 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1358 :fade-after (meters 30) :falloff-to (meters 30) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 60) :falloff-to (meters 60) :flags (start-dead)) + (sp-item 1356 :fade-after (meters 80) :falloff-to (meters 80) :flags (start-dead)) + (sp-item 1358 :fade-after (meters 90) :falloff-to (meters 90) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 100) :falloff-to (meters 100) :flags (start-dead)) + (sp-item 1356 :fade-after (meters 110) :falloff-to (meters 110) :flags (start-dead)) + (sp-item 1358 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)) + (sp-item 1357 :fade-after (meters 120) :falloff-to (meters 120) :flags (start-dead)))) (defpart 1360 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 1.4)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 192.0) - (:a 64.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:fade-a -0.2) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 1.4)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 192.0) + (:a 64.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:fade-a -0.2) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 1359 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.05 0.1) - (:x (meters -0.75) (meters 1.5)) - (:y (meters 0.5)) - (:z (meters -0.75) (meters 1.5)) - (:scale-x (meters 1.5) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 192.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:fade-a 0.0) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.05 0.1) + (:x (meters -0.75) (meters 1.5)) + (:y (meters 0.5)) + (:z (meters -0.75) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 192.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:fade-a 0.0) + (:timer (seconds 1)) + (:flags (bit2 bit3)))) (defpart 1356 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark1" :num 0.05 :volume 70.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark1" :num 0.05 :volume 70.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1357 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark2" :num 0.075 :volume 100.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark2" :num 0.075 :volume 100.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1358 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "eco-blue-spark3" :num 0.05 :volume 70.0)) - (:scale-x (meters 0.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "eco-blue-spark3" :num 0.05 :volume 70.0)) + (:scale-x (meters 0.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1361 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.1 0.5) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.1 0.5) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1362 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1363 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.3 0.1) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-x 4) - (:rot-z (degrees 10) (degrees 160)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.305)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.035)) - (:next-launcher 1364) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.3 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-x 4) + (:rot-z (degrees 10) (degrees 160)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.305)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.035)) + (:next-launcher 1364))) (defpart 1364 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -1.0) (:fade-a -2.0))) (defpartgroup group-kermit-charged-up :id 299 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1365 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 1365 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 1365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 0.25)) - (:flags (bit2)) - (:userdata 0.0) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 0.25)) + (:flags (bit2)) + (:userdata 0.0) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-kermit-pulse :id 300 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1368 :flags (launch-asap) :binding 1366) - (sp-item 1366 :flags (start-dead launch-asap) :binding 1367) - (sp-item 1367 :flags (start-dead)) - (sp-item 1367 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1368 :flags (launch-asap) :binding 1366) + (sp-item 1366 :flags (start-dead launch-asap) :binding 1367) + (sp-item 1367 :flags (start-dead)) + (sp-item 1367 :flags (start-dead)))) (defpart 1368 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 3)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 96.0 32.0) - (:b 128.0 64.0) - (:a 128.0) - (:timer (seconds 10)) - (:flags (bit3)) - (:func 'sparticle-track-root) - (:next-time (seconds 0.017)) - (:next-launcher 1369) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 3)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 96.0 32.0) + (:b 128.0 64.0) + (:a 128.0) + (:timer (seconds 10)) + (:flags (bit3)) + (:func 'sparticle-track-root) + (:next-time (seconds 0.017)) + (:next-launcher 1369))) (defpart 1369 - :init-specs ((:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:a 100.0 28.0) - (:next-time (seconds 0.017)) - (:next-launcher 1369) - ) - ) + :init-specs + ((:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:a 100.0 28.0) + (:next-time (seconds 0.017)) + (:next-launcher 1369))) (defpart 1366 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:y (meters 4) (meters 16)) - (:z (meters 0)) - (:scale-x (meters 1.5)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 96.0 32.0) - (:b 128.0 64.0) - (:a 64.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.053333335)) - (:vel-y (meters 0.053333335)) - (:vel-z (meters 0.002)) - (:timer (seconds 10)) - (:flags (bit2 bit3 bit7)) - (:next-time (seconds 1)) - (:next-launcher 1370) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:y (meters 4) (meters 16)) + (:z (meters 0)) + (:scale-x (meters 1.5)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 96.0 32.0) + (:b 128.0 64.0) + (:a 64.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.053333335)) + (:vel-y (meters 0.053333335)) + (:vel-z (meters 0.002)) + (:timer (seconds 10)) + (:flags (bit2 bit3 bit7)) + (:next-time (seconds 1)) + (:next-launcher 1370))) (defpart 1370 - :init-specs ((:vel-z (meters 0))) - ) + :init-specs ((:vel-z (meters 0)))) (defpart 1367 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.85)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 96.0 32.0) - (:b 96.0 64.0) - (:a 128.0) - (:scalevel-x (meters -0.00075757573)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.16) - (:fade-a -0.14222223) - (:timer (seconds 5)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.85)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 96.0 32.0) + (:b 96.0 64.0) + (:a 128.0) + (:scalevel-x (meters -0.00075757573)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.16) + (:fade-a -0.14222223) + (:timer (seconds 5)) + (:flags (bit2 bit3)))) (defpartgroup group-kermit-pulse-impact :id 301 :duration (seconds 0.017) :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1371) (sp-item 1372)) - ) + :parts ((sp-item 1371) (sp-item 1372))) (defpart 1371 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0) - (:x (meters -0.1) (meters 0.2)) - (:y (meters -0.1) (meters 0.2)) - (:z (meters -0.1) (meters 0.2)) - (:scale-x (meters 1.2) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.011666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-g -2.1333334) - (:fade-a -0.64) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.1)) - (:next-launcher 1373) - (:launchrot-x (degrees 0) (degrees 180)) - (:launchrot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 1.2) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.011666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-g -2.1333334) + (:fade-a -0.64) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.1)) + (:next-launcher 1373) + (:launchrot-x (degrees 0) (degrees 180)) + (:launchrot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 1373 - :init-specs ((:fade-r -3.2) (:fade-g 1.0) (:fade-b 1.0) (:next-time (seconds 0.1)) (:next-launcher 1374)) - ) + :init-specs ((:fade-r -3.2) (:fade-g 1.0) (:fade-b 1.0) (:next-time (seconds 0.1)) (:next-launcher 1374))) (defpart 1374 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1372 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 32.0) - (:x (meters -0.1) (meters 0.2)) - (:y (meters -0.1) (meters 0.2)) - (:z (meters -0.1) (meters 0.2)) - (:scale-x (meters 0.1) (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 192.0 64.0) - (:b 192.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.06666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g -2.1333334) - (:fade-a -1.4222223) - (:accel-y (meters -0.00066666666)) - (:friction 0.93) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.1)) - (:next-launcher 1373) - (:launchrot-x (degrees 0) (degrees 360)) - (:launchrot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 32.0) + (:x (meters -0.1) (meters 0.2)) + (:y (meters -0.1) (meters 0.2)) + (:z (meters -0.1) (meters 0.2)) + (:scale-x (meters 0.1) (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 192.0 64.0) + (:b 192.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.06666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g -2.1333334) + (:fade-a -1.4222223) + (:accel-y (meters -0.00066666666)) + (:friction 0.93) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.1)) + (:next-launcher 1373) + (:launchrot-x (degrees 0) (degrees 360)) + (:launchrot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (deftype joint-mod-tracker (basic) - ((target-pos vector :inline) - (target-pos-func (function vector vector)) - (inv-forward-scale-factor float) - (forward-scale-control float) - (forward-scale-max float) - (process kermit) - (enable symbol) - (up-axis int8) - (forward-axis int8) - ) + ((target-pos vector :inline) + (target-pos-func (function vector vector)) + (inv-forward-scale-factor float) + (forward-scale-control float) + (forward-scale-max float) + (process kermit) + (enable symbol) + (up-axis int8) + (forward-axis int8)) (:methods - (new (symbol type kermit int function int int) _type_) - ) - ) - + (new (symbol type kermit int function int int) _type_))) (defmethod relocate ((this joint-mod-tracker) (arg0 int)) (&+! (-> this process) arg0) - this - ) + this) (defun build-matrix-from-up-and-forward-axes! ((arg0 matrix) (arg1 vector) (arg2 int) (arg3 vector) (arg4 int)) (let ((s1-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (let ((s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) arg3 1.0))) (vector-cross! s1-0 arg1 s3-0) (vector-normalize! s1-0 1.0) (vector-cross! s5-0 s3-0 s1-0) - (if (!= (mod (+ arg2 1) 3) arg4) - (vector-negate-in-place! s1-0) - ) + (if (!= (mod (+ arg2 1) 3) arg4) (vector-negate-in-place! s1-0)) (set! (-> arg0 vector 0 quad) (-> s1-0 quad)) (set! (-> arg0 vector 1 quad) (-> s1-0 quad)) (set! (-> arg0 vector 2 quad) (-> s1-0 quad)) - (set! (-> arg0 vector arg4 quad) (-> s3-0 quad)) - ) - (set! (-> arg0 vector arg2 quad) (-> s5-0 quad)) - ) + (set! (-> arg0 vector arg4 quad) (-> s3-0 quad))) + (set! (-> arg0 vector arg2 quad) (-> s5-0 quad))) (set! (-> arg0 vector 0 w) 0.0) (set! (-> arg0 vector 1 w) 0.0) (set! (-> arg0 vector 2 w) 0.0) (set! (-> arg0 vector 3 quad) (-> *null-vector* quad)) - arg0 - ) + arg0) (defun joint-mod-tracker-callback ((arg0 cspace) (arg1 transformq)) (let ((s4-0 (the-as joint-mod-tracker (-> arg0 param1)))) (cond ((-> s4-0 enable) - (let ((t9-0 (-> s4-0 target-pos-func))) - (if t9-0 - (t9-0 (-> s4-0 target-pos)) - ) - ) + (let ((t9-0 (-> s4-0 target-pos-func))) (if t9-0 (t9-0 (-> s4-0 target-pos)))) (let ((s3-0 (-> s4-0 target-pos)) - (s5-1 (vector-matrix*! (new 'stack-no-clear 'vector) (-> arg1 trans) (-> arg0 parent bone transform))) - ) + (s5-1 (vector-matrix*! (new 'stack-no-clear 'vector) (-> arg1 trans) (-> arg0 parent bone transform)))) (let* ((s2-1 (vector-! (new 'stack-no-clear 'vector) s3-0 s5-1)) - (f30-0 (vector-length s2-1)) - ) - (build-matrix-from-up-and-forward-axes! - (-> arg0 bone transform) - *y-vector* - (-> s4-0 up-axis) - s2-1 - (-> s4-0 forward-axis) - ) - (let ((f0-3 (fmin - (* f30-0 (-> s4-0 inv-forward-scale-factor) (-> s4-0 forward-scale-control)) - (-> s4-0 forward-scale-max) - ) - ) - (v1-10 (-> arg0 bone transform vector (-> s4-0 forward-axis))) - ) + (f30-0 (vector-length s2-1))) + (build-matrix-from-up-and-forward-axes! (-> arg0 bone transform) + *y-vector* + (-> s4-0 up-axis) + s2-1 + (-> s4-0 forward-axis)) + (let ((f0-3 (fmin (* f30-0 (-> s4-0 inv-forward-scale-factor) (-> s4-0 forward-scale-control)) (-> s4-0 forward-scale-max))) + (v1-10 (-> arg0 bone transform vector (-> s4-0 forward-axis)))) (vector-float*! v1-10 v1-10 f0-3) - (set! (-> v1-10 w) 0.0) - ) - ) - (set! (-> arg0 bone transform vector 3 quad) (-> s5-1 quad)) - ) - (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0) - ) + (set! (-> v1-10 w) 0.0))) + (set! (-> arg0 bone transform vector 3 quad) (-> s5-1 quad))) + (set-vector! (-> arg0 bone scale) 1.0 1.0 1.0 1.0)) (else - (set! (-> arg1 scale data (-> s4-0 forward-axis)) (-> s4-0 forward-scale-control)) - (cspace<-parented-transformq-joint! arg0 arg1) - ) - ) - ) - (none) - ) + (set! (-> arg1 scale data (-> s4-0 forward-axis)) (-> s4-0 forward-scale-control)) + (cspace<-parented-transformq-joint! arg0 arg1)))) + (none)) (defmethod new joint-mod-tracker ((allocation symbol) (type-to-make type) (arg0 kermit) (arg1 int) (arg2 function) (arg3 int) (arg4 int)) (let ((v0-0 (object-new allocation type-to-make (the-as int (-> type-to-make size))))) @@ -490,79 +434,63 @@ (set! (-> v0-0 enable) #t) (let ((v1-5 (-> arg0 node-list data arg1))) (set! (-> v1-5 param0) joint-mod-tracker-callback) - (set! (-> v1-5 param1) v0-0) - ) - v0-0 - ) - ) + (set! (-> v1-5 param1) v0-0)) + v0-0)) (deftype kermit-pulse (process-drawable) - ((root collide-shape-moving :override) - (parent-override (pointer kermit) :overlay-at parent) - (self-override kermit-pulse :overlay-at self) - (sound-id sound-id) - ) + ((root collide-shape-moving :override) + (parent-override (pointer kermit) :overlay-at parent) + (self-override kermit-pulse :overlay-at self) + (sound-id sound-id)) (:states - kermit-pulse-idle - kermit-pulse-impact - ) - ) - + kermit-pulse-idle + kermit-pulse-impact)) (defstate kermit-pulse-idle (kermit-pulse) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) - (go kermit-pulse-impact) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - ) - :code (behavior () - (while (not (time-elapsed? (-> self state-time) (seconds 4))) - (sound-play "kermit-loop" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) - (spawn (-> self part) (-> self root trans)) - (find-ground-and-draw-shadow - (-> self root trans) - (the-as vector #f) - 8192.0 - (collide-kind background) - (the-as process-drawable #f) - 0.0 - 81920.0 - ) - (suspend) - ) - (cleanup-for-death self) - ) - :post (behavior () - (update-transforms! (-> self root)) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) (send-event proc 'attack (-> block param 0) (new 'static 'attack-info)) (go kermit-pulse-impact)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :exit + (behavior () + (sound-stop (-> self sound-id))) + :code + (behavior () + (while (not (time-elapsed? (-> self state-time) (seconds 4))) + (sound-play "kermit-loop" :id (-> self sound-id) :position (the-as symbol (-> self root trans))) + (spawn (-> self part) (-> self root trans)) + (find-ground-and-draw-shadow (-> self root trans) + (the-as vector #f) + 8192.0 + (collide-kind background) + (the-as process-drawable #f) + 0.0 + 81920.0) + (suspend)) + (cleanup-for-death self)) + :post + (behavior () + (update-transforms! (-> self root)))) (defstate kermit-pulse-impact (kermit-pulse) - :code (behavior () - (sound-play "get-shocked") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 301) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (cleanup-for-death self) - ) - ) + :code + (behavior () + (sound-play "get-shocked") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 301) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self))) (defbehavior kermit-pulse-init-by-other kermit-pulse ((arg0 vector) (arg1 entity-actor)) (logclear! (-> self mask) (process-mask enemy attackable)) @@ -571,21 +499,17 @@ (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 quad)) (set! (-> self root quat vec quad) (-> self parent-override 0 collide-info quat vec quad)) (vector-identity! (-> self root scale)) @@ -593,130 +517,100 @@ (set! (-> self sound-id) (new-sound-id)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 300) self)) (go kermit-pulse-idle) - (none) - ) + (none)) (defun spawn-kermit-pulse ((arg0 kermit) (arg1 vector) (arg2 entity)) (process-spawn kermit-pulse arg1 arg2 :to arg0) 0 - (none) - ) + (none)) (deftype kermit (nav-enemy) - ((child-override (pointer kermit-pulse) :overlay-at child) - (rotate-dir vector :inline) - (charging-part sparticle-launch-control) - (airborne symbol) - (tongue-control joint-mod-tracker) - (tongue-pulse-pos float) - (miss-count int8) - (charged-up symbol) - (sound-id sound-id) - ) + ((child-override (pointer kermit-pulse) :overlay-at child) + (rotate-dir vector :inline) + (charging-part sparticle-launch-control) + (airborne symbol) + (tongue-control joint-mod-tracker) + (tongue-pulse-pos float) + (miss-count int8) + (charged-up symbol) + (sound-id sound-id)) (:states - kermit-attack - kermit-chase - kermit-chase-new-position - kermit-give-up - kermit-idle - kermit-notice - kermit-patrol - kermit-retract-tongue - kermit-tongue-stuck - ) - ) - + kermit-attack + kermit-chase + kermit-chase-new-position + kermit-give-up + kermit-idle + kermit-notice + kermit-patrol + kermit-retract-tongue + kermit-tongue-stuck)) (defmethod relocate ((this kermit) (arg0 int)) - (if (nonzero? (-> this tongue-control)) - (&+! (-> this tongue-control) arg0) - ) - (if (nonzero? (-> this charging-part)) - (&+! (-> this charging-part) arg0) - ) - (the-as kermit ((method-of-type nav-enemy relocate) this arg0)) - ) + (if (nonzero? (-> this tongue-control)) (&+! (-> this tongue-control) arg0)) + (if (nonzero? (-> this charging-part)) (&+! (-> this charging-part) arg0)) + (the-as kermit ((method-of-type nav-enemy relocate) this arg0))) (defmethod deactivate ((this kermit)) - (if (nonzero? (-> this charging-part)) - (kill-and-free-particles (-> this charging-part)) - ) + (if (nonzero? (-> this charging-part)) (kill-and-free-particles (-> this charging-part))) ((method-of-type nav-enemy deactivate) this) - (none) - ) + (none)) -(defskelgroup *kermit-sg* kermit kermit-lod0-jg kermit-idle-ja - ((kermit-lod0-mg (meters 20)) (kermit-lod1-mg (meters 40)) (kermit-lod2-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 3) - :longest-edge (meters 2) - ) +(defskelgroup *kermit-sg* + kermit + kermit-lod0-jg + kermit-idle-ja + ((kermit-lod0-mg (meters 20)) (kermit-lod1-mg (meters 40)) (kermit-lod2-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 3) + :longest-edge (meters 2)) (defbehavior kermit-enable-tongue kermit () (set! (-> self tongue-control enable) #t) (set! (-> self draw bounds w) 81920.0) 0 - (none) - ) + (none)) (defbehavior kermit-disable-tongue kermit () (set! (-> self tongue-control enable) #f) (set! (-> self draw bounds w) 12288.0) 0 - (none) - ) + (none)) (defun kermit-tongue-pos ((arg0 kermit)) - (-> arg0 node-list data 24 bone transform vector 3) - ) + (-> arg0 node-list data 24 bone transform vector 3)) (defun kermit-get-head-dir-xz ((arg0 kermit) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 node-list data 8 bone transform vector 2 quad)) (set! (-> arg1 y) 0.0) - (vector-xz-normalize! arg1 1.0) - ) + (vector-xz-normalize! arg1 1.0)) (defun kermit-get-head-dir ((arg0 kermit) (arg1 vector)) (set! (-> arg1 quad) (-> arg0 node-list data 8 bone transform vector 2 quad)) - (vector-normalize! arg1 1.0) - ) + (vector-normalize! arg1 1.0)) (defun kermit-player-target-pos () - (target-pos 26) - ) + (target-pos 26)) (defun kermit-get-tongue-target-callback ((arg0 vector)) (set! (-> arg0 quad) (-> (kermit-player-target-pos) quad)) - arg0 - ) + arg0) (defbehavior kermit-check-tongue-is-clear? kermit () (let* ((gp-0 (kermit-tongue-pos self)) (v1-1 (-> self tongue-control target-pos)) (s5-1 (vector-! (new 'stack-no-clear 'vector) v1-1 gp-0)) (t2-0 (new 'stack 'collide-tri-result)) - (f30-0 - (fill-and-probe-using-line-sphere - *collide-cache* - gp-0 - s5-1 - 409.6 - (collide-kind background cak-2 crate enemy wall-object projectile ground-object) - self - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - ) - (gp-1 (< f30-0 0.0)) - ) + (f30-0 (fill-and-probe-using-line-sphere *collide-cache* + gp-0 + s5-1 + 409.6 + (collide-kind background cak-2 crate enemy wall-object projectile ground-object) + self + t2-0 + (new 'static 'pat-surface :noentity #x1))) + (gp-1 (< f30-0 0.0))) (set! (-> self tongue-control forward-scale-max) - (if gp-1 - 2.0 - (* (vector-length s5-1) f30-0 (-> self tongue-control inv-forward-scale-factor)) - ) - ) - gp-1 - ) - ) + (if gp-1 2.0 (* (vector-length s5-1) f30-0 (-> self tongue-control inv-forward-scale-factor)))) + gp-1)) (defbehavior kermit-check-to-hit-player? kermit ((arg0 float)) (let* ((s5-0 (kermit-tongue-pos self)) @@ -726,112 +620,69 @@ (s5-1 (new 'stack-no-clear 'vector)) (f0-0 f30-0) (s5-2 (vector-float*! s5-1 s4-1 (/ 1.0 f0-0))) - (v0-5 (>= (vector-dot (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector)) s5-2) (cos arg0))) - ) - (and (< f30-0 49152.0) v0-5) - ) - ) + (v0-5 (>= (vector-dot (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector)) s5-2) (cos arg0)))) + (and (< f30-0 49152.0) v0-5))) (defbehavior kermit-set-nav-mesh-target kermit ((arg0 vector)) (let* ((gp-0 (target-pos 0)) - (s5-1 (vector-! (new 'stack-no-clear 'vector) arg0 gp-0)) - ) + (s5-1 (vector-! (new 'stack-no-clear 'vector) arg0 gp-0))) (vector-length s5-1) (let* ((a0-4 (vector-normalize-copy! (new 'stack-no-clear 'vector) s5-1 40960.0)) (v1-2 (vector+! (new 'stack-no-clear 'vector) gp-0 a0-4)) - (v0-3 (-> self nav target-pos)) - ) + (v0-3 (-> self nav target-pos))) (set! (-> v0-3 quad) (-> v1-2 quad)) - v0-3 - ) - ) - ) + v0-3))) (defbehavior kermit-short-hop kermit () (ja-no-eval :group! kermit-hop-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (let ((f0-4 (ja-aframe-num 0))) - (if (>= f0-4 4.0) - (set! (-> self airborne) #t) - ) - (if (>= f0-4 14.0) - (set! (-> self airborne) #f) - ) - ) + (if (>= f0-4 4.0) (set! (-> self airborne) #t)) + (if (>= f0-4 14.0) (set! (-> self airborne) #f))) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) (defbehavior kermit-long-hop kermit () (ja-no-eval :group! kermit-longhop-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (let ((f0-4 (ja-aframe-num 0))) - (if (>= f0-4 7.0) - (set! (-> self airborne) #t) - ) - (if (>= f0-4 29.0) - (set! (-> self airborne) #f) - ) - ) + (if (>= f0-4 7.0) (set! (-> self airborne) #t)) + (if (>= f0-4 29.0) (set! (-> self airborne) #f))) (suspend) - (ja :num! (seek!)) - ) - #f - ) + (ja :num! (seek!))) + #f) (defbehavior kermit-hop kermit ((arg0 float)) (ja-channel-push! 1 (seconds 0.1)) (set! (-> self rotate-speed) 1820444.5) (let ((f0-2 (fmin arg0 (vector-vector-distance (-> self collide-info trans) (-> self nav target-pos))))) (cond - ((< 16384.0 f0-2) - (set! (-> self target-speed) (* 0.045454547 (-> *display* frames-per-second) f0-2)) - (kermit-long-hop) - ) - (else - (set! (-> self target-speed) (* 0.1 (-> *display* frames-per-second) f0-2)) - (kermit-short-hop) - ) - ) - ) + ((< 16384.0 f0-2) (set! (-> self target-speed) (* 0.045454547 (-> *display* frames-per-second) f0-2)) (kermit-long-hop)) + (else (set! (-> self target-speed) (* 0.1 (-> *display* frames-per-second) f0-2)) (kermit-short-hop)))) (set! (-> self airborne) #f) - #f - ) + #f) (defbehavior kermit-set-rotate-dir-to-nav-target kermit () (cond ((logtest? (nav-control-flags navcf19) (-> self nav flags)) - (vector-! (-> self rotate-dir) (-> self nav target-pos) (-> self collide-info trans)) - ) - (else - (let ((v0-1 (-> self rotate-dir))) - (set! (-> v0-1 quad) (-> self nav travel quad)) - v0-1 - ) - ) - ) - ) + (vector-! (-> self rotate-dir) (-> self nav target-pos) (-> self collide-info trans))) + (else (let ((v0-1 (-> self rotate-dir))) (set! (-> v0-1 quad) (-> self nav travel quad)) v0-1)))) (defbehavior kermit-set-rotate-dir-to-player kermit () - (vector-! (-> self rotate-dir) (target-pos 0) (-> self nav target-pos)) - ) + (vector-! (-> self rotate-dir) (target-pos 0) (-> self nav target-pos))) nav-enemy-default-event-handler (defmethod common-post ((this kermit)) (call-parent-method this) - (when (-> this charged-up) - ) + (when (-> this charged-up)) 0 - (none) - ) + (none)) (defbehavior kermit-simple-post kermit () (nav-enemy-simple-post) - (none) - ) + (none)) (defbehavior kermit-post kermit () (cond @@ -840,474 +691,335 @@ nav-enemy-default-event-handler (set! (-> self collide-info transv x) (-> self nav travel x)) (set! (-> self collide-info transv y) 0.0) (set! (-> self collide-info transv z) (-> self nav travel z)) - (let ((f0-5 - (fmin - (-> self target-speed) - (* (vector-xz-length (-> self collide-info transv)) (-> *display* frames-per-second)) - ) - ) - ) - (vector-xz-normalize! (-> self collide-info transv) f0-5) - ) + (let ((f0-5 (fmin (-> self target-speed) (* (vector-xz-length (-> self collide-info transv)) (-> *display* frames-per-second))))) + (vector-xz-normalize! (-> self collide-info transv) f0-5)) (seek-toward-heading-vec! (-> self collide-info) (-> self rotate-dir) (-> self rotate-speed) (seconds 0.05)) - (vector-v++! - (-> self collide-info transv) - (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0) - ) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (nav-enemy-common-post) - ) - (else - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (kermit-simple-post) - ) - ) - (none) - ) + (vector-v++! (-> self collide-info transv) (compute-acc-due-to-gravity (-> self collide-info) (new-stack-vector0) 0.0)) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (nav-enemy-common-post)) + (else (set! (-> self collide-info transv quad) (-> *null-vector* quad)) (kermit-simple-post))) + (none)) (defbehavior kermit-get-new-patrol-point kermit () (nav-enemy-get-new-patrol-point) - (let ((v0-1 (-> self nav target-pos))) - (set! (-> v0-1 quad) (-> self nav destination-pos quad)) - v0-1 - ) - ) + (let ((v0-1 (-> self nav target-pos))) (set! (-> v0-1 quad) (-> self nav destination-pos quad)) v0-1)) (defstate kermit-idle (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set! (-> self notice-time) 0) - 0 - ) - :trans (behavior () - (if (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go kermit-patrol) - ) - ) - :code (behavior () - (kermit-disable-tongue) - (ja :group! kermit-idle-ja :num! min) - (loop - (ja :num! (loop!)) - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set! (-> self notice-time) 0) + 0) + :trans + (behavior () + (if (and *target* + (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go kermit-patrol))) + :code + (behavior () + (kermit-disable-tongue) + (ja :group! kermit-idle-ja :num! min) + (loop (ja :num! (loop!)) + (suspend))) + :post ja-post) (defstate kermit-patrol (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - (kermit-get-new-patrol-point) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (if (and (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (time-elapsed? (-> self state-time) (seconds 1)) - ) - (go kermit-idle) - ) - (kermit-set-rotate-dir-to-nav-target) - (if (and (not (-> self airborne)) (nav-enemy-test-point-in-nav-mesh? (target-pos 0))) - (go kermit-notice) - ) - (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (kermit-get-new-patrol-point) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 3.0)) - ) - (kermit-hop 20480.0) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) + (kermit-get-new-patrol-point) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (if (and (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (time-elapsed? (-> self state-time) (seconds 1))) + (go kermit-idle)) + (kermit-set-rotate-dir-to-nav-target) + (if (and (not (-> self airborne)) (nav-enemy-test-point-in-nav-mesh? (target-pos 0))) (go kermit-notice)) + (if (logtest? (nav-control-flags navcf19) (-> self nav flags)) (kermit-get-new-patrol-point))) + :code + (behavior () + (loop (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 3.0))) + (kermit-hop 20480.0))) + :post kermit-post) (defstate kermit-notice (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - ) - :trans (behavior () - (kermit-set-rotate-dir-to-player) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - (kermit-hop 0.0) - (go kermit-chase) - ) - :post kermit-post - ) + :enter + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode look-at))) + :trans + (behavior () + (kermit-set-rotate-dir-to-player)) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + (kermit-hop 0.0) + (go kermit-chase)) + :post kermit-post) (defstate kermit-give-up (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) - ) - :code (behavior () - (go kermit-patrol) - ) - :post kermit-simple-post - ) + :enter + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend))) + :code + (behavior () + (go kermit-patrol)) + :post kermit-simple-post) (defstate kermit-chase-new-position (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self miss-count) 0) - (let* ((a1-1 (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector))) - (gp-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) - (s5-0 (new 'stack-no-clear 'vector)) - (v1-2 #f) - ) - (let ((s4-0 0)) - (while (and (not v1-2) (< s4-0 4)) - (let ((f0-0 (rand-vu-float-range -40960.0 40960.0))) - (vector+*! s5-0 (-> self collide-info trans) gp-0 f0-0) - ) - (kermit-set-nav-mesh-target s5-0) - (set! v1-2 (nav-enemy-test-point-in-nav-mesh? (-> self nav target-pos))) - (+! s4-0 1) - ) - ) - (if (not v1-2) - (kermit-set-nav-mesh-target (-> self collide-info trans)) - ) - ) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (when (not (-> self airborne)) - (if (or (time-elapsed? (-> self state-time) (seconds 3)) - (and (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (time-elapsed? (-> self state-time) (seconds 0.5)) - ) - ) - (go kermit-chase) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (dotimes (gp-0 3) - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 4.0)) - ) - ) - (loop - (kermit-hop 81920.0) - (nop!) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self miss-count) 0) + (let* ((a1-1 (kermit-get-head-dir-xz self (new 'stack-no-clear 'vector))) + (gp-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) + (s5-0 (new 'stack-no-clear 'vector)) + (v1-2 #f)) + (let ((s4-0 0)) + (while (and (not v1-2) (< s4-0 4)) + (let ((f0-0 (rand-vu-float-range -40960.0 40960.0))) (vector+*! s5-0 (-> self collide-info trans) gp-0 f0-0)) + (kermit-set-nav-mesh-target s5-0) + (set! v1-2 (nav-enemy-test-point-in-nav-mesh? (-> self nav target-pos))) + (+! s4-0 1))) + (if (not v1-2) (kermit-set-nav-mesh-target (-> self collide-info trans)))) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (when (not (-> self airborne)) + (if (or (time-elapsed? (-> self state-time) (seconds 3)) + (and (logtest? (nav-control-flags navcf19) (-> self nav flags)) (time-elapsed? (-> self state-time) (seconds 0.5)))) + (go kermit-chase)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (dotimes (gp-0 3) + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 4.0)))) + (loop (kermit-hop 81920.0) + (nop!))) + :post kermit-post) (defstate kermit-chase (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (nav-control-method-11 (-> self nav) (-> self nav target-pos)) - ) - :trans (behavior () - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (kermit-set-rotate-dir-to-player) - (if (nav-enemy-test-point-in-nav-mesh? (target-pos 0)) - (set-time! (-> self state-time)) - ) - (kermit-tongue-pos self) - (let ((v1-5 (kermit-player-target-pos))) - (set! (-> self tongue-control target-pos quad) (-> v1-5 quad)) - ) - (when (not (-> self airborne)) - (if (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (go kermit-patrol) - ) - (let ((gp-1 (kermit-check-to-hit-player? 3640.889)) - (v1-17 (kermit-check-tongue-is-clear?)) - ) - (when gp-1 - (if v1-17 - (go kermit-attack) - (go kermit-chase-new-position) - ) - ) - ) - (if (time-elapsed? (-> self state-time) (seconds 3)) - (go kermit-give-up) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (loop - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max 3.0)) - ) - (if (not (kermit-check-to-hit-player? 3640.889)) - (kermit-hop 81920.0) - ) - ) - ) - :post kermit-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (nav-control-method-11 (-> self nav) (-> self nav target-pos))) + :trans + (behavior () + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (kermit-set-rotate-dir-to-player) + (if (nav-enemy-test-point-in-nav-mesh? (target-pos 0)) (set-time! (-> self state-time))) + (kermit-tongue-pos self) + (let ((v1-5 (kermit-player-target-pos))) (set! (-> self tongue-control target-pos quad) (-> v1-5 quad))) + (when (not (-> self airborne)) + (if (or (not *target*) + (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go kermit-patrol)) + (let ((gp-1 (kermit-check-to-hit-player? 3640.889)) + (v1-17 (kermit-check-tongue-is-clear?))) + (when gp-1 + (if v1-17 (go kermit-attack) (go kermit-chase-new-position)))) + (if (time-elapsed? (-> self state-time) (seconds 3)) (go kermit-give-up)))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (loop (ja-no-eval :group! kermit-idle-ja :num! (seek! max 3.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 3.0))) + (if (not (kermit-check-to-hit-player? 3640.889)) (kermit-hop 81920.0)))) + :post kermit-post) (defstate kermit-attack (kermit) :event nav-enemy-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.17)) - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-enable-tongue) - (let ((s5-0 #f) - (gp-0 #f) - ) - (let ((f30-0 1.0)) - (ja-no-eval :group! kermit-lash-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (set! (-> self tongue-control target-pos quad) (-> (kermit-player-target-pos) quad)) - (when (and (not s5-0) (>= (ja-aframe-num 0) 14.0)) - (set! s5-0 #t) - (set! gp-0 (kermit-check-to-hit-player? 3640.889)) - (if (not gp-0) - (set! f30-0 0.8) - ) - ) - (when s5-0 - (if (and (not gp-0) (= (-> self tongue-control forward-scale-control) f30-0)) - (go kermit-retract-tongue) - ) - (seek! (-> self tongue-control forward-scale-control) f30-0 0.25) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (cond - (gp-0 - (level-hint-spawn - (text-id swamp-kermit-tongue-hint) - "sksp0143" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn (text-id swamp-kermit-flee) "sksp0151" (the-as entity #f) *entity-pool* (game-task none)) - (go kermit-tongue-stuck) - ) - (else - (go kermit-retract-tongue) - ) - ) - ) - ) - :post kermit-simple-post - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.17)) + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-enable-tongue) + (let ((s5-0 #f) + (gp-0 #f)) + (let ((f30-0 1.0)) + (ja-no-eval :group! kermit-lash-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (set! (-> self tongue-control target-pos quad) (-> (kermit-player-target-pos) quad)) + (when (and (not s5-0) (>= (ja-aframe-num 0) 14.0)) + (set! s5-0 #t) + (set! gp-0 (kermit-check-to-hit-player? 3640.889)) + (if (not gp-0) (set! f30-0 0.8))) + (when s5-0 + (if (and (not gp-0) (= (-> self tongue-control forward-scale-control) f30-0)) (go kermit-retract-tongue)) + (seek! (-> self tongue-control forward-scale-control) f30-0 0.25)) + (suspend) + (ja :num! (seek!)))) + (cond + (gp-0 + (level-hint-spawn (text-id swamp-kermit-tongue-hint) "sksp0143" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id swamp-kermit-flee) "sksp0151" (the-as entity #f) *entity-pool* (game-task none)) + (go kermit-tongue-stuck)) + (else (go kermit-retract-tongue))))) + :post kermit-simple-post) (defstate kermit-tongue-stuck (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set! (-> self miss-count) 0) - (set! (-> self tongue-control forward-scale-control) 1.0) - (kermit-enable-tongue) - (set! (-> self tongue-pulse-pos) 0.0) - (spawn-kermit-pulse self (kermit-tongue-pos self) (-> self entity)) - ) - :exit (behavior () - (sound-stop (-> self sound-id)) - (let ((v1-0 (-> self child-override))) - (if v1-0 - (deactivate (-> v1-0 0)) - ) - ) - ) - :trans (behavior () - (let ((s5-0 (kermit-player-target-pos)) - (gp-0 (kermit-tongue-pos self)) - ) - (if (or (< 73728.0 (vector-vector-distance s5-0 gp-0)) - (or (not (kermit-check-tongue-is-clear?)) (not (-> self child-override))) - ) - (go kermit-retract-tongue) - ) - (seek! (-> self tongue-pulse-pos) 1.0 (* 0.3 (seconds-per-frame))) - (when (and (-> self child-override) (let ((v1-9 (-> self child-override))) - (= (-> (if v1-9 - (-> v1-9 0 self-override) - ) - type - ) - kermit-pulse - ) - ) - ) - (let* ((v1-13 (-> self child-override)) - (s4-0 (if v1-13 - (-> v1-13 0 self-override) - ) - ) - (v1-15 (vector-lerp! (new 'stack-no-clear 'vector) gp-0 s5-0 (-> self tongue-pulse-pos))) - ) - (set! (-> s4-0 root trans quad) (-> v1-15 quad)) - ) - ) - (send-event *target* 'tongue gp-0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (loop - (ja-no-eval :group! kermit-turn-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (sound-play "kermit-stretch" :id (-> self sound-id) :position (the-as symbol (-> self collide-info trans))) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post (behavior () - (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (seconds 0.05)) - (kermit-simple-post) - ) - ) + :enter + (behavior () + (set! (-> self miss-count) 0) + (set! (-> self tongue-control forward-scale-control) 1.0) + (kermit-enable-tongue) + (set! (-> self tongue-pulse-pos) 0.0) + (spawn-kermit-pulse self (kermit-tongue-pos self) (-> self entity))) + :exit + (behavior () + (sound-stop (-> self sound-id)) + (let ((v1-0 (-> self child-override))) (if v1-0 (deactivate (-> v1-0 0))))) + :trans + (behavior () + (let ((s5-0 (kermit-player-target-pos)) + (gp-0 (kermit-tongue-pos self))) + (if (or (< 73728.0 (vector-vector-distance s5-0 gp-0)) + (or (not (kermit-check-tongue-is-clear?)) (not (-> self child-override)))) + (go kermit-retract-tongue)) + (seek! (-> self tongue-pulse-pos) 1.0 (* 0.3 (seconds-per-frame))) + (when (and (-> self child-override) + (let ((v1-9 (-> self child-override))) (= (-> (if v1-9 (-> v1-9 0 self-override)) type) kermit-pulse))) + (let* ((v1-13 (-> self child-override)) + (s4-0 (if v1-13 (-> v1-13 0 self-override))) + (v1-15 (vector-lerp! (new 'stack-no-clear 'vector) gp-0 s5-0 (-> self tongue-pulse-pos)))) + (set! (-> s4-0 root trans quad) (-> v1-15 quad)))) + (send-event *target* 'tongue gp-0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (loop (ja-no-eval :group! kermit-turn-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (sound-play "kermit-stretch" :id (-> self sound-id) :position (the-as symbol (-> self collide-info trans))) + (suspend) + (ja :num! (seek!))))) + :post + (behavior () + (seek-to-point-toward-point! (-> self collide-info) (target-pos 0) (-> self rotate-speed) (seconds 0.05)) + (kermit-simple-post))) (defstate kermit-retract-tongue (kermit) :event nav-enemy-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self charged-up) #f) - (+! (-> self miss-count) 1) - ) - :exit (behavior () - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-disable-tongue) - ) - :trans (behavior () - (kermit-set-nav-mesh-target (-> self collide-info trans)) - (kermit-set-rotate-dir-to-player) - (when (not (-> self airborne)) - (when (time-elapsed? (-> self state-time) (seconds 2.5)) - (kill-and-free-particles (-> self charging-part)) - (set! (-> self charged-up) #t) - (go kermit-chase) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! kermit-miss-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (>= (ja-aframe-num 0) 3.0) - (seek! (-> self tongue-control forward-scale-control) 0.0 0.125) - ) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self tongue-control forward-scale-control) 0.0) - (kermit-disable-tongue) - (loop + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self charged-up) #f) + (+! (-> self miss-count) 1)) + :exit + (behavior () + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-disable-tongue)) + :trans + (behavior () + (kermit-set-nav-mesh-target (-> self collide-info trans)) + (kermit-set-rotate-dir-to-player) + (when (not (-> self airborne)) + (when (time-elapsed? (-> self state-time) (seconds 2.5)) + (kill-and-free-particles (-> self charging-part)) + (set! (-> self charged-up) #t) + (go kermit-chase)))) + :code + (behavior () (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (ja-no-eval :group! kermit-miss-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) + (if (>= (ja-aframe-num 0) 3.0) (seek! (-> self tongue-control forward-scale-control) 0.0 0.125)) (suspend) - (ja :num! (seek! max 4.0)) - ) - (kermit-hop 0.0) - ) - ) - :post kermit-post - ) + (ja :num! (seek!))) + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-disable-tongue) + (loop (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! kermit-idle-ja :num! (seek! max 4.0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max 4.0))) + (kermit-hop 0.0))) + :post kermit-post) -(define *kermit-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim -1 - :turn-anim -1 - :notice-anim -1 - :run-anim -1 - :jump-anim 6 - :jump-land-anim -1 - :victory-anim -1 - :taunt-anim -1 - :die-anim 11 - :neck-joint 8 - :player-look-at-joint 5 - :run-travel-speed (meters 6) - :run-rotate-speed (degrees 10000) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.05) - :walk-travel-speed (meters 3) - :walk-rotate-speed (degrees 10000) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.05) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 2) - :notice-nav-radius (meters 10) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #t - :move-to-ground #f - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *kermit-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim -1 + :turn-anim -1 + :notice-anim -1 + :run-anim -1 + :jump-anim 6 + :jump-land-anim -1 + :victory-anim -1 + :taunt-anim -1 + :die-anim 11 + :neck-joint 8 + :player-look-at-joint 5 + :run-travel-speed (meters 6) + :run-rotate-speed (degrees 10000) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.05) + :walk-travel-speed (meters 3) + :walk-rotate-speed (degrees 10000) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.05) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 2) + :notice-nav-radius (meters 10) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #t + :move-to-ground #f + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod init-from-entity! ((this kermit) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -1321,15 +1033,12 @@ nav-enemy-default-event-handler (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3072.0) - (append-prim s3-0 s2-0) - ) - ) + (append-prim s3-0 s2-0))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this collide-info) s4-0) - ) + (set! (-> this collide-info) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *kermit-sg* '()) + (initialize-skeleton this *kermit-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (set! (-> this airborne) #f) (init-defaults! this *kermit-nav-enemy-info*) @@ -1340,12 +1049,8 @@ nav-enemy-default-event-handler (set! (-> this neck max-dist) 102400.0) (set! (-> this neck ignore-angle) 16384.0) (set! (-> this miss-count) 0) - (set! (-> this tongue-control) - (new 'process 'joint-mod-tracker this 24 kermit-get-tongue-target-callback 1 2) - ) - (let ((f0-16 49152.0)) - (set! (-> this tongue-control inv-forward-scale-factor) (/ 1.0 f0-16)) - ) + (set! (-> this tongue-control) (new 'process 'joint-mod-tracker this 24 kermit-get-tongue-target-callback 1 2)) + (let ((f0-16 49152.0)) (set! (-> this tongue-control inv-forward-scale-factor) (/ 1.0 f0-16))) (set! (-> this tongue-control forward-scale-control) 0.0) (set! (-> this tongue-control forward-scale-max) 2.0) (set! (-> this tongue-control enable) #f) @@ -1354,5 +1059,4 @@ nav-enemy-default-event-handler (set! (-> this charging-part) (create-launch-control (-> *part-group-id-table* 298) this)) (set! (-> this sound-id) (new-sound-id)) (go kermit-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/swamp-bat.gc b/goal_src/jak1/levels/swamp/swamp-bat.gc index 3f7b463d86..b854923c66 100644 --- a/goal_src/jak1/levels/swamp/swamp-bat.gc +++ b/goal_src/jak1/levels/swamp/swamp-bat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/util/sync-info.gc") (require "engine/common-obs/nav-enemy.gc") (require "engine/geometry/vol.gc") @@ -11,113 +10,82 @@ ;; dgos: L1, SWA (declare-type swamp-bat-slave process-drawable) + (declare-type swamp-bat process-drawable) ;; DECOMP BEGINS (deftype swamp-bat-idle-path (structure) - ((origin vector :inline) - (x-axis vector :inline) - (y-axis vector :inline) - ) + ((origin vector :inline) + (x-axis vector :inline) + (y-axis vector :inline)) (:methods - (swamp-bat-idle-path-method-9 (_type_ vector float) vector) - ) - ) - + (swamp-bat-idle-path-method-9 (_type_ vector float) vector))) (defmethod swamp-bat-idle-path-method-9 ((this swamp-bat-idle-path) (arg0 vector) (arg1 float)) (let ((f30-0 (* 65536.0 arg1))) (set! (-> arg0 quad) (-> this origin quad)) (vector+*! arg0 arg0 (-> this x-axis) (cos f30-0)) - (vector+*! arg0 arg0 (-> this y-axis) (sin f30-0)) - ) - arg0 - ) + (vector+*! arg0 arg0 (-> this y-axis) (sin f30-0))) + arg0) (deftype swamp-bat (process-drawable) - ((root collide-shape :override) - (fact fact-info-enemy :override) - (child-process (pointer swamp-bat-slave) :overlay-at child) - (path-origin vector :inline) - (idle-position-angle float 8) - (path-select-plane plane 2 :inline) - (path-list curve-control 2) - (path-select int8) - (slave-count int8) - (path-count int8) - ) + ((root collide-shape :override) + (fact fact-info-enemy :override) + (child-process (pointer swamp-bat-slave) :overlay-at child) + (path-origin vector :inline) + (idle-position-angle float 8) + (path-select-plane plane 2 :inline) + (path-list curve-control 2) + (path-select int8) + (slave-count int8) + (path-count int8)) (:states - swamp-bat-idle - swamp-bat-launch-slaves - ) - ) - + swamp-bat-idle + swamp-bat-launch-slaves)) (defmethod relocate ((this swamp-bat) (arg0 int)) (dotimes (v1-0 2) - (if (nonzero? (-> this path-list v1-0)) - (&+! (-> this path-list v1-0) arg0) - ) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this path-list v1-0)) (&+! (-> this path-list v1-0) arg0))) + (call-parent-method this arg0)) (deftype swamp-bat-slave (process-drawable) - ((root collide-shape-moving :override) - (parent-process (pointer swamp-bat) :overlay-at parent) - (sync sync-info :inline) - (idle-anim-speed float) - (strafe-envelope float) - (strafe-distance float) - (path-point-count float) - (idle-path swamp-bat-idle-path :inline) - (idle-position vector :inline) - (idle-position-index int8) - (path-select int8) - (launch-ready symbol) - ) + ((root collide-shape-moving :override) + (parent-process (pointer swamp-bat) :overlay-at parent) + (sync sync-info :inline) + (idle-anim-speed float) + (strafe-envelope float) + (strafe-distance float) + (path-point-count float) + (idle-path swamp-bat-idle-path :inline) + (idle-position vector :inline) + (idle-position-index int8) + (path-select int8) + (launch-ready symbol)) (:methods - (swamp-bat-slave-method-20 (_type_) float) - ) - (:states - (swamp-bat-slave-die handle) - swamp-bat-slave-idle - swamp-bat-slave-launch - swamp-bat-slave-return - swamp-bat-slave-strafe - swamp-bat-slave-swoop - ) - ) - + (swamp-bat-slave-method-20 (_type_) float)) + (:states (swamp-bat-slave-die handle) + swamp-bat-slave-idle + swamp-bat-slave-launch + swamp-bat-slave-return + swamp-bat-slave-strafe + swamp-bat-slave-swoop)) (defbehavior swamp-bat-slave-event-handler swamp-bat-slave ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (logclear! (-> self mask) (process-mask actor-pause)) - (go swamp-bat-slave-die (process->handle arg0)) - ) + (('attack) (logclear! (-> self mask) (process-mask actor-pause)) (go swamp-bat-slave-die (process->handle arg0))) (('touch) (level-hint-spawn (text-id swamp-bat-duck-hint) "sksp0156" (the-as entity #f) *entity-pool* (game-task none)) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - (('launch) - (if (-> self launch-ready) - (go swamp-bat-slave-launch) - ) - ) - ) - ) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))) + (('launch) (if (-> self launch-ready) (go swamp-bat-slave-launch))))) swamp-bat-slave-event-handler (defbehavior swamp-bat-slave-post swamp-bat-slave () - (transform-post) - ) + (transform-post)) (defmethod swamp-bat-slave-method-20 ((this swamp-bat-slave)) - (* (get-current-phase (-> this sync)) (-> this path-point-count)) - ) + (* (get-current-phase (-> this sync)) (-> this path-point-count))) (defbehavior swamp-bat-slave-path-post swamp-bat-slave () (let ((s2-0 (-> self parent-process 0 path-list (-> self path-select))) @@ -125,31 +93,25 @@ swamp-bat-slave-event-handler (gp-0 (new-stack-vector0)) (s4-0 (new-stack-vector0)) (f30-0 (swamp-bat-slave-method-20 self)) - (s3-0 (new 'static 'vector :y 1.0 :w 1.0)) - ) + (s3-0 (new 'static 'vector :y 1.0 :w 1.0))) (eval-path-curve-div! s2-0 s5-0 f30-0 'interp) (path-control-method-12 s2-0 gp-0 f30-0) (vector-cross! s4-0 gp-0 s3-0) (vector-normalize! s4-0 1.0) - (let ((f0-4 (fmax - (fmin (- (vector-dot (target-pos 0) s4-0) (vector-dot s5-0 s4-0)) (-> self strafe-envelope)) - (- (-> self strafe-envelope)) - ) - ) - ) - (seek! (-> self strafe-distance) f0-4 (* 20480.0 (seconds-per-frame))) - ) + (let ((f0-4 (fmax (fmin (- (vector-dot (target-pos 0) s4-0) (vector-dot s5-0 s4-0)) (-> self strafe-envelope)) + (- (-> self strafe-envelope))))) + (seek! (-> self strafe-distance) f0-4 (* 20480.0 (seconds-per-frame)))) (vector-float*! s4-0 s4-0 (-> self strafe-distance)) (vector+! (-> self root trans) s5-0 s4-0) - (forward-up->quaternion (-> self root quat) gp-0 s3-0) - ) - (swamp-bat-slave-post) - ) + (forward-up->quaternion (-> self root quat) gp-0 s3-0)) + (swamp-bat-slave-post)) -(defskelgroup *swamp-bat-slave-sg* swamp-bat swamp-bat-lod0-jg swamp-bat-idle-ja - ((swamp-bat-lod0-mg (meters 20)) (swamp-bat-lod1-mg (meters 40)) (swamp-bat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - ) +(defskelgroup *swamp-bat-slave-sg* + swamp-bat + swamp-bat-lod0-jg + swamp-bat-idle-ja + ((swamp-bat-lod0-mg (meters 20)) (swamp-bat-lod1-mg (meters 40)) (swamp-bat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5)) (defbehavior swamp-bat-slave-get-new-path swamp-bat-slave () (set! (-> self path-select) (-> self parent-process 0 path-select)) @@ -157,232 +119,162 @@ swamp-bat-slave-event-handler (let* ((f28-0 (-> self parent-process 0 idle-position-angle (-> self idle-position-index))) (f30-0 (cos f28-0)) (f26-0 (sin f28-0)) - (f28-1 (cos 8192.0)) - ) + (f28-1 (cos 8192.0))) (let ((f0-0 (sin 8192.0))) (set! (-> self idle-path x-axis x) (* 12288.0 f30-0)) (set! (-> self idle-path x-axis y) 0.0) (set! (-> self idle-path x-axis z) (* 12288.0 f26-0)) (set! (-> self idle-path x-axis w) 1.0) (set! (-> self idle-path y-axis x) (* -12288.0 f26-0 f28-1)) - (set! (-> self idle-path y-axis y) (* 12288.0 f0-0)) - ) - (set! (-> self idle-path y-axis z) (* 12288.0 f30-0 f28-1)) - ) + (set! (-> self idle-path y-axis y) (* 12288.0 f0-0))) + (set! (-> self idle-path y-axis z) (* 12288.0 f30-0 f28-1))) (set! (-> self idle-path y-axis w) 1.0) (vector+! (-> self idle-position) (the-as vector (-> self idle-path)) (-> self idle-path x-axis)) (set! (-> self path-point-count) - (the float (+ (-> self parent-process 0 path-list (-> self path-select) curve num-cverts) -1)) - ) - ) + (the float (+ (-> self parent-process 0 path-list (-> self path-select) curve num-cverts) -1)))) (defstate swamp-bat-slave-idle (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self launch-ready) #f) - (ja-channel-push! 1 (seconds 0.165)) - (ja :group! swamp-bat-idle-ja) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((s4-0 (quaternion-copy! (new 'stack-no-clear 'quaternion) (-> self root quat))) - (gp-0 (new-stack-quaternion0)) - ) - (let ((s2-0 (path-control-method-12 - (-> self parent-process 0 path-list (-> self path-select)) - (new 'stack-no-clear 'vector) - 0.1 - ) - ) - ) - 0 - (let* ((f0-0 300.0) - (f1-0 32768.0) - (s3-0 (the int (* f0-0 (/ 1.0 f1-0) (vector-vector-distance s5-0 (-> self idle-position))))) - ) - (forward-up->quaternion gp-0 s2-0 (new 'static 'vector :y 1.0 :w 1.0)) - (loop - (let ((v1-17 (- (current-time) (-> self state-time)))) - (when (>= v1-17 s3-0) - 0 - (goto cfg-10) - ) - (let ((f30-1 (/ (the float v1-17) (the float s3-0)))) - (when *run-time-assert-enable* - (set-pos *__private-assert-info* "swamp-bat" (the-as uint 283) (the-as uint 20)) - (__assert (< f30-1 1.0) "(< interp 1.0)") - ) - (vector-lerp! (-> self root trans) s5-0 (-> self idle-position) f30-1) - (quaternion-slerp! (-> self root quat) s4-0 gp-0 f30-1) - ) - ) - (ja :num! (loop! (-> self idle-anim-speed))) - (suspend) - 0 - ) - ) - ) - (label cfg-10) - (set! (-> self root trans quad) (-> self idle-position quad)) - (quaternion-copy! (-> self root quat) gp-0) - ) - ) - (set! (-> self launch-ready) #t) - (logior! (-> self mask) (process-mask actor-pause)) - (let ((f30-2 0.0)) - (loop - (let ((f26-0 (cos f30-2)) - (f28-0 (sin f30-2)) - ) - (set! (-> self root trans quad) (-> self idle-path origin quad)) - (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path x-axis) f26-0) - (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path y-axis) f28-0) - ) - (ja :num! (loop! (-> self idle-anim-speed))) - (suspend) - (+! f30-2 (* 32768.0 (seconds-per-frame) (-> self idle-anim-speed))) - ) - ) - ) - :post swamp-bat-slave-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self launch-ready) #f) + (ja-channel-push! 1 (seconds 0.165)) + (ja :group! swamp-bat-idle-ja) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((s4-0 (quaternion-copy! (new 'stack-no-clear 'quaternion) (-> self root quat))) + (gp-0 (new-stack-quaternion0))) + (let ((s2-0 (path-control-method-12 (-> self parent-process 0 path-list (-> self path-select)) (new 'stack-no-clear 'vector) 0.1))) + 0 + (let* ((f0-0 300.0) + (f1-0 32768.0) + (s3-0 (the int (* f0-0 (/ 1.0 f1-0) (vector-vector-distance s5-0 (-> self idle-position)))))) + (forward-up->quaternion gp-0 s2-0 (new 'static 'vector :y 1.0 :w 1.0)) + (loop (let ((v1-17 (- (current-time) (-> self state-time)))) + (when (>= v1-17 s3-0) + 0 + (goto cfg-10)) + (let ((f30-1 (/ (the float v1-17) (the float s3-0)))) + (when *run-time-assert-enable* + (set-pos *__private-assert-info* "swamp-bat" (the-as uint 283) (the-as uint 20)) + (__assert (< f30-1 1.0) "(< interp 1.0)")) + (vector-lerp! (-> self root trans) s5-0 (-> self idle-position) f30-1) + (quaternion-slerp! (-> self root quat) s4-0 gp-0 f30-1))) + (ja :num! (loop! (-> self idle-anim-speed))) + (suspend) + 0))) + (label cfg-10) + (set! (-> self root trans quad) (-> self idle-position quad)) + (quaternion-copy! (-> self root quat) gp-0))) + (set! (-> self launch-ready) #t) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((f30-2 0.0)) + (loop (let ((f26-0 (cos f30-2)) + (f28-0 (sin f30-2))) + (set! (-> self root trans quad) (-> self idle-path origin quad)) + (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path x-axis) f26-0) + (vector+*! (-> self root trans) (-> self root trans) (-> self idle-path y-axis) f28-0)) + (ja :num! (loop! (-> self idle-anim-speed))) + (suspend) + (+! f30-2 (* 32768.0 (seconds-per-frame) (-> self idle-anim-speed)))))) + :post swamp-bat-slave-post) (defstate swamp-bat-slave-launch (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self launch-ready) #f) - (ja-channel-push! 1 (seconds 0.1)) - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 quad) (-> self root trans quad)) - (let ((s5-0 (new-stack-vector0))) - (eval-path-curve-div! (-> self parent-process 0 path-list (-> self path-select)) s5-0 0.0 'interp) - (ja :group! swamp-bat-idle-ja) - (loop - (let ((s4-0 (- (current-time) (-> self state-time)))) - (if (>= s4-0 (seconds 0.3)) - (go swamp-bat-slave-swoop) - ) - (let ((f0-1 (* 0.011111111 (the float s4-0)))) - (vector-lerp! (-> self root trans) gp-0 s5-0 f0-1) - ) - ) - (ja :num! (loop! (-> self idle-anim-speed))) - (suspend) - 0 - ) - ) - ) - ) - :post swamp-bat-slave-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self launch-ready) #f) + (ja-channel-push! 1 (seconds 0.1)) + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 quad) (-> self root trans quad)) + (let ((s5-0 (new-stack-vector0))) + (eval-path-curve-div! (-> self parent-process 0 path-list (-> self path-select)) s5-0 0.0 'interp) + (ja :group! swamp-bat-idle-ja) + (loop (let ((s4-0 (- (current-time) (-> self state-time)))) + (if (>= s4-0 (seconds 0.3)) (go swamp-bat-slave-swoop)) + (let ((f0-1 (* 0.011111111 (the float s4-0)))) (vector-lerp! (-> self root trans) gp-0 s5-0 f0-1))) + (ja :num! (loop! (-> self idle-anim-speed))) + (suspend) + 0)))) + :post swamp-bat-slave-post) (defstate swamp-bat-slave-swoop (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 0.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-notice-ja :num! min) - (until (ja-done? 0) - (if (< (ja-aframe-num 0) 10.0) - (sync-now! (-> self sync) 0.0) - ) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self strafe-envelope) 20480.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-swoop-ja) - (loop - (if (>= (swamp-bat-slave-method-20 self) 2.0) - (go swamp-bat-slave-strafe) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 0.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-notice-ja :num! min) + (until (ja-done? 0) + (if (< (ja-aframe-num 0) 10.0) (sync-now! (-> self sync) 0.0)) + (suspend) + (ja :num! (seek!))) + (set! (-> self strafe-envelope) 20480.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-swoop-ja) + (loop (if (>= (swamp-bat-slave-method-20 self) 2.0) (go swamp-bat-slave-strafe)) + (ja :num! (loop!)) + (suspend))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-strafe (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 20480.0) - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! swamp-bat-strafe-ja) - (loop - (if (>= (swamp-bat-slave-method-20 self) 6.0) - (go swamp-bat-slave-return) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 20480.0) + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! swamp-bat-strafe-ja) + (loop (if (>= (swamp-bat-slave-method-20 self) 6.0) (go swamp-bat-slave-return)) + (ja :num! (loop!)) + (suspend))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-return (swamp-bat-slave) :event swamp-bat-slave-event-handler - :code (behavior () - (set! (-> self strafe-envelope) 0.0) - (ja-channel-push! 1 (seconds 0.075)) - (ja :group! swamp-bat-strafe-ja) - (let ((f30-0 (+ -1.0 (-> self path-point-count))) - (gp-0 #t) - ) - (loop - (let ((f28-0 (swamp-bat-slave-method-20 self))) - (if (>= f28-0 f30-0) - (go swamp-bat-slave-idle) - ) - (when (and gp-0 (>= f28-0 7.0) (< f28-0 8.0)) - (set! gp-0 #f) - (when (!= (-> self path-select) (-> self parent-process 0 path-select)) - (swamp-bat-slave-get-new-path) - (go swamp-bat-slave-idle) - ) - ) - ) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - :post swamp-bat-slave-path-post - ) + :code + (behavior () + (set! (-> self strafe-envelope) 0.0) + (ja-channel-push! 1 (seconds 0.075)) + (ja :group! swamp-bat-strafe-ja) + (let ((f30-0 (+ -1.0 (-> self path-point-count))) + (gp-0 #t)) + (loop (let ((f28-0 (swamp-bat-slave-method-20 self))) + (if (>= f28-0 f30-0) (go swamp-bat-slave-idle)) + (when (and gp-0 (>= f28-0 7.0) (< f28-0 8.0)) + (set! gp-0 #f) + (when (!= (-> self path-select) (-> self parent-process 0 path-select)) + (swamp-bat-slave-get-new-path) + (go swamp-bat-slave-idle)))) + (ja :num! (loop!)) + (suspend)))) + :post swamp-bat-slave-path-post) (defstate swamp-bat-slave-die (swamp-bat-slave) :event process-drawable-death-event-handler - :code (behavior ((arg0 handle)) - (ja-channel-push! 1 (seconds 0.07)) - (let ((gp-0 (new-stack-vector0))) - (let ((v1-1 (handle->process arg0))) - (if v1-1 - (vector-! gp-0 (-> self root trans) (-> (the-as swamp-bat v1-1) root trans)) - ) - ) - (+! (-> gp-0 y) -6144.0) - (vector-normalize! gp-0 98304.0) - (ja :group! swamp-bat-die-ja) - (until (ja-done? 0) - (vector-v++! (-> self root trans) gp-0) - (ja :num! (seek! max 0.5)) - (suspend) - ) - ) - (cleanup-for-death self) - ) - :post swamp-bat-slave-post - ) + :code + (behavior ((arg0 handle)) + (ja-channel-push! 1 (seconds 0.07)) + (let ((gp-0 (new-stack-vector0))) + (let ((v1-1 (handle->process arg0))) + (if v1-1 (vector-! gp-0 (-> self root trans) (-> (the-as swamp-bat v1-1) root trans)))) + (+! (-> gp-0 y) -6144.0) + (vector-normalize! gp-0 98304.0) + (ja :group! swamp-bat-die-ja) + (until (ja-done? 0) + (vector-v++! (-> self root trans) gp-0) + (ja :num! (seek! max 0.5)) + (suspend))) + (cleanup-for-death self)) + :post swamp-bat-slave-post) (defbehavior swamp-bat-slave-init-by-other swamp-bat-slave ((arg0 swamp-bat-slave) (arg1 int)) (logior! (-> self mask) (process-mask enemy)) (let ((s4-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) @@ -396,20 +288,15 @@ swamp-bat-slave-event-handler (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - ) + (append-prim s3-0 s2-0))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (set! (-> self root trans quad) (-> arg0 root trans quad)) (set! (-> self root quat vec quad) (-> arg0 root quat vec quad)) (vector-float*! (-> self root scale) *identity-vector* 2.0) (set! (-> self root pause-adjust-distance) 286720.0) - (set! (-> self fact) - (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> self fact) (new 'process 'fact-info-enemy self (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> self idle-anim-speed) (rand-vu-float-range 0.9 1.1)) (set! (-> self strafe-distance) 0.0) (set! (-> self strafe-envelope) 0.0) @@ -417,159 +304,111 @@ swamp-bat-slave-event-handler (swamp-bat-slave-get-new-path) (set! (-> self root trans quad) (-> self idle-position quad)) (setup-params! (-> self sync) (the-as uint 1200) 0.0 0.15 0.15) - (initialize-skeleton self *swamp-bat-slave-sg* '()) + (initialize-skeleton self *swamp-bat-slave-sg* ()) (logclear! (-> self mask) (process-mask actor-pause)) (go swamp-bat-slave-idle) - (none) - ) + (none)) (defbehavior swamp-bat-setup-new-path swamp-bat ((arg0 int)) (when *run-time-assert-enable* (set-pos *__private-assert-info* "swamp-bat" (the-as uint 520) (the-as uint 2)) - (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)") - ) + (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)")) (when (< 0.0 (the float (+ (-> self path-list arg0 curve num-cverts) -1))) (set! (-> self path-select) arg0) (let ((f30-0 0.0) - (f28-0 (/ 65536.0 (the float (-> self slave-count)))) - ) + (f28-0 (/ 65536.0 (the float (-> self slave-count))))) (eval-path-curve-div! (-> self path-list arg0) (-> self path-origin) 0.0 'interp) (dotimes (v1-16 (-> self slave-count)) (set! (-> self idle-position-angle v1-16) f30-0) - (+! f30-0 f28-0) - ) - ) - #f - ) - ) + (+! f30-0 f28-0))) + #f)) (defbehavior swamp-bat-make-path-select-plane swamp-bat ((arg0 int)) (when *run-time-assert-enable* (set-pos *__private-assert-info* "swamp-bat" (the-as uint 538) (the-as uint 2)) - (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)") - ) + (__assert-zero-lim-range-int arg0 (-> self path-count) "path-index" "(-> self path-count)")) (let* ((s5-0 (-> self path-list arg0)) (gp-1 (path-control-method-12 s5-0 (-> self path-select-plane arg0) 5.0)) - (s5-1 (eval-path-curve-div! s5-0 (new 'stack-no-clear 'vector) 5.0 'interp)) - ) + (s5-1 (eval-path-curve-div! s5-0 (new 'stack-no-clear 'vector) 5.0 'interp))) (set! (-> gp-1 y) 0.0) (vector-normalize! gp-1 1.0) - (set! (-> gp-1 w) (- (vector-dot s5-1 gp-1))) - ) - ) + (set! (-> gp-1 w) (- (vector-dot s5-1 gp-1))))) (defbehavior swamp-bat-update-path swamp-bat () (dotimes (gp-0 (-> self path-count)) (when (!= (-> self path-select) gp-0) (let* ((s5-0 (-> self path-select-plane gp-0)) - (f0-2 (+ (vector-dot (target-pos 0) (the-as vector s5-0)) (-> s5-0 w))) - ) - (if (< 0.0 f0-2) - (swamp-bat-setup-new-path gp-0) - ) - ) - ) - ) - (none) - ) + (f0-2 (+ (vector-dot (target-pos 0) (the-as vector s5-0)) (-> s5-0 w)))) + (if (< 0.0 f0-2) (swamp-bat-setup-new-path gp-0))))) + (none)) (defbehavior swamp-bat-debug swamp-bat () 0 - (none) - ) + (none)) (defbehavior swamp-bat-check-slave-paths-match? swamp-bat ((arg0 int)) (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) (while v1-0 (if (and (-> (the-as swamp-bat-slave (-> v1-0 0)) launch-ready) - (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0) - ) - (return #f) - ) - (set! v1-0 (-> v1-0 0 brother)) - ) - ) - #t - ) + (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0)) + (return #f)) + (set! v1-0 (-> v1-0 0 brother)))) + #t) (defstate swamp-bat-idle (swamp-bat) :trans swamp-bat-debug - :code (behavior () - (when (zero? (-> self path-count)) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (loop - (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) - *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (when (not (-> self child-process)) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - (swamp-bat-update-path) - (if (or (point-in-vol? (-> self vol) (target-pos 5)) - (not (swamp-bat-check-slave-paths-match? (-> self path-select))) - ) - (go swamp-bat-launch-slaves) - ) - ) - (let ((gp-1 (new 'static 'matrix))) - (quaternion->matrix gp-1 (-> self root quat)) - (set! (-> gp-1 vector 3 quad) (-> self root trans quad)) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (when (zero? (-> self path-count)) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self)) + (loop (when (and (time-elapsed? (-> self state-time) (seconds 0.2)) + *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (when (not (-> self child-process)) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self)) + (swamp-bat-update-path) + (if (or (point-in-vol? (-> self vol) (target-pos 5)) (not (swamp-bat-check-slave-paths-match? (-> self path-select)))) + (go swamp-bat-launch-slaves))) + (let ((gp-1 (new 'static 'matrix))) + (quaternion->matrix gp-1 (-> self root quat)) + (set! (-> gp-1 vector 3 quad) (-> self root trans quad))) + (suspend))) + :post #f) (defbehavior swamp-bat-launch-slave swamp-bat () (let ((gp-0 (the-as (pointer process-tree) (-> self child-process))) - (v0-0 (the-as object #f)) - ) + (v0-0 (the-as object #f))) (while (and gp-0 (not v0-0)) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-0 from) self) (set! (-> a1-0 num-params) 0) (set! (-> a1-0 message) 'launch) - (set! v0-0 (send-event-function (ppointer->process gp-0) a1-0)) - ) - (set! gp-0 (-> gp-0 0 brother)) - ) - v0-0 - ) - ) + (set! v0-0 (send-event-function (ppointer->process gp-0) a1-0))) + (set! gp-0 (-> gp-0 0 brother))) + v0-0)) (defstate swamp-bat-launch-slaves (swamp-bat) :trans swamp-bat-debug - :code (behavior () - (set-time! (-> self state-time)) - (loop - (swamp-bat-update-path) - (when (time-elapsed? (-> self state-time) (seconds 0.5)) - (set-time! (-> self state-time)) - (if (not (swamp-bat-launch-slave)) - (go swamp-bat-idle) - ) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop (swamp-bat-update-path) + (when (time-elapsed? (-> self state-time) (seconds 0.5)) + (set-time! (-> self state-time)) + (if (not (swamp-bat-launch-slave)) (go swamp-bat-idle))) + (suspend))) + :post #f) (defmethod init-from-entity! ((this swamp-bat) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 0.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) (logior! (-> this mask) (process-mask enemy)) @@ -582,26 +421,17 @@ swamp-bat-slave-event-handler (set! (-> this path-count) 0) (when (< 0.0 (the float (+ (-> this path-list 0 curve num-cverts) -1))) (+! (-> this path-count) 1) - (swamp-bat-make-path-select-plane 0) - ) + (swamp-bat-make-path-select-plane 0)) (when (< 0.0 (the float (+ (-> this path-list 1 curve num-cverts) -1))) (+! (-> this path-count) 1) - (swamp-bat-make-path-select-plane 1) - ) - (if (!= (-> this path-count) 2) - (go process-drawable-art-error "need 2 paths") - ) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (swamp-bat-make-path-select-plane 1)) + (if (!= (-> this path-count) 2) (go process-drawable-art-error "need 2 paths")) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (let ((a1-10 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 6)))) - (set! (-> this slave-count) (max 2 (min 8 (the-as int a1-10)))) - ) + (set! (-> this slave-count) (max 2 (min 8 (the-as int a1-10))))) (swamp-bat-setup-new-path 0) (swamp-bat-update-path) (dotimes (s5-1 (-> this slave-count)) - (process-spawn swamp-bat-slave this s5-1 :to this :stack-size 4512) - ) + (process-spawn swamp-bat-slave this s5-1 :to this :stack-size 4512)) (go swamp-bat-idle) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/swamp/swamp-obs.gc b/goal_src/jak1/levels/swamp/swamp-obs.gc index b1119e6bcb..3023ad4c26 100644 --- a/goal_src/jak1/levels/swamp/swamp-obs.gc +++ b/goal_src/jak1/levels/swamp/swamp-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/crates.gc") (require "engine/util/sync-info.gc") @@ -24,122 +23,113 @@ :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1327 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1327 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1325 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters 0.75)) - (:scale-x (meters 1.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 48.0 24.0) - (:b 48.0 8.0) - (:a 16.0 32.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:scalevel-x (meters 0.01)) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:friction 0.96) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1328) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters 0.75)) + (:scale-x (meters 1.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 48.0 24.0) + (:b 48.0 8.0) + (:a 16.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:scalevel-x (meters 0.01)) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:friction 0.96) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1328) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpart 1328 - :init-specs ((:fade-a -0.32)) - ) + :init-specs ((:fade-a -0.32))) (defpart 1326 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters -0.75)) - (:scale-x (meters 1.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 32.0 16.0) - (:g 36.0 18.0) - (:b 24.0 4.0) - (:a 16.0 32.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:scalevel-x (meters 0.01)) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:friction 0.96) - (:timer (seconds 1.5)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1328) - (:conerot-x (degrees 90) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters -0.75)) + (:scale-x (meters 1.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 32.0 16.0) + (:g 36.0 18.0) + (:b 24.0 4.0) + (:a 16.0 32.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:scalevel-x (meters 0.01)) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:friction 0.96) + (:timer (seconds 1.5)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1328) + (:conerot-x (degrees 90) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpart 1327 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 8.0) - (:x (meters -2) 2 (meters 2)) - (:y (meters 0.25)) - (:scale-x (meters 0.1) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 64.0 16.0) - (:g 48.0 16.0) - (:b 48.0 16.0) - (:a 128.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:accel-y (meters -0.0033333334)) - (:friction 0.96) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:next-time (seconds 1.3)) - (:next-launcher 1329) - (:conerot-x (degrees 30) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees -179.3918)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 8.0) + (:x (meters -2) 2 (meters 2)) + (:y (meters 0.25)) + (:scale-x (meters 0.1) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 64.0 16.0) + (:g 48.0 16.0) + (:b 48.0 16.0) + (:a 128.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:accel-y (meters -0.0033333334)) + (:friction 0.96) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:next-time (seconds 1.3)) + (:next-launcher 1329) + (:conerot-x (degrees 30) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees -179.3918)))) (defpartgroup group-swamp-spike-down :id 290 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1325 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1326 :fade-after (meters 120) :falloff-to (meters 120)))) (deftype swamp-spike (process-drawable) - ((root collide-shape :override) - (sync sync-info :inline) - (open-gate symbol) - (dangerous symbol) - ) + ((root collide-shape :override) + (sync sync-info :inline) + (open-gate symbol) + (dangerous symbol)) (:methods - (init! (_type_) symbol) - ) + (init! (_type_) symbol)) (:states - swamp-spike-idle - ) - ) + swamp-spike-idle)) - -(defskelgroup *swamp-spike-sg* swamp-spike swamp-spike-lod0-jg swamp-spike-up-ja - ((swamp-spike-lod0-mg (meters 20)) (swamp-spike-lod1-mg (meters 999999))) - :bounds (static-spherem 0 5 0 6) - :longest-edge (meters 2.5) - ) +(defskelgroup *swamp-spike-sg* + swamp-spike + swamp-spike-lod0-jg + swamp-spike-up-ja + ((swamp-spike-lod0-mg (meters 20)) (swamp-spike-lod1-mg (meters 999999))) + :bounds (static-spherem 0 5 0 6) + :longest-edge (meters 2.5)) (defbehavior swamp-spike-default-event-handler swamp-spike ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 @@ -148,173 +138,126 @@ (if ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg3 param 0)) (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) - ) - ) - ) - ) - ) + (the-as uint 1)) + (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info))))))) (defun swamp-spike-set-particle-rotation-callback ((arg0 part-tracker)) (let* ((v1-0 (the-as object (-> arg0 userdata))) - (f0-1 (+ -65314.562 (quaternion-y-angle (-> (the-as (pointer swamp-spike) v1-0) 0 root quat)))) - ) + (f0-1 (+ -65314.562 (quaternion-y-angle (-> (the-as (pointer swamp-spike) v1-0) 0 root quat))))) (set! (-> *part-id-table* 1325 init-specs 20 initial-valuef) f0-1) (set! (-> *part-id-table* 1326 init-specs 20 initial-valuef) f0-1) - (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1) - ) + (set! (-> *part-id-table* 1327 init-specs 21 initial-valuef) f0-1)) 0 - (none) - ) + (none)) (defbehavior swamp-spike-post swamp-spike () (transform-post) (let ((a1-0 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-0 to) (the-as process 1)) (set! (-> a1-0 from) (the-as process *touching-list*)) - (if (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-0)) - (do-push-aways! (-> self root)) - ) - ) - (none) - ) + (if (find-overlapping-shapes (-> self root) (the-as overlaps-others-params a1-0)) (do-push-aways! (-> self root)))) + (none)) (defstate swamp-spike-idle (swamp-spike) :event swamp-spike-default-event-handler - :code (behavior () - (set! (-> self dangerous) #f) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (new 'stack-no-clear 'vector) - (vector-z-quaternion! gp-0 (-> self root quat)) - (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root trans)))) - (loop - (set-time! (-> self state-time)) - (ja :group! swamp-spike-up-ja) - (until (>= (get-current-phase (-> self sync)) 0.5) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - (let ((s5-0 - (or (not *target*) (< 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - ) - ) - (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - *camera* - ) - (set! s5-0 (< (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) 0.0)) - ) - (cond - (s5-0 - (until (< (get-current-phase (-> self sync)) 0.5) - (suspend) - ) - ) - (else - (ja-no-eval :group! swamp-spike-shake-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 289) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - (set! (-> self dangerous) #t) - (ja-no-eval :group! swamp-spike-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (set! (-> self dangerous) #f) - (set-time! (-> self state-time)) - (ja :num-func num-func-identity :frame-num max) - (until (< (get-current-phase (-> self sync)) 0.5) - (suspend) - ) - (if (logtest? (-> self draw status) (draw-status was-drawn)) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 290) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - ) - (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) - :post swamp-spike-post - ) + :code + (behavior () + (set! (-> self dangerous) #f) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (vector-z-quaternion! gp-0 (-> self root quat)) + (set! (-> gp-0 w) (- (vector-dot gp-0 (-> self root trans)))) + (loop (set-time! (-> self state-time)) + (ja :group! swamp-spike-up-ja) + (until (>= (get-current-phase (-> self sync)) 0.5) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)) + (let ((s5-0 (or (not *target*) (< 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))))) + (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) *camera*) + (set! s5-0 (< (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) 0.0))) + (cond + (s5-0 (until (< (get-current-phase (-> self sync)) 0.5) (suspend))) + (else + (ja-no-eval :group! swamp-spike-shake-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (logtest? (-> self draw status) (draw-status was-drawn)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 289) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)) + (set! (-> self dangerous) #t) + (ja-no-eval :group! swamp-spike-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (set! (-> self dangerous) #f) + (set-time! (-> self state-time)) + (ja :num-func num-func-identity :frame-num max) + (until (< (get-current-phase (-> self sync)) 0.5) + (suspend)) + (if (logtest? (-> self draw status) (draw-status was-drawn)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self)) + (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))))) + :post swamp-spike-post) (defstate swamp-spike-gate-up (swampgate) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('trigger) - (let ((v0-0 #t)) - (set! (-> self open-gate) v0-0) - v0-0 - ) - ) - ) - ) - :code (behavior () - (set-time! (-> self state-time)) - (ja :group! swamp-spike-down-ja) - (until (-> self open-gate) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 290) - -1 - swamp-spike-set-particle-rotation-callback - (-> self ppointer) - #f - (-> self root trans) - :to self - ) - (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-spike-gate-down) - ) - :post swamp-spike-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('trigger) (let ((v0-0 #t)) (set! (-> self open-gate) v0-0) v0-0)))) + :code + (behavior () + (set-time! (-> self state-time)) + (ja :group! swamp-spike-down-ja) + (until (-> self open-gate) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend)) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 290) + -1 + swamp-spike-set-particle-rotation-callback + (-> self ppointer) + #f + (-> self root trans) + :to + self) + (ja-no-eval :group! swamp-spike-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go swamp-spike-gate-down)) + :post swamp-spike-post) (defstate swamp-spike-gate-down (swampgate) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (cleanup-for-death self) - ) - :post swamp-spike-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (cleanup-for-death self)) + :post swamp-spike-post) (defmethod init! ((this swamp-spike)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -331,8 +274,7 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s3-1 collide-with) (collide-kind target)) @@ -340,127 +282,94 @@ (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) - (append-prim s4-0 s3-1) - ) - ) + (append-prim s4-0 s3-1))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) (process-drawable-from-entity! this (-> this entity)) - (initialize-skeleton this *swamp-spike-sg* '()) + (initialize-skeleton this *swamp-spike-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (load-params! (-> this sync) this (the-as uint 1500) 0.0 0.15 0.15) (set! (-> this open-gate) #f) (set! (-> this dangerous) #f) - #f - ) + #f) (defmethod init-from-entity! ((this swamp-spike) (arg0 entity-actor)) (init! this) (go swamp-spike-idle) - (none) - ) + (none)) -(deftype swampgate (swamp-spike) - () +(deftype swampgate (swamp-spike) () (:states - swamp-spike-gate-down - swamp-spike-gate-up - ) - ) - + swamp-spike-gate-down + swamp-spike-gate-up)) (defmethod init-from-entity! ((this swampgate) (arg0 entity-actor)) (init! this) - (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) - (go swamp-spike-gate-down) - (go swamp-spike-gate-up) - ) - (none) - ) + (if (logtest? (-> arg0 extra perm status) (entity-perm-status complete)) (go swamp-spike-gate-down) (go swamp-spike-gate-up)) + (none)) (deftype balance-plat (process-drawable) - ((root collide-shape-moving :override) - (y-travel float) - (y-init float) - (y-offset float) - (y-vel float) - (y-accel float) - (got-grow symbol) - ) + ((root collide-shape-moving :override) + (y-travel float) + (y-init float) + (y-offset float) + (y-vel float) + (y-accel float) + (got-grow symbol)) (:states - balance-plat-idle - ) - ) + balance-plat-idle)) - -(defskelgroup *balance-plat-sg* balance-plat balance-plat-lod0-jg balance-plat-idle-ja - ((balance-plat-lod0-mg (meters 20)) (balance-plat-lod1-mg (meters 40)) (balance-plat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *balance-plat-sg* + balance-plat + balance-plat-lod0-jg + balance-plat-idle-ja + ((balance-plat-lod0-mg (meters 20)) (balance-plat-lod1-mg (meters 40)) (balance-plat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defstate balance-plat-idle (balance-plat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('grow) - (let ((v0-0 #t)) - (set! (-> self got-grow) v0-0) - v0-0 - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('grow) (let ((v0-0 #t)) (set! (-> self got-grow) v0-0) v0-0)))) :trans rider-trans - :code (behavior () - (loop - ;; og:preserve-this modified for high fps - (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) - (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel)))) - ) - (cond - ((and (-> self root riders) (nonzero? (-> self root riders num-riders))) - ;; has rider, accelerate downwards - (send-event *target* 'no-look-around (seconds 0.25)) - (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.2048) (-> self y-accel))))) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; tell linked platforms to go up - (send-to-all-after (-> self link) 'grow) - (send-to-all-before (-> self link) 'grow) - ) - ((-> self got-grow) - ;; got 'grow' signal, accelerate upwards - (set! (-> self got-grow) #f) - (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.2048) (-> self y-accel))))) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ) - ((< (-> self y-offset) 0.0) - ;; accelerate towards neutral position (from below) - (set! (-> self y-accel) - (fmin (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.1024) (-> self y-accel)))) (* -0.0001 (-> self y-offset))) - ) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; slow down - (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel))) - ) - (else - ;; accelerate towards neutral position (from above) - (set! (-> self y-accel) - (fmin 4.096 (fmax (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.1024) (-> self y-accel))) (* -0.0001 (-> self y-offset)))) - ) - (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) - ;; slow down - (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel))) - ) - ) - ) - (+! (-> self y-offset) (* DISPLAY_FPS_RATIO (-> self y-vel))) - (set! (-> self root trans y) (+ (-> self y-init) (-> self y-offset))) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (loop ;; og:preserve-this modified for high fps + (let ((f30-0 (* -0.025 (+ (-> self y-offset) (-> self y-travel)))) + (f28-0 (* -0.025 (- (-> self y-offset) (-> self y-travel))))) + (cond + ((and (-> self root riders) (nonzero? (-> self root riders num-riders))) + ;; has rider, accelerate downwards + (send-event *target* 'no-look-around (seconds 0.25)) + (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.2048) (-> self y-accel))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; tell linked platforms to go up + (send-to-all-after (-> self link) 'grow) + (send-to-all-before (-> self link) 'grow)) + ((-> self got-grow) + ;; got 'grow' signal, accelerate upwards + (set! (-> self got-grow) #f) + (set! (-> self y-accel) (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.2048) (-> self y-accel))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel))))))) + ((< (-> self y-offset) 0.0) + ;; accelerate towards neutral position (from below) + (set! (-> self y-accel) + (fmin (fmin 4.096 (fmax -4.096 (+ (* DISPLAY_FPS_RATIO 0.1024) (-> self y-accel)))) (* -0.0001 (-> self y-offset)))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; slow down + (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel)))) + (else + ;; accelerate towards neutral position (from above) + (set! (-> self y-accel) + (fmin 4.096 (fmax (fmax -4.096 (+ (* DISPLAY_FPS_RATIO -0.1024) (-> self y-accel))) (* -0.0001 (-> self y-offset))))) + (set! (-> self y-vel) (fmin f28-0 (fmax f30-0 (+ (-> self y-vel) (* DISPLAY_FPS_RATIO (-> self y-accel)))))) + ;; slow down + (set! (-> self y-vel) (* (- 1.0 (* DISPLAY_FPS_RATIO (- 1.0 0.99))) (-> self y-vel)))))) + (+! (-> self y-offset) (* DISPLAY_FPS_RATIO (-> self y-vel))) + (set! (-> self root trans y) (+ (-> self y-init) (-> self y-offset))) + (suspend))) + :post rider-post) (defmethod init-from-entity! ((this balance-plat) (arg0 entity-actor)) ;; og:preserve-this PAL patch here. usually-hit-by-player -> hit-by-others @@ -468,9 +377,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -479,14 +386,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *balance-plat-sg* '()) + (initialize-skeleton this *balance-plat-sg* ()) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this y-accel) 0.0) (set! (-> this y-vel) 0.0) @@ -495,140 +400,123 @@ (set! (-> this got-grow) #f) (set! (-> this y-travel) (res-lump-float arg0 'distance :default 20480.0)) (go balance-plat-idle) - (none) - ) + (none)) (deftype swamp-rock (process-drawable) - ((root collide-shape-moving :override) - ) + ((root collide-shape-moving :override)) (:states - swamp-rock-break - swamp-rock-idle - ) - ) - + swamp-rock-break + swamp-rock-idle)) (defpartgroup group-swamp-rock-explosion :id 291 :duration (seconds 1) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1330 :period (seconds 5) :length (seconds 0.017)) - (sp-item 1331 :period (seconds 5) :length (seconds 0.017)) - (sp-item 1332 :period (seconds 5) :length (seconds 0.05)) - ) - ) + :parts + ((sp-item 1330 :period (seconds 5) :length (seconds 0.017)) + (sp-item 1331 :period (seconds 5) :length (seconds 0.017)) + (sp-item 1332 :period (seconds 5) :length (seconds 0.05)))) (defpart 1331 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 15)) - (:scale-y :copy scale-x) - (:r 130.0) - (:g 64.0) - (:b 54.0) - (:a 128.0) - (:fade-a -2.1333334) - (:timer (seconds 0.2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 15)) + (:scale-y :copy scale-x) + (:r 130.0) + (:g 64.0) + (:b 54.0) + (:a 128.0) + (:fade-a -2.1333334) + (:timer (seconds 0.2)) + (:flags (bit2 bit3)))) (defpart 1330 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 16.0 16.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 16.0 16.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1332 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y (meters 0.0033333334)) - (:accel-y (meters -0.00026666667)) - (:friction 0.95) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.997)) - (:next-launcher 1333) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y (meters 0.0033333334)) + (:accel-y (meters -0.00026666667)) + (:friction 0.95) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.997)) + (:next-launcher 1333) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1333 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) -(defskelgroup *swamp-rock-sg* swamp-rock swamp-rock-lod0-jg swamp-rock-idle-ja - ((swamp-rock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *swamp-rock-sg* + swamp-rock + swamp-rock-lod0-jg + swamp-rock-idle-ja + ((swamp-rock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) (defstate swamp-rock-break (swamp-rock) - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (sound-play "rock-break") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 291) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (cleanup-for-death self) - (deactivate self) - ) - :post ja-post - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (sound-play "rock-break") + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 291) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (cleanup-for-death self) + (deactivate self)) + :post ja-post) (defstate swamp-rock-idle (swamp-rock) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (go swamp-rock-break) - ) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) (if (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) (go swamp-rock-break))))) + :code + (behavior () + (transform-post) + (loop (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this swamp-rock) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -641,30 +529,24 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 (* 4096.0 f30-0) 0.0 (* 4096.0 (* 3.0 f30-0))) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) (the-as collide-shape-moving s4-0)) - ) + (set! (-> this root) (the-as collide-shape-moving s4-0))) (process-drawable-from-entity! this arg0) - (vector-float*! (-> this root scale) *identity-vector* f30-0) - ) - (initialize-skeleton this *swamp-rock-sg* '()) + (vector-float*! (-> this root scale) *identity-vector* f30-0)) + (initialize-skeleton this *swamp-rock-sg* ()) (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 291) this)) (go swamp-rock-idle) - (none) - ) + (none)) (defbehavior swamp-rock-init-by-other swamp-rock ((arg0 vector)) (logior! (-> self mask) (process-mask attackable)) (let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) @@ -673,125 +555,101 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> self root) s5-0) - ) + (set! (-> self root) s5-0)) (set! (-> self root trans quad) (-> arg0 quad)) - (initialize-skeleton self *swamp-rock-sg* '()) + (initialize-skeleton self *swamp-rock-sg* ()) (nav-mesh-connect self (-> self root) (the-as nav-control #f)) (set! (-> self part) (create-launch-control (-> *part-group-id-table* 291) self)) (go swamp-rock-idle) - (none) - ) + (none)) -(defskelgroup *tar-plat-sg* tar-plat tar-plat-lod0-jg tar-plat-idle-ja - ((tar-plat-lod0-mg (meters 20)) (tar-plat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3) - ) +(defskelgroup *tar-plat-sg* + tar-plat + tar-plat-lod0-jg + tar-plat-idle-ja + ((tar-plat-lod0-mg (meters 20)) (tar-plat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3)) -(define *tar-plat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 2) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 60) - :player-bonk-factor 0.5 - :player-dive-factor 1.0 - :player-force-distance (meters 2) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.9 - :angular-damping 0.9 - :control-point-count 4 - :mass 1.0 - :inertial-tensor-x (meters 6) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 6) - :cm-joint-y (meters -2) - :idle-distance (meters 50) - :platform #t - :sound-name "tar-plat" - ) - ) +(define *tar-plat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 2) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 60) + :player-bonk-factor 0.5 + :player-dive-factor 1.0 + :player-force-distance (meters 2) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.9 + :angular-damping 0.9 + :control-point-count 4 + :mass 1.0 + :inertial-tensor-x (meters 6) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 6) + :cm-joint-y (meters -2) + :idle-distance (meters 50) + :platform #t + :sound-name "tar-plat")) (deftype tar-plat (rigid-body-platform) - ((anchor-point vector :inline) - (float-height float) - ) - ) - + ((anchor-point vector :inline) + (float-height float))) (defmethod rigid-body-platform-method-22 ((this tar-plat) (arg0 vector) (arg1 float)) (+ (-> this float-height) (-> this float-height-offset) - (* 512.0 (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))) - ) - ) + (* 512.0 (cos (* 109.22667 (+ (* 60.0 arg1) (* 0.03 (-> arg0 x)) (* 0.03 (-> arg0 z)))))))) (defmethod rigid-body-platform-method-23 ((this tar-plat) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) (defstate rigid-body-platform-idle (tar-plat) :virtual #t - :enter (behavior () - (ja-channel-set! 0) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (ja-channel-set! 0)) + :code + (behavior () + (loop (suspend))) + :post ja-post) (defstate rigid-body-platform-float (tar-plat) :virtual #t :event rigid-body-platform-event-handler - :trans (behavior () - (cond - ((or (not *target*) (< (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (let ((f30-1 -2048.0)) - (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) - (if (= (-> self float-height-offset) f30-1) - (go-virtual rigid-body-platform-idle) - ) - ) - ) - (else - (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame))) - ) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.1)) - (ja :group! tar-plat-idle-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (loop - (suspend) - ) - ) - :post rigid-body-platform-post - ) + :trans + (behavior () + (cond + ((or (not *target*) + (< (-> self info idle-distance) (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))) + (let ((f30-1 -2048.0)) + (seek! (-> self float-height-offset) f30-1 (* 2048.0 (seconds-per-frame))) + (if (= (-> self float-height-offset) f30-1) (go-virtual rigid-body-platform-idle)))) + (else (seek! (-> self float-height-offset) 4096.0 (* 2048.0 (seconds-per-frame)))))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.1)) + (ja :group! tar-plat-idle-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (loop (suspend))) + :post rigid-body-platform-post) (defmethod rigid-body-platform-method-30 ((this tar-plat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -800,18 +658,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this tar-plat)) - (initialize-skeleton this *tar-plat-sg* '()) + (initialize-skeleton this *tar-plat-sg* ()) (rigid-body-platform-method-29 this *tar-plat-constants*) (set! (-> this float-height) (-> this entity extra trans y)) (set! (-> this float-height-offset) -2048.0) @@ -820,68 +675,43 @@ (let ((s3-0 (-> this control-point-array data s4-0))) (let ((f26-0 (+ 8192.0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) (f28-0 20480.0) - (f30-0 12288.0) - ) + (f30-0 12288.0)) (set! (-> s3-0 local-pos x) (fmax (fmin (* f28-0 (sin f26-0)) f30-0) (- f30-0))) (set! (-> s3-0 local-pos y) 0.0) - (set! (-> s3-0 local-pos z) (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0))) - ) - (set! (-> s3-0 local-pos w) 1.0) - ) - ) - ) + (set! (-> s3-0 local-pos z) (fmax (fmin (* f28-0 (cos f26-0)) f30-0) (- f30-0)))) + (set! (-> s3-0 local-pos w) 1.0)))) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) 0 - (none) - ) + (none)) -(deftype swamp-barrel (barrel) - () - ) +(deftype swamp-barrel (barrel) ()) +(deftype swampcam (process-hidden) ()) -(deftype swampcam (process-hidden) - () - ) - - -(defskelgroup *swampcam-sg* swampcam swampcam-lod0-jg swampcam-anim-ja - ((swampcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 15) - ) - -(deftype swamp-battlecontroller (battlecontroller) - () - ) +(defskelgroup *swampcam-sg* + swampcam + swampcam-lod0-jg + swampcam-anim-ja + ((swampcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 15)) +(deftype swamp-battlecontroller (battlecontroller) ()) (defstate battlecontroller-play-intro-camera (swamp-battlecontroller) :virtual #t - :code (behavior () - (suspend) - (process-drawable-delay-player (seconds 1)) - (let ((gp-1 (ppointer->handle - (process-spawn pov-camera (-> self root trans) *swampcam-sg* "swamp-ambush" 0 #f '() :to self) - ) - ) - ) - (while (handle->process (the-as handle gp-1)) - (suspend) - ) - ) - (go-virtual battlecontroller-active) - ) - ) + :code + (behavior () + (suspend) + (process-drawable-delay-player (seconds 1)) + (let ((gp-1 (ppointer->handle (process-spawn pov-camera (-> self root trans) *swampcam-sg* "swamp-ambush" 0 #f () :to self)))) + (while (handle->process (the-as handle gp-1)) + (suspend))) + (go-virtual battlecontroller-active))) (defstate battlecontroller-die (swamp-battlecontroller) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - ((the-as - (function none :behavior battlecontroller) - (-> (method-of-type battlecontroller battlecontroller-die) code) - ) - ) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + ((the-as (function none :behavior battlecontroller) (-> (method-of-type battlecontroller battlecontroller-die) code))))) diff --git a/goal_src/jak1/levels/swamp/swamp-part.gc b/goal_src/jak1/levels/swamp/swamp-part.gc index a18d7c4579..3ce2203415 100644 --- a/goal_src/jak1/levels/swamp/swamp-part.gc +++ b/goal_src/jak1/levels/swamp/swamp-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") (require "engine/gfx/texture/texture-h.gc") @@ -13,1605 +12,1536 @@ ;; DECOMP BEGINS -(deftype swamp-part (part-spawner) - () - ) - +(deftype swamp-part (part-spawner) ()) (defpartgroup group-swamp-bayou-billy-hut :id 302 :bounds (static-bspherem -4 -3 0 12) - :parts ((sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) - (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) - (sp-item 1379 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - (sp-item 1380 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) - (sp-item 1381 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.455) :length (seconds 0.1)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.677) :length (seconds 0.1)) - (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.155) :length (seconds 0.1)) - (sp-item 1383 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1383 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1383 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 2305 :flags (launch-asap) :binding 2303) - (sp-item 2306 :flags (launch-asap) :binding 2303) - (sp-item 2307 :flags (launch-asap) :binding 2303) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - (sp-item 2304 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 1377 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 5) :length (seconds 1)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 9.76) :length (seconds 1.2)) + (sp-item 1378 :fade-after (meters 175) :falloff-to (meters 175) :period (seconds 15.34) :length (seconds 0.6)) + (sp-item 1379 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) + (sp-item 1380 :fade-after (meters 125) :falloff-to (meters 125) :period (seconds 0.6) :length (seconds 0.15)) + (sp-item 1381 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.455) :length (seconds 0.1)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.677) :length (seconds 0.1)) + (sp-item 1382 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.155) :length (seconds 0.1)) + (sp-item 1383 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1383 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1383 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 2305 :flags (launch-asap) :binding 2303) + (sp-item 2306 :flags (launch-asap) :binding 2303) + (sp-item 2307 :flags (launch-asap) :binding 2303) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2303 :flags (start-dead launch-asap) :binding 2304) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)) + (sp-item 2304 :flags (is-3d start-dead)))) (defpart 2305 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 6)) - (:y (meters -13)) - (:z (meters 4)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 6)) + (:y (meters -13)) + (:z (meters 4)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2308 - :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 2308)) - ) + :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 2308))) (defpart 2306 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 5)) - (:y (meters -13.5)) - (:z (meters 3.5)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:g 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 5)) + (:y (meters -13.5)) + (:z (meters 3.5)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:g 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2307 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 8.0) - (:x (meters 6.5)) - (:y (meters -12.5)) - (:z (meters 5)) - (:scale-x (meters 1.01)) - (:scale-y :copy scale-x) - (:b 0.0) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 8.0) + (:x (meters 6.5)) + (:y (meters -12.5)) + (:z (meters 5)) + (:scale-x (meters 1.01)) + (:scale-y :copy scale-x) + (:b 0.0) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2303 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 1 2.0) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 255.0) - (:g 100.0 100.0) - (:b 64.0 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 1)) - (:flags (bit7)) - (:next-time (seconds 0.5)) - (:next-launcher 2308) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 1 2.0) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 255.0) + (:g 100.0 100.0) + (:b 64.0 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 1)) + (:flags (bit7)) + (:next-time (seconds 0.5)) + (:next-launcher 2308))) (defpart 2304 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 3.0) - (:scale-x (meters 0.075)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.075)) - (:r 64.0) - (:g 128.0) - (:b 20.0) - (:a 32.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 3.0) + (:scale-x (meters 0.075)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.075)) + (:r 64.0) + (:g 128.0) + (:b 20.0) + (:a 32.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpart 1384 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 15) (meters 30)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-x (meters -0.036666665)) - (:vel-y (meters -0.036666665)) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 1385) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 15) (meters 30)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-x (meters -0.036666665)) + (:vel-y (meters -0.036666665)) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 1385) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1385 - :init-specs ((:g 128.0) - (:vel-x (meters 0)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:accel-x (meters 0)) - (:accel-y (meters 0)) - (:accel-z (meters 0)) - (:next-time (seconds 9) (seconds 4.997)) - (:next-launcher 1386) - ) - ) + :init-specs + ((:g 128.0) + (:vel-x (meters 0)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:accel-x (meters 0)) + (:accel-y (meters 0)) + (:accel-z (meters 0)) + (:next-time (seconds 9) (seconds 4.997)) + (:next-launcher 1386))) (defpart 1386 - :init-specs ((:b 128.0) - (:accel-x (meters -0.00066666666) 1 (meters 0.0013333333)) - (:accel-z (meters -0.00066666666) 1 (meters 0.0013333333)) - ) - ) + :init-specs + ((:b 128.0) + (:accel-x (meters -0.00066666666) 1 (meters 0.0013333333)) + (:accel-z (meters -0.00066666666) 1 (meters 0.0013333333)))) (defpart 1383 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 15) (meters 30)) - (:y (meters 0) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-x (meters -0.036666665)) - (:vel-y (meters -0.036666665)) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 1385) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 15) (meters 30)) + (:y (meters 0) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-x (meters -0.036666665)) + (:vel-y (meters -0.036666665)) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 1385) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1375 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1387) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1387))) (defpart 1387 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1387) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1387))) (defpart 1376 - :init-specs ((:texture (new 'static 'texture-id :index #x21 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 4.0) - (:scale-x (meters 1)) - (:rot-x (degrees -30) (degrees 240)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.7)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 48.0 48.0) - (:timer (seconds 0.017)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x21 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 4.0) + (:scale-x (meters 1)) + (:rot-x (degrees -30) (degrees 240)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.7)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 48.0 48.0) + (:timer (seconds 0.017)) + (:flags (bit2)))) (defpart 1377 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:y (meters -0.25)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 32.0 32.0) - (:vel-x (meters 0.0033333334)) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.21333334) - (:accel-y (meters 0.00016666666)) - (:friction 0.996) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees -20)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters -0.25)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 32.0 32.0) + (:vel-x (meters 0.0033333334)) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.21333334) + (:accel-y (meters 0.00016666666)) + (:friction 0.996) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees -20)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 0.25)))) (defpart 1378 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.9) - (:scale-x (meters 0.75) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 16.0 48.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.10666667) - (:accel-y (meters -0.00016666666)) - (:friction 0.996) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -25.000002) (degrees 10)) - (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.9) + (:scale-x (meters 0.75) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 16.0 48.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.10666667) + (:accel-y (meters -0.00016666666)) + (:friction 0.996) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -25.000002) (degrees 10)) + (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) + (:conerot-radius (meters 0.25)))) (defpart 1379 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:y (meters -0.25)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 32.0 32.0) - (:vel-x (meters 0.0033333334)) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.2) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.21333334) - (:accel-y (meters 0.0001)) - (:friction 0.993) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees -20)) - (:conerot-z (degrees -90)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:y (meters -0.25)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 32.0 32.0) + (:vel-x (meters 0.0033333334)) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.2) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.21333334) + (:accel-y (meters 0.0001)) + (:friction 0.993) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees -20)) + (:conerot-z (degrees -90)) + (:conerot-radius (meters 0.25)))) (defpart 1380 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 80.0 20.0) - (:g 80.0 32.0) - (:b 80.0 20.0) - (:a 16.0 48.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:scalevel-x (meters 0.0048828125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-g 0.0) - (:fade-b 0.0) - (:fade-a -0.10666667) - (:accel-y (meters -0.00013333333)) - (:friction 0.993) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -25.000002) (degrees 10)) - (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 80.0 20.0) + (:g 80.0 32.0) + (:b 80.0 20.0) + (:a 16.0 48.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:scalevel-x (meters 0.0048828125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-g 0.0) + (:fade-b 0.0) + (:fade-a -0.10666667) + (:accel-y (meters -0.00013333333)) + (:friction 0.993) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -25.000002) (degrees 10)) + (:conerot-z (degrees -3.0000002) (degrees 6.0000005)) + (:conerot-radius (meters 0.25)))) (defpart 1381 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.9) - (:x (meters -7.8)) - (:y (meters -8.5)) - (:z (meters -2.2)) - (:scale-x (meters 1.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 40.0 20.0) - (:g 40.0 16.0) - (:b 40.0 10.0) - (:a 64.0 32.0) - (:vel-y (meters 0.013333334) (meters 0.01)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-b 0.0) - (:fade-a -0.16) - (:accel-y (meters -0.0001)) - (:friction 0.995) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.9) + (:x (meters -7.8)) + (:y (meters -8.5)) + (:z (meters -2.2)) + (:scale-x (meters 1.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 20.0) + (:g 40.0 16.0) + (:b 40.0 10.0) + (:a 64.0 32.0) + (:vel-y (meters 0.013333334) (meters 0.01)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-b 0.0) + (:fade-a -0.16) + (:accel-y (meters -0.0001)) + (:friction 0.995) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpart 1382 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 1.0) - (:x (meters -7.8)) - (:y (meters -8.5)) - (:z (meters -2.2)) - (:scale-x (meters 1.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 40.0 20.0) - (:g 40.0 16.0) - (:b 40.0 10.0) - (:a 64.0 32.0) - (:vel-y (meters 0.02) (meters 0.016666668)) - (:scalevel-x (meters 0.0073242188)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.0) - (:fade-b 0.0) - (:fade-a -0.16) - (:accel-y (meters -0.00013333333)) - (:friction 0.995) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 1.0) + (:x (meters -7.8)) + (:y (meters -8.5)) + (:z (meters -2.2)) + (:scale-x (meters 1.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 40.0 20.0) + (:g 40.0 16.0) + (:b 40.0 10.0) + (:a 64.0 32.0) + (:vel-y (meters 0.02) (meters 0.016666668)) + (:scalevel-x (meters 0.0073242188)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.0) + (:fade-b 0.0) + (:fade-a -0.16) + (:accel-y (meters -0.00013333333)) + (:friction 0.995) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.25)))) (defpartgroup group-swamp-bubbles-01 :id 303 :bounds (static-bspherem 0 0 -8 30) - :parts ((sp-item 1390 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1390 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1390 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 35)) - (:z (meters -35) (meters 55)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 35)) + (:z (meters -35) (meters 55)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)))) (defpart 1388 - :init-specs ((:texture (new 'static 'texture-id :index #x20 :page #x2)) - (:num 0.05 0.1) - (:x (meters -2) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 0.5) (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 96.0 32.0) - (:a 0.0) - (:scalevel-x (meters 0.00083333335)) - (:scalevel-y (meters 0.00016666666)) - (:fade-a 0.64) - (:timer (seconds 4)) - (:flags (bit2)) - (:next-time (seconds 0.5)) - (:next-launcher 1391) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x20 :page #x2)) + (:num 0.05 0.1) + (:x (meters -2) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 0.5) (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 96.0 32.0) + (:a 0.0) + (:scalevel-x (meters 0.00083333335)) + (:scalevel-y (meters 0.00016666666)) + (:fade-a 0.64) + (:timer (seconds 4)) + (:flags (bit2)) + (:next-time (seconds 0.5)) + (:next-launcher 1391))) (defpart 1391 - :init-specs ((:fade-a 0.0) (:next-time (seconds 3.5)) (:next-launcher 1392)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 3.5)) (:next-launcher 1392))) (defpart 1392 - :init-specs ((:g 0.0) (:b 0.0) (:a 0.0) (:timer (seconds 0.017))) - ) + :init-specs ((:g 0.0) (:b 0.0) (:a 0.0) (:timer (seconds 0.017)))) (defpart 1389 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 96.0 32.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3)) - (:next-time (seconds 4)) - (:next-launcher 1393) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 96.0 32.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3)) + (:next-time (seconds 4)) + (:next-launcher 1393))) (defpart 1393 - :init-specs ((:a 8.0 32.0) (:scalevel-x (meters 0.04)) (:scalevel-y :copy scalevel-x) (:timer (seconds 0.017))) - ) + :init-specs ((:a 8.0 32.0) (:scalevel-x (meters 0.04)) (:scalevel-y :copy scalevel-x) (:timer (seconds 0.017)))) (defpartgroup group-swamp-bubbles-02 :id 304 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1394 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1394 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1394 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 16)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 16)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-swamp-bubbles-03 :id 305 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1395 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1395 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1395 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -4) (meters 12)) - (:z (meters -40) (meters 60)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -4) (meters 12)) + (:z (meters -40) (meters 60)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 25.000002)))) (defpartgroup group-swamp-bubbles-04 :id 306 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1396 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1396 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1396 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -35) (meters 60)) - (:z (meters -12) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -35) (meters 60)) + (:z (meters -12) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 40)))) (defpartgroup group-swamp-bubbles-05 :id 307 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1397 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1397 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1397 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 40)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 40)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -30)))) (defpartgroup group-swamp-bubbles-06 :id 308 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1398 :fade-after (meters 200) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) - (sp-item 1399 :fade-after (meters 200) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1398 :fade-after (meters 200) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) + (sp-item 1399 :fade-after (meters 200) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1398 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -45) (meters 80)) - (:z (meters -20) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -45) (meters 80)) + (:z (meters -20) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpart 1399 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -10) (meters 40)) - (:z (meters 18) (meters 15)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -10) (meters 40)) + (:z (meters 18) (meters 15)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpartgroup group-swamp-bubbles-07 :id 309 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1400 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1401 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1402 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1403 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1400 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1401 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1402 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1403 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1400 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 15)) - (:z (meters -8) (meters 38)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 15)) + (:z (meters -8) (meters 38)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1401 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -17.5) (meters 10)) - (:z (meters -15) (meters 50)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -17.5) (meters 10)) + (:z (meters -15) (meters 50)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -35)))) (defpart 1402 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 45)) - (:z (meters 21) (meters 8)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 45)) + (:z (meters 21) (meters 8)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -45)))) (defpart 1403 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -33) (meters 6)) - (:z (meters -25) (meters 25)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -33) (meters 6)) + (:z (meters -25) (meters 25)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-08 :id 310 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1404 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1404 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1404 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -18) (meters 45)) - (:z (meters -25) (meters 40)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -18) (meters 45)) + (:z (meters -25) (meters 40)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-09 :id 311 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1405 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1405 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1405 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -20) (meters 42)) - (:z (meters -10) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -20) (meters 42)) + (:z (meters -10) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 30)))) (defpartgroup group-swamp-bubbles-10 :id 312 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1406 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1406 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1406 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -30) (meters 52)) - (:z (meters -10) (meters 18)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -30) (meters 52)) + (:z (meters -10) (meters 18)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-swamp-bubbles-11 :id 313 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1407 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1407 :fade-after (meters 125) :period (seconds 1.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1407 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -14) (meters 22)) - (:z (meters -13) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -14) (meters 22)) + (:z (meters -13) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -15)))) (defpartgroup group-swamp-bubbles-12 :id 314 :bounds (static-bspherem 0 0 0 40) - :parts ((sp-item 1408 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1408 :fade-after (meters 125) :period (seconds 0.5) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1408 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -15) (meters 33)) - (:z (meters -13) (meters 70)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -65)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -15) (meters 33)) + (:z (meters -13) (meters 70)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -65)))) (defpartgroup group-swamp-bubbles-13 :id 315 :bounds (static-bspherem 0 0 0 10) - :parts ((sp-item 1409 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1409 :fade-after (meters 125) :period (seconds 2) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)))) (defpart 1409 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8) (meters 20)) - (:z (meters -8) (meters 20)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -40)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8) (meters 20)) + (:z (meters -8) (meters 20)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -40)))) (defpartgroup group-swamp-bubbles-14 :id 316 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 1410 :fade-after (meters 125) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1388 :flags (start-dead) :binding 1389) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1389 :flags (start-dead launch-asap)) - (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) - (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) - (sp-item 1376 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1410 :fade-after (meters 125) :period (seconds 0.4) :length (seconds 0.017) :binding 1388) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1388 :flags (start-dead) :binding 1389) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1389 :flags (start-dead launch-asap)) + (sp-item 1384 :fade-after (meters 120) :period (seconds 8.345) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 11.125) :length (seconds 0.017) :binding 1375) + (sp-item 1384 :fade-after (meters 120) :period (seconds 16.82) :length (seconds 0.017) :binding 1375) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)) + (sp-item 1375 :flags (start-dead launch-asap) :binding 1376) + (sp-item 1376 :flags (is-3d start-dead)))) (defpart 1410 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -35) (meters 50)) - (:z (meters -40) (meters 55)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 0.5) (seconds 1.997)) - (:flags (bit3)) - (:rotate-y (degrees -10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -35) (meters 50)) + (:z (meters -40) (meters 55)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 0.5) (seconds 1.997)) + (:flags (bit3)) + (:rotate-y (degrees -10)))) (defpartgroup group-swamp-torch :id 317 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 1411 :fade-after (meters 200) :falloff-to (meters 220)) - (sp-item 1412 :fade-after (meters 140) :falloff-to (meters 140)) - (sp-item 1413 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) - (sp-item 1414 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) - (sp-item 1415 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) - (sp-item 1416 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1411 :fade-after (meters 200) :falloff-to (meters 220)) + (sp-item 1412 :fade-after (meters 140) :falloff-to (meters 140)) + (sp-item 1413 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2) :length (seconds 0.3)) + (sp-item 1414 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 1.23) :length (seconds 0.23)) + (sp-item 1415 :fade-after (meters 50) :falloff-to (meters 50) :period (seconds 2.367) :length (seconds 0.17)) + (sp-item 1416 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1416 - :init-specs ((:num 0.3) - (:x (meters 0.2)) - (:y (meters 1) (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1417) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.3) + (:x (meters 0.2)) + (:y (meters 1) (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1417) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1417 - :init-specs ((:fade-b -6.826667)) - ) + :init-specs ((:fade-b -6.826667))) (defpart 1411 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5 1 1.0) - (:x (meters -0.35) (meters 0.7)) - (:z (meters -0.35) (meters 0.7)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.016666668) (meters 0.013333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5 1 1.0) + (:x (meters -0.35) (meters 0.7)) + (:z (meters -0.35) (meters 0.7)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.016666668) (meters 0.013333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1418 - :init-specs ((:fade-a -1.3333334)) - ) + :init-specs ((:fade-a -1.3333334))) (defpart 1413 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 1)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.02) (meters 0.006666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 1)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.02) (meters 0.006666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1414 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:x (meters -0.2) (meters 0.6)) - (:y (meters 0.5)) - (:z (meters 0) (meters 0.4)) - (:scale-x (meters 0.6) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.0033333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:x (meters -0.2) (meters 0.6)) + (:y (meters 0.5)) + (:z (meters 0) (meters 0.4)) + (:scale-x (meters 0.6) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.0033333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1415 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 0.2)) - (:y (meters 0.6)) - (:z (meters -0.6) (meters 0.6)) - (:scale-x (meters 0.7) (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 0.0) - (:vel-y (meters 0.018333333) (meters 0.005)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a 13.066667) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.35)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.05)) - (:next-launcher 1418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 0.2)) + (:y (meters 0.6)) + (:z (meters -0.6) (meters 0.6)) + (:scale-x (meters 0.7) (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 0.0) + (:vel-y (meters 0.018333333) (meters 0.005)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a 13.066667) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.35)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.05)) + (:next-launcher 1418))) (defpart 1412 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters -0.5) (meters 1)) - (:y (meters 0.3)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 1) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 16.0 32.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0005)) - (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.08) - (:accel-x (meters 0.00006666667)) - (:accel-y (meters 0.000033333334)) - (:friction 0.9975) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 5)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters -0.5) (meters 1)) + (:y (meters 0.3)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 1) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 16.0 32.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0005)) + (:rotvel-z (degrees -0.26666668) 1 (degrees 0.53333336)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.08) + (:accel-x (meters 0.00006666667)) + (:accel-y (meters 0.000033333334)) + (:friction 0.9975) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 5)) + (:conerot-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/swamp/swamp-rat-nest.gc b/goal_src/jak1/levels/swamp/swamp-rat-nest.gc index 59b31a0e7c..d81ecb4bb6 100644 --- a/goal_src/jak1/levels/swamp/swamp-rat-nest.gc +++ b/goal_src/jak1/levels/swamp/swamp-rat-nest.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "levels/swamp/swamp-rat.gc") ;; name: swamp-rat-nest.gc @@ -19,652 +18,596 @@ :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1334) (sp-item 1335) (sp-item 1336) (sp-item 1337) (sp-item 1338) (sp-item 1339)) - ) + :parts ((sp-item 1334) (sp-item 1335) (sp-item 1336) (sp-item 1337) (sp-item 1338) (sp-item 1339))) (defpartgroup group-swamp-rat-nest-b-explosion :id 293 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1342) (sp-item 1339) (sp-item 1337) (sp-item 1334)) - ) + :parts ((sp-item 1342) (sp-item 1339) (sp-item 1337) (sp-item 1334))) (defpartgroup group-swamp-rat-nest-c-explosion :id 294 :duration (seconds 0.017) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1335) (sp-item 1339) (sp-item 1337) (sp-item 1334)) - ) + :parts ((sp-item 1335) (sp-item 1339) (sp-item 1337) (sp-item 1334))) (defpartgroup group-swamp-rat-nest-a-puff :id 295 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1346) (sp-item 1347) (sp-item 1348)) - ) + :parts ((sp-item 1346) (sp-item 1347) (sp-item 1348))) (defpartgroup group-swamp-rat-nest-b-puff :id 296 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1350) (sp-item 1351)) - ) + :parts ((sp-item 1350) (sp-item 1351))) (defpartgroup group-swamp-rat-nest-c-puff :id 297 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1353) (sp-item 1354)) - ) + :parts ((sp-item 1353) (sp-item 1354))) (defpart 1353 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 1.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 1.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1354 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 85) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 85) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1355 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -4.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -4.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1350 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1351 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters -1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.01)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 85) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters -1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.01)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 85) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3)))) (defpart 1352 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -10.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.07111111) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -10.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.07111111) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.5)))) (defpart 1334 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 1)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 160.0) - (:b 96.0) - (:a 32.0) - (:fade-a -1.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 1)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 160.0) + (:b 96.0) + (:a 32.0) + (:fade-a -1.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1341 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -12)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 196.0) - (:b 96.0) - (:a 16.0) - (:fade-a 0.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -12)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 196.0) + (:b 96.0) + (:a 16.0) + (:fade-a 0.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1339 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 8.0 8.0) - (:y (meters -1) (meters 1.5)) - (:scale-x (meters 0.75) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.08) (meters 0.08)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.85333335) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:friction 0.92) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 70) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 8.0 8.0) + (:y (meters -1) (meters 1.5)) + (:scale-x (meters 0.75) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.08) (meters 0.08)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.85333335) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:friction 0.92) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 70) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1335 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0 8.0) - (:y (meters -2) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0 8.0) + (:y (meters -2) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1340 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 10.0 5.0) - (:y (meters -12) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 10.0 5.0) + (:y (meters -12) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1336 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0 8.0) - (:y (meters 0.5) (meters 0.25)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 64.0 48.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1) (meters 1.75)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0 8.0) + (:y (meters 0.5) (meters 0.25)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 64.0 48.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1) (meters 1.75)))) (defpart 1337 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 8.0 16.0) - (:y (meters -1) (meters 2)) - (:scale-x (meters 0.2) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 128.0) - (:vel-y (meters 0.02) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.002) (meters -0.00066666666)) - (:timer (seconds 2.5)) - (:flags (bit2 bit12)) - (:userdata 0.0) - (:func 'check-water-level-drop) - (:conerot-x (degrees 15) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 3.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 8.0 16.0) + (:y (meters -1) (meters 2)) + (:scale-x (meters 0.2) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 128.0) + (:vel-y (meters 0.02) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.002) (meters -0.00066666666)) + (:timer (seconds 2.5)) + (:flags (bit2 bit12)) + (:userdata 0.0) + (:func 'check-water-level-drop) + (:conerot-x (degrees 15) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 3.5)))) (defpart 1338 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 32.0 32.0) - (:y (meters 2) (meters 1)) - (:scale-x (meters 0.25) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 32.0 32.0) - (:g 128.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.04)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 45) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 32.0 32.0) + (:y (meters 2) (meters 1)) + (:scale-x (meters 0.25) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 32.0 32.0) + (:g 128.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.04)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 45) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3.5) (meters 1)))) (defpart 1346 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.14222223) - (:accel-y (meters -0.00008333333) (meters -0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.14222223) + (:accel-y (meters -0.00008333333) (meters -0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1349 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters -12) (meters 0.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 64.0 48.0) - (:b 64.0 16.0) - (:a 8.0 8.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.035555556) - (:accel-y (meters 0.00008333333) (meters 0.00016666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 80) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2.5) (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters -12) (meters 0.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 64.0 48.0) + (:b 64.0 16.0) + (:a 8.0 8.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.035555556) + (:accel-y (meters 0.00008333333) (meters 0.00016666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 80) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2.5) (meters 1)))) (defpart 1347 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.1) (meters 0.05)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 64.0) - (:g 64.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.1) (meters 0.05)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 64.0) + (:g 64.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3) (meters 0.5)))) (defpart 1348 - :init-specs ((:texture (new 'static 'texture-id :index #x17 :page #x2)) - (:num 0.5 0.5) - (:y (meters 1) (meters 0.5)) - (:scale-x (meters 0.25) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.25) (meters 0.1)) - (:r 32.0 32.0) - (:g 128.0 32.0) - (:b 32.0 16.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:fade-a -0.28444445) - (:accel-y (meters -0.00033333333) (meters -0.00066666666)) - (:timer (seconds 1.5)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 10)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 3) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x17 :page #x2)) + (:num 0.5 0.5) + (:y (meters 1) (meters 0.5)) + (:scale-x (meters 0.25) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.25) (meters 0.1)) + (:r 32.0 32.0) + (:g 128.0 32.0) + (:b 32.0 16.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:fade-a -0.28444445) + (:accel-y (meters -0.00033333333) (meters -0.00066666666)) + (:timer (seconds 1.5)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 10)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 3) (meters 0.5)))) (defpart 1342 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 20.0 8.0) - (:y (meters -3.5) (meters 2.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 48.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 64.0 64.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.000033333334) (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 20.0 8.0) + (:y (meters -3.5) (meters 2.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 48.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 64.0 64.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.000033333334) (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1343 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0 5.0) - (:y (meters -10.5) (meters 2.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.10666667) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0 5.0) + (:y (meters -10.5) (meters 2.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.10666667) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (defpart 1344 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num -5.0) - (:y (meters -12)) - (:scale-x (meters 16)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 196.0) - (:b 96.0) - (:a 16.0) - (:fade-a 0.0) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num -5.0) + (:y (meters -12)) + (:scale-x (meters 16)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 196.0) + (:b 96.0) + (:a 16.0) + (:fade-a 0.0) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)))) (defpart 1345 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 12.0 4.0) - (:y (meters -4) (meters 1.5)) - (:scale-x (meters 1) (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 48.0 32.0) - (:g 48.0 32.0) - (:b 48.0 8.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 90) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.5) (meters 1.25)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 12.0 4.0) + (:y (meters -4) (meters 1.5)) + (:scale-x (meters 1) (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 48.0 32.0) + (:g 48.0 32.0) + (:b 48.0 8.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 90) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.5) (meters 1.25)))) (deftype swamp-rat-nest (process-drawable) - ((fact fact-info-enemy :override) - (child-process (pointer swamp-rat-nest-dummy) :overlay-at child) - (dummy (pointer swamp-rat-nest-dummy)) - (damaged symbol) - (dummy-type int8) - (rat-count int8) - (hit-points int8) - (defensive-rat-count int8) - (spawn-period float) - (spawn-period-scale float) - (test-interval time-frame) - (player-attack-id int32) - ) + ((fact fact-info-enemy :override) + (child-process (pointer swamp-rat-nest-dummy) :overlay-at child) + (dummy (pointer swamp-rat-nest-dummy)) + (damaged symbol) + (dummy-type int8) + (rat-count int8) + (hit-points int8) + (defensive-rat-count int8) + (spawn-period float) + (spawn-period-scale float) + (test-interval time-frame) + (player-attack-id int32)) (:states - swamp-rat-nest-active - swamp-rat-nest-die - swamp-rat-nest-gestate - swamp-rat-nest-idle - swamp-rat-nest-victory - ) - ) - + swamp-rat-nest-active + swamp-rat-nest-die + swamp-rat-nest-gestate + swamp-rat-nest-idle + swamp-rat-nest-victory)) (deftype swamp-rat-nest-dummy (process-drawable) - ((root collide-shape :override) - (parent-process (pointer swamp-rat-nest) :overlay-at parent) - (top-sphere sphere :inline) - (death-part sparticle-launch-group) - (spawn-joint-array int8 6) - (spawn-joint-count int8) - (particle-spawn-joint int8) - ) + ((root collide-shape :override) + (parent-process (pointer swamp-rat-nest) :overlay-at parent) + (top-sphere sphere :inline) + (death-part sparticle-launch-group) + (spawn-joint-array int8 6) + (spawn-joint-count int8) + (particle-spawn-joint int8)) (:methods - (swamp-rat-nest-dummy-method-20 (_type_) none) - (swamp-rat-nest-dummy-method-21 (_type_) int) - ) + (swamp-rat-nest-dummy-method-20 (_type_) none) + (swamp-rat-nest-dummy-method-21 (_type_) int)) (:states - swamp-rat-nest-dummy-die - swamp-rat-nest-dummy-hit - swamp-rat-nest-dummy-idle - swamp-rat-nest-dummy-shake - ) - ) + swamp-rat-nest-dummy-die + swamp-rat-nest-dummy-hit + swamp-rat-nest-dummy-idle + swamp-rat-nest-dummy-shake)) +(deftype swamp-rat-nest-dummy-a (swamp-rat-nest-dummy) ()) -(deftype swamp-rat-nest-dummy-a (swamp-rat-nest-dummy) - () - ) - - -(deftype swamp-rat-nest-dummy-b (swamp-rat-nest-dummy) - () - ) - - -(deftype swamp-rat-nest-dummy-c (swamp-rat-nest-dummy) - () - ) +(deftype swamp-rat-nest-dummy-b (swamp-rat-nest-dummy) ()) +(deftype swamp-rat-nest-dummy-c (swamp-rat-nest-dummy) ()) (defbehavior swamp-rat-nest-dummy-draw-spawn-joints swamp-rat-nest-dummy () (dotimes (gp-0 (-> self spawn-joint-count)) (let* ((a0-0 (-> self spawn-joint-array gp-0)) - (a2-0 (-> self node-list data a0-0 bone transform)) - ) - (add-debug-matrix #t (bucket-id debug-no-zbuf) a2-0) - ) - ) - #f - ) + (a2-0 (-> self node-list data a0-0 bone transform))) + (add-debug-matrix #t (bucket-id debug-no-zbuf) a2-0))) + #f) (defbehavior swamp-rat-nest-dummy-take-damage swamp-rat-nest-dummy ((arg0 int)) (when (not (-> self parent-process 0 damaged)) (set! (-> self parent-process 0 damaged) #t) (+! (-> self parent-process 0 rat-count) (-> self parent-process 0 defensive-rat-count)) - (set! (-> self parent-process 0 spawn-period) 600.0) - ) + (set! (-> self parent-process 0 spawn-period) 600.0)) (set! (-> self parent-process 0 hit-points) (- (-> self parent-process 0 hit-points) arg0)) - (none) - ) + (none)) (defbehavior swamp-rat-nest-dummy-event-handler swamp-rat-nest-dummy ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('shake) - (if (= (-> self next-state name) 'swamp-rat-nest-dummy-idle) - (go swamp-rat-nest-dummy-shake) - ) - ) + (('shake) (if (= (-> self next-state name) 'swamp-rat-nest-dummy-idle) (go swamp-rat-nest-dummy-shake))) (('attack) (send-event (ppointer->process (-> self parent-process)) 'hit) (let ((v1-7 (-> arg3 param 2))) @@ -674,94 +617,72 @@ ((and (>= arg1 2) (= (-> arg3 param 1) 'eco-yellow)) (swamp-rat-nest-dummy-take-damage 3) (if (< (vector-vector-distance (target-pos 0) (-> self top-sphere)) (-> self top-sphere w)) - (send-event *target* 'no-look-around (seconds 0.25)) - ) - (go swamp-rat-nest-dummy-hit) - ) + (send-event *target* 'no-look-around (seconds 0.25))) + (go swamp-rat-nest-dummy-hit)) (else - (level-hint-spawn (text-id swamp-rat-nest-hint) "sksp0144" (the-as entity #f) *entity-pool* (game-task none)) - (swamp-rat-nest-dummy-take-damage 0) - (go swamp-rat-nest-dummy-hit) - ) - ) - ) - ) - ) - ) - ) + (level-hint-spawn (text-id swamp-rat-nest-hint) "sksp0144" (the-as entity #f) *entity-pool* (game-task none)) + (swamp-rat-nest-dummy-take-damage 0) + (go swamp-rat-nest-dummy-hit)))))))) (defstate swamp-rat-nest-dummy-idle (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :code (behavior () - (loop - (ja :num-func num-func-identity :frame-num max) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (loop (ja :num-func num-func-identity :frame-num max) + (suspend))) + :post transform-post) (defstate swamp-rat-nest-dummy-hit (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (if (<= (-> self parent-process 0 hit-points) 0) - (go swamp-rat-nest-dummy-die) - ) - ) - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (< (-> self parent-process 0 hit-points) 3) - (spawn (-> self part) (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3)) - ) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-rat-nest-dummy-idle) - ) - :post transform-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (<= (-> self parent-process 0 hit-points) 0) (go swamp-rat-nest-dummy-die))) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (< (-> self parent-process 0 hit-points) 3) + (spawn (-> self part) (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3))) + (suspend) + (ja :num! (seek!))) + (go swamp-rat-nest-dummy-idle)) + :post transform-post) (defstate swamp-rat-nest-dummy-shake (swamp-rat-nest-dummy) :event swamp-rat-nest-dummy-event-handler - :code (behavior () - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go swamp-rat-nest-dummy-idle) - ) - :post transform-post - ) + :code + (behavior () + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go swamp-rat-nest-dummy-idle)) + :post transform-post) (defstate swamp-rat-nest-dummy-die (swamp-rat-nest-dummy) :event #f - :code (behavior () - (set-time! (-> self state-time)) - (set! (-> self parent-process 0 dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) - (process-spawn - part-tracker - :init part-tracker-init - (-> self death-part) - -1 - #f - #f - #f - (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3) - :to *entity-pool* - ) - (until (time-elapsed? (-> self state-time) (seconds 0.1)) - (suspend) - ) - (ja-channel-set! 0) - (while (-> self child) - (suspend) - ) - (deactivate self) - ) - ) + :code + (behavior () + (set-time! (-> self state-time)) + (set! (-> self parent-process 0 dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) + (process-spawn part-tracker + :init + part-tracker-init + (-> self death-part) + -1 + #f + #f + #f + (-> self node-list data (-> self particle-spawn-joint) bone transform vector 3) + :to + *entity-pool*) + (until (time-elapsed? (-> self state-time) (seconds 0.1)) + (suspend)) + (ja-channel-set! 0) + (while (-> self child) + (suspend)) + (deactivate self))) (defbehavior swamp-rat-nest-dummy-init-by-other swamp-rat-nest-dummy ((arg0 swamp-rat-nest-dummy)) (let ((gp-0 (-> arg0 entity))) @@ -771,8 +692,7 @@ (set! (-> self top-sphere quad) (-> self root trans quad)) (+! (-> self top-sphere y) 24576.0) (set! (-> self top-sphere w) 18432.0) - (set! (-> self entity) gp-0) - ) + (set! (-> self entity) gp-0)) (set! (-> self nav) (new 'process 'nav-control (-> self root) 16 40960.0)) (logior! (-> self nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set-current-poly! (-> self nav) (find-poly (-> self nav) (-> self root trans))) @@ -780,22 +700,13 @@ (swamp-rat-nest-dummy-method-21 self) (when (zero? (-> self skel)) (set! (-> self spawn-joint-count) 0) - 0 - ) - (if (zero? (-> self parent-process 0 dummy-type)) - (go swamp-rat-nest-dummy-idle) - (go swamp-rat-nest-dummy-hit) - ) - (none) - ) + 0) + (if (zero? (-> self parent-process 0 dummy-type)) (go swamp-rat-nest-dummy-idle) (go swamp-rat-nest-dummy-hit)) + (none)) (defbehavior swamp-rat-nest-default-event-handler swamp-rat-nest ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('victory) - (go swamp-rat-nest-victory) - ) - ) - ) + (('victory) (go swamp-rat-nest-victory)))) swamp-rat-nest-default-event-handler @@ -804,215 +715,137 @@ swamp-rat-nest-default-event-handler (dotimes (gp-0 5) (let* ((s5-0 (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count)))) (v1-15 (-> self dummy 0 node-list data s5-0 bone)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> v1-15 transform vector 3 quad)) (let ((s2-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-15 transform vector 1) 1.0)) - (s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) s3-0)) - ) + (s4-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) s3-0))) (set! (-> s4-1 y) 0.0) (vector-normalize! s4-1 1.0) - (if (< (vector-dot s2-0 s4-1) (cos 8192.0)) - (return s5-0) - ) - ) - ) - ) - ) - (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count))) - ) + (if (< (vector-dot s2-0 s4-1) (cos 8192.0)) (return s5-0)))))) + (-> self dummy 0 spawn-joint-array (rand-vu-int-count (-> self dummy 0 spawn-joint-count)))) ;; ERROR: Function may read a register that is not set: t2 (defbehavior swamp-rat-nest-spawn-rat swamp-rat-nest () (local-vars (t2-0 none)) - (the-as - (pointer swamp-rat) - (when (and (-> self dummy) (> (-> self dummy 0 spawn-joint-count) 0)) - (let* ((v1-5 (swamp-rat-nest-pick-spawn-joint)) - (v1-8 (-> self dummy 0 node-list data v1-5 bone)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> gp-0 quad) (-> v1-8 transform vector 3 quad)) - (let ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-8 transform vector 1) 1.0)) - (s4-0 (if (= (-> self fact pickup-type) (pickup-type none)) - 0 - 9 - ) - ) - ) - (process-spawn swamp-rat self gp-0 s5-0 s4-0 t2-0 :to self) - ) - ) - ) - ) - ) + (the-as (pointer swamp-rat) + (when (and (-> self dummy) (> (-> self dummy 0 spawn-joint-count) 0)) + (let* ((v1-5 (swamp-rat-nest-pick-spawn-joint)) + (v1-8 (-> self dummy 0 node-list data v1-5 bone)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> v1-8 transform vector 3 quad)) + (let ((s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> v1-8 transform vector 1) 1.0)) + (s4-0 (if (= (-> self fact pickup-type) (pickup-type none)) 0 9))) + (process-spawn swamp-rat self gp-0 s5-0 s4-0 t2-0 :to self)))))) (defbehavior swamp-rat-nest-check-dummy swamp-rat-nest () (when (not (-> self dummy)) (let ((v1-1 (-> self dummy-type))) (cond ((zero? v1-1) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-a :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-a :init swamp-rat-nest-dummy-init-by-other self :to self))) ((= v1-1 1) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-b :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-b :init swamp-rat-nest-dummy-init-by-other self :to self))) ((= v1-1 2) - (set! (-> self dummy) - (process-spawn swamp-rat-nest-dummy-c :init swamp-rat-nest-dummy-init-by-other self :to self) - ) - ) - (else - (go swamp-rat-nest-die) - ) - ) - ) + (set! (-> self dummy) (process-spawn swamp-rat-nest-dummy-c :init swamp-rat-nest-dummy-init-by-other self :to self))) + (else (go swamp-rat-nest-die)))) (+! (-> self dummy-type) 1) - (set! (-> self spawn-period) (* 0.75 (-> self spawn-period))) - ) - (none) - ) + (set! (-> self spawn-period) (* 0.75 (-> self spawn-period)))) + (none)) (defstate swamp-rat-nest-idle (swamp-rat-nest) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hit) - (go swamp-rat-nest-active) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (go swamp-rat-nest-active) - ) - ) - :code (behavior () - (swamp-rat-nest-check-dummy) - (loop - (suspend) - ) - ) - :post #f - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hit) (go swamp-rat-nest-active)))) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (go swamp-rat-nest-active))) + :code + (behavior () + (swamp-rat-nest-check-dummy) + (loop (suspend))) + :post #f) (defstate swamp-rat-nest-active (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (swamp-rat-nest-check-dummy) - (when (time-elapsed? (-> self state-time) (-> self test-interval)) - (set-time! (-> self state-time)) - (set! (-> self test-interval) (seconds 0.2)) - (let ((v1-6 0)) - (let ((a0-2 (the-as (pointer process-tree) (-> self child-process)))) - (while a0-2 - (if (= (-> (ppointer->process a0-2) type) swamp-rat) - (+! v1-6 1) - ) - (set! a0-2 (-> a0-2 0 brother)) - ) - ) - (if (< v1-6 (-> self rat-count)) - (go swamp-rat-nest-gestate) - ) - ) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post #f - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (swamp-rat-nest-check-dummy) + (when (time-elapsed? (-> self state-time) (-> self test-interval)) + (set-time! (-> self state-time)) + (set! (-> self test-interval) (seconds 0.2)) + (let ((v1-6 0)) + (let ((a0-2 (the-as (pointer process-tree) (-> self child-process)))) + (while a0-2 + (if (= (-> (ppointer->process a0-2) type) swamp-rat) (+! v1-6 1)) + (set! a0-2 (-> a0-2 0 brother)))) + (if (< v1-6 (-> self rat-count)) (go swamp-rat-nest-gestate))))) + :code + (behavior () + (loop (suspend))) + :post #f) (defstate swamp-rat-nest-gestate (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (swamp-rat-nest-check-dummy) - (when (time-elapsed? (-> self state-time) (the int (* (-> self spawn-period-scale) (-> self spawn-period)))) - (send-event (ppointer->process (-> self dummy)) 'shake) - (swamp-rat-nest-spawn-rat) - (go swamp-rat-nest-active) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post #f - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (swamp-rat-nest-check-dummy) + (when (time-elapsed? (-> self state-time) (the int (* (-> self spawn-period-scale) (-> self spawn-period)))) + (send-event (ppointer->process (-> self dummy)) 'shake) + (swamp-rat-nest-spawn-rat) + (go swamp-rat-nest-active))) + :code + (behavior () + (loop (suspend))) + :post #f) (defstate swamp-rat-nest-victory (swamp-rat-nest) :event #f - :code (behavior () - (let ((gp-0 (the-as (pointer process-tree) (-> self child-process)))) - (while gp-0 - (let* ((s5-0 (ppointer->process gp-0)) - (a0-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) swamp-rat)) - s5-0 - ) - ) - ) - (if a0-1 - (send-event a0-1 'victory) - ) - ) - (set! gp-0 (-> gp-0 0 brother)) - ) - ) - (go swamp-rat-nest-active) - ) - :post #f - ) + :code + (behavior () + (let ((gp-0 (the-as (pointer process-tree) (-> self child-process)))) + (while gp-0 + (let* ((s5-0 (ppointer->process gp-0)) + (a0-1 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) swamp-rat)) s5-0))) + (if a0-1 (send-event a0-1 'victory))) + (set! gp-0 (-> gp-0 0 brother)))) + (go swamp-rat-nest-active)) + :post #f) (defstate swamp-rat-nest-die (swamp-rat-nest) :event swamp-rat-nest-default-event-handler - :code (behavior () - (process-entity-status! self (entity-perm-status complete) #t) - (process-entity-status! self (entity-perm-status dead) #t) - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (while (-> self child-process) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (process-entity-status! self (entity-perm-status dead) #t) + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (while (-> self child-process) + (suspend))) + :post #f) (defmethod init-from-entity! ((this swamp-rat-nest) (arg0 entity-actor)) (logior! (-> this mask) (process-mask enemy)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (logior! (-> this path flags) (path-control-flag display draw-line draw-point draw-text)) (let ((s5-1 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)))) - (if (>= (get-health-percent-lost *game-info* #f) 0.5) - (+! s5-1 -1) - ) - (set! (-> this rat-count) (max 1 (min 4 (the-as int s5-1)))) - ) + (if (>= (get-health-percent-lost *game-info* #f) 0.5) (+! s5-1 -1)) + (set! (-> this rat-count) (max 1 (min 4 (the-as int s5-1))))) (set! (-> this defensive-rat-count) 2) - (if (>= (get-health-percent-lost *game-info* #f) 0.75) - (+! (-> this defensive-rat-count) -1) - ) + (if (>= (get-health-percent-lost *game-info* #f) 0.75) (+! (-> this defensive-rat-count) -1)) (set! (-> this dummy) (the-as (pointer swamp-rat-nest-dummy) #f)) (set! (-> this dummy-type) 0) (set! (-> this hit-points) 0) @@ -1021,23 +854,28 @@ swamp-rat-nest-default-event-handler (set! (-> this spawn-period-scale) (+ 1.0 (* 2.0 (get-health-percent-lost *game-info* #f)))) (set! (-> this test-interval) (rand-vu-int-range (seconds 0.1) (seconds 0.2))) (go swamp-rat-nest-idle) - (none) - ) + (none)) -(defskelgroup *swamp-rat-nest-dummy-a-sg* swamp-rat-nest swamp-rat-nest-a-lod0-jg swamp-rat-nest-a-idle-ja - ((swamp-rat-nest-a-lod0-mg (meters 20)) (swamp-rat-nest-a-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *swamp-rat-nest-dummy-a-sg* + swamp-rat-nest + swamp-rat-nest-a-lod0-jg + swamp-rat-nest-a-idle-ja + ((swamp-rat-nest-a-lod0-mg (meters 20)) (swamp-rat-nest-a-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *swamp-rat-nest-dummy-b-sg* swamp-rat-nest swamp-rat-nest-b-lod0-jg swamp-rat-nest-b-idle-ja - ((swamp-rat-nest-b-lod0-mg (meters 20)) (swamp-rat-nest-b-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *swamp-rat-nest-dummy-b-sg* + swamp-rat-nest + swamp-rat-nest-b-lod0-jg + swamp-rat-nest-b-idle-ja + ((swamp-rat-nest-b-lod0-mg (meters 20)) (swamp-rat-nest-b-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) -(defskelgroup *swamp-rat-nest-dummy-c-sg* swamp-rat-nest swamp-rat-nest-c-lod0-jg swamp-rat-nest-c-idle-ja - ((swamp-rat-nest-c-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *swamp-rat-nest-dummy-c-sg* + swamp-rat-nest + swamp-rat-nest-c-lod0-jg + swamp-rat-nest-c-idle-ja + ((swamp-rat-nest-c-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-a)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1048,15 +886,12 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) - (initialize-skeleton this *swamp-rat-nest-dummy-a-sg* '()) - (none) - ) + (set! (-> this root) s5-0)) + (initialize-skeleton this *swamp-rat-nest-dummy-a-sg* ()) + (none)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-b)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1067,15 +902,12 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) - (initialize-skeleton this *swamp-rat-nest-dummy-b-sg* '()) - (none) - ) + (set! (-> this root) s5-0)) + (initialize-skeleton this *swamp-rat-nest-dummy-b-sg* ()) + (none)) (defmethod swamp-rat-nest-dummy-method-20 ((this swamp-rat-nest-dummy-c)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -1086,84 +918,54 @@ swamp-rat-nest-default-event-handler (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) - (initialize-skeleton this *swamp-rat-nest-dummy-c-sg* '()) - (none) - ) + (set! (-> this root) s5-0)) + (initialize-skeleton this *swamp-rat-nest-dummy-c-sg* ()) + (none)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-a)) (let ((v1-0 0)) (let* ((a0-1 '(5 6 7 8 9 10)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 292)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 295) this)) - (let ((v0-1 6)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 6)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-b)) (let ((v1-0 0)) (let* ((a0-1 '(5 9 10 6 7 8)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 293)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 296) this)) - (let ((v0-1 9)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 9)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) (defmethod swamp-rat-nest-dummy-method-21 ((this swamp-rat-nest-dummy-c)) (let ((v1-0 0)) (let* ((a0-1 '(5 6)) - (a1-0 (car a0-1)) - ) + (a1-0 (car a0-1))) (while (not (null? a0-1)) (when (< v1-0 6) (set! (-> this spawn-joint-array v1-0) (/ (the-as int a1-0) 8)) - (+! v1-0 1) - ) + (+! v1-0 1)) (set! a0-1 (cdr a0-1)) - (set! a1-0 (car a0-1)) - ) - ) - (set! (-> this spawn-joint-count) v1-0) - ) + (set! a1-0 (car a0-1)))) + (set! (-> this spawn-joint-count) v1-0)) (set! (-> this death-part) (-> *part-group-id-table* 294)) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 297) this)) - (let ((v0-1 5)) - (set! (-> this particle-spawn-joint) v0-1) - v0-1 - ) - ) + (let ((v0-1 5)) (set! (-> this particle-spawn-joint) v0-1) v0-1)) diff --git a/goal_src/jak1/levels/swamp/swamp-rat.gc b/goal_src/jak1/levels/swamp/swamp-rat.gc index efdb292b08..393afba50e 100644 --- a/goal_src/jak1/levels/swamp/swamp-rat.gc +++ b/goal_src/jak1/levels/swamp/swamp-rat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "SWA.DGO") - (require "engine/common-obs/nav-enemy.gc") ;; name: swamp-rat.gc @@ -10,429 +9,341 @@ ;; note: changed for high fps (declare-type swamp-rat-nest process-drawable) + (declare-type billy process-taskable) ;; DECOMP BEGINS (deftype swamp-rat (nav-enemy) - ((up-vector vector :inline) - (state-float float) - (state-vector vector :inline) - (_hack uint64) - (wiggle-time time-frame) - (wiggle-angle float) - (delta-wiggle-angle float) - (wiggle-factor float) - (min-height float) - (chase-rest-time time-frame) - (target-nav-time time-frame) - ) + ((up-vector vector :inline) + (state-float float) + (state-vector vector :inline) + (_hack uint64) + (wiggle-time time-frame) + (wiggle-angle float) + (delta-wiggle-angle float) + (wiggle-factor float) + (min-height float) + (chase-rest-time time-frame) + (target-nav-time time-frame)) (:states - swamp-rat-spawn - ) - ) + swamp-rat-spawn)) - -(defskelgroup *swamp-rat-sg* swamp-rat swamp-rat-lod0-jg swamp-rat-idle-ja - ((swamp-rat-lod0-mg (meters 20)) (swamp-rat-lod1-mg (meters 40)) (swamp-rat-lod2-mg (meters 999999))) - :bounds (static-spherem 0 1 0 4) - :longest-edge (meters 1) - ) +(defskelgroup *swamp-rat-sg* + swamp-rat + swamp-rat-lod0-jg + swamp-rat-idle-ja + ((swamp-rat-lod0-mg (meters 20)) (swamp-rat-lod1-mg (meters 40)) (swamp-rat-lod2-mg (meters 999999))) + :bounds (static-spherem 0 1 0 4) + :longest-edge (meters 1)) (defmethod touch-handler ((this swamp-rat) (arg0 process) (arg1 event-message-block)) (when ((method-of-type touching-shapes-entry prims-touching?) (the-as touching-shapes-entry (-> arg1 param 0)) (-> this collide-info) - (the-as uint 1) - ) + (the-as uint 1)) (when (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) (let* ((s5-1 (-> this parent)) - (a0-4 (if (and (nonzero? s5-1) (type-type? pointer process-drawable)) - s5-1 - ) - ) - ) - (if a0-4 - (send-event (the-as process-tree a0-4) 'victory) - (go (method-of-object this nav-enemy-victory)) - ) - ) - ) - ) - ) + (a0-4 (if (and (nonzero? s5-1) (type-type? pointer process-drawable)) s5-1))) + (if a0-4 (send-event (the-as process-tree a0-4) 'victory) (go (method-of-object this nav-enemy-victory))))))) (defbehavior swamp-rat-default-event-handler swamp-rat ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('victory) - (go-virtual nav-enemy-victory) - ) - (else - (nav-enemy-default-event-handler arg0 arg1 arg2 arg3) - ) - ) - ) + (('victory) (go-virtual nav-enemy-victory)) + (else (nav-enemy-default-event-handler arg0 arg1 arg2 arg3)))) swamp-rat-default-event-handler (defmethod common-post ((this swamp-rat)) (when (logtest? (-> this collide-info status) (cshape-moving-flags onsurf)) (vector-deg-seek (-> this up-vector) (-> this up-vector) (-> this collide-info surface-normal) 910.2222) - (vector-normalize! (-> this up-vector) 1.0) - ) - (forward-up-nopitch->quaternion - (-> this collide-info quat) - (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) - (-> this up-vector) - ) + (vector-normalize! (-> this up-vector) 1.0)) + (forward-up-nopitch->quaternion (-> this collide-info quat) + (vector-z-quaternion! (new-stack-vector0) (-> this collide-info quat)) + (-> this up-vector)) (call-parent-method this) - (none) - ) + (none)) (defmethod nav-enemy-method-38 ((this swamp-rat)) - (integrate-for-enemy-with-move-to-ground! - (-> this collide-info) - (-> this collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) + (integrate-for-enemy-with-move-to-ground! (-> this collide-info) + (-> this collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) (when (< (-> this collide-info trans y) (-> this min-height)) (let ((a1-1 (new 'stack-no-clear 'vector))) (set! (-> a1-1 quad) (-> this collide-info trans quad)) (set! (-> a1-1 y) (-> this min-height)) - (move-to-ground-point! (-> this collide-info) a1-1 (-> this collide-info transv) *y-vector*) - ) - ) + (move-to-ground-point! (-> this collide-info) a1-1 (-> this collide-info transv) *y-vector*))) 0 - (none) - ) + (none)) (defstate nav-enemy-idle (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :post (behavior () - (ja-post) - ) - ) + :post + (behavior () + (ja-post))) (defstate nav-enemy-patrol (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (loop - (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) - :num! (seek! max f30-0) - :frame-num 0.0 - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - ) - ) - ) + :code + (behavior () + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (loop (ja-no-eval :group! (-> self draw art-group data (-> self nav-info walk-anim)) :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0))))))) (defstate nav-enemy-notice (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-no-eval :num! (loop!)) - (ja-channel-push! 1 (seconds 0.17)) - (ja-no-eval :group! swamp-rat-notice-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (ja :num! (seek! (ja-aframe 30.0 0))) - ) - (ja-no-eval :num! (seek!)) - (go-virtual nav-enemy-chase) - ) - ) + :code + (behavior () + (ja-no-eval :num! (loop!)) + (ja-channel-push! 1 (seconds 0.17)) + (ja-no-eval :group! swamp-rat-notice-ja :num! (seek! (ja-aframe 30.0 0)) :frame-num 0.0) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (ja :num! (seek! (ja-aframe 30.0 0)))) + (ja-no-eval :num! (seek!)) + (go-virtual nav-enemy-chase))) (defbehavior swamp-rat-update-wiggle-params swamp-rat () (let* ((f0-0 (rand-vu-float-range 0.0 1.0)) (f1-1 (+ 1.0 (* 2.0 f0-0))) (f2-2 f1-1) (f2-4 (/ 1.0 f2-2)) - (f0-2 (+ 1.0 (* 0.2 f0-0))) - ) + (f0-2 (+ 1.0 (* 0.2 f0-0)))) (set! (-> self delta-wiggle-angle) (* 910.2222 f1-1)) (set! (-> self wiggle-factor) (* 1.5 f2-4)) - (set! (-> self target-speed) (* 28672.0 f0-2)) - ) - ) + (set! (-> self target-speed) (* 28672.0 f0-2)))) (defbehavior swamp-rat-update-wiggle-target swamp-rat ((arg0 vector)) ;; og:preserve-this changed for high fps (+! (-> self wiggle-angle) (* DISPLAY_FPS_RATIO (-> self delta-wiggle-angle))) - (if (< 65536.0 (-> self wiggle-angle)) - (+! (-> self wiggle-angle) -65536.0) - ) + (if (< 65536.0 (-> self wiggle-angle)) (+! (-> self wiggle-angle) -65536.0)) (let* ((v1-3 (-> self collide-info trans)) (a1-1 (vector-! (new 'stack-no-clear 'vector) v1-3 arg0)) (s3-0 (vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)) - (v1-4 - (vector+*! (new 'stack-no-clear 'vector) arg0 s3-0 (* (-> self wiggle-factor) (sin (-> self wiggle-angle)))) - ) - (v0-3 (-> self nav target-pos)) - ) + (v1-4 (vector+*! (new 'stack-no-clear 'vector) arg0 s3-0 (* (-> self wiggle-factor) (sin (-> self wiggle-angle))))) + (v0-3 (-> self nav target-pos))) (set! (-> v0-3 quad) (-> v1-4 quad)) - v0-3 - ) - ) + v0-3)) (defstate nav-enemy-chase (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :trans (behavior () - (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) - (go-virtual nav-enemy-victory) - ) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - ) - :code (behavior () - (set-time! (-> self target-nav-time)) - (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) - (set! (-> self wiggle-angle) 0.0) - (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) - (ja-channel-push! 1 (seconds 0.17)) - (ja :group! swamp-rat-run-ja :num! min) - (loop - (when (time-elapsed? (-> self wiggle-time) (seconds 1)) - (set-time! (-> self wiggle-time)) - (swamp-rat-update-wiggle-params) - ) - (suspend) - (ja :num! (loop!)) - ) - ) - :post (behavior () - (swamp-rat-update-wiggle-target (target-pos 0)) - (nav-enemy-travel-post) - ) - ) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (-> self chase-rest-time)) (go-virtual nav-enemy-victory)) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans))) + :code + (behavior () + (set-time! (-> self target-nav-time)) + (set! (-> self wiggle-time) (+ (current-time) (seconds -10))) + (set! (-> self wiggle-angle) 0.0) + (set! (-> self chase-rest-time) (rand-vu-int-range (seconds 1) (seconds 4))) + (ja-channel-push! 1 (seconds 0.17)) + (ja :group! swamp-rat-run-ja :num! min) + (loop (when (time-elapsed? (-> self wiggle-time) (seconds 1)) + (set-time! (-> self wiggle-time)) + (swamp-rat-update-wiggle-params)) + (suspend) + (ja :num! (loop!)))) + :post + (behavior () + (swamp-rat-update-wiggle-target (target-pos 0)) + (nav-enemy-travel-post))) (defstate nav-enemy-stop-chase (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-stop-chase) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-stop-chase) + code)) (defstate nav-enemy-stare (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (set! (-> self rotate-speed) 1456355.5) - (set! (-> self turn-time) (seconds 0.075)) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (loop - (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! swamp-rat-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - (ja-no-eval :num! (loop!)) - (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) - (let ((gp-0 (rand-vu-int-range 300 600)) - (s5-0 (current-time)) - ) - (until (time-elapsed? s5-0 gp-0) - (ja :num-func num-func-identity :frame-num 0.0) - (ja-blend-eval) + :code + (behavior () + (set! (-> self rotate-speed) 1456355.5) + (set! (-> self turn-time) (seconds 0.075)) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (loop (logior! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! swamp-rat-celebrate-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) (suspend) - (suspend) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! max f30-0))) + (ja-no-eval :num! (loop!)) + (logclear! (-> self nav-enemy-flags) (nav-enemy-flags enable-travel)) + (let ((gp-0 (rand-vu-int-range 300 600)) + (s5-0 (current-time))) + (until (time-elapsed? s5-0 gp-0) + (ja :num-func num-func-identity :frame-num 0.0) + (ja-blend-eval) + (suspend) + (suspend))))))) (defstate nav-enemy-give-up (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) - (nav-enemy-get-new-patrol-point) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-patrol) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (logclear! (-> self nav flags) (nav-control-flags navcf17 navcf19)) + (nav-enemy-get-new-patrol-point) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (seek-to-point-toward-point! (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time)) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-patrol))) (defstate nav-enemy-attack (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (behavior () - (ja-channel-push! 1 (seconds 0.075)) - (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go-virtual nav-enemy-victory) - ) - ) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.075)) + (ja-no-eval :group! swamp-rat-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go-virtual nav-enemy-victory))) (defstate nav-enemy-victory (swamp-rat) :virtual #t :event swamp-rat-default-event-handler - :code (-> (method-of-type nav-enemy nav-enemy-victory) code) - ) + :code + (-> (method-of-type nav-enemy nav-enemy-victory) + code)) (defstate swamp-rat-spawn (swamp-rat) :event swamp-rat-default-event-handler - :code (behavior () - (let ((gp-0 (new-stack-vector0))) - (set! (-> gp-0 x) 0.0) - (set! (-> gp-0 y) (- (-> *standard-dynamics* gravity-length))) - (set! (-> gp-0 z) 0.0) - (set! (-> gp-0 w) 1.0) - (let ((f30-0 0.125)) - (set-time! (-> self state-time)) - (ja :group! swamp-rat-fall-ja :num! min) - (loop - (set! f30-0 (seek f30-0 1.5 0.1)) - (vector-v++! (-> self collide-info transv) gp-0) - (integrate-for-enemy-with-move-to-ground! - (-> self collide-info) - (-> self collide-info transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (when (or (logtest? (-> self collide-info status) (cshape-moving-flags tsurf)) - (or (< (-> self collide-info trans y) (-> self min-height)) (time-elapsed? (-> self state-time) (seconds 1))) - ) - 0 - (goto cfg-13) - ) - (vector-float*! (-> self collide-info scale) *identity-vector* f30-0) - (ja :num! (loop!)) - (suspend) - ) - ) - ) - (label cfg-13) - (if (< (-> self collide-info trans y) (-> self min-height)) - (set! (-> self collide-info trans y) (-> self min-height)) - ) - (set! (-> self collide-info transv quad) (-> *null-vector* quad)) - (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) - (ja-no-eval :group! swamp-rat-bounce-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (if (target-in-range? self (-> self nav-info stop-chase-distance)) - (go-virtual nav-enemy-chase) - (go-virtual nav-enemy-idle) - ) - ) - :post nav-enemy-simple-post - ) + :code + (behavior () + (let ((gp-0 (new-stack-vector0))) + (set! (-> gp-0 x) 0.0) + (set! (-> gp-0 y) (- (-> *standard-dynamics* gravity-length))) + (set! (-> gp-0 z) 0.0) + (set! (-> gp-0 w) 1.0) + (let ((f30-0 0.125)) + (set-time! (-> self state-time)) + (ja :group! swamp-rat-fall-ja :num! min) + (loop (set! f30-0 (seek f30-0 1.5 0.1)) + (vector-v++! (-> self collide-info transv) gp-0) + (integrate-for-enemy-with-move-to-ground! (-> self collide-info) + (-> self collide-info transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (when (or (logtest? (-> self collide-info status) (cshape-moving-flags tsurf)) + (or (< (-> self collide-info trans y) (-> self min-height)) (time-elapsed? (-> self state-time) (seconds 1)))) + 0 + (goto cfg-13)) + (vector-float*! (-> self collide-info scale) *identity-vector* f30-0) + (ja :num! (loop!)) + (suspend)))) + (label cfg-13) + (if (< (-> self collide-info trans y) (-> self min-height)) (set! (-> self collide-info trans y) (-> self min-height))) + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) + (ja-no-eval :group! swamp-rat-bounce-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (if (target-in-range? self (-> self nav-info stop-chase-distance)) (go-virtual nav-enemy-chase) (go-virtual nav-enemy-idle))) + :post nav-enemy-simple-post) -(define *swamp-rat-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 7 - :turn-anim 7 - :notice-anim 8 - :run-anim 9 - :jump-anim 9 - :jump-land-anim 6 - :victory-anim 10 - :taunt-anim 10 - :die-anim 11 - :neck-joint 7 - :run-travel-speed (meters 7) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.075) - :walk-travel-speed (meters 2) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.075) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :notice-nav-radius (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 3) - :frustration-time (seconds 1.5) - :die-anim-hold-frame 20.0 - :jump-anim-start-frame 19.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *swamp-rat-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim 4 + :walk-anim 7 + :turn-anim 7 + :notice-anim 8 + :run-anim 9 + :jump-anim 9 + :jump-land-anim 6 + :victory-anim 10 + :taunt-anim 10 + :die-anim 11 + :neck-joint 7 + :run-travel-speed (meters 7) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.075) + :walk-travel-speed (meters 2) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.075) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :notice-nav-radius (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 3) + :frustration-time (seconds 1.5) + :die-anim-hold-frame 20.0 + :jump-anim-start-frame 19.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this swamp-rat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this swamp-rat)) - (initialize-skeleton this *swamp-rat-sg* '()) + (initialize-skeleton this *swamp-rat-sg* ()) (init-defaults! this *swamp-rat-nav-enemy-info*) (vector-float*! (-> this collide-info scale) *identity-vector* 1.5) (set! (-> this neck up) (the-as uint 1)) @@ -450,15 +361,11 @@ swamp-rat-default-event-handler (set! (-> this min-height) (+ -2048.0 (-> this water height))) (set! (-> this up-vector quad) (-> *y-vector* quad)) 0 - (none) - ) + (none)) (defbehavior swamp-rat-init-by-other swamp-rat ((arg0 billy) (arg1 vector) (arg2 vector) (arg3 pickup-type) (arg4 symbol)) (initialize-collision self) - (if arg4 - (logclear! (-> self mask) (process-mask actor-pause)) - (logior! (-> self mask) (process-mask actor-pause)) - ) + (if arg4 (logclear! (-> self mask) (process-mask actor-pause)) (logior! (-> self mask) (process-mask actor-pause))) (set! (-> self collide-info trans quad) (-> arg1 quad)) (forward-up->quaternion (-> self collide-info quat) arg2 *up-vector*) (vector-float*! (-> self collide-info scale) *identity-vector* 1.5) @@ -467,5 +374,4 @@ swamp-rat-default-event-handler (nav-enemy-method-48 self) (set! (-> self enemy-info pickup-type) arg3) (go swamp-rat-spawn) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/title/title-obs.gc b/goal_src/jak1/levels/title/title-obs.gc index c0f98a3934..2f60c827ed 100644 --- a/goal_src/jak1/levels/title/title-obs.gc +++ b/goal_src/jak1/levels/title/title-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TIT.DGO") - (require "pc/progress-pc.gc") (require "engine/target/logic-target.gc") (require "levels/demo/static-screen.gc") @@ -13,554 +12,406 @@ ;; DECOMP BEGINS (deftype logo (process-drawable) - ((camera handle) - (camera-anim handle) - (volumes handle) - (black handle) - (target handle) - (sidekick handle) - (main-joint joint-mod) - (anim spool-anim) - (next-anim spool-anim) - (done? symbol) - ) + ((camera handle) + (camera-anim handle) + (volumes handle) + (black handle) + (target handle) + (sidekick handle) + (main-joint joint-mod) + (anim spool-anim) + (next-anim spool-anim) + (done? symbol)) (:state-methods - idle - startup - hidden - ndi - ) - ) - + idle + startup + hidden + ndi)) (defmethod relocate ((this logo) (arg0 int)) - (if (nonzero? (-> this main-joint)) - (&+! (-> this main-joint) arg0) - ) - (the-as logo ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this main-joint)) (&+! (-> this main-joint) arg0)) + (the-as logo ((method-of-type process-drawable relocate) this arg0))) (deftype logo-slave (process-drawable) - ((parent-process (pointer logo) :overlay-at parent) - (main-joint joint-mod) - ) + ((parent-process (pointer logo) :overlay-at parent) + (main-joint joint-mod)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this logo-slave) (arg0 int)) - (if (nonzero? (-> this main-joint)) - (&+! (-> this main-joint) arg0) - ) - (the-as logo-slave ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this main-joint)) (&+! (-> this main-joint) arg0)) + (the-as logo-slave ((method-of-type process-drawable relocate) this arg0))) -(defskelgroup *logo-sg* logo logo-english-lod0-jg logo-idle-ja - ((logo-english-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *logo-sg* + logo + logo-english-lod0-jg + logo-idle-ja + ((logo-english-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) -(defskelgroup *logo-japan-sg* logo logo-japan-lod0-jg logo-idle-ja - ((logo-japan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *logo-japan-sg* + logo + logo-japan-lod0-jg + logo-idle-ja + ((logo-japan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) -(defskelgroup *logo-volumes-sg* logo-volumes logo-volumes-english-lod0-jg logo-volumes-idle-ja - ((logo-volumes-english-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-volumes-sg* + logo-volumes + logo-volumes-english-lod0-jg + logo-volumes-idle-ja + ((logo-volumes-english-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-volumes-japan-sg* logo-volumes logo-volumes-japan-lod0-jg logo-volumes-idle-ja - ((logo-volumes-japan-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-volumes-japan-sg* + logo-volumes + logo-volumes-japan-lod0-jg + logo-volumes-idle-ja + ((logo-volumes-japan-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-black-sg* logo-black logo-black-lod0-jg logo-black-idle-ja - ((logo-black-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-black-sg* + logo-black + logo-black-lod0-jg + logo-black-idle-ja + ((logo-black-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *logo-cam-sg* logo-cam logo-cam-lod0-jg logo-cam-idle-ja - ((logo-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *logo-cam-sg* + logo-cam + logo-cam-lod0-jg + logo-cam-idle-ja + ((logo-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *ndi-sg* ndi ndi-lod0-jg ndi-idle-ja - ((ndi-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 30) - ) +(defskelgroup *ndi-sg* + ndi + ndi-lod0-jg + ndi-idle-ja + ((ndi-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 30)) -(defskelgroup *ndi-volumes-sg* ndi-volumes ndi-volumes-lod0-jg ndi-volumes-idle-ja - ((ndi-volumes-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *ndi-volumes-sg* + ndi-volumes + ndi-volumes-lod0-jg + ndi-volumes-idle-ja + ((ndi-volumes-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) -(defskelgroup *ndi-cam-sg* ndi-cam ndi-cam-lod0-jg ndi-cam-idle-ja - ((ndi-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5.5) - ) +(defskelgroup *ndi-cam-sg* + ndi-cam + ndi-cam-lod0-jg + ndi-cam-idle-ja + ((ndi-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5.5)) (defstate idle (logo-slave) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (local-vars (v0-0 uint)) - (case message - (('blend-shape) - (cond - ((-> block param 0) - (set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye)))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - (else - (set! v0-0 (the-as uint (logclear (-> self skel status) (janim-status blerc eye)))) - (set! (-> self skel status) (the-as janim-status v0-0)) - ) - ) - v0-0 - ) - (('origin-joint-index) - (set! v0-0 (-> block param 0)) - (set! (-> self draw origin-joint-index) v0-0) - v0-0 - ) - ) - ) - :code (behavior () - (ja-post) - (loop - (clone-anim-once - (ppointer->handle (-> self parent-process)) - (the-as int (-> self draw origin-joint-index)) - #t - "" - ) - (if (nonzero? (-> self main-joint)) - (set-trs! - (-> self main-joint) - (-> self parent-process 0 main-joint trans) - (the-as quaternion #f) - (-> self parent-process 0 main-joint scale) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (local-vars (v0-0 uint)) + (case message + (('blend-shape) + (cond + ((-> block param 0) + (set! v0-0 (the-as uint (logior (-> self skel status) (janim-status blerc eye)))) + (set! (-> self skel status) (the-as janim-status v0-0))) + (else + (set! v0-0 (the-as uint (logclear (-> self skel status) (janim-status blerc eye)))) + (set! (-> self skel status) (the-as janim-status v0-0)))) + v0-0) + (('origin-joint-index) (set! v0-0 (-> block param 0)) (set! (-> self draw origin-joint-index) v0-0) v0-0))) + :code + (behavior () + (ja-post) + (loop (clone-anim-once (ppointer->handle (-> self parent-process)) (the-as int (-> self draw origin-joint-index)) #t "") + (if (nonzero? (-> self main-joint)) + (set-trs! (-> self main-joint) + (-> self parent-process 0 main-joint trans) + (the-as quaternion #f) + (-> self parent-process 0 main-joint scale))) + (suspend)))) (defbehavior logo-slave-init-by-other logo-slave ((arg0 entity-actor) (arg1 skeleton-group)) (set! (-> self entity) arg0) (set! (-> self root) (new 'process 'trsqv)) - (initialize-skeleton self arg1 '()) + (initialize-skeleton self arg1 ()) (logior! (-> self skel status) (janim-status inited)) (set! (-> self draw origin-joint-index) (the-as uint 3)) (set! (-> self draw shadow-mask) (the-as uint 255)) (set! (-> self draw global-effect) (draw-effect title)) (when (or (string= (-> self draw art-group name) "logo-volumes") (string= (-> self draw art-group name) "logo-volumes-japan") - (string= (-> self draw art-group name) "logo-black") - ) + (string= (-> self draw art-group name) "logo-black")) (set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3)) - (set! (-> self main-joint max-dist) (the-as meters #t)) - ) + (set! (-> self main-joint max-dist) (the-as meters #t))) (set! (-> self event-hook) (-> (method-of-object self idle) event)) (go-virtual idle) - (none) - ) + (none)) (defstate startup (logo) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (remove-setting! 'process-mask) - ) - ) - ) - :exit (behavior () - (let ((a0-0 (-> self anim))) - (when (nonzero? a0-0) - (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) - (ja-channel-set! 0) - (ja-post) - (let ((a0-3 (handle->process (-> self camera)))) - (if a0-3 - (deactivate a0-3) - ) - ) - ) - ) - ) - :trans (behavior () - (if (not (none-reserved? *art-control*)) - (go-virtual hidden) - ) - (if (nonzero? (-> self next-anim)) - (spool-push *art-control* (-> self next-anim name) 0 self -1.0) - ) - ) - :code (behavior () - (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - (set! (-> *setting-control* current bg-a) 1.0) - (set-setting! 'bg-a 'abs 0.0 0) - (set! (-> self camera-anim) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-cam-sg* :to self)) - ) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 4 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - (send-event (handle->process (-> self camera)) 'mask 0) - ;; og:preserve-this check language instead of territory here - (#if PC_PORT - (if (= (-> *setting-control* default language) (language-enum japanese)) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) (remove-setting! 'process-mask)))) + :exit + (behavior () + (let ((a0-0 (-> self anim))) + (when (nonzero? a0-0) + (ja-abort-spooled-anim a0-0 (the-as art-joint-anim #f) -1) + (ja-channel-set! 0) + (ja-post) + (let ((a0-3 (handle->process (-> self camera)))) (if a0-3 (deactivate a0-3)))))) + :trans + (behavior () + (if (not (none-reserved? *art-control*)) (go-virtual hidden)) + (if (nonzero? (-> self next-anim)) (spool-push *art-control* (-> self next-anim name) 0 self -1.0))) + :code + (behavior () + (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (set! (-> *setting-control* current bg-a) 1.0) + (set-setting! 'bg-a 'abs 0.0 0) + (set! (-> self camera-anim) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-cam-sg* :to self))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 4 #t 'logo :to (handle->process (-> self camera-anim))))) + (send-event (handle->process (-> self camera)) 'mask 0) + ;; og:preserve-this check language instead of territory here + (#if PC_PORT + (if (= (-> *setting-control* default language) (language-enum japanese)) (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self))) - (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self))) - ) - (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self)) - ) - ) - (else - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)) - ) - ) - ) - ) - (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) - (set! (-> self black) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-black-sg* :to self))) - (send-event (handle->process (-> self black)) 'origin-joint-index 3) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) - (new 'static 'spool-anim - :name "logo-intro-2" - :index 7 - :parts 15 - :command-list '((260 want-force-inside village1 #t) - (261 kill "sage-23") - (261 kill "assistant-11") - (261 kill "explorer-4") - ((new 'static 'bfloat :data 261.5) kill "farmer-3") - ((new 'static 'bfloat :data 261.5) kill "oracle-1") - ((new 'static 'bfloat :data 261.5) kill "warp-gate-switch-3") - (262 kill "sharkey-12") - (262 kill "fishermans-boat-2") - (262 kill "evilplant-2") - ((new 'static 'bfloat :data 262.5) kill "revcycle-8") - ((new 'static 'bfloat :data 262.5) kill "revcycleprop-2") - ((new 'static 'bfloat :data 262.5) kill "water-vol-8") - (263 kill "water-vol-9") - (263 kill "water-vol-10") - (263 kill "reflector-middle-2") - (400 want-force-inside village1 #f) - (400 display-level village1 display) - (400 save) - (500 set! *spawn-actors* #t) - ) - ) - ) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! *spawn-actors* #f) - (add-setting! 'process-mask 'set 0.0 (process-mask progress)) - (apply-settings *setting-control*) - (deactivate (handle->process (-> self black))) - (deactivate (handle->process (-> self volumes))) - (send-event (ppointer->process (-> self parent)) 'wait) - (send-event self 'update) - (ja-channel-set! 1) - ;; og:preserve-this PAL patch here - (ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (logior! (-> self skel status) (janim-status spool)) - (suspend) - (if (not (paused?)) - (ja :num! (seek!)) - ) - ) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) - (new 'static 'spool-anim - :name "logo-loop" - :index 9 - :parts 17 - :command-list '((61 kill "sage-23") - (61 kill "assistant-11") - (61 kill "explorer-4") - ((new 'static 'bfloat :data 61.5) kill "farmer-3") - ((new 'static 'bfloat :data 61.5) kill "oracle-1") - ((new 'static 'bfloat :data 61.5) kill "warp-gate-switch-3") - (62 kill "sharkey-12") - (62 kill "fishermans-boat-2") - (62 kill "evilplant-2") - ((new 'static 'bfloat :data 62.5) kill "revcycle-8") - ((new 'static 'bfloat :data 62.5) kill "revcycleprop-2") - ((new 'static 'bfloat :data 62.5) kill "water-vol-8") - (63 kill "water-vol-9") - (63 kill "water-vol-10") - (63 kill "reflector-middle-2") - ) - ) - ) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (remove-exit) - (go-virtual idle) - ) - :post (behavior () - (if *progress-process* - (logior! (-> self draw status) (draw-status skip-bones)) - (logclear! (-> self draw status) (draw-status skip-bones)) - ) - (let ((a3-0 (new-stack-vector0)) - (a1-0 (new-stack-vector0)) - ) - (let ((f0-0 (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - 0.87 - 1.0 - ) - ) - ) - (set-vector! a3-0 f0-0 f0-0 1.0 1.0) - ) - (set-vector! - a1-0 - (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - 2048.0 - 0.0 - ) - (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) - -1228.8 - 0.0 - ) - 0.0 - 1.0 - ) - (set-trs! (-> self main-joint) a1-0 (the-as quaternion #f) a3-0) - ) - (ja-post) - ) - ) - -(defstate idle (logo) - :virtual #t - :exit (-> (method-of-type logo startup) exit) - :trans (-> (method-of-type logo startup) trans) - :code (behavior () - (loop + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)))) + (case (scf-get-territory) + ((GAME_TERRITORY_SCEI) + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-japan-sg* :to self)))) + (else + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-volumes-sg* :to self)))))) + (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) + (set! (-> self black) (ppointer->handle (process-spawn logo-slave (-> self entity) *logo-black-sg* :to self))) + (send-event (handle->process (-> self black)) 'origin-joint-index 3) (set! (-> self anim) (-> self next-anim)) - (if (not (handle->process (-> self camera))) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 4 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - ) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-intro-2" + :index 7 + :parts 15 + :command-list + '((260 want-force-inside village1 #t) + (261 kill "sage-23") + (261 kill "assistant-11") + (261 kill "explorer-4") + ((new 'static 'bfloat :data 261.5) kill "farmer-3") + ((new 'static 'bfloat :data 261.5) kill "oracle-1") + ((new 'static 'bfloat :data 261.5) kill "warp-gate-switch-3") + (262 kill "sharkey-12") + (262 kill "fishermans-boat-2") + (262 kill "evilplant-2") + ((new 'static 'bfloat :data 262.5) kill "revcycle-8") + ((new 'static 'bfloat :data 262.5) kill "revcycleprop-2") + ((new 'static 'bfloat :data 262.5) kill "water-vol-8") + (263 kill "water-vol-9") + (263 kill "water-vol-10") + (263 kill "reflector-middle-2") + (400 want-force-inside village1 #f) + (400 display-level village1 display) + (400 save) + (500 set! *spawn-actors* #t)))) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) (set! *spawn-actors* #f) + (add-setting! 'process-mask 'set 0.0 (process-mask progress)) + (apply-settings *setting-control*) + (deactivate (handle->process (-> self black))) + (deactivate (handle->process (-> self volumes))) + (send-event (ppointer->process (-> self parent)) 'wait) + (send-event self 'update) (ja-channel-set! 1) ;; og:preserve-this PAL patch here - (ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0) + (ja-no-eval :group! (-> self draw art-group data 6) :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (logior! (-> self skel status) (janim-status spool)) (suspend) - (if (not (paused?)) - (ja :num! (seek!)) - ) - ) - (set! *spawn-actors* #t) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - ) - ) - :post (-> (method-of-type logo startup) post) - ) + (if (not (paused?)) (ja :num! (seek!)))) + (set! (-> self anim) (-> self next-anim)) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-loop" + :index 9 + :parts 17 + :command-list + '((61 kill "sage-23") + (61 kill "assistant-11") + (61 kill "explorer-4") + ((new 'static 'bfloat :data 61.5) kill "farmer-3") + ((new 'static 'bfloat :data 61.5) kill "oracle-1") + ((new 'static 'bfloat :data 61.5) kill "warp-gate-switch-3") + (62 kill "sharkey-12") + (62 kill "fishermans-boat-2") + (62 kill "evilplant-2") + ((new 'static 'bfloat :data 62.5) kill "revcycle-8") + ((new 'static 'bfloat :data 62.5) kill "revcycleprop-2") + ((new 'static 'bfloat :data 62.5) kill "water-vol-8") + (63 kill "water-vol-9") + (63 kill "water-vol-10") + (63 kill "reflector-middle-2")))) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (remove-exit) + (go-virtual idle)) + :post + (behavior () + (if *progress-process* + (logior! (-> self draw status) (draw-status skip-bones)) + (logclear! (-> self draw status) (draw-status skip-bones))) + (let ((a3-0 (new-stack-vector0)) + (a1-0 (new-stack-vector0))) + (let ((f0-0 (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) 0.87 1.0))) + (set-vector! a3-0 f0-0 f0-0 1.0 1.0)) + (set-vector! a1-0 + (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) 2048.0 0.0) + (if (= (-> *setting-control* current aspect-ratio) 'aspect16x9) -1228.8 0.0) + 0.0 + 1.0) + (set-trs! (-> self main-joint) a1-0 (the-as quaternion #f) a3-0)) + (ja-post))) + +(defstate idle (logo) + :virtual #t + :exit + (-> (method-of-type logo startup) + exit) + :trans + (-> (method-of-type logo startup) + trans) + :code + (behavior () + (loop (set! (-> self anim) (-> self next-anim)) + (if (not (handle->process (-> self camera))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 4 #t 'logo :to (handle->process (-> self camera-anim)))))) + (set! *spawn-actors* #f) + (ja-channel-set! 1) + ;; og:preserve-this PAL patch here + (ja-no-eval :group! (-> self draw art-group data 8) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (logior! (-> self skel status) (janim-status spool)) + (suspend) + (if (not (paused?)) (ja :num! (seek!)))) + (set! *spawn-actors* #t) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)))) + :post + (-> (method-of-type logo startup) + post)) (defstate hidden (logo) :virtual #t - :trans (behavior () - (if (nonzero? (-> self next-anim)) - (spool-push *art-control* (-> self next-anim name) 0 self -1.0) - ) - ) - :code (behavior () - (ja-channel-set! 0) - (ja-post) - (let ((gp-0 *master-mode*)) - (set! *master-mode* 'game) - (clear-rec *art-control*) - (set! *master-mode* gp-0) - ) - (loop - (when (and (none-reserved? *art-control*) (not (paused?))) - (let ((gp-1 (current-time))) - (until (time-elapsed? gp-1 (seconds 0.1)) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - (go-virtual idle) - ) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - ) + :trans + (behavior () + (if (nonzero? (-> self next-anim)) (spool-push *art-control* (-> self next-anim name) 0 self -1.0))) + :code + (behavior () + (ja-channel-set! 0) + (ja-post) + (let ((gp-0 *master-mode*)) (set! *master-mode* 'game) (clear-rec *art-control*) (set! *master-mode* gp-0)) + (loop (when (and (none-reserved? *art-control*) (not (paused?))) + (let ((gp-1 (current-time))) (until (time-elapsed? gp-1 (seconds 0.1)) (set! *camera-look-through-other* 2) (suspend))) + (go-virtual idle)) + (set! *camera-look-through-other* 2) + (suspend)))) (defstate ndi (logo) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('blackout) - (set-setting! 'bg-a 'abs 1.0 0) - ) - ) - ) - :enter (behavior () - (set-setting! 'bg-a 'abs 0.0 0) - (apply-settings *setting-control*) - (set-time! (-> self state-time)) - (if *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - (set! (-> self done?) #f) - ) - :exit (behavior () - ((-> (method-of-type logo startup) exit)) - (set-blackout-frames (seconds 0.035)) - ) - :trans (behavior () - ((-> (method-of-type logo startup) trans)) - ;; og:preserve-this - (if (and (or *debug-segment* PC_PORT) - (cpad-pressed? 0 start circle x) - (member (level-status *level* 'village1) '(loaded active)) - ) - (set-setting! 'bg-a 'abs 1.0 0) - ) - (when (and (= (-> *setting-control* current bg-a) 1.0) - (and (member (level-status *level* 'village1) '(active loaded)) - ;; og:preserve-this i think we can forgo the time check here... - (#if PC_PORT #t (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3))) - (let ((gp-2 (level-get *level* 'village1))) - (when gp-2 - (load-state-want-levels 'title 'village1) - (load-state-want-display-level 'village1 'display-self) - (load-state-want-vis 'vi1) - (set-force-inside! *load-state* 'village1 #t) - (!= (-> gp-2 all-visible?) 'loading) - ) - ) - ) - ) - (load-state-want-display-level 'village1 'special) - (if (not (-> self done?)) - (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('blackout) (set-setting! 'bg-a 'abs 1.0 0)))) + :enter + (behavior () + (set-setting! 'bg-a 'abs 0.0 0) + (apply-settings *setting-control*) + (set-time! (-> self state-time)) + (if *time-of-day-proc* (set! (-> *time-of-day-proc* 0 hour) 12)) + (set! (-> self done?) #f)) + :exit + (behavior () + ((-> (method-of-type logo startup) exit)) + (set-blackout-frames (seconds 0.035))) + :trans + (behavior () + ((-> (method-of-type logo startup) trans)) + ;; og:preserve-this + (if (and (or *debug-segment* PC_PORT) + (cpad-pressed? 0 start circle x) + (member (level-status *level* 'village1) '(loaded active))) + (set-setting! 'bg-a 'abs 1.0 0)) + (when (and (= (-> *setting-control* current bg-a) 1.0) + (and (member (level-status *level* 'village1) '(active loaded)) + ;; og:preserve-this i think we can forgo the time check here... + (#if PC_PORT #t (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 3))) + (let ((gp-2 (level-get *level* 'village1))) + (when gp-2 + (load-state-want-levels 'title 'village1) + (load-state-want-display-level 'village1 'display-self) + (load-state-want-vis 'vi1) + (set-force-inside! *load-state* 'village1 #t) + (!= (-> gp-2 all-visible?) 'loading))))) + (load-state-want-display-level 'village1 'special) + (if (not (-> self done?)) (ja-abort-spooled-anim (-> self anim) (the-as art-joint-anim #f) -1)) + (set! (-> self done?) #t) + (deactivate self)) + (if *time-of-day-proc* (set! (-> *time-of-day-proc* 0 hour) 12))) + :code + (behavior () + (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (set! (-> *setting-control* current bg-a) 1.0) + (set! (-> self camera-anim) (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-cam-sg* :to self))) + (set! (-> self camera) + (ppointer->handle (process-spawn othercam (handle->process (-> self camera-anim)) 3 #t 'logo :to (handle->process (-> self camera-anim))))) + (send-event (handle->process (-> self camera)) 'mask 0) + (set! (-> self volumes) (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-volumes-sg* :to self))) + (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) + (set! (-> self target) (ppointer->handle (process-spawn logo-slave #f *jchar-sg* :to self))) + (send-event (handle->process (-> self target)) 'blend-shape #t) + (send-event (handle->process (-> self target)) 'origin-joint-index 33) + (set! (-> self sidekick) (ppointer->handle (process-spawn logo-slave #f *sidekick-sg* :to self))) + (send-event (handle->process (-> self sidekick)) 'blend-shape #t) + (send-event (handle->process (-> self sidekick)) 'origin-joint-index 6) + (set! (-> self anim) (-> self next-anim)) + (set! (-> self next-anim) (new 'static 'spool-anim :name "logo-intro" :index 5 :parts 3 :command-list ())) + ;; og:preserve-this + (#cond + (PC_PORT + (cond + (*quit-to-title* (set! *quit-to-title* #f)) + (else + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func))))) + (#t + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim #f) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)))) (set! (-> self done?) #t) - (deactivate self) - ) - (if *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 hour) 12) - ) - ) - :code (behavior () - (while (!= (file-status *art-control* (-> self next-anim name) 0) 'active) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - (set! (-> *setting-control* current bg-a) 1.0) - (set! (-> self camera-anim) - (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-cam-sg* :to self)) - ) - (set! (-> self camera) - (ppointer->handle - (process-spawn - othercam - (handle->process (-> self camera-anim)) - 3 - #t - 'logo - :to (handle->process (-> self camera-anim)) - ) - ) - ) - (send-event (handle->process (-> self camera)) 'mask 0) - (set! (-> self volumes) - (ppointer->handle (process-spawn logo-slave (-> self entity) *ndi-volumes-sg* :to self)) - ) - (send-event (handle->process (-> self volumes)) 'origin-joint-index 3) - (set! (-> self target) (ppointer->handle (process-spawn logo-slave #f *jchar-sg* :to self))) - (send-event (handle->process (-> self target)) 'blend-shape #t) - (send-event (handle->process (-> self target)) 'origin-joint-index 33) - (set! (-> self sidekick) (ppointer->handle (process-spawn logo-slave #f *sidekick-sg* :to self))) - (send-event (handle->process (-> self sidekick)) 'blend-shape #t) - (send-event (handle->process (-> self sidekick)) 'origin-joint-index 6) - (set! (-> self anim) (-> self next-anim)) - (set! (-> self next-anim) (new 'static 'spool-anim :name "logo-intro" :index 5 :parts 3 :command-list '())) - ;; og:preserve-this - (#cond - (PC_PORT - (cond - (*quit-to-title* - (set! *quit-to-title* #f)) - (else - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - )) - )) - (#t - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim #f) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - )) - (set! (-> self done?) #t) - (set-setting! 'bg-a 'abs 1.0 0) - (anim-loop) - ) - :post (behavior () - (ja-post) - ) - ) + (set-setting! 'bg-a 'abs 1.0 0) + (anim-loop)) + :post + (behavior () + (ja-post))) (defbehavior logo-init-by-other logo ((arg0 entity-actor) (arg1 vector) (arg2 symbol)) (stack-size-set! (-> self main-thread) 512) @@ -575,66 +426,59 @@ ;; og:preserve-this check language instead of territory here (#if PC_PORT (if (= (-> *setting-control* default language) (language-enum japanese)) - (initialize-skeleton self *logo-japan-sg* '()) - (initialize-skeleton self *logo-sg* '()) - ) + (initialize-skeleton self *logo-japan-sg* ()) + (initialize-skeleton self *logo-sg* ())) (case (scf-get-territory) - ((GAME_TERRITORY_SCEI) - (initialize-skeleton self *logo-japan-sg* '()) - ) - (else - (initialize-skeleton self *logo-sg* '()) - ) - ) - ) + ((GAME_TERRITORY_SCEI) (initialize-skeleton self *logo-japan-sg* ())) + (else (initialize-skeleton self *logo-sg* ())))) (set! (-> self main-joint) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) self 3)) (set! (-> self main-joint max-dist) (the-as meters #t)) - (set! (-> self next-anim) (new 'static 'spool-anim - :name "logo-intro" - :index 5 - :parts 3 - :command-list '((0 want-levels title village1) - (5 display-level village1 special) - (5 want-vis vi1) - (5 want-force-inside village1 #t) - (115 display-level village1 display-self) - (115 save) - (115 kill "sage-23") - (115 kill "assistant-11") - (115 kill "explorer-4") - (115 kill "farmer-3") - (115 kill "oracle-1") - (115 kill "warp-gate-switch-3") - (115 kill "sharkey-12") - (115 kill "fishermans-boat-2") - (115 kill "evilplant-2") - (115 kill "revcycle-8") - (115 kill "revcycleprop-2") - (115 kill "water-vol-8") - (115 kill "water-vol-9") - (115 kill "water-vol-10") - (115 kill "reflector-middle-2") - ) - ) - ) - (set! (-> self draw origin-joint-index) (the-as uint 3)) - ) + (set! (-> self next-anim) + (new 'static + 'spool-anim + :name "logo-intro" + :index 5 + :parts 3 + :command-list + '((0 want-levels title village1) + (5 display-level village1 special) + (5 want-vis vi1) + (5 want-force-inside village1 #t) + (115 display-level village1 display-self) + (115 save) + (115 kill "sage-23") + (115 kill "assistant-11") + (115 kill "explorer-4") + (115 kill "farmer-3") + (115 kill "oracle-1") + (115 kill "warp-gate-switch-3") + (115 kill "sharkey-12") + (115 kill "fishermans-boat-2") + (115 kill "evilplant-2") + (115 kill "revcycle-8") + (115 kill "revcycleprop-2") + (115 kill "water-vol-8") + (115 kill "water-vol-9") + (115 kill "water-vol-10") + (115 kill "reflector-middle-2")))) + (set! (-> self draw origin-joint-index) (the-as uint 3))) (('ndi) (set! (-> *time-of-day-context* title-light-group dir1 levels x) 1.0) (set! (-> *time-of-day-context* title-light-group ambi levels x) 1.0) - (initialize-skeleton self *ndi-sg* '()) + (initialize-skeleton self *ndi-sg* ()) (set! (-> self draw origin-joint-index) (the-as uint 3)) (set! (-> self next-anim) - (new 'static 'spool-anim :name "ndi-intro" :index 3 :parts 4 :command-list '((0 want-levels title village1) - (5 want-vis vi1) - (5 want-force-inside village1 #t) - (6 save) - (453 send-event self blackout) - ) - ) - ) - ) - ) + (new 'static + 'spool-anim + :name "ndi-intro" + :index 3 + :parts 4 + :command-list + '((0 want-levels title village1) + (5 want-vis vi1) + (5 want-force-inside village1 #t) + (6 save) + (453 send-event self blackout)))))) (logior! (-> self skel status) (janim-status inited)) (set! (-> self draw global-effect) (draw-effect title)) (set! (-> self draw shadow-mask) (the-as uint 255)) @@ -642,224 +486,151 @@ (set! (-> self volumes) (the-as handle #f)) (set! (-> self black) (the-as handle #f)) (cond - ((= arg2 'logo) - (go-virtual startup) - ) - ((= arg2 'ndi) - (go-virtual ndi) - ) - ) - (none) - ) + ((= arg2 'logo) (go-virtual startup)) + ((= arg2 'ndi) (go-virtual ndi))) + (none)) (defstate target-title (target) :event target-generic-event-handler - :enter (behavior () - (set-setting! 'music-volume 'abs 0.0 0) - (set-setting! 'sfx-volume 'abs 0.0 0) - (set-setting! 'ambient-volume 'abs 0.0 0) - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - (set-setting! 'border-mode #f 0.0 0) - (apply-settings *setting-control*) - (set-time! (-> self state-time)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - (ja-channel-set! 0) - (ja-post) - (send-event *camera* 'change-state cam-fixed 0) - ) - :exit (behavior () - (when (not (or (= (-> self next-state name) 'target-title-play) (= (-> self next-state name) 'target-title-wait))) - (if (-> self manipy) - (deactivate (-> self manipy 0)) - ) - ) - ) - :trans (behavior () - (hide-hud-quick) - (spool-push *art-control* "ndi-intro" 0 self -1.0) - ;; og:preserve-this PAL patch here - (if *sound-player-enable* - (sound-group-pause (sound-group music)) - ) - ) - :code (behavior () - (let ((gp-0 (the-as handle #f))) + :enter + (behavior () + (set-setting! 'music-volume 'abs 0.0 0) + (set-setting! 'sfx-volume 'abs 0.0 0) + (set-setting! 'ambient-volume 'abs 0.0 0) + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0) + (set-setting! 'border-mode #f 0.0 0) + (apply-settings *setting-control*) + (set-time! (-> self state-time)) + (set! (-> self manipy) (the-as (pointer manipy) #f)) + (ja-channel-set! 0) + (ja-post) + (send-event *camera* 'change-state cam-fixed 0)) + :exit + (behavior () + (when (not (or (= (-> self next-state name) 'target-title-play) (= (-> self next-state name) 'target-title-wait))) + (if (-> self manipy) (deactivate (-> self manipy 0))))) + :trans + (behavior () + (hide-hud-quick) + (spool-push *art-control* "ndi-intro" 0 self -1.0) ;; og:preserve-this PAL patch here - (cond - ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) *first-boot*) - (set! *first-boot* #f) - (set! gp-0 (ppointer->handle (static-screen-spawn - 5 - (new 'static 'texture-id :page #x649) - (new 'static 'texture-id :index #x1 :page #x649) - (new 'static 'texture-id :index #x2 :page #x649) - (seconds 3) - #f - self - ) - ) - ) - ) - (else - (while (!= (file-status *art-control* "ndi-intro" 0) 'active) - (set-blackout-frames (seconds 0.05)) + (if *sound-player-enable* (sound-group-pause (sound-group music)))) + :code + (behavior () + (let ((gp-0 (the-as handle #f))) + ;; og:preserve-this PAL patch here + (cond + ((and (= (scf-get-territory) GAME_TERRITORY_SCEI) *first-boot*) + (set! *first-boot* #f) + (set! gp-0 + (ppointer->handle (static-screen-spawn 5 + (new 'static 'texture-id :page #x649) + (new 'static 'texture-id :index #x1 :page #x649) + (new 'static 'texture-id :index #x2 :page #x649) + (seconds 3) + #f + self)))) + (else + (while (!= (file-status *art-control* "ndi-intro" 0) 'active) + (set-blackout-frames (seconds 0.05)) + (suspend)) + (let ((s5-1 (current-time))) (until (time-elapsed? s5-1 (seconds 0.25)) (set-blackout-frames (seconds 0.05)) (suspend))))) + (label cfg-8) + (let ((s5-2 (new 'stack-no-clear 'mc-slot-info))) + (mc-get-slot-info 0 s5-2) + (when (or (zero? (-> s5-2 known)) (handle->process (the-as int gp-0))) + (if (not (handle->process (the-as int gp-0))) (set-blackout-frames (seconds 0.05))) (suspend) - ) - (let ((s5-1 (current-time))) - (until (time-elapsed? s5-1 (seconds 0.25)) - (set-blackout-frames (seconds 0.05)) - (suspend) - ) - ) - ) - ) - (label cfg-8) - (let ((s5-2 (new 'stack-no-clear 'mc-slot-info))) - (mc-get-slot-info 0 s5-2) - (when (or (zero? (-> s5-2 known)) (handle->process (the-as int gp-0))) - (if (not (handle->process (the-as int gp-0))) - (set-blackout-frames (seconds 0.05)) - ) - (suspend) - (goto cfg-8) - ) - (set! (-> *setting-control* default bg-a) 0.0) - (when (or (zero? (-> s5-2 handle)) - (and (nonzero? (-> s5-2 formatted)) (zero? (-> s5-2 inited)) (< (-> s5-2 mem-actual) (-> s5-2 mem-required))) - ) - (mem-copy! (the-as pointer *auto-save-info*) (the-as pointer s5-2) 300) - (set-blackout-frames 0) - (let ((gp-1 7)) - (if (zero? (-> s5-2 handle)) - (set! gp-1 8) - ) - (set-setting! 'allow-progress #t 0.0 0) + (goto cfg-8)) + (set! (-> *setting-control* default bg-a) 0.0) + (when (or (zero? (-> s5-2 handle)) + (and (nonzero? (-> s5-2 formatted)) (zero? (-> s5-2 inited)) (< (-> s5-2 mem-actual) (-> s5-2 mem-required)))) + (mem-copy! (the-as pointer *auto-save-info*) (the-as pointer s5-2) 300) (set-blackout-frames 0) - (set! (-> *setting-control* default bg-a-force) 0.0) + (let ((gp-1 7)) + (if (zero? (-> s5-2 handle)) (set! gp-1 8)) + (set-setting! 'allow-progress #t 0.0 0) + (set-blackout-frames 0) + (set! (-> *setting-control* default bg-a-force) 0.0) + (apply-settings *setting-control*) + (set! (-> *setting-control* current bg-a) 0.0) + (set! (-> *setting-control* current bg-a-force) 0.0) + (activate-progress *dproc* (the-as progress-screen gp-1))) + (set-setting! 'allow-progress #f 0.0 0) (apply-settings *setting-control*) - (set! (-> *setting-control* current bg-a) 0.0) - (set! (-> *setting-control* current bg-a-force) 0.0) - (activate-progress *dproc* (the-as progress-screen gp-1)) - ) - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (while *progress-process* - (suspend) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.01)) - (suspend) - ) - ) - (goto cfg-41) - ) - ) - ) - (label cfg-41) - (let ((gp-3 (entity-by-name "logo-1"))) - (let ((v1-53 (process-spawn logo gp-3 (-> gp-3 extra trans) 'ndi :to self))) - (set! (-> self manipy) (the-as (pointer manipy) v1-53)) - (let ((s5-4 (ppointer->handle v1-53))) - (while (handle->process (the-as handle s5-4)) - (suspend) - ) - ) - ) - (set! (-> self manipy) - (the-as (pointer manipy) (process-spawn logo gp-3 (-> gp-3 extra trans) 'logo :to self)) - ) - ) - (go target-title-play) - ) - :post target-no-move-post - ) + (while *progress-process* + (suspend)) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.01)) (suspend))) + (goto cfg-41)))) + (label cfg-41) + (let ((gp-3 (entity-by-name "logo-1"))) + (let ((v1-53 (process-spawn logo gp-3 (-> gp-3 extra trans) 'ndi :to self))) + (set! (-> self manipy) (the-as (pointer manipy) v1-53)) + (let ((s5-4 (ppointer->handle v1-53))) (while (handle->process (the-as handle s5-4)) (suspend)))) + (set! (-> self manipy) (the-as (pointer manipy) (process-spawn logo gp-3 (-> gp-3 extra trans) 'logo :to self)))) + (go target-title-play)) + :post target-no-move-post) (defstate target-title-play (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('wait) - (go target-title-wait) - ) - (('reset) - (deactivate (-> self manipy 0)) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (set-setting! 'allow-pause #f 0.0 0) - (set-setting! 'allow-progress #f 0.0 0) - ) - :exit (-> target-title exit) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('wait) (go target-title-wait)) + (('reset) (deactivate (-> self manipy 0))) + (else (target-generic-event-handler proc argc message block)))) + :enter + (behavior () + (set-setting! 'allow-pause #f 0.0 0) + (set-setting! 'allow-progress #f 0.0 0)) + :exit + (-> target-title + exit) :trans hide-hud-quick :code anim-loop - :post target-no-move-post - ) + :post target-no-move-post) (defstate target-title-wait (target) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('play) - (go target-title-play) - ) - (('reset) - (deactivate (-> self manipy 0)) - ) - (else - (target-generic-event-handler proc argc message block) - ) - ) - ) - :enter (behavior () - (remove-setting! 'ambient-volume) - (remove-setting! 'sfx-volume) - (remove-setting! 'music-volume) - ;; og:preserve-this PAL patch here (code removal) - (sound-group-continue (sound-group music)) - (when *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) - (set! *time-of-day-fast* #t) - ) - ) - :exit (behavior () - (when *time-of-day-proc* - (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) - (set! *time-of-day-fast* #f) - ) - ;; og:preserve-this PAL patch here - (remove-setting! 'allow-pause) - (remove-setting! 'allow-progress) - ((-> target-title exit)) - ) - :trans (behavior () - (hide-hud-quick) - ;; og:preserve-this PAL patch here - (when (cpad-pressed? 0 start) - (set-setting! 'allow-progress #t 0.0 0) - (apply-settings *setting-control*) - (activate-progress *dproc* (progress-screen title)) - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - ) - (when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*)) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-12 gp-0)) - (set! (-> v1-12 width) (the float 352)) - ) - (let ((v1-13 gp-0)) - (set! (-> v1-13 height) (the float 40)) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('play) (go target-title-play)) + (('reset) (deactivate (-> self manipy 0))) + (else (target-generic-event-handler proc argc message block)))) + :enter + (behavior () + (remove-setting! 'ambient-volume) + (remove-setting! 'sfx-volume) + (remove-setting! 'music-volume) + ;; og:preserve-this PAL patch here (code removal) + (sound-group-continue (sound-group music)) + (when *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 time-ratio) 18000.0) + (set! *time-of-day-fast* #t))) + :exit + (behavior () + (when *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) + (set! *time-of-day-fast* #f)) + ;; og:preserve-this PAL patch here + (remove-setting! 'allow-pause) + (remove-setting! 'allow-progress) + ((-> target-title exit))) + :trans + (behavior () + (hide-hud-quick) + ;; og:preserve-this PAL patch here + (when (cpad-pressed? 0 start) + (set-setting! 'allow-progress #t 0.0 0) + (apply-settings *setting-control*) + (activate-progress *dproc* (progress-screen title)) + (set-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*)) + (when (and (< (mod (-> *display* real-frame-counter) 300) 270) (not *progress-process*)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 80 170 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-12 gp-0)) (set! (-> v1-12 width) (the float 352))) + (let ((v1-13 gp-0)) (set! (-> v1-13 height) (the float 40))) + (set! (-> gp-0 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id press-start) #f) gp-0 #f 128 22)))) :code anim-loop - :post target-no-move-post - ) + :post target-no-move-post) diff --git a/goal_src/jak1/levels/training/training-obs.gc b/goal_src/jak1/levels/training/training-obs.gc index 37ce1e4c4a..7f7b07d7b8 100644 --- a/goal_src/jak1/levels/training/training-obs.gc +++ b/goal_src/jak1/levels/training/training-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TRA.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/common-obs/baseplat.gc") (require "engine/game/task/task-control.gc") @@ -15,198 +14,133 @@ ;; DECOMP BEGINS -(deftype training-water (water-anim) - () - ) +(deftype training-water (water-anim) ()) - -(define ripple-for-training-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 1.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-training-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 1.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this training-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this draw color-mult) 0.01 0.45 0.5 0.75) (set! (-> v1-2 global-scale) 3072.0) (set! (-> v1-2 close-fade-dist) 163840.0) (set! (-> v1-2 far-fade-dist) 245760.0) - (set! (-> v1-2 waveform) ripple-for-training-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-training-water)) + (none)) -(defskelgroup *training-cam-sg* trainingcam trainingcam-lod0-jg -1 - ((trainingcam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 80) - ) +(defskelgroup *training-cam-sg* + trainingcam + trainingcam-lod0-jg + -1 + ((trainingcam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 80)) (deftype training-cam (process) - ((root trsq) - (range meters) - (index int32) - (state-time time-frame) - ) + ((root trsq) + (range meters) + (index int32) + (state-time time-frame)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this training-cam) (arg0 int)) - (if (nonzero? (-> this root)) - (&+! (-> this root) arg0) - ) - (the-as training-cam ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root)) (&+! (-> this root) arg0)) + (the-as training-cam ((method-of-type process relocate) this arg0))) (defstate idle (training-cam) :virtual #t - :code (behavior () - (loop - (when (and *target* - (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) - (-> *setting-control* current play-hints) - (and (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (or (not a0-3) (not (logtest? (-> a0-3 extra perm status) (entity-perm-status dead)))) - ) - ) - ) - (when (!= (-> self index) 6) - (while (and *target* - (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) - (set-time! (-> self state-time)) - (process-grab? *target*) - (process-entity-status! self (entity-perm-status bit-3) #t) - (until (not (or (-> *setting-control* current talking) (or (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - ) - ) - ) - (set-setting! 'allow-progress #f 0.0 0) - (let* ((a0-15 *setting-control*) - (t9-6 (method-of-object a0-15 set-setting)) - (a2-3 'movie) - (a3-1 (process->ppointer self)) - ) - (t9-6 a0-15 self a2-3 a3-1 0.0 0) - ) - (apply-settings *setting-control*) - (dotimes (gp-1 2) - (while (or (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - *progress-process* - ) - (suspend) - ) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 1))) - (suspend) - ) - (remove-setting! 'movie) - (apply-settings *setting-control*) - (suspend) - (suspend) - ) - (process-release? *target*) - ) - (when (-> *setting-control* current play-hints) - (let ((v1-61 (-> self index))) - (cond - ((zero? v1-61) - (level-hint-spawn (text-id training-money) "asstvb41" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "orbcam" 0 #f '() :to self) - ) - ((= v1-61 1) - (level-hint-spawn (text-id training-fuel-cell) "asstvb42" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "fuelcellcam" 0 #f '() :to self) - ) - ((= v1-61 2) - (level-hint-spawn (text-id training-eco-blue) "sagevb22" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecocam" 0 #f '() :to self) - ) - ((= v1-61 3) - (level-hint-spawn - (text-id training-precursor-door) - "sagevb24" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "precursordoorcam" 0 #f '() :to self) - ) - ((= v1-61 4) - (level-hint-spawn - (text-id training-blue-eco-vent) - "asstvb48" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecoventcam" 0 #f '() :to self) - ) - ((= v1-61 5) - (level-hint-spawn (text-id training-eco-green) "sagevb21" (the-as entity #f) *entity-pool* (game-task none)) - (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "greenecocam" 0 #f '() :to self) - ) - ((= v1-61 6) - (when (not (task-complete? *game-info* (game-task training-climb))) - (clear-text-seen! *game-info* (text-id training-double-jump)) - (level-hint-spawn (text-id training-double-jump) "sagevb27" (the-as entity #f) *entity-pool* (game-task none)) - (let ((gp-8 (current-time))) - (until (time-elapsed? gp-8 (seconds 30)) - (suspend) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle) - ) - ) - ) - ) - (while (-> self child) - (suspend) - ) - ) - (let ((a0-61 (-> self entity))) - (if (when a0-61 - (let ((a0-62 (-> a0-61 extra perm task))) - (if a0-62 - (= a0-62 (game-task none)) - ) - ) - ) - (set! (-> self entity extra perm task) (game-task complete)) - ) - ) - (process-entity-status! self (entity-perm-status dead) #t) - (process-entity-status! self (entity-perm-status bit-3) #f) - (deactivate self) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (loop (when (and *target* + (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) + (-> *setting-control* current play-hints) + (and (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (or (not a0-3) (not (logtest? (-> a0-3 extra perm status) (entity-perm-status dead))))))) + (when (!= (-> self index) 6) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) + (set-time! (-> self state-time)) + (process-grab? *target*) + (process-entity-status! self (entity-perm-status bit-3) #t) + (until (not (or (-> *setting-control* current talking) + (or (-> *setting-control* current spooling) (-> *setting-control* current hint) (-> *setting-control* current ambient)))) + (set-setting! 'allow-progress #f 0.0 0) + (let* ((a0-15 *setting-control*) + (t9-6 (method-of-object a0-15 set-setting)) + (a2-3 'movie) + (a3-1 (process->ppointer self))) + (t9-6 a0-15 self a2-3 a3-1 0.0 0)) + (apply-settings *setting-control*) + (dotimes (gp-1 2) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + *progress-process*) + (suspend))) + (while (not (time-elapsed? (-> self state-time) (seconds 1))) + (suspend)) + (remove-setting! 'movie) + (apply-settings *setting-control*) + (suspend) + (suspend)) + (process-release? *target*)) + (when (-> *setting-control* current play-hints) + (let ((v1-61 (-> self index))) + (cond + ((zero? v1-61) + (level-hint-spawn (text-id training-money) "asstvb41" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "orbcam" 0 #f () :to self)) + ((= v1-61 1) + (level-hint-spawn (text-id training-fuel-cell) "asstvb42" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "fuelcellcam" 0 #f () :to self)) + ((= v1-61 2) + (level-hint-spawn (text-id training-eco-blue) "sagevb22" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecocam" 0 #f () :to self)) + ((= v1-61 3) + (level-hint-spawn (text-id training-precursor-door) "sagevb24" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "precursordoorcam" 0 #f () :to self)) + ((= v1-61 4) + (level-hint-spawn (text-id training-blue-eco-vent) "asstvb48" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "ecoventcam" 0 #f () :to self)) + ((= v1-61 5) + (level-hint-spawn (text-id training-eco-green) "sagevb21" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *training-cam-sg* "greenecocam" 0 #f () :to self)) + ((= v1-61 6) + (when (not (task-complete? *game-info* (game-task training-climb))) + (clear-text-seen! *game-info* (text-id training-double-jump)) + (level-hint-spawn (text-id training-double-jump) "sagevb27" (the-as entity #f) *entity-pool* (game-task none)) + (let ((gp-8 (current-time))) (until (time-elapsed? gp-8 (seconds 30)) (suspend))) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle))))) + (while (-> self child) + (suspend))) + (let ((a0-61 (-> self entity))) + (if (when a0-61 + (let ((a0-62 (-> a0-61 extra perm task))) (if a0-62 (= a0-62 (game-task none))))) + (set! (-> self entity extra perm task) (game-task complete)))) + (process-entity-status! self (entity-perm-status dead) #t) + (process-entity-status! self (entity-perm-status bit-3) #f) + (deactivate self)) + (suspend)))) (defmethod init-from-entity! ((this training-cam) (arg0 entity-actor)) "Copy defaults from the entity." @@ -218,14 +152,10 @@ (set! (-> this range) (res-lump-float arg0 'cam-notice-dist :default 81920.0)) (set! (-> this index) (res-lump-value arg0 'index int)) (go (method-of-object this idle)) - (none) - ) + (none)) (deftype tra-pontoon (rigid-body-platform) - ((anchor-point vector :inline) - ) - ) - + ((anchor-point vector :inline))) (defmethod init-from-entity! ((this tra-pontoon) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -234,54 +164,52 @@ (rigid-body-platform-method-31 this) (go (method-of-object this rigid-body-platform-idle)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this tra-pontoon) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) -(define *tra-pontoon-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 4.0 - :buoyancy-factor 3.0 - :max-buoyancy-depth (meters 3) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.98 - :angular-damping 0.98 - :control-point-count 4 - :mass 2.0 - :inertial-tensor-x (meters 2.5) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 50) - :platform #t - :sound-name "pontoonten" - ) - ) +(define *tra-pontoon-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.98 + :angular-damping 0.98 + :control-point-count 4 + :mass 2.0 + :inertial-tensor-x (meters 2.5) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 50) + :platform #t + :sound-name "pontoonten")) -(defskelgroup *tra-pontoon-sg* pontoonfive pontoonfive-lod0-jg pontoonfive-idle-ja - ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - ) +(defskelgroup *tra-pontoon-sg* + pontoonfive + pontoonfive-lod0-jg + pontoonfive-idle-ja + ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5)) (defmethod rigid-body-platform-method-30 ((this tra-pontoon)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -290,18 +218,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this tra-pontoon)) - (initialize-skeleton this *tra-pontoon-sg* '()) + (initialize-skeleton this *tra-pontoon-sg* ()) (rigid-body-platform-method-29 this *tra-pontoon-constants*) (set! (-> this float-height-offset) 6144.0) (set! (-> this root-overlay nav-radius) 20480.0) @@ -309,41 +234,35 @@ (set! (-> v1-6 0 local-pos x) 9216.0) (set! (-> v1-6 0 local-pos y) 0.0) (set! (-> v1-6 0 local-pos z) 12083.2) - (set! (-> v1-6 0 local-pos w) 1.0) - ) + (set! (-> v1-6 0 local-pos w) 1.0)) (let ((v1-8 (-> this control-point-array data 1))) (set! (-> v1-8 local-pos x) 9216.0) (set! (-> v1-8 local-pos y) 0.0) (set! (-> v1-8 local-pos z) -12083.2) - (set! (-> v1-8 local-pos w) 1.0) - ) + (set! (-> v1-8 local-pos w) 1.0)) (let ((v1-10 (-> this control-point-array data 2))) (set! (-> v1-10 local-pos x) -9216.0) (set! (-> v1-10 local-pos y) 0.0) (set! (-> v1-10 local-pos z) -12083.2) - (set! (-> v1-10 local-pos w) 1.0) - ) + (set! (-> v1-10 local-pos w) 1.0)) (let ((v1-12 (-> this control-point-array data 3))) (set! (-> v1-12 local-pos x) -9216.0) (set! (-> v1-12 local-pos y) 0.0) (set! (-> v1-12 local-pos z) 12083.2) - (set! (-> v1-12 local-pos w) 1.0) - ) + (set! (-> v1-12 local-pos w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) + (none)) -(deftype tra-iris-door (eco-door) - () - ) +(deftype tra-iris-door (eco-door) ()) - -(defskelgroup *tra-iris-door-sg* jng-iris-door jng-iris-door-lod0-jg jng-iris-door-idle-ja - ((jng-iris-door-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *tra-iris-door-sg* + jng-iris-door + jng-iris-door-lod0-jg + jng-iris-door-idle-ja + ((jng-iris-door-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defmethod eco-door-method-24 ((this tra-iris-door)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -354,395 +273,318 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod eco-door-method-25 ((this tra-iris-door)) - (initialize-skeleton this *tra-iris-door-sg* '()) + (initialize-skeleton this *tra-iris-door-sg* ()) (set! (-> this open-distance) 32768.0) (set! (-> this close-distance) 49152.0) (update-transforms! (-> this root)) 0 - (none) - ) + (none)) (defpartgroup group-scarecrow-explode :id 143 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2912) (sp-item 2913) (sp-item 2914) (sp-item 2915) (sp-item 2916)) - ) + :parts ((sp-item 2912) (sp-item 2913) (sp-item 2914) (sp-item 2915) (sp-item 2916))) (defpart 2912 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 2.5) (meters 1)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 192.0 32.0) - (:g 160.0 32.0) - (:b 128.0 32.0) - (:a 8.0 16.0) - (:vel-y (meters 0.026666667) (meters 0.10666667)) - (:scalevel-x (meters 0.011904762)) - (:rotvel-z (degrees -1.2) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0.00066666666)) - (:friction 0.9) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.1) (seconds 0.197)) - (:next-launcher 2917) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 2.5) (meters 1)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 192.0 32.0) + (:g 160.0 32.0) + (:b 128.0 32.0) + (:a 8.0 16.0) + (:vel-y (meters 0.026666667) (meters 0.10666667)) + (:scalevel-x (meters 0.011904762)) + (:rotvel-z (degrees -1.2) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0.00066666666)) + (:friction 0.9) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.1) (seconds 0.197)) + (:next-launcher 2917) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2917 - :init-specs ((:fade-a -0.4) (:next-time (seconds 0.1) (seconds 0.097)) (:next-launcher 2918)) - ) + :init-specs ((:fade-a -0.4) (:next-time (seconds 0.1) (seconds 0.097)) (:next-launcher 2918))) (defpart 2918 - :init-specs ((:fade-a -0.04)) - ) + :init-specs ((:fade-a -0.04))) (defpart 2913 - :init-specs ((:texture (new 'static 'texture-id :index #x2 :page #x2)) - (:num 4.0) - (:y (meters 2.5)) - (:scale-x (meters 6) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3) (meters 1)) - (:r 192.0) - (:g 192.0) - (:b 64.0 128.0) - (:a 0.0) - (:scalevel-x (meters 0.009765625)) - (:rotvel-z (degrees -0.15) (degrees 0.3)) - (:scalevel-y (meters 0.009765625)) - (:fade-a 2.1333334) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.05)) - (:next-launcher 2919) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x2 :page #x2)) + (:num 4.0) + (:y (meters 2.5)) + (:scale-x (meters 6) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3) (meters 1)) + (:r 192.0) + (:g 192.0) + (:b 64.0 128.0) + (:a 0.0) + (:scalevel-x (meters 0.009765625)) + (:rotvel-z (degrees -0.15) (degrees 0.3)) + (:scalevel-y (meters 0.009765625)) + (:fade-a 2.1333334) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.05)) + (:next-launcher 2919) + (:rotate-y (degrees 0)))) (defpart 2919 - :init-specs ((:fade-a -2.1333334)) - ) + :init-specs ((:fade-a -2.1333334))) (defpart 2914 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.5) - (:y (meters 1.5)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 48.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.5) + (:y (meters 1.5)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 48.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)))) (defpart 2915 - :init-specs ((:texture (new 'static 'texture-id :index #x6 :page #x2)) - (:num 8.0 8.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 2.5) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) 2.0 (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 160.0) - (:g 160.0) - (:b 160.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 2 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 2920) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x6 :page #x2)) + (:num 8.0 8.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 2.5) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) 2.0 (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 160.0) + (:g 160.0) + (:b 160.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 2 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 2920) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2920 - :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4)) - ) + :init-specs ((:scalevel-x (meters -0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -3.4))) (defpart 2916 - :init-specs ((:texture (new 'static 'texture-id :index #x5 :page #x2)) - (:num 8.0 8.0) - (:x (meters -0.5) (meters 1)) - (:y (meters 2.5) (meters 1.5)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 0.3) 1 (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.3)) - (:r 100.0) - (:g 100.0) - (:b 100.0) - (:a 128.0) - (:vel-y (meters 0.06666667) (meters 0.06666667)) - (:rotvel-x (degrees 1.2)) - (:rotvel-y (degrees 2.4)) - (:rotvel-z (degrees 0) 3 (degrees 2.4)) - (:accel-y (meters -0.0033333334)) - (:friction 0.97) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 2920) - (:conerot-x (degrees 40) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x5 :page #x2)) + (:num 8.0 8.0) + (:x (meters -0.5) (meters 1)) + (:y (meters 2.5) (meters 1.5)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 0.3) 1 (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.3)) + (:r 100.0) + (:g 100.0) + (:b 100.0) + (:a 128.0) + (:vel-y (meters 0.06666667) (meters 0.06666667)) + (:rotvel-x (degrees 1.2)) + (:rotvel-y (degrees 2.4)) + (:rotvel-z (degrees 0) 3 (degrees 2.4)) + (:accel-y (meters -0.0033333334)) + (:friction 0.97) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 2920) + (:conerot-x (degrees 40) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-scarecrow-joint-explode :id 144 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2912)) - ) + :parts ((sp-item 2912))) (defpartgroup group-scarecrow-hit :id 145 :duration (seconds 0.05) :bounds (static-bspherem 0 0 0 1) - :parts ((sp-item 2913)) - ) + :parts ((sp-item 2913))) (deftype scarecrow-a (process-drawable) - ((root collide-shape :override) - (incomming-attack-id uint64) - (intersection vector :inline) - ) + ((root collide-shape :override) + (incomming-attack-id uint64) + (intersection vector :inline)) (:state-methods - idle - (hit float vector symbol) - ) - ) - + idle + (hit float vector symbol))) (deftype scarecrow-b (process-drawable) - ((root collide-shape :override) - (incomming-attack-id uint64) - (intersection vector :inline) - ) + ((root collide-shape :override) + (incomming-attack-id uint64) + (intersection vector :inline)) (:state-methods - idle - (hit float vector symbol) - ) - ) + idle + (hit float vector symbol))) +(defskelgroup *scarecrow-a-sg* + scarecrow-a + scarecrow-a-lod0-jg + scarecrow-a-idle-ja + ((scarecrow-a-lod0-mg (meters 20)) (scarecrow-a-lod1-mg (meters 40)) (scarecrow-a-lod2-mg (meters 999999))) + :bounds (static-spherem 0 2.5 0 3)) -(defskelgroup *scarecrow-a-sg* scarecrow-a scarecrow-a-lod0-jg scarecrow-a-idle-ja - ((scarecrow-a-lod0-mg (meters 20)) (scarecrow-a-lod1-mg (meters 40)) (scarecrow-a-lod2-mg (meters 999999))) - :bounds (static-spherem 0 2.5 0 3) - ) - -(defskelgroup *scarecrow-a-break-sg* scarecrow-a scarecrow-a-lod0-jg scarecrow-a-idle-ja - ((scarecrow-a-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) +(defskelgroup *scarecrow-a-break-sg* + scarecrow-a + scarecrow-a-lod0-jg + scarecrow-a-idle-ja + ((scarecrow-a-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (defstate idle (scarecrow-a) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (let* ((s3-0 (-> block param 2)) - (s4-0 (get-task-control (game-task training-gimmie))) - (v1-2 (get-reminder s4-0 0)) - ) - (when (!= s3-0 (-> self incomming-attack-id)) - (set! (-> self incomming-attack-id) s3-0) - (cond - ((= (-> self type) scarecrow-b) - ) - ((and (= (-> block param 1) 'spin) (zero? v1-2)) - (save-reminder s4-0 1 0) - 1 - ) - ((and (= (-> block param 1) 'punch) (= v1-2 1)) - (save-reminder s4-0 2 0) - 2 - ) - ((zero? v1-2) - ) - ((= v1-2 1) - ) - ) - (let* ((s4-1 proc) - (v1-14 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) process-drawable)) - s4-1 - ) - ) - (f30-0 - (cond - (v1-14 - (let ((s4-2 (-> self root)) - (s2-0 (-> (the-as process-drawable v1-14) root trans)) - ) - (deg-diff (y-angle s4-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s2-0 (-> s4-2 trans)))) - ) - ) - (else - 0.0 - ) - ) - ) - (a0-24 ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint -1) - ) - ) - ) - (go-virtual - hit - f30-0 - (if a0-24 - (get-middle-of-bsphere-overlap a0-24 (-> self intersection)) - (target-pos 0) - ) - (the-as - symbol - (and ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> block param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - (or (= (-> self type) scarecrow-a) - (and (= (-> proc type) target) - (logtest? (-> (the-as target proc) control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> (the-as target proc) control status) (cshape-moving-flags onsurf))) - ) - ) - ) - ) - ) - ) - ) - ) - ) - (('touch) - (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0) - ) - ) - ) - :trans (behavior () - (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (get-reminder (get-task-control (game-task training-gimmie)) 0) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.12)) - (loop - (ja-no-eval :group! scarecrow-a-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (let* ((s3-0 (-> block param 2)) + (s4-0 (get-task-control (game-task training-gimmie))) + (v1-2 (get-reminder s4-0 0))) + (when (!= s3-0 (-> self incomming-attack-id)) + (set! (-> self incomming-attack-id) s3-0) + (cond + ((= (-> self type) scarecrow-b)) + ((and (= (-> block param 1) 'spin) (zero? v1-2)) (save-reminder s4-0 1 0) 1) + ((and (= (-> block param 1) 'punch) (= v1-2 1)) (save-reminder s4-0 2 0) 2) + ((zero? v1-2)) + ((= v1-2 1))) + (let* ((s4-1 proc) + (v1-14 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) process-drawable)) s4-1)) + (f30-0 (cond + (v1-14 + (let ((s4-2 (-> self root)) + (s2-0 (-> (the-as process-drawable v1-14) root trans))) + (deg-diff (y-angle s4-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s2-0 (-> s4-2 trans)))))) + (else 0.0))) + (a0-24 ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint -1)))) + (go-virtual hit + f30-0 + (if a0-24 (get-middle-of-bsphere-overlap a0-24 (-> self intersection)) (target-pos 0)) + (the-as symbol + (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> block param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2)) + (or (= (-> self type) scarecrow-a) + (and (= (-> proc type) target) + (logtest? (-> (the-as target proc) control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> (the-as target proc) control status) (cshape-moving-flags onsurf)))))))))))) + (('touch) (send-shove-back (-> self root) proc (the-as touching-shapes-entry (-> block param 0)) 0.7 6144.0 16384.0)))) + :trans + (behavior () + (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (get-reminder (get-task-control (game-task training-gimmie)) 0))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.12)) + (loop (ja-no-eval :group! scarecrow-a-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate hit (scarecrow-a) :virtual #t - :code (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) - (when (not arg2) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) - (ja-channel-push! 1 (seconds 0.07)) - (cond - ((< (fabs arg0) 8192.0) - (ja-no-eval :group! scarecrow-a-hit-front-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((and (< 8192.0 arg0) (< arg0 24576.0)) - (ja-no-eval :group! scarecrow-a-hit-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! scarecrow-a-hit-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go-virtual idle) - ) - (clear-collide-with-as (-> self root)) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 20.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) - (sound-play "break-dummy") - (ja-channel-set! 0) - (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> s5-2 duration) (seconds 1.5)) - (set! (-> s5-2 gravity) -327680.0) - (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) - (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) - (set! (-> s5-2 fountain-rand-transv-hi z) 20480.0) - (set! (-> s5-2 fountain-rand-transv-hi w) 49152.0) - (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) - (process-spawn - joint-exploder - *scarecrow-a-break-sg* - 5 - s5-2 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 10) - (new 'static 'joint-exploder-static-joint-params :joint-index 20) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 9) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - ) - ) - :to self - ) - ) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) + (when (not arg2) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) + (ja-channel-push! 1 (seconds 0.07)) + (cond + ((< (fabs arg0) 8192.0) + (ja-no-eval :group! scarecrow-a-hit-front-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((and (< 8192.0 arg0) (< arg0 24576.0)) + (ja-no-eval :group! scarecrow-a-hit-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! scarecrow-a-hit-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go-virtual idle)) + (clear-collide-with-as (-> self root)) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 20.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) + (sound-play "break-dummy") + (ja-channel-set! 0) + (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> s5-2 duration) (seconds 1.5)) + (set! (-> s5-2 gravity) -327680.0) + (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) + (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) + (set! (-> s5-2 fountain-rand-transv-hi z) 20480.0) + (set! (-> s5-2 fountain-rand-transv-hi w) 49152.0) + (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) + (process-spawn joint-exploder + *scarecrow-a-break-sg* + 5 + s5-2 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 10) + (new 'static 'joint-exploder-static-joint-params :joint-index 20) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 9) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13))) + :to + self)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (defmethod init-from-entity! ((this scarecrow-a) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -758,130 +600,118 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 7372.8 0.0 7372.8) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 12288.0 0.0 7372.8) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *scarecrow-a-sg* '()) + (initialize-skeleton this *scarecrow-a-sg* ()) (go (method-of-object this idle)) - (none) - ) + (none)) -(defskelgroup *scarecrow-b-sg* scarecrow-b scarecrow-b-lod0-jg scarecrow-b-idle-ja - ((scarecrow-b-lod0-mg (meters 20)) (scarecrow-b-lod1-mg (meters 40)) (scarecrow-b-lod2-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 3.8) - ) +(defskelgroup *scarecrow-b-sg* + scarecrow-b + scarecrow-b-lod0-jg + scarecrow-b-idle-ja + ((scarecrow-b-lod0-mg (meters 20)) (scarecrow-b-lod1-mg (meters 40)) (scarecrow-b-lod2-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 3.8)) -(defskelgroup *scarecrow-b-break-sg* scarecrow-b scarecrow-b-lod0-jg scarecrow-b-idle-ja - ((scarecrow-b-break-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -15 0 50) - ) +(defskelgroup *scarecrow-b-break-sg* + scarecrow-b + scarecrow-b-lod0-jg + scarecrow-b-idle-ja + ((scarecrow-b-break-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -15 0 50)) (defstate idle (scarecrow-b) :virtual #t - :event (-> (method-of-type scarecrow-a idle) event) - :code (behavior () - (ja-channel-push! 1 (seconds 0.12)) - (loop - (ja-no-eval :group! scarecrow-b-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (-> (method-of-type scarecrow-a idle) + event) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.12)) + (loop (ja-no-eval :group! scarecrow-b-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defstate hit (scarecrow-b) :virtual #t - :code (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) - (when (not arg2) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) - (ja-channel-push! 1 (seconds 0.07)) - (cond - ((< (fabs arg0) 8192.0) - (ja-no-eval :group! scarecrow-b-hit-front-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((and (< 8192.0 arg0) (< arg0 24576.0)) - (ja-no-eval :group! scarecrow-b-hit-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja-no-eval :group! scarecrow-b-hit-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go-virtual idle) - ) - (clear-collide-with-as (-> self root)) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 21.0 -1) - (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) - (sound-play "break-dummy") - (ja-channel-set! 0) - (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) - (set! (-> s5-2 duration) (seconds 1.5)) - (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) - (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) - (set! (-> s5-2 fountain-rand-transv-hi z) 40960.0) - (set! (-> s5-2 fountain-rand-transv-hi w) 102400.0) - (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) - (process-spawn - joint-exploder - *scarecrow-b-break-sg* - 5 - s5-2 - (new 'static 'joint-exploder-static-params - :joints (new 'static 'boxed-array :type joint-exploder-static-joint-params - (new 'static 'joint-exploder-static-joint-params :joint-index 12) - (new 'static 'joint-exploder-static-joint-params :joint-index 10) - (new 'static 'joint-exploder-static-joint-params :joint-index 21) - (new 'static 'joint-exploder-static-joint-params :joint-index 4) - (new 'static 'joint-exploder-static-joint-params :joint-index 5) - (new 'static 'joint-exploder-static-joint-params :joint-index 11) - (new 'static 'joint-exploder-static-joint-params :joint-index 9) - (new 'static 'joint-exploder-static-joint-params :joint-index 7) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 14) - (new 'static 'joint-exploder-static-joint-params :joint-index 13) - (new 'static 'joint-exploder-static-joint-params :joint-index 16) - (new 'static 'joint-exploder-static-joint-params :joint-index 15) - ) - ) - :to self - ) - ) - (while (-> self child) - (suspend) - ) - (cleanup-for-death self) - ) - :post ja-post - ) + :code + (behavior ((arg0 float) (arg1 vector) (arg2 symbol)) + (when (not arg2) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-hit 4.0 -1) + (ja-channel-push! 1 (seconds 0.07)) + (cond + ((< (fabs arg0) 8192.0) + (ja-no-eval :group! scarecrow-b-hit-front-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((and (< 8192.0 arg0) (< arg0 24576.0)) + (ja-no-eval :group! scarecrow-b-hit-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (ja-no-eval :group! scarecrow-b-hit-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (go-virtual idle)) + (clear-collide-with-as (-> self root)) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 12.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-joint-explode 21.0 -1) + (effect-control-method-10 (-> self skel effect) 'group-scarecrow-explode 4.0 -1) + (sound-play "break-dummy") + (ja-channel-set! 0) + (let ((s5-2 (new 'stack 'joint-exploder-tuning 1))) + (set! (-> s5-2 duration) (seconds 1.5)) + (set! (-> s5-2 fountain-rand-transv-hi x) 32768.0) + (set! (-> s5-2 fountain-rand-transv-hi y) 81920.0) + (set! (-> s5-2 fountain-rand-transv-hi z) 40960.0) + (set! (-> s5-2 fountain-rand-transv-hi w) 102400.0) + (set! (-> s5-2 fountain-rand-transv-lo quad) (-> arg1 quad)) + (process-spawn joint-exploder + *scarecrow-b-break-sg* + 5 + s5-2 + (new 'static + 'joint-exploder-static-params + :joints + (new 'static + 'boxed-array + :type + joint-exploder-static-joint-params + (new 'static 'joint-exploder-static-joint-params :joint-index 12) + (new 'static 'joint-exploder-static-joint-params :joint-index 10) + (new 'static 'joint-exploder-static-joint-params :joint-index 21) + (new 'static 'joint-exploder-static-joint-params :joint-index 4) + (new 'static 'joint-exploder-static-joint-params :joint-index 5) + (new 'static 'joint-exploder-static-joint-params :joint-index 11) + (new 'static 'joint-exploder-static-joint-params :joint-index 9) + (new 'static 'joint-exploder-static-joint-params :joint-index 7) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 14) + (new 'static 'joint-exploder-static-joint-params :joint-index 13) + (new 'static 'joint-exploder-static-joint-params :joint-index 16) + (new 'static 'joint-exploder-static-joint-params :joint-index 15))) + :to + self)) + (while (-> self child) + (suspend)) + (cleanup-for-death self)) + :post ja-post) (defmethod init-from-entity! ((this scarecrow-b) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -897,31 +727,25 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) (set! (-> s2-1 prim-core action) (collide-action solid)) (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 14745.6 0.0 6553.6) - (append-prim s3-0 s2-1) - ) + (append-prim s3-0 s2-1)) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-2 collide-with) (collide-kind target)) (set! (-> s2-2 prim-core action) (collide-action solid)) (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 20480.0 0.0 6553.6) - (append-prim s3-0 s2-2) - ) - ) + (append-prim s3-0 s2-2))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *scarecrow-b-sg* '()) + (initialize-skeleton this *scarecrow-b-sg* ()) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/training/training-part.gc b/goal_src/jak1/levels/training/training-part.gc index b9e0ddd00f..8f221147dd 100644 --- a/goal_src/jak1/levels/training/training-part.gc +++ b/goal_src/jak1/levels/training/training-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "TRA.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") @@ -11,1263 +10,1211 @@ ;; DECOMP BEGINS -(deftype training-part (part-spawner) - () - ) - +(deftype training-part (part-spawner) ()) (defpartgroup group-training-geyser-2 :id 146 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4500) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4530) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4560) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4590) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4620) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 4650) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4500) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4530) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4560) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4590) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4620) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 4650) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 4050) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 4080) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 4110) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 4140) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 4170) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3900) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 4050) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 4050) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 3750) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 3450))) (defpartgroup group-training-geyser-5 :id 147 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 900) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 930) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 960) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 990) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1020) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1050) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 900) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 930) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 960) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 990) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1020) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1050) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 450) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 420) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 390) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 360) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 330) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 300) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 450) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 150) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 4650))) (defpartgroup group-training-geyser-6 :id 149 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2100) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2130) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2160) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2190) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2220) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2250) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2100) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2130) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2160) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2190) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2220) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2250) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 1650) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 1680) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 1710) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 1740) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 1770) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 1500))) (defpartgroup group-training-geyser-4 :id 148 :flags (always-draw) :bounds (static-bspherem 0 32 0 70) - :parts ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 3300) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 3330) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 3360) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 3390) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 3420) - (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3450) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) - (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) - (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) - (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) - (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) - ) - ) + :parts + ((sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 3300) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 3330) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 3360) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 3390) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 3420) + (sp-item 752 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 3450) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) + (sp-item 753 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 4) :offset 2850) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.8) :offset 2880) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.6) :offset 2910) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.4) :offset 2940) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3.2) :offset 2970) + (sp-item 754 :falloff-to (meters 500) :period (seconds 16) :length (seconds 3) :offset 2700) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) + (sp-item 757 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 10) :offset 2850) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 7) :offset 2850) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 5) :offset 2550) + (sp-item 758 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 16) :length (seconds 3) :offset 2250))) (defpart 752 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.2) - (:sound (static-sound-spec "geyser" :num 0.1 :fo-min 50 :fo-max 200)) - (:x (meters 0) (meters 1)) - (:y (meters -8)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 16)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 1.7)) - (:next-launcher 761) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.2) + (:sound (static-sound-spec "geyser" :num 0.1 :fo-min 50 :fo-max 200)) + (:x (meters 0) (meters 1)) + (:y (meters -8)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 16)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 1.7)) + (:next-launcher 761) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 761 - :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667)) - ) + :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667))) (defpart 753 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15) - (:x (meters 0) (meters 1)) - (:y (meters 85) (meters 10)) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.035555556)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:userdata 0.0) - (:func 'check-drop-level-training-mist) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 762) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15) + (:x (meters 0) (meters 1)) + (:y (meters 85) (meters 10)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.035555556)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:userdata 0.0) + (:func 'check-drop-level-training-mist) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 762) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 762 - :init-specs ((:fade-a -0.03678161)) - ) + :init-specs ((:fade-a -0.03678161))) (defun check-drop-level-training-mist ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (new 'stack-no-clear 'vector) - (sp-kill-particle arg0 arg1) - ) - (none) - ) + (sp-kill-particle arg0 arg1)) + (none)) (defpart 754 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.035) - (:x (meters 0) (meters 1)) - (:y (meters 85) (meters 10)) - (:scale-x (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.035555556)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0.00033333333) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit14)) - (:userdata 0.0) - (:func 'check-drop-level-training-mist) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 762) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.035) + (:x (meters 0) (meters 1)) + (:y (meters 85) (meters 10)) + (:scale-x (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.035555556)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0.00033333333) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit14)) + (:userdata 0.0) + (:func 'check-drop-level-training-mist) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 762) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 763 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 0.0 1 1.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 64.0 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 25.000002) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 0.0 1 1.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 64.0 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 25.000002) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 764 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1) (meters 1)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 110.0 32.0) - (:g 128.0 32.0) - (:b 96.0 32.0) - (:a 16.0 32.0) - (:scalevel-x (meters 0.006666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.4) - (:timer (seconds 0.4)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1) (meters 1)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 110.0 32.0) + (:g 128.0 32.0) + (:b 96.0 32.0) + (:a 16.0 32.0) + (:scalevel-x (meters 0.006666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.4) + (:timer (seconds 0.4)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defun check-drop-level-training-spout-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 763) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 764) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 764) gp-0 :rate 1.0))) + (none)) (defpart 759 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 66560.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 66560.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 760 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 757 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 4) (meters 8)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 4) (meters 8)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 758 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 4) (meters 10)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 4) (meters 10)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 755 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 10)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.13333334)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:userdata 0.0) - (:func 'check-drop-level-training-spout-rain) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 10)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.13333334)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:userdata 0.0) + (:func 'check-drop-level-training-spout-rain) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 756 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 4.0) - (:x (meters 0) (meters 40)) - (:y (meters 10) (meters 20)) - (:scale-x (meters 0.03) (meters 0.03)) - (:scale-y (meters 0.5) (meters 0.5)) - (:r 50.0) - (:g 80.0 55.0) - (:b 50.0 50.0) - (:a 16.0 32.0) - (:vel-y (meters -0.06666667) (meters -0.033333335)) - (:timer (seconds 0.8)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 4.0) + (:x (meters 0) (meters 40)) + (:y (meters 10) (meters 20)) + (:scale-x (meters 0.03) (meters 0.03)) + (:scale-y (meters 0.5) (meters 0.5)) + (:r 50.0) + (:g 80.0 55.0) + (:b 50.0 50.0) + (:a 16.0 32.0) + (:vel-y (meters -0.06666667) (meters -0.033333335)) + (:timer (seconds 0.8)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpartgroup group-training-warpgate :id 150 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 767 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 768 :fade-after (meters 60) :falloff-to (meters 100) :binding 765) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 765 :flags (bit1 start-dead launch-asap)) - (sp-item 769 :fade-after (meters 60) :falloff-to (meters 100) :binding 766) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 766 :flags (bit1 start-dead launch-asap)) - (sp-item 770 :fade-after (meters 100) :flags (is-3d)) - ) - ) + :parts + ((sp-item 767 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 768 :fade-after (meters 60) :falloff-to (meters 100) :binding 765) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 765 :flags (bit1 start-dead launch-asap)) + (sp-item 769 :fade-after (meters 60) :falloff-to (meters 100) :binding 766) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 766 :flags (bit1 start-dead launch-asap)) + (sp-item 770 :fade-after (meters 100) :flags (is-3d)))) (defpart 770 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.5) - (:x (meters 0)) - (:scale-x (meters 5)) - (:rot-x (degrees 90)) - (:rot-z (degrees 15)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0 64.0) - (:timer (seconds 0.035)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.5) + (:x (meters 0)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-z (degrees 15)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0 64.0) + (:timer (seconds 0.035)) + (:flags (bit3 bit14)))) (defpart 769 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -105)))) (defpart 766 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 767 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 2.968116) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 2.968116) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -105)))) (defpart 768 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:accel-x (meters 0.000016666667)) - (:timer (seconds 2.3)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -105)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:accel-x (meters 0.000016666667)) + (:timer (seconds 2.3)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -105)))) (defpart 765 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.21333334) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.21333334) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-training-butterflies :id 151 :bounds (static-bspherem 0 0 0 30) - :parts ((sp-item 773 :fade-after (meters 120) :period (seconds 16.345) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 773 :fade-after (meters 120) :period (seconds 22.125) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 773 :fade-after (meters 120) :period (seconds 32.82) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 771) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - (sp-item 771 :flags (start-dead launch-asap) :binding 772) - (sp-item 772 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 773 + :fade-after (meters 120) + :period (seconds 16.345) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 773 + :fade-after (meters 120) + :period (seconds 22.125) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 773 + :fade-after (meters 120) + :period (seconds 32.82) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 771) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)) + (sp-item 771 :flags (start-dead launch-asap) :binding 772) + (sp-item 772 :flags (is-3d start-dead)))) (defpart 773 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 7.5)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-y (meters -0.036666665)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 774) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 7.5)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-y (meters -0.036666665)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 774) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 774 - :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 775)) - ) + :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 775))) (defpart 775 - :init-specs ((:accel-y (meters 0.00033333333))) - ) + :init-specs ((:accel-y (meters 0.00033333333)))) (defpart 771 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:g 0.0 256.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 776) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:g 0.0 256.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 776))) (defpart 776 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 776) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 776))) (defpart 772 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.9)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 1.3)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -8.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.9)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 1.3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -8.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-training-birds :id 152 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - (sp-item 777 :flags (start-dead launch-asap) :binding 778) - (sp-item 778 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 779 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 777) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)) + (sp-item 777 :flags (start-dead launch-asap) :binding 778) + (sp-item 778 :flags (is-3d start-dead)))) (defun tra-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 779 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters 0) (meters 16)) - (:z (meters -15) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'tra-bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters 0) (meters 16)) + (:z (meters -15) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'tra-bird-bob-func))) (defun tra-sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 777 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'tra-sparticle-seagull-moon) - (:next-time (seconds 0.665)) - (:next-launcher 780) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'tra-sparticle-seagull-moon) + (:next-time (seconds 0.665)) + (:next-launcher 780))) (defpart 780 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 781) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 781))) (defpart 781 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 780) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 780))) (defpart 778 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-training-waterfall-21 :id 153 :flags (always-draw) :bounds (static-bspherem 0 16 0 32) - :parts ((sp-item 782 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 783 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 784 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 785 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 786 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 787 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 782 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 783 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 784 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 785 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 786 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 787 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 789 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 790 - :init-specs ((:fade-a -0.16)) - ) + :init-specs ((:fade-a -0.16))) (defpart 791 - :init-specs ((:fade-a -2.6666667)) - ) + :init-specs ((:fade-a -2.6666667))) (defpart 782 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.9) - (:x (meters -9) (meters 1)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.9) + (:x (meters -9) (meters 1)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 783 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.9) - (:x (meters -9) (meters 1)) - (:y (meters 39) (meters 5)) - (:z (meters 0)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters 0.011666667) (meters 0.01)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.9) + (:x (meters -9) (meters 1)) + (:y (meters 39) (meters 5)) + (:z (meters 0)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters 0.011666667) (meters 0.01)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 784 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 3)) - (:y (meters 24) (meters 6)) - (:z (meters 2)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 4.8) (meters 3.2)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0) (meters 0.026666667)) - (:vel-y (meters -0.01) (meters 0.0033333334)) - (:vel-z (meters -0.021666666) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.9)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 3)) + (:y (meters 24) (meters 6)) + (:z (meters 2)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 4.8) (meters 3.2)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0) (meters 0.026666667)) + (:vel-y (meters -0.01) (meters 0.0033333334)) + (:vel-z (meters -0.021666666) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.9)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 90)))) (defpart 785 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -9) (meters 1)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:accel-x (meters -0.00069444446)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -9) (meters 1)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:accel-x (meters -0.00069444446)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 786 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -7) (meters 3.5)) - (:y (meters 47)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2)) - (:next-time (seconds 2.22)) - (:next-launcher 791) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -7) (meters 3.5)) + (:y (meters 47)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2)) + (:next-time (seconds 2.22)) + (:next-launcher 791) + (:rotate-y (degrees 90)))) (defpart 787 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.133) - (:x (meters 0) (meters 6)) - (:y (meters -3.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 790) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.133) + (:x (meters 0) (meters 6)) + (:y (meters -3.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 790) + (:rotate-y (degrees 90)))) (defpartgroup group-training-waterfall-20 :id 154 :flags (always-draw) :bounds (static-bspherem 0 12 0 12) - :parts ((sp-item 792 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 793 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 794 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 795 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 796 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 797 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 792 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 793 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 794 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 795 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 796 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 797 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 792 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.0) - (:x (meters -6) (meters 1)) - (:y (meters 15.5)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 3.4) (meters 1.6)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.0) + (:x (meters -6) (meters 1)) + (:y (meters 15.5)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 3.4) (meters 1.6)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 120)))) (defpart 793 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 1.4) - (:x (meters -4) (meters 1)) - (:y (meters 15.5)) - (:z (meters -3) (meters 10)) - (:scale-x (meters 3.4) (meters 1.6)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0016666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2)) - (:next-time (seconds 1.23)) - (:next-launcher 791) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 1.4) + (:x (meters -4) (meters 1)) + (:y (meters 15.5)) + (:z (meters -3) (meters 10)) + (:scale-x (meters 3.4) (meters 1.6)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0016666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2)) + (:next-time (seconds 1.23)) + (:next-launcher 791) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 794 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -6) (meters 1)) - (:y (meters 15.5)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 2.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.8)) - (:flags (bit2)) - (:next-time (seconds 1.2)) - (:next-launcher 791) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -6) (meters 1)) + (:y (meters 15.5)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 2.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.8)) + (:flags (bit2)) + (:next-time (seconds 1.2)) + (:next-launcher 791) + (:rotate-y (degrees 120)))) (defpart 795 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -4) (meters 1)) - (:y (meters 15.5)) - (:z (meters -3) (meters 10)) - (:scale-x (meters 2.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 2.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.021666666)) - (:vel-y (meters -0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.8)) - (:flags (bit2)) - (:next-time (seconds 1.2)) - (:next-launcher 791) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -4) (meters 1)) + (:y (meters 15.5)) + (:z (meters -3) (meters 10)) + (:scale-x (meters 2.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 2.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.021666666)) + (:vel-y (meters -0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.8)) + (:flags (bit2)) + (:next-time (seconds 1.2)) + (:next-launcher 791) + (:rotate-y (degrees 190)))) (defpart 796 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.133) - (:x (meters 0) (meters 6)) - (:y (meters -3.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.033333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.3) (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 790) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.133) + (:x (meters 0) (meters 6)) + (:y (meters -3.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.033333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.3) (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 790) + (:rotate-y (degrees 90)))) (defpart 797 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 0) (meters 5)) - (:z (meters -8) (meters 8)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1)) - (:next-launcher 789) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 0) (meters 5)) + (:z (meters -8) (meters 8)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1)) + (:next-launcher 789) + (:rotate-y (degrees 90)))) diff --git a/goal_src/jak1/levels/village1/assistant.gc b/goal_src/jak1/levels/village1/assistant.gc index 52174e28b6..7ccba6b20b 100644 --- a/goal_src/jak1/levels/village1/assistant.gc +++ b/goal_src/jak1/levels/village1/assistant.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: assistant.gc @@ -11,58 +10,36 @@ ;; DECOMP BEGINS (deftype assistant (process-taskable) - ((sound-id sound-id) - ) - ) + ((sound-id sound-id))) - -(defskelgroup *assistant-sg* assistant assistant-lod0-jg assistant-idle-leaning-right-ja - ((assistant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - :shadow assistant-shadow-mg - ) +(defskelgroup *assistant-sg* + assistant + assistant-lod0-jg + assistant-idle-leaning-right-ja + ((assistant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :shadow assistant-shadow-mg) (defmethod process-taskable-method-52 ((this assistant)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this assistant)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant) (arg0 symbol)) (case (current-status (-> this tasks)) @@ -71,302 +48,219 @@ (((game-task jungle-eggtop)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-introduction-blue-eco-switch" - :index 10 - :parts 11 - :command-list '((0 want-levels village1 beach) - (128 joint "cameraB") - (312 joint "camera") - (492 joint "cameraB") - (537 joint "camera") - (734 display-level beach movie) - (734 want-force-vis beach #t) - (735 alive "ecovent-48") - (742 blackout 10) - (743 joint "cameraB") - (745 blackout 0) - (839 alive "ecovent-200") - (841 joint "camera") - (842 dead "ecovent-48") - (942 blackout 10) - (944 joint "cameraB") - (945 blackout 0) - (945 dead "ecovent-200") - (945 display-level beach #f) - (1049 blackout 10) - (1051 joint "camera") - (1052 blackout 0) - (1135 blackout 10) - (1137 joint "cameraB") - (1138 blackout 0) - (1216 joint "camera") - ) - ) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-introduction-blue-eco-switch" + :index 10 + :parts 11 + :command-list + '((0 want-levels village1 beach) + (128 joint "cameraB") + (312 joint "camera") + (492 joint "cameraB") + (537 joint "camera") + (734 display-level beach movie) + (734 want-force-vis beach #t) + (735 alive "ecovent-48") + (742 blackout 10) + (743 joint "cameraB") + (745 blackout 0) + (839 alive "ecovent-200") + (841 joint "camera") + (842 dead "ecovent-48") + (942 blackout 10) + (944 joint "cameraB") + (945 blackout 0) + (945 dead "ecovent-200") + (945 display-level beach #f) + (1049 blackout 10) + (1051 joint "camera") + (1052 blackout 0) + (1135 blackout 10) + (1137 joint "cameraB") + (1138 blackout 0) + (1216 joint "camera")))) (else - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-introduction-race-bike" - :index 12 - :parts 6 - :command-list '((0 want-levels village1 beach) (129 joint "cameraB") (319 joint "camera") (505 joint "cameraB")) - ) - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-introduction-race-bike" + :index 12 + :parts 6 + :command-list + '((0 want-levels village1 beach) (129 joint "cameraB") (319 joint "camera") (505 joint "cameraB")))))) (((task-status need-reminder) (task-status need-reminder-a)) (set! (-> this skippable) #t) (cond ((= (current-task (-> this tasks)) (game-task none)) - (new 'static 'spool-anim :name "assistant-reminder-1-generic" :index 14 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "assistant-reminder-1-generic" :index 14 :parts 2 :command-list ())) ((closed? (-> this tasks) (game-task jungle-eggtop) (task-status need-resolution)) - (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list ())) ((or (closed? (-> this tasks) (game-task misty-bike) (task-status need-resolution)) - (not (closed? (-> this tasks) (game-task misty-bike) (task-status need-introduction))) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '()) - ) + (not (closed? (-> this tasks) (game-task misty-bike) (task-status need-introduction)))) + (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list ())) ((zero? (get-reminder (-> this tasks) 2)) - (if arg0 - (save-reminder (-> this tasks) 1 2) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 2)) + (new 'static 'spool-anim :name "assistant-reminder-1-race-bike" :index 13 :parts 3 :command-list ())) (else - (if arg0 - (save-reminder (-> this tasks) 0 2) - ) - (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 2)) + (new 'static 'spool-anim :name "assistant-reminder-1-blue-eco-switch" :index 11 :parts 3 :command-list ())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this assistant)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this assistant)) - (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this)) - ) + (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this))) (when s5-0 (let ((f0-2 (rand-float-gen))) (cond - ((< 16384.0 (-> s5-0 y)) - #f - ) - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "ASSTLP01" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "ASSTLP04" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "ASSTLP05" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "ASSTLP02" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "ASSTLP03" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) + ((< 16384.0 (-> s5-0 y)) #f) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "ASSTLP01" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "ASSTLP04" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "ASSTLP05" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "ASSTLP02" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "ASSTLP03" #f (-> this root trans)))))))) (defstate idle (assistant) :virtual #t - :code (behavior () - (if (!= (ja-group) assistant-idle-leaning-right-ja) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (process-taskable-method-43 self) - (ja :group! assistant-idle-leaning-right-ja) - (countdown (gp-0 (+ (the int (rand-float-gen)) 2)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (cond - ((< (rand-float-gen) 0.66) - (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) - (ja :group! assistant-idle-welding-ja) - (let* ((f30-0 4.0) - (v1-76 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-77 (the-as number (logior #x3f800000 v1-76))) - ) - (countdown (gp-2 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-77)))) 4)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (sound-stop (-> self sound-id)) - (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (when (< (rand-float-gen) 0.66) - (ja-no-eval :group! assistant-idle-wiping-brow-ja :num! (seek!) :frame-num 0.0) + :code + (behavior () + (if (!= (ja-group) assistant-idle-leaning-right-ja) (ja-channel-push! 1 (seconds 0.2))) + (loop (process-taskable-method-43 self) + (ja :group! assistant-idle-leaning-right-ja) + (countdown (gp-0 (+ (the int (rand-float-gen)) 2)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (cond + ((< (rand-float-gen) 0.66) + (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (else - (ja-no-eval :group! assistant-idle-transition-right-to-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (countdown (gp-3 (+ (the int (rand-float-gen)) 1)) - (ja-no-eval :group! assistant-idle-leaning-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (ja-no-eval :group! assistant-idle-transition-left-to-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek!))) + (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) + (ja :group! assistant-idle-welding-ja) + (let* ((f30-0 4.0) + (v1-76 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-77 (the-as number (logior #x3f800000 v1-76)))) + (countdown (gp-2 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-77)))) 4)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek! 0.0))))) + (sound-stop (-> self sound-id)) + (ja-no-eval :group! assistant-idle-transition-to-welding-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (when (< (rand-float-gen) 0.66) + (ja-no-eval :group! assistant-idle-wiping-brow-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (else + (ja-no-eval :group! assistant-idle-transition-right-to-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (countdown (gp-3 (+ (the int (rand-float-gen)) 1)) + (ja-no-eval :group! assistant-idle-leaning-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (ja-no-eval :group! assistant-idle-transition-left-to-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (defpartgroup group-assistant-torch :id 122 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 365 :fade-after (meters 30) :falloff-to (meters 30)) - (sp-item 366 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 365 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 366 :fade-after (meters 60) :falloff-to (meters 80)))) (defpart 365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 32.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 32.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 366 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.93) - (:timer (seconds 4)) - (:flags (bit2)) - (:userdata 140288.0) - (:func 'check-drop-level-assistant) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.93) + (:timer (seconds 4)) + (:flags (bit2)) + (:userdata 140288.0) + (:func 'check-drop-level-assistant) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 45) (degrees 180)))) (defpart 367 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0 1.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0 1.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-assistant ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 367) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 367) gp-0))) + (none)) (defmethod init-from-entity! ((this assistant) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -376,13 +270,6 @@ (set! (-> this sound-id) (new-sound-id)) (set! (-> this draw light-index) (the-as uint 1)) (case (get-task-status (game-task firecanyon-assistant)) - (((task-status unknown)) - (go (method-of-object this idle)) - ) - (else - (cleanup-for-death this) - (deactivate this) - ) - ) - (none) - ) + (((task-status unknown)) (go (method-of-object this idle))) + (else (cleanup-for-death this) (deactivate this))) + (none)) diff --git a/goal_src/jak1/levels/village1/explorer.gc b/goal_src/jak1/levels/village1/explorer.gc index ca1fb4fd31..eb5ccfded8 100644 --- a/goal_src/jak1/levels/village1/explorer.gc +++ b/goal_src/jak1/levels/village1/explorer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: explorer.gc @@ -10,326 +9,215 @@ ;; DECOMP BEGINS -(deftype explorer (process-taskable) - () - ) +(deftype explorer (process-taskable) ()) - -(defskelgroup *explorer-sg* explorer explorer-lod0-jg explorer-idle-ja - ((explorer-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow explorer-shadow-mg - ) +(defskelgroup *explorer-sg* + explorer + explorer-lod0-jg + explorer-idle-ja + ((explorer-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow explorer-shadow-mg) (defmethod process-taskable-method-52 ((this explorer)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this explorer)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this explorer) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "explorer-introduction" - :index 9 - :parts 11 - :command-list '((418 joint "cameraB") (695 shadow self #f) (695 joint "camera") (838 shadow self #t) (838 joint "cameraB")) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "explorer-introduction" + :index 9 + :parts 11 + :command-list + '((418 joint "cameraB") (695 shadow self #f) (695 joint "camera") (838 shadow self #t) (838 joint "cameraB")))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim - :name "explorer-reminder-1" - :index 10 - :parts 5 - :command-list '((0 send-event target draw #f) - (148 send-event target draw #t) - (148 joint "cameraB") - (390 send-event target draw #f) - (390 joint "camera") - (505 send-event target draw #t) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static + 'spool-anim + :name "explorer-reminder-1" + :index 10 + :parts 5 + :command-list + '((0 send-event target draw #f) + (148 send-event target draw #t) + (148 joint "cameraB") + (390 send-event target draw #f) + (390 joint "camera") + (505 send-event target draw #t)))) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "explorer-reminder-2" :index 11 :parts 3 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "explorer-reminder-2" :index 11 :parts 3 :command-list ())))) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim - :name "explorer-resolution" - :index 12 - :parts 5 - :command-list '((167 joint "cameraB") (310 joint "camera")) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static + 'spool-anim + :name "explorer-resolution" + :index 12 + :parts 5 + :command-list + '((167 joint "cameraB") (310 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defmethod get-art-elem ((this explorer)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this explorer)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.85714287 f0-2) - (play-ambient (-> this ambient) "EXP-AM05" #f (-> this root trans)) - ) + ((< 0.85714287 f0-2) (play-ambient (-> this ambient) "EXP-AM05" #f (-> this root trans))) ((< 0.71428573 f0-2) (if (not (closed? (-> this tasks) (game-task village1-uncle-money) (task-status need-reminder))) - (play-ambient (-> this ambient) "EXP-LO02" #f (-> this root trans)) - ) - ) - ((< 0.5714286 f0-2) - (play-ambient (-> this ambient) "EXP-AM04" #f (-> this root trans)) - ) - ((< 0.42857143 f0-2) - (play-ambient (-> this ambient) "EXP-AM03" #f (-> this root trans)) - ) - ((< 0.2857143 f0-2) - (play-ambient (-> this ambient) "EXP-AM02" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "EXP-LO02" #f (-> this root trans)))) + ((< 0.5714286 f0-2) (play-ambient (-> this ambient) "EXP-AM04" #f (-> this root trans))) + ((< 0.42857143 f0-2) (play-ambient (-> this ambient) "EXP-AM03" #f (-> this root trans))) + ((< 0.2857143 f0-2) (play-ambient (-> this ambient) "EXP-AM02" #f (-> this root trans))) ((< 0.14285715 f0-2) (if (not (closed? (-> this tasks) (game-task village1-uncle-money) (task-status need-reminder))) - (play-ambient (-> this ambient) "EXP-AM01" #f (-> this root trans)) - ) - ) - (else - (play-ambient (-> this ambient) "EXP-LO1A" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "EXP-AM01" #f (-> this root trans)))) + (else (play-ambient (-> this ambient) "EXP-LO1A" #f (-> this root trans))))))) (defmethod target-above-threshold? ((this explorer)) - (the-as symbol (and *target* (< (-> (target-pos 0) x) -202752.0) (< 98304.0 (-> (target-pos 0) z)))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) x) -202752.0) (< 98304.0 (-> (target-pos 0) z))))) (defstate idle (explorer) :virtual #t - :code (behavior () - (if (!= (ja-group) explorer-idle-ja) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (process-taskable-method-43 self) - (ja :group! explorer-idle-ja) - (let* ((f30-0 2.0) - (v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-12 (the-as number (logior #x3f800000 v1-11))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-12)))) 1)) - (ja-no-eval :group! explorer-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (cond - ((< (rand-float-gen) 0.5) - (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 (current-time))) - (while (let ((s5-0 (current-time)) - (f30-1 300.0) - (f28-0 0.5) - (f26-0 0.5) - ) - (< (- s5-0 (the-as time-frame (the int (* f30-1 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1) - ) - (suspend) - ) - ) - (when (< (rand-float-gen) 0.75) - (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) + :code + (behavior () + (if (!= (ja-group) explorer-idle-ja) (ja-channel-push! 1 (seconds 0.2))) + (loop (process-taskable-method-43 self) + (ja :group! explorer-idle-ja) + (let* ((f30-0 2.0) + (v1-11 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-12 (the-as number (logior #x3f800000 v1-11)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-12)))) 1)) + (ja-no-eval :group! explorer-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (cond + ((< (rand-float-gen) 0.5) + (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (let ((gp-2 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-2 300.0) - (f28-1 0.5) - (f26-1 0.5) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-2 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-2) - ) - (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (when (< (rand-float-gen) 0.5) + (ja :num! (seek!))) + (let ((gp-1 (current-time))) + (while (let ((s5-0 (current-time)) + (f30-1 300.0) + (f28-0 0.5) + (f26-0 0.5)) + (< (- s5-0 (the-as time-frame (the int (* f30-1 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1)) + (suspend))) + (when (< (rand-float-gen) 0.75) (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (let ((gp-3 (current-time))) - (while (let ((s5-2 (current-time)) - (f30-3 300.0) - (f28-2 0.5) - (f26-2 0.5) - ) - (< (- s5-2 (the-as time-frame (the int (* f30-3 (+ f28-2 (* f26-2 (rand-float-gen))))))) gp-3) - ) - (suspend) - ) - ) + (ja :num! (seek!))) + (let ((gp-2 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-2 300.0) + (f28-1 0.5) + (f26-1 0.5)) + (< (- s5-1 (the-as time-frame (the int (* f30-2 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-2)) + (suspend))) (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) (until (ja-done? 0) (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - (else - (ja-no-eval :group! explorer-idle3-step-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-4 (current-time))) - (while (let ((s5-3 (current-time)) - (f30-4 300.0) - (f28-3 0.5) - (f26-3 0.5) - ) - (< (- s5-3 (the-as time-frame (the int (* f30-4 (+ f28-3 (* f26-3 (rand-float-gen))))))) gp-4) - ) - (suspend) - ) - ) - (ja-no-eval :group! explorer-idle3-looking-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-5 (current-time))) - (while (let ((s5-4 (current-time)) - (f30-5 300.0) - (f28-4 0.5) - (f26-4 0.5) - ) - (< (- s5-4 (the-as time-frame (the int (* f30-5 (+ f28-4 (* f26-4 (rand-float-gen))))))) gp-5) - ) - (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (let ((gp-6 (current-time))) - (while (let ((s5-5 (current-time)) - (f30-6 300.0) - (f28-5 0.5) - (f26-5 0.5) - ) - (< (- s5-5 (the-as time-frame (the int (* f30-6 (+ f28-5 (* f26-5 (rand-float-gen))))))) gp-6) - ) - (suspend) - ) - ) - (ja-no-eval :group! explorer-idle3-step-left-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + (ja :num! (seek! 0.0))) + (when (< (rand-float-gen) 0.5) + (ja-no-eval :group! explorer-idle2-look-right-map-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-3 (current-time))) + (while (let ((s5-2 (current-time)) + (f30-3 300.0) + (f28-2 0.5) + (f26-2 0.5)) + (< (- s5-2 (the-as time-frame (the int (* f30-3 (+ f28-2 (* f26-2 (rand-float-gen))))))) gp-3)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))))) + (ja-no-eval :group! explorer-idle2-look-at-map-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))) + (else + (ja-no-eval :group! explorer-idle3-step-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-4 (current-time))) + (while (let ((s5-3 (current-time)) + (f30-4 300.0) + (f28-3 0.5) + (f26-3 0.5)) + (< (- s5-3 (the-as time-frame (the int (* f30-4 (+ f28-3 (* f26-3 (rand-float-gen))))))) gp-4)) + (suspend))) + (ja-no-eval :group! explorer-idle3-looking-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((gp-5 (current-time))) + (while (let ((s5-4 (current-time)) + (f30-5 300.0) + (f28-4 0.5) + (f26-4 0.5)) + (< (- s5-4 (the-as time-frame (the int (* f30-5 (+ f28-4 (* f26-4 (rand-float-gen))))))) gp-5)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0))) + (let ((gp-6 (current-time))) + (while (let ((s5-5 (current-time)) + (f30-6 300.0) + (f28-5 0.5) + (f26-5 0.5)) + (< (- s5-5 (the-as time-frame (the int (* f30-6 (+ f28-5 (* f26-5 (rand-float-gen))))))) gp-6)) + (suspend))) + (ja-no-eval :group! explorer-idle3-step-left-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (defmethod init-from-entity! ((this explorer) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *explorer-sg* 3 42 (new 'static 'vector :w 4096.0) 5) @@ -337,5 +225,4 @@ (set! (-> this sound-flava) (music-flava explorer)) (set! (-> this draw light-index) (the-as uint 5)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/farmer.gc b/goal_src/jak1/levels/village1/farmer.gc index a561e585f3..606d84226e 100644 --- a/goal_src/jak1/levels/village1/farmer.gc +++ b/goal_src/jak1/levels/village1/farmer.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: farmer.gc @@ -10,100 +9,59 @@ ;; DECOMP BEGINS -(deftype farmer (process-taskable) - () - ) +(deftype farmer (process-taskable) ()) - -(defskelgroup *farmer-sg* farmer farmer-lod0-jg farmer-sitting-cycle-ja - ((farmer-lod0-mg (meters 20)) (farmer-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow farmer-shadow-mg - ) +(defskelgroup *farmer-sg* + farmer + farmer-lod0-jg + farmer-sitting-cycle-ja + ((farmer-lod0-mg (meters 20)) (farmer-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow farmer-shadow-mg) (defmethod play-anim! ((this farmer) (arg0 symbol)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim :name "farmer-introduction" :index 6 :parts 5 :command-list '()) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static 'spool-anim :name "farmer-introduction" :index 6 :parts 5 :command-list ())) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim :name "farmer-reminder-1" :index 7 :parts 2 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static 'spool-anim :name "farmer-reminder-1" :index 7 :parts 2 :command-list ())) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "farmer-reminder-2" :index 8 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "farmer-reminder-2" :index 8 :parts 2 :command-list ())))) (((task-status need-reward-speech)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "farmer-resolution" :index 9 :parts 4 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "farmer-resolution" :index 9 :parts 4 :command-list ())) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 4) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 4)))) (defmethod get-art-elem ((this farmer)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction) (task-status need-resolution) (task-status invalid)) - (-> this draw art-group data 4) - ) - (else - (-> this draw art-group data 5) - ) - ) - ) + (-> this draw art-group data 4)) + (else (-> this draw art-group data 5)))) (defmethod process-taskable-method-43 ((this farmer)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8333333 f0-2) - (play-ambient (-> this ambient) "FAR-LO1A" #f (-> this root trans)) - ) - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "FAR-AM01" #f (-> this root trans)) - ) - ((< 0.5 f0-2) - #f - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "FAR-AM2A" #f (-> this root trans)) - ) - ((< 0.16666667 f0-2) - (play-ambient (-> this ambient) "FAR-AM02" #f (-> this root trans)) - ) - (else - #f - ) - ) - ) - ) - ) + ((< 0.8333333 f0-2) (play-ambient (-> this ambient) "FAR-LO1A" #f (-> this root trans))) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "FAR-AM01" #f (-> this root trans))) + ((< 0.5 f0-2) #f) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "FAR-AM2A" #f (-> this root trans))) + ((< 0.16666667 f0-2) (play-ambient (-> this ambient) "FAR-AM02" #f (-> this root trans))) + (else #f))))) (defmethod initialize-collision ((this farmer) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -120,24 +78,19 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) - (append-prim s4-0 s3-1) - ) - ) + (append-prim s4-0 s3-1))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this farmer) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *farmer-sg* 3 25 (new 'static 'vector :w 4096.0) 5) @@ -145,5 +98,4 @@ (nav-mesh-connect this (-> this root) (the-as nav-control #f)) (set! (-> this tasks) (get-task-control (game-task village1-yakow))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/fishermans-boat.gc b/goal_src/jak1/levels/village1/fishermans-boat.gc index 18226397d3..7e6ccfde33 100644 --- a/goal_src/jak1/levels/village1/fishermans-boat.gc +++ b/goal_src/jak1/levels/village1/fishermans-boat.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/entity/ambient.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/geometry/bounding-box.gc") @@ -16,272 +15,223 @@ ;; DECOMP BEGINS -(define *fishermans-boat-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 2.0 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 40) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 10) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 6 - :mass 2.0 - :inertial-tensor-x (meters 4) - :inertial-tensor-y (meters 10) - :inertial-tensor-z (meters 15) - :cm-joint-y (meters 3) - :cm-joint-z (meters 1) - :idle-distance (meters 50) - :platform #t - :sound-name #f - ) - ) +(define *fishermans-boat-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 40) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 10) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 6 + :mass 2.0 + :inertial-tensor-x (meters 4) + :inertial-tensor-y (meters 10) + :inertial-tensor-z (meters 15) + :cm-joint-y (meters 3) + :cm-joint-z (meters 1) + :idle-distance (meters 50) + :platform #t + :sound-name #f)) (deftype boat-stabilizer (structure) - ((local-pos vector :inline) - (normal vector :inline) - ) - ) - + ((local-pos vector :inline) + (normal vector :inline))) (deftype vehicle-path (structure) - ((point-array vector 10 :inline) - (point-count int32) - ) + ((point-array vector 10 :inline) + (point-count int32)) (:methods - (get-point-count (_type_) int) - (nth-point (_type_ int vector) vector) - (distance-to-next-point (_type_ int vector) vector) - (add-point! (_type_ float float float float) none) - (debug-draw (_type_) symbol) - ) - ) - + (get-point-count (_type_) int) + (nth-point (_type_ int vector) vector) + (distance-to-next-point (_type_ int vector) vector) + (add-point! (_type_ float float float float) none) + (debug-draw (_type_) symbol))) (defmethod get-point-count ((this vehicle-path)) - (-> this point-count) - ) + (-> this point-count)) (defmethod nth-point ((this vehicle-path) (arg0 int) (arg1 vector)) (set! (-> arg1 quad) (-> this point-array arg0 quad)) - arg1 - ) + arg1) (defmethod distance-to-next-point ((this vehicle-path) (arg0 int) (arg1 vector)) (let ((a2-1 (+ arg0 1))) - (if (>= a2-1 (-> this point-count)) - (set! a2-1 0) - ) - (vector-! arg1 (-> this point-array a2-1) (-> this point-array arg0)) - ) + (if (>= a2-1 (-> this point-count)) (set! a2-1 0)) + (vector-! arg1 (-> this point-array a2-1) (-> this point-array arg0))) (set! (-> arg1 y) 0.0) (vector-normalize! arg1 1.0) - arg1 - ) + arg1) (defmethod add-point! ((this vehicle-path) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (let ((v1-0 (-> this point-count))) (when (< v1-0 10) (set-vector! (-> this point-array v1-0) arg0 arg1 arg2 arg3) - (+! (-> this point-count) 1) - ) - ) + (+! (-> this point-count) 1))) 0 - (none) - ) + (none)) (defmethod debug-draw ((this vehicle-path)) (local-vars (sv-64 int) (sv-80 (function _varargs_ object))) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 y) 0.0) (set! (-> s5-0 w) 1.0) (dotimes (s2-0 (-> this point-count)) (let ((v1-1 (mod (+ s2-0 1) (-> this point-count)))) (set! (-> s4-0 quad) (-> this point-array s2-0 quad)) - (set! (-> s3-0 quad) (-> this point-array v1-1 quad)) - ) + (set! (-> s3-0 quad) (-> this point-array v1-1 quad))) (let ((f30-0 (-> s4-0 y)) - (f28-0 (-> s4-0 w)) - ) + (f28-0 (-> s4-0 w))) (set! (-> s5-0 x) (* f30-0 (cos f28-0))) - (set! (-> s5-0 z) (* f30-0 (sin f28-0))) - ) + (set! (-> s5-0 z) (* f30-0 (sin f28-0)))) (set! (-> s4-0 y) 0.0) (set! (-> s4-0 w) 1.0) (set! (-> s3-0 y) 0.0) (set! (-> s3-0 w) 1.0) - (add-debug-line - #t - (bucket-id debug-no-zbuf) - s4-0 - s3-0 - (new 'static 'rgba :r #xff :g #xff :a #x80) - #f - (the-as rgba -1) - ) - (add-debug-vector - #t - (bucket-id debug-no-zbuf) - s4-0 - s5-0 - (meters 0.00024414062) - (new 'static 'rgba :r #xff :a #x80) - ) + (add-debug-line #t (bucket-id debug-no-zbuf) s4-0 s3-0 (new 'static 'rgba :r #xff :g #xff :a #x80) #f (the-as rgba -1)) + (add-debug-vector #t (bucket-id debug-no-zbuf) s4-0 s5-0 (meters 0.00024414062) (new 'static 'rgba :r #xff :a #x80)) (let ((s1-0 add-debug-text-3d) - (s0-0 #t) - ) + (s0-0 #t)) (set! sv-64 68) (set! sv-80 format) (let ((a0-9 (clear *temp-string*)) (a1-6 "~D") - (a2-2 s2-0) - ) - (sv-80 a0-9 a1-6 a2-2) - ) + (a2-2 s2-0)) + (sv-80 a0-9 a1-6 a2-2)) (let ((a2-3 *temp-string*) (a3-2 s4-0) (t0-2 4) - (t1-2 #f) - ) - (s1-0 s0-0 (the-as bucket-id sv-64) a2-3 a3-2 (the-as font-color t0-2) (the-as vector2h t1-2)) - ) - ) - ) - ) - #f - ) + (t1-2 #f)) + (s1-0 s0-0 (the-as bucket-id sv-64) a2-3 a3-2 (the-as font-color t0-2) (the-as vector2h t1-2)))))) + #f) -(define *boat-turning-radius-table* (new 'static 'array float 32 - 409600.0 - 90931.2 - 94699.52 - 95600.64 - 100802.56 - 97566.72 - 99246.08 - 98713.6 - 95846.4 - 100474.88 - 88842.24 - 105472.0 - 95436.8 - 97525.76 - 102481.92 - 96501.76 - 97198.08 - 93102.08 - 98631.68 - 100270.08 - 96788.48 - 100884.48 - 97402.88 - 98590.72 - 97280.0 - 100065.28 - 104079.36 - 92610.56 - 97034.24 - 88309.76 - 0.0 - 0.0 - ) - ) +(define *boat-turning-radius-table* + (new 'static + 'array + float + 32 + 409600.0 + 90931.2 + 94699.52 + 95600.64 + 100802.56 + 97566.72 + 99246.08 + 98713.6 + 95846.4 + 100474.88 + 88842.24 + 105472.0 + 95436.8 + 97525.76 + 102481.92 + 96501.76 + 97198.08 + 93102.08 + 98631.68 + 100270.08 + 96788.48 + 100884.48 + 97402.88 + 98590.72 + 97280.0 + 100065.28 + 104079.36 + 92610.56 + 97034.24 + 88309.76 + 0.0 + 0.0)) -(define *boat-throttle-control-table* (new 'static 'array float 32 - 0.0 - 0.031 - 0.0646 - 0.0952 - 0.1237 - 0.1508 - 0.1753 - 0.2018 - 0.2231 - 0.2473 - 0.2695 - 0.2904 - 0.3119 - 0.3312 - 0.3514 - 0.3701 - 0.3906 - 0.4148 - 0.4272 - 0.4483 - 0.4686 - 0.4856 - 0.5096 - 0.5203 - 0.5507 - 0.5697 - 0.5856 - 0.6184 - 0.6366 - 0.6694 - 0.0 - 0.0 - ) - ) +(define *boat-throttle-control-table* + (new 'static + 'array + float + 32 + 0.0 + 0.031 + 0.0646 + 0.0952 + 0.1237 + 0.1508 + 0.1753 + 0.2018 + 0.2231 + 0.2473 + 0.2695 + 0.2904 + 0.3119 + 0.3312 + 0.3514 + 0.3701 + 0.3906 + 0.4148 + 0.4272 + 0.4483 + 0.4686 + 0.4856 + 0.5096 + 0.5203 + 0.5507 + 0.5697 + 0.5856 + 0.6184 + 0.6366 + 0.6694 + 0.0 + 0.0)) (deftype vehicle-controller (structure) - ((path vehicle-path) - (turning-radius-table (pointer float)) - (throttle-control-table (pointer float)) - (table-step float) - (table-length int32) - (circle-radius float) - (throttle float) - (steering float) - (path-dest-index int8) - (left-circle int8) - (path-dest-point vector :inline) - (path-dest-velocity vector :inline) - (dest-circle vector :inline) - (target-point vector :inline) - (sample-dir vector :inline) - (sample-time time-frame) - (sample-index int32) - ) + ((path vehicle-path) + (turning-radius-table (pointer float)) + (throttle-control-table (pointer float)) + (table-step float) + (table-length int32) + (circle-radius float) + (throttle float) + (steering float) + (path-dest-index int8) + (left-circle int8) + (path-dest-point vector :inline) + (path-dest-velocity vector :inline) + (dest-circle vector :inline) + (target-point vector :inline) + (sample-dir vector :inline) + (sample-time time-frame) + (sample-index int32)) (:methods - (init! (_type_ vehicle-path (pointer float) (pointer float) int float) none) - (vehicle-controller-method-10 (_type_ vector float int) none) - (vehicle-controller-method-11 (_type_) none) - (vehicle-controller-method-12 (_type_ int vector) none) - (move-to-next-point (_type_ vector) none) - (vehicle-controller-method-14 (_type_ vector vector) none) - (vehicle-controller-method-15 (_type_ collide-shape-moving) none) - (vehicle-controller-method-16 (_type_) none) - ) - ) - + (init! (_type_ vehicle-path (pointer float) (pointer float) int float) none) + (vehicle-controller-method-10 (_type_ vector float int) none) + (vehicle-controller-method-11 (_type_) none) + (vehicle-controller-method-12 (_type_ int vector) none) + (move-to-next-point (_type_ vector) none) + (vehicle-controller-method-14 (_type_ vector vector) none) + (vehicle-controller-method-15 (_type_ collide-shape-moving) none) + (vehicle-controller-method-16 (_type_) none))) (defmethod relocate ((this vehicle-controller) (arg0 int)) - (if (nonzero? (-> this path)) - (&+! (-> this path) arg0) - ) - (the-as vehicle-controller 0) - ) + (if (nonzero? (-> this path)) (&+! (-> this path) arg0)) + (the-as vehicle-controller 0)) (defmethod vehicle-controller-method-12 ((this vehicle-controller) (arg0 int) (arg1 vector)) (when (< arg0 (get-point-count (-> this path))) (set! (-> this path-dest-index) arg0) (nth-point (-> this path) arg0 (-> this path-dest-point)) (let ((f30-0 (-> this path-dest-point y)) - (f28-0 (-> this path-dest-point w)) - ) + (f28-0 (-> this path-dest-point w))) (set! (-> this path-dest-velocity x) (* f30-0 (cos f28-0))) - (set! (-> this path-dest-velocity z) (* f30-0 (sin f28-0))) - ) + (set! (-> this path-dest-velocity z) (* f30-0 (sin f28-0)))) (set! (-> this path-dest-velocity y) 0.0) (set! (-> this path-dest-velocity w) 1.0) (set! (-> this path-dest-point y) 0.0) @@ -296,119 +246,79 @@ (set! (-> this left-circle) 1) (when (< 0.0 (vector-dot s3-0 s5-1)) (set! (-> this left-circle) 0) - (vector-float*! s5-1 s5-1 -1.0) - ) - ) - (vector+*! (-> this dest-circle) (-> this path-dest-point) s5-1 (-> this circle-radius)) - ) - (set! (-> this dest-circle w) (-> this circle-radius)) - ) + (vector-float*! s5-1 s5-1 -1.0))) + (vector+*! (-> this dest-circle) (-> this path-dest-point) s5-1 (-> this circle-radius))) + (set! (-> this dest-circle w) (-> this circle-radius))) 0 - (none) - ) + (none)) (defmethod move-to-next-point ((this vehicle-controller) (arg0 vector)) (let ((s4-0 (+ (-> this path-dest-index) 1))) - (if (>= s4-0 (get-point-count (-> this path))) - (set! s4-0 0) - ) - (vehicle-controller-method-12 this s4-0 arg0) - ) + (if (>= s4-0 (get-point-count (-> this path))) (set! s4-0 0)) + (vehicle-controller-method-12 this s4-0 arg0)) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-14 ((this vehicle-controller) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector)) - (s3-0 (new 'stack-no-clear 'vector)) - ) + (s3-0 (new 'stack-no-clear 'vector))) (vector-! s5-0 (-> this dest-circle) arg0) (let ((f30-0 (vector-xz-length s5-0)) - (f28-0 (-> this dest-circle w)) - ) - (if (< f30-0 f28-0) - (set! f28-0 (* 0.9 f30-0)) - ) + (f28-0 (-> this dest-circle w))) + (if (< f30-0 f28-0) (set! f28-0 (* 0.9 f30-0))) (vector-normalize! s5-0 1.0) (set! (-> s3-0 x) (-> s5-0 z)) (set! (-> s3-0 z) (- (-> s5-0 x))) - (if (= (-> this left-circle) 1) - (vector-float*! s3-0 s3-0 -1.0) - ) + (if (= (-> this left-circle) 1) (vector-float*! s3-0 s3-0 -1.0)) (let* ((f0-5 f30-0) (f0-7 (* f0-5 f0-5)) (f1-0 f28-0) (f0-9 (sqrtf (- f0-7 (* f1-0 f1-0)))) - (f28-1 (/ (* f28-0 f0-9) f30-0)) - ) + (f28-1 (/ (* f28-0 f0-9) f30-0))) (let ((f0-12 (/ (* f0-9 f0-9) f30-0))) (set! (-> arg1 quad) (-> arg0 quad)) - (vector+*! arg1 (-> this target-point) s5-0 f0-12) - ) - (vector+*! arg1 (-> this target-point) s3-0 f28-1) - ) - ) - ) + (vector+*! arg1 (-> this target-point) s5-0 f0-12)) + (vector+*! arg1 (-> this target-point) s3-0 f28-1)))) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-15 ((this vehicle-controller) (arg0 collide-shape-moving)) (vehicle-controller-method-14 this (-> arg0 trans) (-> this target-point)) (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) + (s4-0 (new 'stack-no-clear 'vector))) (set! (-> s3-0 quad) (-> this path-dest-velocity quad)) (vector-xz-normalize! s3-0 1.0) (vector-! s4-0 (-> this path-dest-point) (-> arg0 trans)) (let ((f30-0 (vector-dot s3-0 s4-0))) - (if (and (< (vector-xz-length s4-0) (-> this circle-radius)) (< f30-0 0.0)) - (move-to-next-point this (-> arg0 trans)) - ) - ) - ) - (let ((s4-2 (max 0 (min - (the int (/ (vector-xz-length (-> this path-dest-velocity)) (-> this table-step))) - (+ (-> this table-length) -1) - ) - ) - ) - ) - (set! (-> this throttle) (-> this throttle-control-table s4-2)) - ) + (if (and (< (vector-xz-length s4-0) (-> this circle-radius)) (< f30-0 0.0)) (move-to-next-point this (-> arg0 trans))))) + (let ((s4-2 (max 0 + (min (the int (/ (vector-xz-length (-> this path-dest-velocity)) (-> this table-step))) (+ (-> this table-length) -1))))) + (set! (-> this throttle) (-> this throttle-control-table s4-2))) (let ((s3-1 (new 'stack-no-clear 'vector)) - (s4-3 (new 'stack-no-clear 'vector)) - ) + (s4-3 (new 'stack-no-clear 'vector))) (vector-z-quaternion! s3-1 (-> arg0 quat)) (vector-x-quaternion! s4-3 (-> arg0 quat)) (let* ((v1-16 (-> arg0 trans)) (f0-9 (- (vector-dot s3-1 (-> this target-point)) (vector-dot s3-1 v1-16))) - (f3-0 (- (vector-dot s4-3 (-> this target-point)) (vector-dot s4-3 v1-16))) - ) - (set! (-> this steering) (fmax -1.0 (fmin 1.0 (/ (* 4.0 f3-0) (fmax 4096.0 f0-9))))) - ) - ) + (f3-0 (- (vector-dot s4-3 (-> this target-point)) (vector-dot s4-3 v1-16)))) + (set! (-> this steering) (fmax -1.0 (fmin 1.0 (/ (* 4.0 f3-0) (fmax 4096.0 f0-9))))))) 0 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-11 ((this vehicle-controller)) (format #t "(define *turning-radius-table* (new 'static 'inline-array 'float 0~%") (dotimes (s5-0 (-> this table-length)) - (format #t " (meters ~4,,2M)~%" (-> this turning-radius-table s5-0)) - ) + (format #t " (meters ~4,,2M)~%" (-> this turning-radius-table s5-0))) (format #t " )~%") (format #t " )~%") (format #t "(define *throttle-control-table* (new 'static 'inline-array 'float 0~%") (dotimes (s5-1 (-> this table-length)) - (format #t " ~f~%" (-> this throttle-control-table s5-1)) - ) + (format #t " ~f~%" (-> this throttle-control-table s5-1))) (format #t " )~%") (format #t " )~%") 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-10 ((this vehicle-controller) (arg0 vector) (arg1 float) (arg2 int)) (let ((s3-0 (new 'stack-no-clear 'vector))) @@ -420,53 +330,31 @@ (let* ((f30-0 (* 0.0033333334 (the float (- (current-time) (-> this sample-time))))) (f28-0 (* (-> this table-step) (the float arg2))) (f0-4 (acos-rad (vector-dot s3-0 (-> this sample-dir)))) - (f26-0 (/ (* f28-0 f30-0) f0-4)) - ) + (f26-0 (/ (* f28-0 f30-0) f0-4))) (when (and (>= arg2 0) (< arg2 (-> this table-length))) (set! (-> this turning-radius-table arg2) f26-0) (set! (-> this throttle-control-table arg2) arg1) (format #t "sample ~d (~M m/s) angle ~f deg, time ~f sec~%" arg2 f28-0 (* 57.29747 f0-4) f30-0) - (format #t "sample ~d (~M m/s) radius ~M throttle ~f~%" arg2 f28-0 f26-0 arg1) - ) - ) - ) + (format #t "sample ~d (~M m/s) radius ~M throttle ~f~%" arg2 f28-0 f26-0 arg1)))) (else - (set! (-> this sample-index) arg2) - (set-time! (-> this sample-time)) - (set! (-> this sample-dir quad) (-> s3-0 quad)) - ) - ) - ) + (set! (-> this sample-index) arg2) + (set-time! (-> this sample-time)) + (set! (-> this sample-dir quad) (-> s3-0 quad))))) 0 - (none) - ) + (none)) (defmethod vehicle-controller-method-16 ((this vehicle-controller)) (debug-draw (-> this path)) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (-> this dest-circle) - (-> this dest-circle w) - (new 'static 'rgba :g #xff :a #x80) - ) - (add-debug-x - #t - (bucket-id debug-no-zbuf) - (-> this target-point) - (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (-> this dest-circle) + (-> this dest-circle w) + (new 'static 'rgba :g #xff :a #x80)) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> this target-point) (new 'static 'rgba :r #xff :g #xff :b #xff :a #x80)) 0 - (none) - ) + (none)) -(defmethod init! ((this vehicle-controller) - (arg0 vehicle-path) - (arg1 (pointer float)) - (arg2 (pointer float)) - (arg3 int) - (arg4 float) - ) +(defmethod init! ((this vehicle-controller) (arg0 vehicle-path) (arg1 (pointer float)) (arg2 (pointer float)) (arg3 int) (arg4 float)) (set! (-> this path) arg0) (set! (-> this turning-radius-table) arg1) (set! (-> this throttle-control-table) arg2) @@ -474,67 +362,68 @@ (set! (-> this table-step) arg4) (set! (-> this circle-radius) 102400.0) 0 - (none) - ) + (none)) (deftype fishermans-boat (rigid-body-platform) - ((stabilizer-array boat-stabilizer 2 :inline) - (engine-thrust-local-pos vector :inline) - (ignition symbol) - (engine-thrust float) - (propeller joint-mod-spinner) - (dock-point vector :inline) - (dest-dir vector :inline) - (dock-point-index int8) - (auto-pilot symbol) - (anchored symbol) - (waiting-for-player symbol) - (player-riding symbol) - (boat-path vehicle-path :inline) - (cam-tracker handle) - (kill-player symbol :offset 1076) - (engine-sound-id sound-id :offset 1080) - (engine-sound-envelope float :offset 1084) - (debug-draw basic :offset 1088) - (debug-path-record basic :offset 1092) - (debug-path-playback basic :offset 1096) - (measure-parameters basic :offset 1100) - (controller vehicle-controller :inline :offset 1104) - (anim spool-anim :offset 1244) - (old-target-pos transformq :inline :offset 1248) - (evilbro handle :offset 1296) - (evilsis handle :offset 1304) - ) + ((stabilizer-array boat-stabilizer 2 :inline) + (engine-thrust-local-pos vector :inline) + (ignition symbol) + (engine-thrust float) + (propeller joint-mod-spinner) + (dock-point vector :inline) + (dest-dir vector :inline) + (dock-point-index int8) + (auto-pilot symbol) + (anchored symbol) + (waiting-for-player symbol) + (player-riding symbol) + (boat-path vehicle-path :inline) + (cam-tracker handle) + (kill-player symbol :offset 1076) + (engine-sound-id sound-id :offset 1080) + (engine-sound-envelope float :offset 1084) + (debug-draw basic :offset 1088) + (debug-path-record basic :offset 1092) + (debug-path-playback basic :offset 1096) + (measure-parameters basic :offset 1100) + (controller vehicle-controller :inline :offset 1104) + (anim spool-anim :offset 1244) + (old-target-pos transformq :inline :offset 1248) + (evilbro handle :offset 1296) + (evilsis handle :offset 1304)) (:states - fishermans-boat-docked-misty - fishermans-boat-docked-village - fishermans-boat-entering-misty - fishermans-boat-entering-village - fishermans-boat-leaving-misty - fishermans-boat-leaving-village - fishermans-boat-measurements - fishermans-boat-player-control - fishermans-boat-ride-to-misty - fishermans-boat-ride-to-village1 - ) - ) + fishermans-boat-docked-misty + fishermans-boat-docked-village + fishermans-boat-entering-misty + fishermans-boat-entering-village + fishermans-boat-leaving-misty + fishermans-boat-leaving-village + fishermans-boat-measurements + fishermans-boat-player-control + fishermans-boat-ride-to-misty + fishermans-boat-ride-to-village1)) +(defskelgroup *fishermans-boat-sg* + fishermans-boat + fishermans-boat-lod0-jg + fishermans-boat-idle-ja + ((fishermans-boat-lod0-mg (meters 20)) (fishermans-boat-lod1-mg (meters 999999))) + :bounds (static-spherem 0 3 0 15) + :longest-edge (meters 7.3)) -(defskelgroup *fishermans-boat-sg* fishermans-boat fishermans-boat-lod0-jg fishermans-boat-idle-ja - ((fishermans-boat-lod0-mg (meters 20)) (fishermans-boat-lod1-mg (meters 999999))) - :bounds (static-spherem 0 3 0 15) - :longest-edge (meters 7.3) - ) +(defskelgroup *fb-evilbro-sg* + evilbro + evilbro-lod0-jg + evilbro-idle-ja + ((evilbro-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) -(defskelgroup *fb-evilbro-sg* evilbro evilbro-lod0-jg evilbro-idle-ja - ((evilbro-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) - -(defskelgroup *fb-evilsis-sg* evilsis evilsis-lod0-jg evilsis-idle-ja - ((evilsis-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1) - ) +(defskelgroup *fb-evilsis-sg* + evilsis + evilsis-lod0-jg + evilsis-idle-ja + ((evilsis-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1)) (defmethod rigid-body-platform-method-23 ((this fishermans-boat) (arg0 float)) (local-vars (sv-128 int) (sv-144 rigid-body-control-point) (sv-160 int) (sv-176 vector)) @@ -543,8 +432,7 @@ (s5-0 (new 'stack-no-clear 'vector)) (s0-0 (new 'stack-no-clear 'vector)) (s2-0 (new 'stack-no-clear 'vector)) - (s3-0 (-> this rbody matrix)) - ) + (s3-0 (-> this rbody matrix))) (set! (-> s2-0 quad) (-> s3-0 vector 2 quad)) (set! sv-128 0) (while (< sv-128 6) @@ -555,8 +443,7 @@ (set! (-> sv-144 velocity quad) (-> s1-0 quad)) (set! (-> sv-144 world-pos w) (ocean-get-height s5-0)) (let* ((f0-2 (- (-> sv-144 world-pos w) (-> s5-0 y))) - (f30-0 (fmin 1.0 (/ f0-2 (-> this info max-buoyancy-depth)))) - ) + (f30-0 (fmin 1.0 (/ f0-2 (-> this info max-buoyancy-depth))))) (when (< 0.0 f0-2) (vector-float*! s4-0 *y-vector* (* 20.0 f0-2 (-> this rbody mass))) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) @@ -564,17 +451,10 @@ (rigid-body-method-13 (-> this rbody) s5-0 s4-0) (vector-float*! s4-0 s1-0 (* -1.0 (-> this info drag-factor) f30-0)) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - (vector-float*! - s4-0 - (the-as vector (-> s3-0 vector)) - (* -0.5 (vector-dot (the-as vector (-> s3-0 vector)) s1-0)) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) - ) + (vector-float*! s4-0 (the-as vector (-> s3-0 vector)) (* -0.5 (vector-dot (the-as vector (-> s3-0 vector)) s1-0))) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0))) 0 - (set! sv-128 (+ sv-128 1)) - ) + (set! sv-128 (+ sv-128 1))) (set! sv-160 0) (while (< sv-160 2) (set! sv-176 (-> this stabilizer-array sv-160 local-pos)) @@ -584,8 +464,7 @@ (vector-float*! s4-0 s0-0 (* -1.0 (vector-dot s0-0 s1-0))) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) 0 - (set! sv-160 (+ sv-160 1)) - ) + (set! sv-160 (+ sv-160 1))) (when (-> this anchored) (let ((s1-1 (new 'stack-no-clear 'vector))) (vector+*! s5-0 (-> s3-0 vector 3) s2-0 24576.0) @@ -593,82 +472,68 @@ (vector-! s4-0 s1-1 s5-0) (set! (-> s4-0 y) 0.0) (vector-float*! s4-0 s4-0 10.0) - (if (< 81920.0 (vector-length s4-0)) - (vector-normalize! s4-0 81920.0) - ) + (if (< 81920.0 (vector-length s4-0)) (vector-normalize! s4-0 81920.0)) (rigid-body-method-13 (-> this rbody) s5-0 s4-0) (vector+*! s5-0 (-> s3-0 vector 3) s2-0 -24576.0) (vector+*! s1-1 (-> this dock-point) (-> this dest-dir) -24576.0) - (vector-! s4-0 s1-1 s5-0) - ) + (vector-! s4-0 s1-1 s5-0)) (set! (-> s4-0 y) 0.0) (vector-float*! s4-0 s4-0 10.0) - (if (< 81920.0 (vector-length s4-0)) - (vector-normalize! s4-0 81920.0) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) + (if (< 81920.0 (vector-length s4-0)) (vector-normalize! s4-0 81920.0)) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0)) (when (-> this ignition) (let ((s2-1 (new 'stack-no-clear 'vector))) (vector-matrix*! s5-0 (-> this engine-thrust-local-pos) s3-0) (set-vector! s2-1 (- (-> this controller steering)) 0.0 2.0 1.0) (vector-rotate*! s2-1 s2-1 s3-0) (vector-normalize! s2-1 1.0) - (vector-float*! s4-0 s2-1 (-> this engine-thrust)) - ) - (rigid-body-method-13 (-> this rbody) s5-0 s4-0) - ) - ) + (vector-float*! s4-0 s2-1 (-> this engine-thrust))) + (rigid-body-method-13 (-> this rbody) s5-0 s4-0))) (rigid-body-platform-method-26 this) (rigid-body-platform-method-25 this) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-set-dock-point fishermans-boat ((arg0 int)) (set! (-> self dock-point-index) arg0) (nth-point (-> self boat-path) arg0 (-> self dock-point)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-set-path-point fishermans-boat ((arg0 int)) (vehicle-controller-method-12 (-> self controller) arg0 (-> self root-overlay trans)) (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-next-path-point fishermans-boat () (move-to-next-point (-> self controller) (-> self root-overlay trans)) (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) 0 - (none) - ) + (none)) (defpart 2896 - :init-specs ((:texture (new 'static 'texture-id :index #xa :page #x2)) - (:num 0.06) - (:x (meters 10)) - (:scale-x (meters 1.5) (meters 3)) - (:rot-y (degrees 0)) - (:scale-y (meters 1.5) (meters 3)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.01) (meters 0.006666667)) - (:scalevel-x (meters 0.006666667) (meters 0.008666666)) - (:scalevel-y (meters 0.006666667) (meters 0.008666666)) - (:fade-a 0.7111111) - (:friction 0.94) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.3)) - (:next-launcher 119) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xa :page #x2)) + (:num 0.06) + (:x (meters 10)) + (:scale-x (meters 1.5) (meters 3)) + (:rot-y (degrees 0)) + (:scale-y (meters 1.5) (meters 3)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.01) (meters 0.006666667)) + (:scalevel-x (meters 0.006666667) (meters 0.008666666)) + (:scalevel-y (meters 0.006666667) (meters 0.008666666)) + (:fade-a 0.7111111) + (:friction 0.94) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.3)) + (:next-launcher 119) + (:rotate-y (degrees 0)))) (defbehavior fishermans-boat-wave fishermans-boat ((arg0 vector) (arg1 float) (arg2 float)) (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -678,146 +543,96 @@ (set! (-> *part-id-table* 2896 init-specs 19 initial-valuef) (+ 49152.0 arg1)) (set! (-> *part-id-table* 2896 init-specs 1 initial-valuef) (* 0.0000036621095 arg2)) (set! (-> *part-id-table* 2896 init-specs 2 initial-valuef) (* 0.1 arg2)) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2896) gp-0) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2896) gp-0)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-spawn-particles fishermans-boat ((arg0 float)) (let* ((s5-0 (-> self node-list data 3 bone transform)) (s4-0 (new 'stack-no-clear 'vector)) - (f30-0 (vector-y-angle (-> s5-0 vector 2))) - ) + (f30-0 (vector-y-angle (-> s5-0 vector 2)))) (vector-matrix*! s4-0 (new 'static 'vector :z 40960.0 :w 1.0) s5-0) (fishermans-boat-wave s4-0 f30-0 arg0) (vector-matrix*! s4-0 (new 'static 'vector :x 20480.0 :z -8192.0 :w 1.0) s5-0) (fishermans-boat-wave s4-0 f30-0 arg0) (vector-matrix*! s4-0 (new 'static 'vector :x -20480.0 :z -8192.0 :w 1.0) s5-0) - (fishermans-boat-wave s4-0 f30-0 arg0) - ) + (fishermans-boat-wave s4-0 f30-0 arg0)) 0 - (none) - ) + (none)) (defbehavior fishermans-boat-play-sounds fishermans-boat () (if (-> self ignition) - (seek! (-> self engine-sound-envelope) 1.0 (* 2.0 (seconds-per-frame))) - (seek! (-> self engine-sound-envelope) 0.0 (seconds-per-frame)) - ) + (seek! (-> self engine-sound-envelope) 1.0 (* 2.0 (seconds-per-frame))) + (seek! (-> self engine-sound-envelope) 0.0 (seconds-per-frame))) (cond ((< 0.0 (-> self engine-sound-envelope)) - (if (zero? (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new-sound-id)) - ) + (if (zero? (-> self engine-sound-id)) (set! (-> self engine-sound-id) (new-sound-id))) (* 0.0000008138021 (-> self engine-thrust)) (let ((f30-0 (* 100.0 (-> self engine-sound-envelope))) (f28-0 (+ -1.0 (* 2.0 (-> self engine-sound-envelope)))) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector<-cspace! gp-0 (joint-node fishermans-boat-lod0-jg prop)) - (sound-play - "boat-engine" - :id (-> self engine-sound-id) - :vol f30-0 - :pitch f28-0 - :position (the-as symbol gp-0) - ) - ) - ) + (sound-play "boat-engine" :id (-> self engine-sound-id) :vol f30-0 :pitch f28-0 :position (the-as symbol gp-0)))) (else - (when (nonzero? (-> self engine-sound-id)) - (sound-stop (-> self engine-sound-id)) - (set! (-> self engine-sound-id) (new 'static 'sound-id)) - 0 - ) - ) - ) - (none) - ) + (when (nonzero? (-> self engine-sound-id)) + (sound-stop (-> self engine-sound-id)) + (set! (-> self engine-sound-id) (new 'static 'sound-id)) + 0))) + (none)) (defbehavior fishermans-boat-post fishermans-boat () (when (and *target* (-> self kill-player)) (set! (-> self kill-player) #f) - (when (send-event *target* 'attack #f (static-attack-info ((mode 'endlessfall)))) - ) - ) + (when (send-event *target* 'attack #f (static-attack-info ((mode 'endlessfall)))))) (when (and *target* (-> self ignition)) (cond ((-> self auto-pilot) (vehicle-controller-method-15 (-> self controller) (-> self root-overlay)) - (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0) - ) + (vector-normalize-copy! (-> self dest-dir) (-> self controller path-dest-velocity) 1.0)) (else - (when (not (-> self measure-parameters)) - (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0))) - (seek! (-> self controller steering) (fmax -1.0 (fmin 1.0 f0-0)) (seconds-per-frame)) - ) - (if (cpad-hold? 0 x) - (seek! (-> self controller throttle) 0.8 (seconds-per-frame)) - (seek! (-> self controller throttle) 0.0 (* 0.25 (seconds-per-frame))) - ) - 0 - ) - ) - ) + (when (not (-> self measure-parameters)) + (let ((f0-0 (analog-input (the-as int (-> *cpad-list* cpads 0 leftx)) 128.0 48.0 110.0 -1.0))) + (seek! (-> self controller steering) (fmax -1.0 (fmin 1.0 f0-0)) (seconds-per-frame))) + (if (cpad-hold? 0 x) + (seek! (-> self controller throttle) 0.8 (seconds-per-frame)) + (seek! (-> self controller throttle) 0.0 (* 0.25 (seconds-per-frame)))) + 0))) (when (and (-> self player-riding) (and (zero? (-> self root-overlay riders num-riders)) - (or (not *target*) - (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans))) - ) - ) - ) - (if (process-release? *target*) - (set! (-> self kill-player) #t) - ) + (or (not *target*) (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)))))) + (if (process-release? *target*) (set! (-> self kill-player) #t)) (set! (-> self controller throttle) 0.0) - (set! (-> self controller steering) 0.0) - ) - ) + (set! (-> self controller steering) 0.0))) (if (-> self ignition) - (seek! (-> self engine-thrust) (* 1228800.0 (-> self controller throttle)) 6144.0) - (set! (-> self engine-thrust) 0.0) - ) + (seek! (-> self engine-thrust) (* 1228800.0 (-> self controller throttle)) 6144.0) + (set! (-> self engine-thrust) 0.0)) (cond ((-> self ignition) (let ((f0-20 60.0) (f1-4 1820.4445) (f2-1 6735.6445) - (f3-0 1228800.0) - ) - (set! (-> self propeller spin-rate) (* f0-20 (+ f1-4 (* f2-1 (/ 1.0 f3-0) (-> self engine-thrust))))) - ) - ) - (else - (seek! (-> self propeller spin-rate) 0.0 218.45334) - ) - ) + (f3-0 1228800.0)) + (set! (-> self propeller spin-rate) (* f0-20 (+ f1-4 (* f2-1 (/ 1.0 f3-0) (-> self engine-thrust))))))) + (else (seek! (-> self propeller spin-rate) 0.0 218.45334))) (rigid-body-platform-method-28 self) (quaternion-copy! (-> self root-overlay quat) (-> self rbody rotation)) (rigid-body-method-18 (-> self rbody) (-> self root-overlay trans)) (when (-> self debug-draw) (vehicle-controller-method-16 (-> self controller)) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (-> self boat-path)) - 614400.0 - (new 'static 'rgba :b #xff :a #x80) - ) - (add-debug-sphere - #t - (bucket-id debug-no-zbuf) - (the-as vector (&-> self stack 848)) - 409600.0 - (new 'static 'rgba :b #xff :a #x80) - ) - ) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (-> self boat-path)) + 614400.0 + (new 'static 'rgba :b #xff :a #x80)) + (add-debug-sphere #t + (bucket-id debug-no-zbuf) + (the-as vector (&-> self stack 848)) + 409600.0 + (new 'static 'rgba :b #xff :a #x80))) (fishermans-boat-spawn-particles 8192.0) (fishermans-boat-play-sounds) (rider-post) - (none) - ) + (none)) (defbehavior fishermans-boat-leave-dock? fishermans-boat () (let ((gp-0 #f)) @@ -825,403 +640,312 @@ (or (task-complete? *game-info* (game-task jungle-fishgame)) (and *cheat-mode* (cpad-hold? 0 l3))) (not (level-hint-displayed?)) (time-elapsed? (-> self state-time) (seconds 3)) - (file-status *art-control* (-> self anim name) 0) - ) + (file-status *art-control* (-> self anim name) 0)) (hide-hud) (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (kill-current-level-hint () '(sidekick voicebox) 'exit) (when (and (hud-hidden?) (can-grab-display? self) (= *kernel-boot-message* 'play)) - (let ((s5-1 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-17 s5-1)) - (set! (-> v1-17 width) (the float 440)) - ) - (let ((v1-18 s5-1)) - (set! (-> v1-18 height) (the float 80)) - ) + (let ((s5-1 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-17 s5-1)) (set! (-> v1-17 width) (the float 440))) + (let ((v1-18 s5-1)) (set! (-> v1-18 height) (the float 80))) (set! (-> s5-1 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-1 #f 128 22) - ) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-1 #f 128 22)) (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) (set! (-> self waiting-for-player) #f) (set! (-> self player-riding) #t) (set! (-> self auto-pilot) #t) (set! (-> self ignition) #t) (set! (-> self anchored) #f) - (set! gp-0 #t) - ) - ) - ) - gp-0 - ) - ) + (set! gp-0 #t)))) + gp-0)) (defbehavior fishermans-boat-enter-dock? fishermans-boat () (when (and (-> self player-riding) (= (-> self controller path-dest-index) (-> self dock-point-index))) - (if (process-release? *target*) - (set! (-> self player-riding) #f) - ) - ) + (if (process-release? *target*) (set! (-> self player-riding) #f))) (let ((f0-0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point)))) - (when (and (= (-> self controller path-dest-index) (-> self dock-point-index)) - (not (-> self anchored)) - (< f0-0 81920.0) - ) + (when (and (= (-> self controller path-dest-index) (-> self dock-point-index)) (not (-> self anchored)) (< f0-0 81920.0)) (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - ) - (< f0-0 28672.0) - ) - ) + (set! (-> self anchored) #t)) + (< f0-0 28672.0))) (defstate fishermans-boat-docked-village (fishermans-boat) :event rigid-body-platform-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (fishermans-boat-leave-dock?) - (go fishermans-boat-ride-to-misty) - ) - (rider-trans) - (if (nonzero? (-> self anim)) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - ) - ) - :code (behavior () - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-misty" - :index 15 - :parts 3 - :command-list '((0 want-levels village1 misty) - (0 shadow target #f) - (0 shadow sidekick #f) - (250 display-level misty display) - (250 display-level village1 special) - (250 want-vis mis) - (250 want-force-vis misty #t) - (459 want-force-vis misty #f) - (459 save) - (459 blackout 20) - (459 shadow target #t) - ) - ) - ) - (fishermans-boat-set-dock-point 0) - (fishermans-boat-set-path-point 0) - (anim-loop) - ) - :post fishermans-boat-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (fishermans-boat-leave-dock?) (go fishermans-boat-ride-to-misty)) + (rider-trans) + (if (nonzero? (-> self anim)) (spool-push *art-control* (-> self anim name) 0 self -99.0))) + :code + (behavior () + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-misty" + :index 15 + :parts 3 + :command-list + '((0 want-levels village1 misty) + (0 shadow target #f) + (0 shadow sidekick #f) + (250 display-level misty display) + (250 display-level village1 special) + (250 want-vis mis) + (250 want-force-vis misty #t) + (459 want-force-vis misty #f) + (459 save) + (459 blackout 20) + (459 shadow target #t)))) + (fishermans-boat-set-dock-point 0) + (fishermans-boat-set-path-point 0) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-leaving-village (fishermans-boat) - :trans (behavior () - (when (< 614400.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) - (load-state-want-display-level 'village1 'special) - (load-state-want-display-level 'misty 'display) - (load-state-want-vis 'mis) - (load-state-want-force-vis 'misty #t) - (go fishermans-boat-player-control) - ) - (rider-trans) - ) - :code (behavior () - (load-state-want-levels 'village1 'misty) - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior fishermans-boat - () - (camera-change-to "camera-282" 0 #f) - (while (!= (-> self rbody lin-momentum-damping-factor) 'release) - (suspend) - ) - (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) - (camera-change-to (the-as string 'base) 0 #f) - (none) - ) - :to self - ) - ) - ) - (send-event (handle->process (-> self cam-tracker)) 'border #t) - (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) - (fishermans-boat-set-path-point 0) - (fishermans-boat-next-path-point) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (< 614400.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) + (load-state-want-display-level 'village1 'special) + (load-state-want-display-level 'misty 'display) + (load-state-want-vis 'mis) + (load-state-want-force-vis 'misty #t) + (go fishermans-boat-player-control)) + (rider-trans)) + :code + (behavior () + (load-state-want-levels 'village1 'misty) + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior fishermans-boat () + (camera-change-to "camera-282" 0 #f) + (while (!= (-> self rbody lin-momentum-damping-factor) 'release) + (suspend)) + (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) + (camera-change-to (the-as string 'base) 0 #f) + (none)) + :to + self))) + (send-event (handle->process (-> self cam-tracker)) 'border #t) + (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) + (fishermans-boat-set-path-point 0) + (fishermans-boat-next-path-point) + (loop (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-entering-village (fishermans-boat) - :trans (behavior () - (when (fishermans-boat-enter-dock?) - (set! (-> self waiting-for-player) #f) - (when #t - (set! (-> *camera* cam-entity) (the-as entity #t)) - (send-event *camera* 'clear-entity) - (load-commands-set! *level* '()) - (load-state-want-display-level 'village1 'display) - (load-state-want-force-vis 'village1 #f) - (go fishermans-boat-docked-village) - ) - ) - (rider-trans) - ) - :code (behavior () - (load-state-want-levels 'village1 'beach) - (load-state-want-vis 'vi1) - (fishermans-boat-set-dock-point 0) - (fishermans-boat-set-path-point 5) - (anim-loop) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (fishermans-boat-enter-dock?) + (set! (-> self waiting-for-player) #f) + (when #t + (set! (-> *camera* cam-entity) (the-as entity #t)) + (send-event *camera* 'clear-entity) + (load-commands-set! *level* ()) + (load-state-want-display-level 'village1 'display) + (load-state-want-force-vis 'village1 #f) + (go fishermans-boat-docked-village))) + (rider-trans)) + :code + (behavior () + (load-state-want-levels 'village1 'beach) + (load-state-want-vis 'vi1) + (fishermans-boat-set-dock-point 0) + (fishermans-boat-set-path-point 5) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-docked-misty (fishermans-boat) :event rigid-body-platform-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - ) - :trans (behavior () - (if (fishermans-boat-leave-dock?) - (go fishermans-boat-ride-to-village1) - ) - (rider-trans) - (if (nonzero? (-> self anim)) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - ) - ) - :code (behavior () - (if #t - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-village1" - :index 16 - :parts 3 - :command-list '((0 want-levels village1 misty) - (0 shadow target #f) - (0 shadow sidekick #f) - (250 display-level village1 display) - (250 display-level misty #f) - (250 want-vis vi1) - (250 want-force-vis village1 #t) - (459 want-force-vis village1 #f) - (459 save) - (459 blackout 20) - (459 shadow target #t) - ) - ) - ) - (set! (-> self anim) (new 'static 'spool-anim - :name "fishermans-boat-ride-to-village1-alt" - :index 17 - :parts 12 - :command-list '((0 want-levels village1 misty) - (105 want-levels village1 intro) - (150 display-level intro display) - (150 want-vis int) - (150 kill "med-res-level-3") - (150 want-force-vis intro #t) - (151 send-event self evilbro) - (1199 send-event self evilsis) - (1200 want-force-vis intro #f) - (1200 want-levels village1 beach) - (1200 display-level village1 display) - (1200 want-vis vi1) - (1200 want-force-vis village1 #t) - (1349 want-force-vis village1 #f) - (1349 save) - (1349 blackout 20) - ) - ) - ) - ) - (load-state-want-force-vis 'misty #f) - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-path-point 4) - (anim-loop) - ) - :post fishermans-boat-post - ) + :enter + (behavior () + (set-time! (-> self state-time))) + :trans + (behavior () + (if (fishermans-boat-leave-dock?) (go fishermans-boat-ride-to-village1)) + (rider-trans) + (if (nonzero? (-> self anim)) (spool-push *art-control* (-> self anim name) 0 self -99.0))) + :code + (behavior () + (if #t + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-village1" + :index 16 + :parts 3 + :command-list + '((0 want-levels village1 misty) + (0 shadow target #f) + (0 shadow sidekick #f) + (250 display-level village1 display) + (250 display-level misty #f) + (250 want-vis vi1) + (250 want-force-vis village1 #t) + (459 want-force-vis village1 #f) + (459 save) + (459 blackout 20) + (459 shadow target #t)))) + (set! (-> self anim) + (new 'static + 'spool-anim + :name "fishermans-boat-ride-to-village1-alt" + :index 17 + :parts 12 + :command-list + '((0 want-levels village1 misty) + (105 want-levels village1 intro) + (150 display-level intro display) + (150 want-vis int) + (150 kill "med-res-level-3") + (150 want-force-vis intro #t) + (151 send-event self evilbro) + (1199 send-event self evilsis) + (1200 want-force-vis intro #f) + (1200 want-levels village1 beach) + (1200 display-level village1 display) + (1200 want-vis vi1) + (1200 want-force-vis village1 #t) + (1349 want-force-vis village1 #f) + (1349 save) + (1349 blackout 20))))) + (load-state-want-force-vis 'misty #f) + (fishermans-boat-set-dock-point 4) + (fishermans-boat-set-path-point 4) + (anim-loop)) + :post fishermans-boat-post) (defstate fishermans-boat-leaving-misty (fishermans-boat) - :trans (behavior () - (when (< 409600.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) - (load-state-want-force-vis 'village1 #t) - (load-state-want-display-level 'village1 'display) - (set-continue! *game-info* "village1-hut") - (load-commands-set! *level* (load-command-get-index *level* 'village1 2)) - (go fishermans-boat-player-control) - ) - (rider-trans) - ) - :code (behavior () - (set! (-> self cam-tracker) - (ppointer->handle (process-spawn - camera-tracker - :init camera-tracker-init - (lambda :behavior fishermans-boat - () - (camera-change-to "camera-287" 0 #f) - (while (!= (-> self rbody lin-momentum-damping-factor) 'release) - (suspend) - ) - (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) - (camera-change-to (the-as string 'base) 0 #f) - (none) - ) - :to self - ) - ) - ) - (send-event (handle->process (-> self cam-tracker)) 'border #t) - (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) - (fishermans-boat-set-path-point 4) - (fishermans-boat-next-path-point) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (< 409600.0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point))) + (load-state-want-force-vis 'village1 #t) + (load-state-want-display-level 'village1 'display) + (set-continue! *game-info* "village1-hut") + (load-commands-set! *level* (load-command-get-index *level* 'village1 2)) + (go fishermans-boat-player-control)) + (rider-trans)) + :code + (behavior () + (set! (-> self cam-tracker) + (ppointer->handle (process-spawn camera-tracker + :init + camera-tracker-init + (lambda :behavior fishermans-boat () + (camera-change-to "camera-287" 0 #f) + (while (!= (-> self rbody lin-momentum-damping-factor) 'release) + (suspend)) + (set! (-> self rbody lin-momentum-damping-factor) (the-as float #f)) + (camera-change-to (the-as string 'base) 0 #f) + (none)) + :to + self))) + (send-event (handle->process (-> self cam-tracker)) 'border #t) + (send-event (handle->process (-> self cam-tracker)) 'mask #x20800) + (fishermans-boat-set-path-point 4) + (fishermans-boat-next-path-point) + (loop (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-entering-misty (fishermans-boat) - :trans (behavior () - (when (fishermans-boat-enter-dock?) - (set! (-> self waiting-for-player) #f) - (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) - (when #t - (set! (-> *camera* cam-entity) (the-as entity #t)) - (send-event *camera* 'clear-entity) - (go fishermans-boat-docked-misty) - ) - ) - (rider-trans) - ) - :code (behavior () - (set-continue! *game-info* "misty-start") - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-path-point 2) - (loop - (suspend) - ) - ) - :post fishermans-boat-post - ) + :trans + (behavior () + (when (fishermans-boat-enter-dock?) + (set! (-> self waiting-for-player) #f) + (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) + (when #t + (set! (-> *camera* cam-entity) (the-as entity #t)) + (send-event *camera* 'clear-entity) + (go fishermans-boat-docked-misty))) + (rider-trans)) + :code + (behavior () + (set-continue! *game-info* "misty-start") + (fishermans-boat-set-dock-point 4) + (fishermans-boat-set-path-point 2) + (loop (suspend))) + :post fishermans-boat-post) (defstate fishermans-boat-player-control (fishermans-boat) - :exit (behavior () - (send-event *camera* 'change-state *camera-base-mode* 0) - (set! (-> self auto-pilot) #t) - ) - :trans (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector))) - (nth-point (-> self boat-path) 0 gp-0) - (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 614400.0) - (go fishermans-boat-entering-village) - ) - (nth-point (-> self boat-path) 4 gp-0) - (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 409600.0) - (go fishermans-boat-entering-misty) - ) - ) - 0 - ) - :code (behavior () - (send-event (handle->process (-> self cam-tracker)) 'message 'release) - (suspend) - (send-event *camera* 'change-state cam-stick 0) - (loop - (if (and (= *cheat-mode* 'debug) (cpad-pressed? 0 triangle)) - (set! (-> self auto-pilot) #f) - ) + :exit + (behavior () + (send-event *camera* 'change-state *camera-base-mode* 0) + (set! (-> self auto-pilot) #t)) + :trans + (behavior () + (let ((gp-0 (new 'stack-no-clear 'vector))) + (nth-point (-> self boat-path) 0 gp-0) + (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 614400.0) (go fishermans-boat-entering-village)) + (nth-point (-> self boat-path) 4 gp-0) + (if (< (vector-vector-xz-distance (-> self root-overlay trans) gp-0) 409600.0) (go fishermans-boat-entering-misty))) + 0) + :code + (behavior () + (send-event (handle->process (-> self cam-tracker)) 'message 'release) (suspend) - ) - ) - :post fishermans-boat-post - ) + (send-event *camera* 'change-state cam-stick 0) + (loop (if (and (= *cheat-mode* 'debug) (cpad-pressed? 0 triangle)) (set! (-> self auto-pilot) #f)) + (suspend))) + :post fishermans-boat-post) (defbehavior fishermans-boat-set-throttle-by-speed fishermans-boat ((arg0 float)) (let* ((f0-0 (vector-xz-length (-> self rbody lin-velocity))) (f1-2 (/ (- arg0 f0-0) arg0)) - (f30-0 (* 0.005 f1-2)) - ) + (f30-0 (* 0.005 f1-2))) (format *stdcon* "current ~M target ~M throttle ~f~%" f0-0 arg0 (-> self controller throttle)) - (set! (-> self controller throttle) (fmax 0.0 (fmin 1.0 (+ (-> self controller throttle) f30-0)))) - ) + (set! (-> self controller throttle) (fmax 0.0 (fmin 1.0 (+ (-> self controller throttle) f30-0))))) 0 - (none) - ) + (none)) (defstate fishermans-boat-measurements (fishermans-boat) - :exit (behavior () - (set! (-> self measure-parameters) #f) - ) - :trans (behavior () - (if (cpad-pressed? 1 square) - (go fishermans-boat-player-control) - ) - ) - :code (behavior () - (set! (-> self auto-pilot) #f) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (s5-0 1) - (s4-0 (+ (-> self controller table-length) -1)) - ) - (while (>= s4-0 s5-0) - (let ((f30-0 (* (the float s5-0) (-> self controller table-step)))) - (set! (-> self measure-parameters) #t) - (set! (-> self controller steering) 1.0) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 1)) - (let ((f0-6 (/ (fabs (- f30-0 (vector-xz-length (-> self rbody lin-velocity)))) f30-0))) - (if (< 0.05 f0-6) - (set-time! (-> self state-time)) - ) - ) - (fishermans-boat-set-throttle-by-speed f30-0) - (suspend) - ) + :exit + (behavior () + (set! (-> self measure-parameters) #f)) + :trans + (behavior () + (if (cpad-pressed? 1 square) (go fishermans-boat-player-control))) + :code + (behavior () + (set! (-> self auto-pilot) #f) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (s5-0 1) + (s4-0 (+ (-> self controller table-length) -1))) + (while (>= s4-0 s5-0) + (let ((f30-0 (* (the float s5-0) (-> self controller table-step)))) + (set! (-> self measure-parameters) #t) + (set! (-> self controller steering) 1.0) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 1)) + (let ((f0-6 (/ (fabs (- f30-0 (vector-xz-length (-> self rbody lin-velocity)))) f30-0))) + (if (< 0.05 f0-6) (set-time! (-> self state-time)))) + (fishermans-boat-set-throttle-by-speed f30-0) + (suspend)) + (vector-z-quaternion! gp-0 (-> self root-overlay quat)) + (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) + (let ((s3-0 (current-time))) + (until (time-elapsed? s3-0 (seconds 1)) + (fishermans-boat-set-throttle-by-speed f30-0) + (suspend) + (suspend)))) (vector-z-quaternion! gp-0 (-> self root-overlay quat)) (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) - (let ((s3-0 (current-time))) - (until (time-elapsed? s3-0 (seconds 1)) - (fishermans-boat-set-throttle-by-speed f30-0) - (suspend) - (suspend) - ) - ) - ) - (vector-z-quaternion! gp-0 (-> self root-overlay quat)) - (vehicle-controller-method-10 (-> self controller) gp-0 (-> self controller throttle) s5-0) - (+! s5-0 1) - ) - ) - (go fishermans-boat-player-control) - ) - :post fishermans-boat-post - ) + (+! s5-0 1))) + (go fishermans-boat-player-control)) + :post fishermans-boat-post) (defmethod relocate ((this fishermans-boat) (arg0 int)) (relocate (-> this controller) arg0) - (if (nonzero? (-> this propeller)) - (&+! (-> this propeller) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this propeller)) (&+! (-> this propeller) arg0)) + (call-parent-method this arg0)) (defmethod rigid-body-platform-method-30 ((this fishermans-boat)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-others)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -1237,19 +961,15 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) - (append-prim s4-0 s3-0) - ) - ) + (append-prim s4-0 s3-0))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this fishermans-boat)) - (initialize-skeleton this *fishermans-boat-sg* '()) + (initialize-skeleton this *fishermans-boat-sg* ()) (logclear! (-> this mask) (process-mask actor-pause movie)) (logior! (-> this skel status) (janim-status inited)) (process-entity-status! this (entity-perm-status bit-3) #t) @@ -1264,14 +984,7 @@ (add-point! (-> this boat-path) 49971.2 28672.0 2924544.0 -16384.0) (add-point! (-> this boat-path) 175718.4 122880.0 626688.0 -18204.445) (add-point! (-> this boat-path) 50790.4 40960.0 197427.2 32768.0) - (init! - (-> this controller) - (-> this boat-path) - *boat-turning-radius-table* - *boat-throttle-control-table* - 30 - 4096.0 - ) + (init! (-> this controller) (-> this boat-path) *boat-turning-radius-table* *boat-throttle-control-table* 30 4096.0) (set! (-> this propeller) (new 'process 'joint-mod-spinner this 4 (new 'static 'vector :z -1.0 :w 1.0) 0.0)) (set! (-> this ignition) #f) (set! (-> this anchored) #t) @@ -1280,10 +993,7 @@ (set! (-> this debug-draw) #f) (set! (-> this cam-tracker) (the-as handle #f)) (set! (-> this auto-pilot) #f) - (if (= (-> *game-info* current-continue level) 'misty) - (fishermans-boat-set-dock-point 4) - (fishermans-boat-set-dock-point 0) - ) + (if (= (-> *game-info* current-continue level) 'misty) (fishermans-boat-set-dock-point 4) (fishermans-boat-set-dock-point 0)) (fishermans-boat-set-path-point (-> this dock-point-index)) (fishermans-boat-next-path-point) (set! (-> this root-overlay trans quad) (-> this dock-point quad)) @@ -1294,44 +1004,37 @@ (set! (-> v1-39 0 local-pos x) 0.0) (set! (-> v1-39 0 local-pos y) 0.0) (set! (-> v1-39 0 local-pos z) 24576.0) - (set! (-> v1-39 0 local-pos w) 1.0) - ) + (set! (-> v1-39 0 local-pos w) 1.0)) (let ((v1-41 (-> this control-point-array data 1))) (set! (-> v1-41 local-pos x) 22528.0) (set! (-> v1-41 local-pos y) 0.0) (set! (-> v1-41 local-pos z) -20480.0) - (set! (-> v1-41 local-pos w) 1.0) - ) + (set! (-> v1-41 local-pos w) 1.0)) (let ((v1-43 (-> this control-point-array data 2))) (set! (-> v1-43 local-pos x) -22528.0) (set! (-> v1-43 local-pos y) 0.0) (set! (-> v1-43 local-pos z) -20480.0) - (set! (-> v1-43 local-pos w) 1.0) - ) + (set! (-> v1-43 local-pos w) 1.0)) (let ((v1-45 (-> this control-point-array data 3))) (set! (-> v1-45 local-pos x) 0.0) (set! (-> v1-45 local-pos y) 0.0) (set! (-> v1-45 local-pos z) 49152.0) - (set! (-> v1-45 local-pos w) 1.0) - ) + (set! (-> v1-45 local-pos w) 1.0)) (let ((v1-47 (-> this control-point-array data 4))) (set! (-> v1-47 local-pos x) 22528.0) (set! (-> v1-47 local-pos y) 0.0) (set! (-> v1-47 local-pos z) 12288.0) - (set! (-> v1-47 local-pos w) 1.0) - ) + (set! (-> v1-47 local-pos w) 1.0)) (let ((v1-49 (-> this control-point-array data 5))) (set! (-> v1-49 local-pos x) -22528.0) (set! (-> v1-49 local-pos y) 0.0) (set! (-> v1-49 local-pos z) 12288.0) - (set! (-> v1-49 local-pos w) 1.0) - ) + (set! (-> v1-49 local-pos w) 1.0)) (let ((v1-50 (-> this stabilizer-array))) (set! (-> v1-50 0 local-pos x) 16384.0) (set! (-> v1-50 0 local-pos y) 20480.0) (set! (-> v1-50 0 local-pos z) -32768.0) - (set! (-> v1-50 0 local-pos w) 1.0) - ) + (set! (-> v1-50 0 local-pos w) 1.0)) (set-vector! (-> this stabilizer-array 1 local-pos) -16384.0 20480.0 -32768.0 1.0) (set-vector! (-> this stabilizer-array 0 normal) 0.0 0.75 0.2 1.0) (set-vector! (-> this stabilizer-array 1 normal) 0.0 0.75 0.2 1.0) @@ -1345,17 +1048,9 @@ (set! (-> this draw origin-joint-index) (the-as uint 3)) (let ((a0-29 (-> this entity))) (if (when a0-29 - (let ((a0-30 (-> a0-29 extra perm task))) - (if a0-30 - (= a0-30 (game-task none)) - ) - ) - ) - (set! (-> this entity extra perm task) (game-task complete)) - ) - ) - (none) - ) + (let ((a0-30 (-> a0-29 extra perm task))) (if a0-30 (= a0-30 (game-task none))))) + (set! (-> this entity extra perm task) (game-task complete)))) + (none)) (defmethod init-from-entity! ((this fishermans-boat) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) @@ -1363,197 +1058,145 @@ (rigid-body-platform-method-30 this) (process-drawable-from-entity! this arg0) (rigid-body-platform-method-31 this) - (if (= (-> *game-info* current-continue level) 'misty) - (go fishermans-boat-docked-misty) - (go fishermans-boat-docked-village) - ) - (none) - ) + (if (= (-> *game-info* current-continue level) 'misty) (go fishermans-boat-docked-misty) (go fishermans-boat-docked-village)) + (none)) (defbehavior fishermans-boat-reset-physics fishermans-boat () - (rigid-body-method-22 - (-> self rbody) - (-> self root-overlay trans) - (-> self root-overlay quat) - (-> self info linear-damping) - (-> self info angular-damping) - ) + (rigid-body-method-22 (-> self rbody) + (-> self root-overlay trans) + (-> self root-overlay quat) + (-> self info linear-damping) + (-> self info angular-damping)) (vector-reset! (-> self player-force)) (set! (-> self player-impulse) #f) (set! (-> self player-contact) #f) 0 - (none) - ) + (none)) (defstate fishermans-boat-ride-to-misty (fishermans-boat) - :code (behavior () - (set! (-> self propeller enable) #f) - (quaternion-identity! (-> self root-overlay quat)) - (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) - (set! (-> self player-riding) #f) - (set! (-> self auto-pilot) #f) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) - (send-event (ppointer->process v1-20) 'mask 2048) - ) - (set! (-> self draw force-lod) 0) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim fishermans-boat-idle-ja) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! (-> self draw force-lod) -1) - (send-event *target* 'blend-shape #f) - (ja-channel-set! 1) - (ja :group! fishermans-boat-idle-ja) - (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) - (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) - (fishermans-boat-reset-physics) - (transform-post) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root-overlay)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (set-continue! *game-info* "misty-start") - ) - (set! (-> self waiting-for-player) #t) - (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - (set! (-> self propeller enable) #t) - (fishermans-boat-play-sounds) - (apply-settings *setting-control*) - (process-spawn-function - process - (lambda :behavior fishermans-boat - () - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) - (suspend) - ) - ) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) + :code + (behavior () + (set! (-> self propeller enable) #f) + (quaternion-identity! (-> self root-overlay quat)) + (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) + (set! (-> self player-riding) #f) + (set! (-> self auto-pilot) #f) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) (send-event (ppointer->process v1-20) 'mask 2048)) + (set! (-> self draw force-lod) 0) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim fishermans-boat-idle-ja) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (set! (-> self draw force-lod) -1) + (send-event *target* 'blend-shape #f) + (ja-channel-set! 1) + (ja :group! fishermans-boat-idle-ja) + (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) + (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) + (fishermans-boat-reset-physics) + (transform-post) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root-overlay)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) (suspend) - ) - (suspend) - (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) - (none) - ) - :to self - ) - (go fishermans-boat-docked-misty) - ) - :post (behavior () - (ja-post) - (fishermans-boat-spawn-particles 81920.0) - (fishermans-boat-play-sounds) - ) - ) + (send-event *camera* 'teleport-to-other-start-string)) + (set-continue! *game-info* "misty-start")) + (set! (-> self waiting-for-player) #t) + (set! (-> self ignition) #f) + (set! (-> self anchored) #t) + (set! (-> self propeller enable) #t) + (fishermans-boat-play-sounds) + (apply-settings *setting-control*) + (process-spawn-function process + (lambda :behavior fishermans-boat () + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (while (or (-> *setting-control* current ambient) (-> *setting-control* current hint) (-> *setting-control* current movie)) + (suspend)) + (suspend) + (level-hint-spawn (text-id sidekick-misty) "sksp0060" (the-as entity #f) *entity-pool* (game-task none)) + (none)) + :to + self) + (go fishermans-boat-docked-misty)) + :post + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds))) (defstate fishermans-boat-ride-to-village1 (fishermans-boat) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('evilbro) - (when (= (level-status *level* 'intro) 'active) - (let ((gp-1 (entity-by-name "evilbro-2"))) - (when gp-1 - (set! (-> self evilbro) - (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-1 *fb-evilbro-sg* #f :to self)) - ) - (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilbro)) 'blend-shape #t) - (send-event (handle->process (-> self evilbro)) 'center-joint 3) - ) - ) - (let ((gp-2 (entity-by-name "evilsis-2"))) - (when gp-2 - (set! (-> self evilsis) - (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-2 *fb-evilsis-sg* #f :to self)) - ) - (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self evilsis)) 'blend-shape #t) - (send-event (handle->process (-> self evilsis)) 'center-joint 3) - ) - ) - ) - ) - (('evilsis) - (let ((a0-44 (handle->process (-> self evilbro)))) - (if a0-44 - (deactivate a0-44) - ) - ) - (let ((a0-48 (handle->process (-> self evilsis)))) - (if a0-48 - (deactivate a0-48) - ) - ) - ) - ) - ) - :code (behavior () - (set! (-> self propeller enable) #f) - (set! (-> self evilbro) (the-as handle #f)) - (set! (-> self evilsis) (the-as handle #f)) - (quaternion-identity! (-> self root-overlay quat)) - (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) - (set! (-> self player-riding) #f) - (set! (-> self auto-pilot) #f) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) - (send-event (ppointer->process v1-20) 'mask 2048) - ) - (set! (-> self draw force-lod) 0) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim fishermans-boat-idle-ja) - (the-as art-joint-anim #f) - (the-as (function process-drawable symbol) false-func) - ) - (set! (-> self draw force-lod) -1) - (send-event *target* 'blend-shape #f) - (ja-channel-set! 1) - (ja :group! fishermans-boat-idle-ja) - (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) - (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) - (fishermans-boat-reset-physics) - (transform-post) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root-overlay)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (set-continue! *game-info* "village1-hut") - ) - (set! (-> self waiting-for-player) #t) - (set! (-> self ignition) #f) - (set! (-> self anchored) #t) - (set! (-> self propeller enable) #t) - (fishermans-boat-play-sounds) - (process-entity-status! self (entity-perm-status complete) #t) - (go fishermans-boat-docked-village) - ) - :post (behavior () - (ja-post) - (fishermans-boat-spawn-particles 81920.0) - (fishermans-boat-play-sounds) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('evilbro) + (when (= (level-status *level* 'intro) 'active) + (let ((gp-1 (entity-by-name "evilbro-2"))) + (when gp-1 + (set! (-> self evilbro) (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-1 *fb-evilbro-sg* #f :to self))) + (send-event (handle->process (-> self evilbro)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilbro)) 'blend-shape #t) + (send-event (handle->process (-> self evilbro)) 'center-joint 3))) + (let ((gp-2 (entity-by-name "evilsis-2"))) + (when gp-2 + (set! (-> self evilsis) (ppointer->handle (manipy-spawn (-> self root-overlay trans) gp-2 *fb-evilsis-sg* #f :to self))) + (send-event (handle->process (-> self evilsis)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self evilsis)) 'blend-shape #t) + (send-event (handle->process (-> self evilsis)) 'center-joint 3))))) + (('evilsis) + (let ((a0-44 (handle->process (-> self evilbro)))) (if a0-44 (deactivate a0-44))) + (let ((a0-48 (handle->process (-> self evilsis)))) (if a0-48 (deactivate a0-48)))))) + :code + (behavior () + (set! (-> self propeller enable) #f) + (set! (-> self evilbro) (the-as handle #f)) + (set! (-> self evilsis) (the-as handle #f)) + (quaternion-identity! (-> self root-overlay quat)) + (set! (-> self root-overlay trans quad) (-> self entity extra trans quad)) + (set! (-> self player-riding) #f) + (set! (-> self auto-pilot) #f) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (let ((v1-20 (process-spawn othercam self 5 #f #t :to self))) (send-event (ppointer->process v1-20) 'mask 2048)) + (set! (-> self draw force-lod) 0) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim fishermans-boat-idle-ja) + (the-as art-joint-anim #f) + (the-as (function process-drawable symbol) false-func)) + (set! (-> self draw force-lod) -1) + (send-event *target* 'blend-shape #f) + (ja-channel-set! 1) + (ja :group! fishermans-boat-idle-ja) + (vector<-cspace! (-> self root-overlay trans) (joint-node fishermans-boat-lod0-jg main)) + (matrix->quaternion (-> self root-overlay quat) (-> self node-list data 3 bone transform)) + (fishermans-boat-reset-physics) + (transform-post) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root-overlay)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (set-continue! *game-info* "village1-hut")) + (set! (-> self waiting-for-player) #t) + (set! (-> self ignition) #f) + (set! (-> self anchored) #t) + (set! (-> self propeller enable) #t) + (fishermans-boat-play-sounds) + (process-entity-status! self (entity-perm-status complete) #t) + (go fishermans-boat-docked-village)) + :post + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds))) diff --git a/goal_src/jak1/levels/village1/sage.gc b/goal_src/jak1/levels/village1/sage.gc index 0912c661ec..e54c176e8a 100644 --- a/goal_src/jak1/levels/village1/sage.gc +++ b/goal_src/jak1/levels/village1/sage.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "levels/village1/assistant.gc") ;; name: sage.gc @@ -11,39 +10,36 @@ ;; DECOMP BEGINS (deftype sage (process-taskable) - ((reminder-played basic) - (assistant handle) - ) - ) + ((reminder-played basic) + (assistant handle))) - -(defskelgroup *sage-sg* sage sage-lod0-jg sage-idle-ecorocks-breathe-ja - ((sage-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sage-shadow-mg - ) +(defskelgroup *sage-sg* + sage + sage-lod0-jg + sage-idle-ecorocks-breathe-ja + ((sage-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sage-shadow-mg) (defmethod play-anim! ((this sage) (arg0 symbol)) (when (!= *kernel-boot-message* 'play) (close-specific-task! (game-task intro) (task-status need-resolution)) - (return (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list '((1 blackout 0) - (100 want-levels village1 misty) - (261 joint "cameraB") - (521 joint "camera") - (776 joint "cameraB") - (810 joint "camera") - (1171 joint "cameraB") - (1235 joint "camera") - (1235 save) - (1418 blackout 30) - ) - ) - ) - ) + (return (new 'static + 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((1 blackout 0) + (100 want-levels village1 misty) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera") + (1235 save) + (1418 blackout 30))))) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) (case (current-task (-> this tasks)) @@ -51,489 +47,367 @@ (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (set-setting! 'music-volume-movie 'abs 0.0 0) - (apply-settings *setting-control*) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d1" - :index 16 - :parts 17 - :command-list '((0 display-level misty #f) - (0 display-level village1 display) - (0 want-vis vi1) - (0 save) - (0 want-force-inside village1 #t) - (0 want-force-vis village1 #t) - (0 kill "assistant-11") - (0 kill "reflector-middle-2") - (0 kill "eco-11") - (0 kill "eco-10") - (0 kill "sharkey-12") - (0 kill "reflector-end-1") - (0 kill "water-vol-10") - (0 kill "water-vol-8") - (0 kill "water-vol-7") - (0 kill "fishermans-boat-2") - (0 kill "revcycleprop-2") - (0 kill "revcycle-8") - (0 kill "ropebridge-5") - (0 kill "ropebridge-4") - (0 kill "villagea-water-2") - (0 time-of-day 7) - (1 time-of-day -1) - (3 blackout 0) - (25 blackout 0) - (25 want-force-vis village1 #f) - (56 joint "cameraB") - (100 want-force-inside village1 #f) - (107 joint "camera") - (137 joint "cameraB") - (202 joint "camera") - (286 joint "cameraB") - (554 joint "camera") - (633 joint "cameraB") - (711 joint "camera") - (796 joint "cameraB") - (921 joint "camera") - (1021 shadow self #f) - (1021 joint "cameraB") - (1081 joint "camera") - (1183 joint "cameraB") - (1221 joint "camera") - (1496 shadow self #t) - (1496 joint "cameraB") - (1496 time-of-day 18) - (1721 joint "camera") - (1721 time-of-day 7) - (1722 time-of-day -1) - ) - ) - ) + (apply-settings *setting-control*)) + (new 'static + 'spool-anim + :name "sage-intro-sequence-d1" + :index 16 + :parts 17 + :command-list + '((0 display-level misty #f) + (0 display-level village1 display) + (0 want-vis vi1) + (0 save) + (0 want-force-inside village1 #t) + (0 want-force-vis village1 #t) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (0 kill "ropebridge-5") + (0 kill "ropebridge-4") + (0 kill "villagea-water-2") + (0 time-of-day 7) + (1 time-of-day -1) + (3 blackout 0) + (25 blackout 0) + (25 want-force-vis village1 #f) + (56 joint "cameraB") + (100 want-force-inside village1 #f) + (107 joint "camera") + (137 joint "cameraB") + (202 joint "camera") + (286 joint "cameraB") + (554 joint "camera") + (633 joint "cameraB") + (711 joint "camera") + (796 joint "cameraB") + (921 joint "camera") + (1021 shadow self #f) + (1021 joint "cameraB") + (1081 joint "camera") + (1183 joint "cameraB") + (1221 joint "camera") + (1496 shadow self #t) + (1496 joint "cameraB") + (1496 time-of-day 18) + (1721 joint "camera") + (1721 time-of-day 7) + (1722 time-of-day -1)))) (((game-task beach-ecorocks)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-e" - :index 14 - :parts 13 - :command-list '((0 want-levels village1 beach) - (0 blackout 0) - (197 joint "cameraB") - (361 joint "camera") - (660 joint "cameraB") - (937 display-level beach movie) - (937 want-force-vis beach #t) - (938 alive "ecoventrock-3") - (938 alive "ecoventrock-4") - (938 alive "ecoventrock-5") - (938 alive "ecoventrock-6") - (938 alive "ecoventrock-7") - (938 alive "harvester-87") - (938 alive "harvester-88") - (938 alive "harvester-89") - (938 alive "harvester-90") - (938 alive "harvester-91") - (940 joint "camera") - (1160 joint "cameraB") - (1162 dead "ecoventrock-3") - (1162 dead "ecoventrock-4") - (1162 dead "ecoventrock-5") - (1162 dead "ecoventrock-6") - (1162 dead "ecoventrock-7") - (1162 dead "harvester-87") - (1162 dead "harvester-88") - (1162 dead "harvester-89") - (1162 dead "harvester-90") - (1162 dead "harvester-91") - (1310 joint "camera") - (1313 want-force-vis beach #f) - (1313 display-level beach #f) - (1313 send-event "warp-gate-switch-3" 'hide) - ) - ) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-intro-sequence-e" + :index 14 + :parts 13 + :command-list + '((0 want-levels village1 beach) + (0 blackout 0) + (197 joint "cameraB") + (361 joint "camera") + (660 joint "cameraB") + (937 display-level beach movie) + (937 want-force-vis beach #t) + (938 alive "ecoventrock-3") + (938 alive "ecoventrock-4") + (938 alive "ecoventrock-5") + (938 alive "ecoventrock-6") + (938 alive "ecoventrock-7") + (938 alive "harvester-87") + (938 alive "harvester-88") + (938 alive "harvester-89") + (938 alive "harvester-90") + (938 alive "harvester-91") + (940 joint "camera") + (1160 joint "cameraB") + (1162 dead "ecoventrock-3") + (1162 dead "ecoventrock-4") + (1162 dead "ecoventrock-5") + (1162 dead "ecoventrock-6") + (1162 dead "ecoventrock-7") + (1162 dead "harvester-87") + (1162 dead "harvester-88") + (1162 dead "harvester-89") + (1162 dead "harvester-90") + (1162 dead "harvester-91") + (1310 joint "camera") + (1313 want-force-vis beach #f) + (1313 display-level beach #f) + (1313 send-event "warp-gate-switch-3" 'hide)))) (else - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list '((0 want-levels village1 beach) - (261 joint "cameraB") - (521 joint "camera") - (776 joint "cameraB") - (810 joint "camera") - (1171 joint "cameraB") - (1235 joint "camera") - ) - ) - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((0 want-levels village1 beach) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (if arg0 - (set! (-> this reminder-played) #t) - ) + (if arg0 (set! (-> this reminder-played) #t)) (case (get-reminder (-> this tasks) 0) - ((3) - (new 'static 'spool-anim :name "sage-reminder-2-generic" :index 13 :parts 4 :command-list '()) - ) - ((2) - (new 'static 'spool-anim :name "sage-reminder-1-generic" :index 12 :parts 3 :command-list '()) - ) + ((3) (new 'static 'spool-anim :name "sage-reminder-2-generic" :index 13 :parts 4 :command-list ())) + ((2) (new 'static 'spool-anim :name "sage-reminder-1-generic" :index 12 :parts 3 :command-list ())) ((1) - (new 'static 'spool-anim - :name "sage-reminder-1-misty-cannon" - :index 9 - :parts 5 - :command-list '((86 joint "cameraB") (320 joint "camera")) - ) - ) + (new 'static + 'spool-anim + :name "sage-reminder-1-misty-cannon" + :index 9 + :parts 5 + :command-list + '((86 joint "cameraB") (320 joint "camera")))) (else - (new 'static 'spool-anim - :name "sage-reminder-1-ecorocks" - :index 11 - :parts 4 - :command-list '((0 want-levels village1 beach) - (245 display-level beach movie) - (245 want-force-vis beach #t) - (246 alive "ecoventrock-3") - (246 alive "ecoventrock-4") - (246 alive "ecoventrock-5") - (246 alive "ecoventrock-6") - (246 alive "ecoventrock-7") - (246 alive "harvester-87") - (246 alive "harvester-88") - (246 alive "harvester-89") - (246 alive "harvester-90") - (246 alive "harvester-91") - (246 joint "cameraB") - (365 want-force-vis beach #f) - (365 display-level beach #f) - (366 joint "camera") - ) - ) - ) - ) - ) + (new 'static + 'spool-anim + :name "sage-reminder-1-ecorocks" + :index 11 + :parts 4 + :command-list + '((0 want-levels village1 beach) + (245 display-level beach movie) + (245 want-force-vis beach #t) + (246 alive "ecoventrock-3") + (246 alive "ecoventrock-4") + (246 alive "ecoventrock-5") + (246 alive "ecoventrock-6") + (246 alive "ecoventrock-7") + (246 alive "harvester-87") + (246 alive "harvester-88") + (246 alive "harvester-89") + (246 alive "harvester-90") + (246 alive "harvester-91") + (246 joint "cameraB") + (365 want-force-vis beach #f) + (365 display-level beach #f) + (366 joint "camera")))))) (((task-status need-reward-speech)) (when arg0 (set-setting! 'music-volume-movie 'abs 0.0 0) (apply-settings *setting-control*) (close-status! (-> this tasks) (task-status need-reward-speech)) (set! (-> this assistant) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *assistant-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *assistant-sg* #f :to this))) (send-event (handle->process (-> this assistant)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this assistant)) 'blend-shape #t) (send-event (handle->process (-> this assistant)) 'center-joint 3) (let ((v1-68 (handle->process (-> this assistant)))) - (if v1-68 - (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)) - ) - ) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d2" - :index 15 - :parts 20 - :command-list '((0 want-levels village1 beach) - (0 kill "assistant-11") - (0 kill "reflector-middle-2") - (0 kill "eco-11") - (0 kill "eco-10") - (0 kill "sharkey-12") - (0 kill "reflector-end-1") - (0 kill "water-vol-10") - (0 kill "water-vol-8") - (0 kill "water-vol-7") - (0 kill "fishermans-boat-2") - (0 kill "revcycleprop-2") - (0 kill "revcycle-8") - (113 joint "cameraB") - (232 joint "camera") - (289 joint "cameraB") - (338 joint "camera") - (405 joint "cameraB") - (560 joint "camera") - (660 joint "cameraB") - (699 joint "camera") - (837 joint "cameraB") - (837 shadow self #f) - (910 joint "camera") - (945 alive "farmer-3") - (945 alive "hutlamp-2") - (950 joint "cameraB") - (974 display-level beach movie) - (974 want-force-vis beach #t) - (1011 alive "bird-lady-4") - (1015 joint "camera") - (1018 dead "farmer-3") - (1018 dead "hutlamp-2") - (1075 alive "explorer-4") - (1080 joint "cameraB") - (1080 want-force-vis beach #f) - (1080 display-level beach #f) - (1082 dead "bird-lady-4") - (1133 joint "camera") - (1135 dead "explorer-4") - (1244 display-level beach movie) - (1244 want-force-vis beach #t) - (1245 alive "fuel-cell-42") - (1246 joint "cameraB") - (1369 joint "camera") - (1438 alive "fuel-cell-42") - (1438 want-force-vis beach #f) - (1438 dead "fuel-cell-42") - (1438 kill "villagea-water-2") - (1438 kill "crate-3147") - (1438 kill "crate-3146") - (1438 kill "crate-3143") - (1438 kill "sagesail-6") - (1438 kill "windmill-sail-4") - (1438 kill "ropebridge-4") - (1438 kill "ropebridge-5") - (1438 kill "windspinner-8") - (1438 kill "windspinner-9") - (1438 joint "cameraB") - (1439 want-levels village1 training) - (1439 save) - (1529 joint "camera") - (1691 joint "cameraB") - (1753 joint "camera") - (1874 joint "cameraB") - (2057 joint "camera") - (2176 joint "cameraB") - (2226 joint "camera") - (2226 shadow self #t) - ) - ) - ) + (if v1-68 (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)))) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-intro-sequence-d2" + :index 15 + :parts 20 + :command-list + '((0 want-levels village1 beach) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (113 joint "cameraB") + (232 joint "camera") + (289 joint "cameraB") + (338 joint "camera") + (405 joint "cameraB") + (560 joint "camera") + (660 joint "cameraB") + (699 joint "camera") + (837 joint "cameraB") + (837 shadow self #f) + (910 joint "camera") + (945 alive "farmer-3") + (945 alive "hutlamp-2") + (950 joint "cameraB") + (974 display-level beach movie) + (974 want-force-vis beach #t) + (1011 alive "bird-lady-4") + (1015 joint "camera") + (1018 dead "farmer-3") + (1018 dead "hutlamp-2") + (1075 alive "explorer-4") + (1080 joint "cameraB") + (1080 want-force-vis beach #f) + (1080 display-level beach #f) + (1082 dead "bird-lady-4") + (1133 joint "camera") + (1135 dead "explorer-4") + (1244 display-level beach movie) + (1244 want-force-vis beach #t) + (1245 alive "fuel-cell-42") + (1246 joint "cameraB") + (1369 joint "camera") + (1438 alive "fuel-cell-42") + (1438 want-force-vis beach #f) + (1438 dead "fuel-cell-42") + (1438 kill "villagea-water-2") + (1438 kill "crate-3147") + (1438 kill "crate-3146") + (1438 kill "crate-3143") + (1438 kill "sagesail-6") + (1438 kill "windmill-sail-4") + (1438 kill "ropebridge-4") + (1438 kill "ropebridge-5") + (1438 kill "windspinner-8") + (1438 kill "windspinner-9") + (1438 joint "cameraB") + (1439 want-levels village1 training) + (1439 save) + (1529 joint "camera") + (1691 joint "cameraB") + (1753 joint "camera") + (1874 joint "cameraB") + (2057 joint "camera") + (2176 joint "cameraB") + (2226 joint "camera") + (2226 shadow self #t)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod process-taskable-method-45 ((this sage)) (cond ((and (closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 0) - ) - #t - ) + (= (get-reminder (-> this tasks) 0) 0)) + #t) ((and (closed? (-> this tasks) (game-task misty-cannon) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 1) - ) - #t - ) - ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) - #t - ) - (else - #f - ) - ) - ) + (= (get-reminder (-> this tasks) 0) 1)) + #t) + ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) #t) + (else #f))) (defmethod get-art-elem ((this sage)) (cond ((and (= (current-task (-> this tasks)) (game-task beach-ecorocks)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 0 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) ((and (= (current-task (-> this tasks)) (game-task misty-cannon)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 1 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 1 0)) ((process-taskable-method-45 this) (set! (-> this reminder-played) #f) (cond ((= (current-task (-> this tasks)) (game-task none)) (case (get-reminder (-> this tasks) 0) - ((2) - (save-reminder (-> this tasks) 3 0) - ) - (else - (save-reminder (-> this tasks) 2 0) - ) - ) - ) - ((closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) - (save-reminder (-> this tasks) 1 0) - ) + ((2) (save-reminder (-> this tasks) 3 0)) + (else (save-reminder (-> this tasks) 2 0)))) + ((closed? (-> this tasks) (game-task beach-ecorocks) (task-status need-reminder)) (save-reminder (-> this tasks) 1 0)) ((or (closed? (-> this tasks) (game-task misty-cannon) (task-status need-reminder)) - (not (closed? (-> this tasks) (game-task misty-cannon) (task-status need-introduction))) - ) - (save-reminder (-> this tasks) 0 0) - ) - ((zero? (get-reminder (-> this tasks) 0)) - (save-reminder (-> this tasks) 1 0) - ) - (else - (save-reminder (-> this tasks) 0 0) - ) - ) - ) - ) + (not (closed? (-> this tasks) (game-task misty-cannon) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) + ((zero? (get-reminder (-> this tasks) 0)) (save-reminder (-> this tasks) 1 0)) + (else (save-reminder (-> this tasks) 0 0))))) (case (get-reminder (-> this tasks) 0) - ((3) - (-> this draw art-group data 7) - ) - ((2) - (-> this draw art-group data 6) - ) - ((1) - (-> this draw art-group data 3) - ) - (else - (-> this draw art-group data 4) - ) - ) - ) + ((3) (-> this draw art-group data 7)) + ((2) (-> this draw art-group data 6)) + ((1) (-> this draw art-group data 3)) + (else (-> this draw art-group data 4)))) (defmethod process-taskable-method-43 ((this sage)) - (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this)) - ) + (let ((s5-0 (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this))) (when s5-0 (let ((f0-2 (rand-float-gen))) (cond - ((< (-> s5-0 y) -12288.0) - #f - ) - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "SAGELP03" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "SAGELP04" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "SAGELP05" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "SAGELP06" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "SAGELP11" #f (-> this root trans)) - ) - ) - ) - ) - ) - ) + ((< (-> s5-0 y) -12288.0) #f) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "SAGELP03" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "SAGELP04" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "SAGELP05" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "SAGELP06" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "SAGELP11" #f (-> this root trans)))))))) (defstate idle (sage) :virtual #t - :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (if (process-grab? *target*) - (send-event self 'play-anim) - ) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.2)) - ) - (loop - (ja :group! (get-art-elem self)) - (let* ((f30-0 3.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (process-taskable-method-43 self) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + :trans + (behavior () + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) (if (process-grab? *target*) (send-event self 'play-anim)))) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2))) + (loop (ja :group! (get-art-elem self)) + (let* ((f30-0 3.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (process-taskable-method-43 self) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (and (-> self reminder-played) (< 81920.0 (vector-vector-distance (-> self root trans) (camera-pos)))) + (go-virtual idle)) + (suspend) + (ja :num! (seek!))))) + (when (ja-group? sage-idle-ecorocks-breathe-ja) + (ja-no-eval :group! sage-idle-ecorocks-peer-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) - (if (and (-> self reminder-played) (< 81920.0 (vector-vector-distance (-> self root trans) (camera-pos)))) - (go-virtual idle) - ) (suspend) - (ja :num! (seek!)) - ) - ) - ) - (when (ja-group? sage-idle-ecorocks-breathe-ja) - (ja-no-eval :group! sage-idle-ecorocks-peer-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) + (ja :num! (seek!))))))) (defstate play-anim (sage) :virtual #t - :exit (behavior () - (set! (-> self draw bounds w) 10240.0) - (let ((a0-1 (handle->process (-> self assistant)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ;; og:preserve-this - (#when PC_PORT - ;; extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) - (= (current-task (-> self tasks)) (game-task intro))) + :exit + (behavior () + (set! (-> self draw bounds w) 10240.0) + (let ((a0-1 (handle->process (-> self assistant)))) (if a0-1 (deactivate a0-1))) + ((-> (method-of-type process-taskable play-anim) exit)) + ;; og:preserve-this + (#when PC_PORT + ;; extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) + (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1))) + (= (current-task (-> self tasks)) (game-task intro))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (return #f) - ) - ) - (case (get-task-status (game-task intro)) - (((task-status need-resolution)) - (remove-setting! 'music-volume-movie) - (close-specific-task! (game-task intro) (task-status need-resolution)) - (start 'play (get-continue-by-name *game-info* "game-start")) - ) - ) - ) - :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0) - ) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (return #f))) + (case (get-task-status (game-task intro)) + (((task-status need-resolution)) + (remove-setting! 'music-volume-movie) + (close-specific-task! (game-task intro) (task-status need-resolution)) + (start 'play (get-continue-by-name *game-info* "game-start"))))) + :trans + (behavior () + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0))) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sage)) - (not (sages-kidnapped?)) - ) + (not (sages-kidnapped?))) (defmethod initialize-collision ((this sage) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -552,8 +426,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s4-0 s2-0) - ) + (append-prim s4-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -561,16 +434,12 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) arg0) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) - (append-prim s4-0 s2-1) - ) - ) + (append-prim s4-0 s2-1))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this sage) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-sg* 3 40 (new 'static 'vector :w 4096.0) 5) @@ -580,5 +449,4 @@ (set! (-> this assistant) (the-as handle #f)) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/sequence-a-village1.gc b/goal_src/jak1/levels/village1/sequence-a-village1.gc index 15609f64fe..10365d90d9 100644 --- a/goal_src/jak1/levels/village1/sequence-a-village1.gc +++ b/goal_src/jak1/levels/village1/sequence-a-village1.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/common-obs/process-taskable.gc") (require "engine/ui/credits.gc") @@ -18,31 +17,29 @@ :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2854 :period (seconds 3) :length (seconds 2))) - ) + :parts ((sp-item 2854 :period (seconds 3) :length (seconds 2)))) (defpart 2854 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 128.0) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 0.025) (meters 0.125)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 96.0 64.0) - (:b 64.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.026666667) (meters 0.053333335)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.00066666666) (meters -0.0016666667)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 5000)) - (:conerot-radius (meters 0.3) (meters -0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 128.0) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 0.025) (meters 0.125)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 96.0 64.0) + (:b 64.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.026666667) (meters 0.053333335)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.00066666666) (meters -0.0016666667)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 5000)) + (:conerot-radius (meters 0.3) (meters -0.5)))) (defpartgroup group-sequenceAV-spit :id 687 @@ -50,161 +47,148 @@ :linger-duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2855)) - ) + :parts ((sp-item 2855))) (defpart 2855 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 5.0) - (:scale-x (meters 0.025) (meters 0.025)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 32.0) - (:g 128.0 32.0) - (:b 128.0 32.0) - (:a 32.0 32.0) - (:vel-y (meters 0.016666668) (meters 0.0033333334)) - (:scalevel-x (meters 0.00033333333)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 1)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 106) (degrees 2)) - (:conerot-y (degrees 90) (degrees 2)) - (:conerot-radius (meters 0) (meters -0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 5.0) + (:scale-x (meters 0.025) (meters 0.025)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 32.0) + (:g 128.0 32.0) + (:b 128.0 32.0) + (:a 32.0 32.0) + (:vel-y (meters 0.016666668) (meters 0.0033333334)) + (:scalevel-x (meters 0.00033333333)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 1)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 106) (degrees 2)) + (:conerot-y (degrees 90) (degrees 2)) + (:conerot-radius (meters 0) (meters -0.15)))) ;; og:preserve-this PAL patch here (defpartgroup group-sequenceAV-2d-intro-mist :id 688 :flags (screen-space) :bounds (static-bspherem 0 0 0 2) - :parts ((sp-item 2858 :period (seconds 1) :length (seconds 0.017) :binding 2856) - (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) - (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) - (sp-item 2857 :flags (start-dead)) - (sp-item 2857 :flags (start-dead)) - (sp-item 2857 :flags (start-dead)) - (sp-item 2859) - (sp-item 2860 :flags (bit6)) - ) - ) + :parts + ((sp-item 2858 :period (seconds 1) :length (seconds 0.017) :binding 2856) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2859) + (sp-item 2860 :flags (bit6)))) (defpart 2858 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -2.5) (meters 5)) - (:y (meters -1.5) (meters 3)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:conerot-z (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -2.5) (meters 5)) + (:y (meters -1.5) (meters 3)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:conerot-z (degrees 0) (degrees 360)))) (defpart 2856 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.5) (meters 0.2)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) - (:scalevel-x (meters -0.0012121212)) - (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.5) (meters 0.2)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.053333335) 1 (meters 0.10666667)) + (:scalevel-x (meters -0.0012121212)) + (:rotvel-z (degrees -0.3) 1 (degrees 0.6)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 2857 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5) (meters 0.3)) - (:scale-y :copy scale-x) - (:r 32.0 96.0) - (:g 0.0 32.0) - (:b 64.0 32.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.0010952381)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters 0) (meters -0.000033333334)) - (:timer (seconds 0.1) (seconds 0.997)) - (:flags (bit2 bit3)) - (:next-time (seconds 0.8)) - (:next-launcher 198) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.3)) + (:scale-y :copy scale-x) + (:r 32.0 96.0) + (:g 0.0 32.0) + (:b 64.0 32.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.0010952381)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters 0) (meters -0.000033333334)) + (:timer (seconds 0.1) (seconds 0.997)) + (:flags (bit2 bit3)) + (:next-time (seconds 0.8)) + (:next-launcher 198))) (defpart 2860 - :init-specs ((:texture (new 'static 'texture-id :index #x36 :page #x2)) - (:num 1.0) - (:z (meters -3.90625)) - (:scale-x (meters 15)) - (:scale-y (meters 12)) - (:r 0.0) - (:g 0.0) - (:b 0.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit13 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x36 :page #x2)) + (:num 1.0) + (:z (meters -3.90625)) + (:scale-x (meters 15)) + (:scale-y (meters 12)) + (:r 0.0) + (:g 0.0) + (:b 0.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit13 bit14)))) (defpart 2859 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -4) (meters 8)) - (:y (meters -3) (meters 6)) - (:z (meters 0) (meters 3.4179688)) - (:scale-x (meters 6) (meters 8)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 6) (meters 8)) - (:r 16.0 80.0) - (:g 0.0 16.0) - (:b 16.0 150.0) - (:a 0.0) - (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) - (:rotvel-z (degrees -0.075) (degrees 0.15)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.497)) - (:next-launcher 2861) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -4) (meters 8)) + (:y (meters -3) (meters 6)) + (:z (meters 0) (meters 3.4179688)) + (:scale-x (meters 6) (meters 8)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 6) (meters 8)) + (:r 16.0 80.0) + (:g 0.0 16.0) + (:b 16.0 150.0) + (:a 0.0) + (:scalevel-x (meters -0.0016666667) (meters 0.0033333334)) + (:rotvel-z (degrees -0.075) (degrees 0.15)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.497)) + (:next-launcher 2861))) (defpart 2861 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2862)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 2862))) (defpart 2862 - :init-specs ((:fade-a -0.21333334)) - ) + :init-specs ((:fade-a -0.21333334))) (deftype sequenceA-village1 (process-taskable) - ((boat handle) - (side handle) - ) - ) - + ((boat handle) + (side handle))) (defmethod play-anim! ((this sequenceA-village1) (arg0 symbol)) (when arg0 @@ -216,160 +200,118 @@ (send-event *camera* 'change-state cam-fixed 0) (send-event *target* 'sidekick #f) (set! (-> this boat) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *fishermans-boat-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *fishermans-boat-sg* #f :to this))) (send-event (handle->process (-> this boat)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> this boat)) 'origin-joint-index 3) - ) + (send-event (handle->process (-> this boat)) 'origin-joint-index 3)) ;; og:preserve-this PAL patch here - (the-as basic (new 'static 'spool-anim - :name "sage-intro-sequence-a" - :index 17 - :parts 22 - :command-list '((0 blackout 0) - (0 want-levels village1 misty) - (1120 send-event self pause) - (1210 display-level misty display) - (1210 want-vis mis) - (1210 want-force-vis misty #t) - (1230 send-event self sidekick-human) - (1239 joint "cameraB") - (1480 joint "camera") - (1480 setting-reset ocean-off near) - (1613 joint "cameraB") - (1796 joint "camera") - (1843 joint "cameraB") - (2145 joint "camera") - (2274 joint "cameraB") - (2439 joint "camera") - (2450 want-force-vis misty #f) - (2490 joint "cameraB") - (2570 alive "sequenceB-1") - (2569 save) - (2569 setting-unset ocean-off) - ) - ) - ) - ) + (the-as basic + (new 'static + 'spool-anim + :name "sage-intro-sequence-a" + :index 17 + :parts 22 + :command-list + '((0 blackout 0) + (0 want-levels village1 misty) + (1120 send-event self pause) + (1210 display-level misty display) + (1210 want-vis mis) + (1210 want-force-vis misty #t) + (1230 send-event self sidekick-human) + (1239 joint "cameraB") + (1480 joint "camera") + (1480 setting-reset ocean-off near) + (1613 joint "cameraB") + (1796 joint "camera") + (1843 joint "cameraB") + (2145 joint "camera") + (2274 joint "cameraB") + (2439 joint "camera") + (2450 want-force-vis misty #f) + (2490 joint "cameraB") + (2570 alive "sequenceB-1") + (2569 save) + (2569 setting-unset ocean-off))))) (defmethod get-art-elem ((this sequenceA-village1)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate play-anim (sequenceA-village1) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('sidekick-human) - (format 0 "got sidekick-human~%") - (when (= (level-status *level* 'misty) 'active) - (let ((gp-1 (entity-by-name "sequenceA-1"))) - (when gp-1 - (format 0 "found entity for sidekick-human~%") - (set! (-> self side) - (ppointer->handle (manipy-spawn (-> self root trans) gp-1 *sidekick-human-sg* #f :to self)) - ) - (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> self side)) 'center-joint 3) - (send-event (handle->process (-> self side)) 'blend-shape #t) - ) - ) - ) - ) - ;; og:preserve-this PAL patch here - (('pause) - (let ((v0-2 (the-as object (logior (-> self mask) (process-mask pause))))) - (set! (-> self mask) (the-as process-mask v0-2)) - v0-2 - ) - ) - ) - ) - :exit (behavior () - (send-event *target* 'sidekick #t) - (let ((a0-2 (handle->process (-> self boat)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self side)))) - (if a0-6 - (deactivate a0-6) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - (#when PC_PORT - ;; og:preserve-this extra stuff when skipping cutscene - (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('sidekick-human) + (format 0 "got sidekick-human~%") + (when (= (level-status *level* 'misty) 'active) + (let ((gp-1 (entity-by-name "sequenceA-1"))) + (when gp-1 + (format 0 "found entity for sidekick-human~%") + (set! (-> self side) (ppointer->handle (manipy-spawn (-> self root trans) gp-1 *sidekick-human-sg* #f :to self))) + (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self side)) 'center-joint 3) + (send-event (handle->process (-> self side)) 'blend-shape #t))))) + ;; og:preserve-this PAL patch here + (('pause) + (let ((v0-2 (the-as object (logior (-> self mask) (process-mask pause))))) + (set! (-> self mask) (the-as process-mask v0-2)) + v0-2)))) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self boat)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self side)))) (if a0-6 (deactivate a0-6))) + ((-> (method-of-type process-taskable play-anim) exit)) + (#when PC_PORT + ;; og:preserve-this extra stuff when skipping cutscene + (when (and (= (get-response (-> self query)) 'no) (or (not (= *cheat-mode* 'debug)) (not (cpad-hold? 0 r1)))) (close-specific-task! (game-task intro) (task-status need-resolution)) (start 'play (get-continue-by-name *game-info* "game-start")) (set-blackout-frames (seconds 0.1)) (set! (-> *time-of-day-proc* 0 time-ratio) 300.0) (set! (-> *time-of-day-proc* 0 hour) 7) - (if (nonzero? (-> self part)) - (kill-and-free-particles (-> self part)) - ) - (return #f) - ) - ) - (let ((gp-0 (entity-by-name "sequenceB-1"))) - (set-blackout-frames (seconds 20)) - (send-event *camera* 'clear-entity) - (entity-birth-no-kill gp-0) - (send-event - (if gp-0 - (-> gp-0 extra process) - ) - 'play-anim - ) - ) - ) - :trans (behavior () - ;; og:preserve-this - ;; yeah they messed up a little bit here - (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) - ;; they should have put this: - ;; (spool-push *art-control* "sidekick-human-intro-sequence-b" 0 self -1.0) - ;; but it somehow causes a crash (maybe linux only?) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + (if (nonzero? (-> self part)) (kill-and-free-particles (-> self part))) + (return #f))) + (let ((gp-0 (entity-by-name "sequenceB-1"))) + (set-blackout-frames (seconds 20)) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-0) + (send-event (if gp-0 (-> gp-0 extra process)) 'play-anim))) + :trans + (behavior () + ;; og:preserve-this + ;; yeah they messed up a little bit here + (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) + ;; they should have put this: + ;; (spool-push *art-control* "sidekick-human-intro-sequence-b" 0 self -1.0) + ;; but it somehow causes a crash (maybe linux only?) + ((-> (method-of-type process-taskable play-anim) trans)))) (defmethod should-display? ((this sequenceA-village1)) - #f - ) + #f) (defbehavior sequenceA-village1-trans-hook sequenceA-village1 () (when (>= 1000.0 (ja-aframe-num 0)) (hide-hud-quick) (if (> (-> self part matrix) 0) - (set-vector! - (sprite-get-user-hvdf (-> self part matrix)) - 2048.0 - 2048.0 - (+ -1024.0 (-> *math-camera* hvdf-off z)) - (-> *math-camera* hvdf-off w) - ) - ) + (set-vector! (sprite-get-user-hvdf (-> self part matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w))) (let ((f0-9 (fmin 1.0 (* 0.008333334 (- 1000.0 (ja-aframe-num 0)))))) (set! (-> *part-id-table* 2860 init-specs 8 initial-valuef) (* 128.0 f0-9)) (cond ((< f0-9 1.0) (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 0.0) - (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0) - ) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0)) (else - (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) - (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3) - ) - ) - ) + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3)))) (spawn (-> self part) *zero-vector*) - (draw-title-credits (* 0.001 (ja-aframe-num 0))) - ) + (draw-title-credits (* 0.001 (ja-aframe-num 0)))) 0 - (none) - ) + (none)) (defbehavior sequenceA-village1-init-by-other sequenceA-village1 ((arg0 entity-actor)) (set! (-> self entity) arg0) @@ -386,12 +328,10 @@ (set-setting! 'sfx-volume-movie 'abs 0.0 0) (set-setting! 'ambient-volume-movie 'abs 0.0 0) (go-virtual hidden) - (none) - ) + (none)) (defun start-sequence-a () (set-blackout-frames (seconds 100)) (process-spawn sequenceA-village1 (entity-by-name "sage-23") :to *entity-pool*) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village1/village-obs.gc b/goal_src/jak1/levels/village1/village-obs.gc index c3a45eadc3..3831c838f1 100644 --- a/goal_src/jak1/levels/village1/village-obs.gc +++ b/goal_src/jak1/levels/village1/village-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/util/sync-info.gc") (require "engine/common-obs/water-anim.gc") (require "engine/common-obs/nav-enemy.gc") @@ -10,288 +9,273 @@ ;; name in dgo: village-obs ;; dgos: VI1 - ;; DECOMP BEGINS -(defskelgroup *med-res-jungle-sg* medres-jungle medres-jungle-lod0-jg medres-jungle-idle-ja - ((medres-jungle-lod0-mg (meters 999999))) - :bounds (static-spherem -80 0 -80 240) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-jungle-sg* + medres-jungle + medres-jungle-lod0-jg + medres-jungle-idle-ja + ((medres-jungle-lod0-mg (meters 999999))) + :bounds (static-spherem -80 0 -80 240) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-jungle1-sg* medres-jungle1 medres-jungle1-lod0-jg medres-jungle1-idle-ja - ((medres-jungle1-lod0-mg (meters 999999))) - :bounds (static-spherem 30 0 -40 230) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-jungle1-sg* + medres-jungle1 + medres-jungle1-lod0-jg + medres-jungle1-idle-ja + ((medres-jungle1-lod0-mg (meters 999999))) + :bounds (static-spherem 30 0 -40 230) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-jungle2-sg* medres-jungle2 medres-jungle2-lod0-jg medres-jungle2-idle-ja - ((medres-jungle2-lod0-mg (meters 999999))) - :bounds (static-spherem 90 0 130 110) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-jungle2-sg* + medres-jungle2 + medres-jungle2-lod0-jg + medres-jungle2-idle-ja + ((medres-jungle2-lod0-mg (meters 999999))) + :bounds (static-spherem 90 0 130 110) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-beach-sg* medres-beach medres-beach-lod0-jg medres-beach-idle-ja - ((medres-beach-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -140 200) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-beach-sg* + medres-beach + medres-beach-lod0-jg + medres-beach-idle-ja + ((medres-beach-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -140 200) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-beach1-sg* medres-beach1 medres-beach1-lod0-jg medres-beach1-idle-ja - ((medres-beach1-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -360 200) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-beach1-sg* + medres-beach1 + medres-beach1-lod0-jg + medres-beach1-idle-ja + ((medres-beach1-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -360 200) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-beach2-sg* medres-beach2 medres-beach2-lod0-jg medres-beach2-idle-ja - ((medres-beach2-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -450 180) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-beach2-sg* + medres-beach2 + medres-beach2-lod0-jg + medres-beach2-idle-ja + ((medres-beach2-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -450 180) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-beach3-sg* medres-beach3 medres-beach3-lod0-jg medres-beach3-idle-ja - ((medres-beach3-lod0-mg (meters 999999))) - :bounds (static-spherem 75 70 -480 100) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-beach3-sg* + medres-beach3 + medres-beach3-lod0-jg + medres-beach3-idle-ja + ((medres-beach3-lod0-mg (meters 999999))) + :bounds (static-spherem 75 70 -480 100) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-misty-sg* medres-misty medres-misty-lod0-jg medres-misty-idle-ja - ((medres-misty-lod0-mg (meters 999999))) - :bounds (static-spherem -40 0 -20 260) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-misty-sg* + medres-misty + medres-misty-lod0-jg + medres-misty-idle-ja + ((medres-misty-lod0-mg (meters 999999))) + :bounds (static-spherem -40 0 -20 260) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-village11-sg* medres-village11 medres-village11-lod0-jg medres-village11-idle-ja - ((medres-village11-lod0-mg (meters 999999))) - :bounds (static-spherem -100 0 90 200) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-village11-sg* + medres-village11 + medres-village11-lod0-jg + medres-village11-idle-ja + ((medres-village11-lod0-mg (meters 999999))) + :bounds (static-spherem -100 0 90 200) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-village12-sg* medres-village12 medres-village12-lod0-jg medres-village12-idle-ja - ((medres-village12-lod0-mg (meters 999999))) - :bounds (static-spherem 40 0 -50 155) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-village12-sg* + medres-village12 + medres-village12-lod0-jg + medres-village12-idle-ja + ((medres-village12-lod0-mg (meters 999999))) + :bounds (static-spherem 40 0 -50 155) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-village13-sg* medres-village13 medres-village13-lod0-jg medres-village13-idle-ja - ((medres-village13-lod0-mg (meters 999999))) - :bounds (static-spherem 180 -40 -40 180) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-village13-sg* + medres-village13 + medres-village13-lod0-jg + medres-village13-idle-ja + ((medres-village13-lod0-mg (meters 999999))) + :bounds (static-spherem 180 -40 -40 180) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-training-sg* medres-training medres-training-lod0-jg medres-training-idle-ja - ((medres-training-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 -60 220) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-training-sg* + medres-training + medres-training-lod0-jg + medres-training-idle-ja + ((medres-training-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 -60 220) + :longest-edge (meters 0.01)) (defpart 368 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 2.5) - (:x (meters 0.8)) - (:scale-x (meters 1.7)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0) - (:scalevel-x (meters -0.0020833334)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.08888889) - (:accel-y (meters -0.000033333334)) - (:timer (seconds 2.4)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) 3 (degrees 90)) - (:conerot-radius (meters 2) (meters 17.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 2.5) + (:x (meters 0.8)) + (:scale-x (meters 1.7)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0) + (:scalevel-x (meters -0.0020833334)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.08888889) + (:accel-y (meters -0.000033333334)) + (:timer (seconds 2.4)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) 3 (degrees 90)) + (:conerot-radius (meters 2) (meters 17.5)))) (defpart 369 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 3.0) - (:x (meters 4)) - (:scale-x (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 128.0) - (:vel-x (meters -0.01) (meters 0.02)) - (:vel-y (meters 0.050666668)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0016666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.35555556) - (:fade-g -0.35555556) - (:fade-a 0.35555556) - (:timer (seconds 0.55)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -45) 3 (degrees 90)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 3.0) + (:x (meters 4)) + (:scale-x (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 128.0) + (:vel-x (meters -0.01) (meters 0.02)) + (:vel-y (meters 0.050666668)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0016666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.35555556) + (:fade-g -0.35555556) + (:fade-a 0.35555556) + (:timer (seconds 0.55)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -45) 3 (degrees 90)) + (:conerot-radius (meters 2)))) (defpart 370 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 5.0) - (:x (meters 4)) - (:scale-x (meters 1.7)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0) - (:vel-x (meters -0.026666667) (meters 0.07666667)) - (:vel-y (meters -0.006666667)) - (:vel-z (meters -0.05) (meters 0.1)) - (:scalevel-x (meters -0.008333334)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.17777778) - (:accel-y (meters -0.001)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -45) 3 (degrees 90)) - (:conerot-radius (meters 10.6)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 5.0) + (:x (meters 4)) + (:scale-x (meters 1.7)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0) + (:vel-x (meters -0.026666667) (meters 0.07666667)) + (:vel-y (meters -0.006666667)) + (:vel-z (meters -0.05) (meters 0.1)) + (:scalevel-x (meters -0.008333334)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.17777778) + (:accel-y (meters -0.001)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -45) 3 (degrees 90)) + (:conerot-radius (meters 10.6)))) (defpart 371 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 3.8) - (:x (meters 5.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 0.0 64.0) - (:b 255.0) - (:a 196.0) - (:vel-x (meters -0.006666667) (meters 0.026666667)) - (:vel-y (meters 0.0073333336)) - (:scalevel-x (meters -0.008333334)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.17777778) - (:fade-a -1.0888889) - (:timer (seconds 0.55)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 2.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 3.8) + (:x (meters 5.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 0.0 64.0) + (:b 255.0) + (:a 196.0) + (:vel-x (meters -0.006666667) (meters 0.026666667)) + (:vel-y (meters 0.0073333336)) + (:scalevel-x (meters -0.008333334)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.17777778) + (:fade-a -1.0888889) + (:timer (seconds 0.55)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 2.3)))) (deftype windmill-sail (process-drawable) - ((root-override trsq :overlay-at root) - (sync sync-info :inline) - (blade-normal vector :inline) - (orig-quat quaternion :inline) - (alt-actor entity-actor) - (part2 sparticle-launch-control) - ) + ((root-override trsq :overlay-at root) + (sync sync-info :inline) + (blade-normal vector :inline) + (orig-quat quaternion :inline) + (alt-actor entity-actor) + (part2 sparticle-launch-control)) (:states - windmill-sail-idle - ) - ) - + windmill-sail-idle)) (defmethod relocate ((this windmill-sail) (arg0 int)) - (if (nonzero? (-> this part2)) - (&+! (-> this part2) arg0) - ) - (the-as windmill-sail ((method-of-type process-drawable relocate) this arg0)) - ) + (if (nonzero? (-> this part2)) (&+! (-> this part2) arg0)) + (the-as windmill-sail ((method-of-type process-drawable relocate) this arg0))) (defmethod deactivate ((this windmill-sail)) - (if (nonzero? (-> this part2)) - (kill-and-free-particles (-> this part2)) - ) + (if (nonzero? (-> this part2)) (kill-and-free-particles (-> this part2))) ((method-of-type process-drawable deactivate) this) - (none) - ) + (none)) -(defskelgroup *windmill-sail-sg* windmill-sail windmill-sail-lod0-jg windmill-sail-idle-ja - ((windmill-sail-lod0-mg (meters 20)) - (windmill-sail-lod1-mg (meters 40)) - (windmill-sail-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 21) - :longest-edge (meters 14.9) - ) +(defskelgroup *windmill-sail-sg* + windmill-sail + windmill-sail-lod0-jg + windmill-sail-idle-ja + ((windmill-sail-lod0-mg (meters 20)) (windmill-sail-lod1-mg (meters 40)) (windmill-sail-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 21) + :longest-edge (meters 14.9)) (defpartgroup group-win-wind-mill :id 123 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 368 :fade-after (meters 100)) - (sp-item 369 :fade-after (meters 100)) - (sp-item 370 :fade-after (meters 200)) - (sp-item 371 :fade-after (meters 200)) - ) - ) + :parts + ((sp-item 368 :fade-after (meters 100)) + (sp-item 369 :fade-after (meters 100)) + (sp-item 370 :fade-after (meters 200)) + (sp-item 371 :fade-after (meters 200)))) (defpartgroup group-win-wind-mill-hires :id 124 :bounds (static-bspherem 0 0 0 20) - :parts ((sp-item 368) (sp-item 369) (sp-item 370) (sp-item 371)) - ) + :parts ((sp-item 368) (sp-item 369) (sp-item 370) (sp-item 371))) (defstate windmill-sail-idle (windmill-sail) - :trans (behavior () - (cond - ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) - (let ((f30-0 (get-current-value (-> self sync) 65536.0))) - (set! (-> self sync period) (the-as uint 4800)) - (quaternion-axis-angle! - (-> self root-override quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - f30-0 - ) + :trans + (behavior () + (cond + ((task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (let ((f30-0 (get-current-value (-> self sync) 65536.0))) + (set! (-> self sync period) (the-as uint 4800)) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f30-0) + (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root-override quat)) + (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0)) + (spawn (if (movie?) (-> self part2) (-> self part)) (-> self root-override trans)) + (if (nonzero? (-> self sound)) (change-sound! (-> self sound) (static-sound-name "mayors-gears")))) + (else + (set! (-> self sync period) (the-as uint #x15f90)) + (let ((f0-3 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-3)) (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - (set! (-> *part-id-table* 368 init-specs 15 initial-valuef) f30-0) - ) - (spawn - (if (movie?) - (-> self part2) - (-> self part) - ) - (-> self root-override trans) - ) - (if (nonzero? (-> self sound)) - (change-sound! (-> self sound) (static-sound-name "mayors-gears")) - ) - ) - (else - (set! (-> self sync period) (the-as uint #x15f90)) - (let ((f0-3 (get-current-value (-> self sync) 65536.0))) - (quaternion-axis-angle! - (-> self root-override quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - f0-3 - ) - ) - (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - ) - ) - (if (nonzero? (-> self sound)) - (update! (-> self sound)) - ) - (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) + (quaternion-normalize! (-> self root-override quat)))) + (if (nonzero? (-> self sound)) (update! (-> self sound))) + (if (= (-> self draw cur-lod) (-> self draw lod-set max-lod)) (logior! (-> self draw status) (draw-status do-not-check-distance)) - (logclear! (-> self draw status) (draw-status do-not-check-distance)) - ) - ) + (logclear! (-> self draw status) (draw-status do-not-check-distance)))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this windmill-sail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -299,7 +283,7 @@ (set! (-> this root-override) (new 'process 'trsq)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) - (initialize-skeleton this *windmill-sail-sg* '()) + (initialize-skeleton this *windmill-sail-sg* ()) (quaternion-copy! (-> this orig-quat) (-> this root-override quat)) (vector-x-quaternion! (-> this blade-normal) (-> this root-override quat)) (vector-normalize! (-> this blade-normal) 1.0) @@ -307,44 +291,37 @@ (set! (-> this part2) (create-launch-control (-> *part-group-id-table* 124) this)) (set! (-> this sound) (new 'process 'ambient-sound arg0 (-> this root-override trans))) (go windmill-sail-idle) - (none) - ) + (none)) (deftype sagesail (process-drawable) - ((root-override trsq :overlay-at root) - (sync sync-info :inline) - (blade-normal vector :inline) - (orig-quat quaternion :inline) - ) + ((root-override trsq :overlay-at root) + (sync sync-info :inline) + (blade-normal vector :inline) + (orig-quat quaternion :inline)) (:states - sagesail-idle - ) - ) + sagesail-idle)) - -(defskelgroup *sagesail-sg* sagesail sagesail-lod0-jg sagesail-idle-ja - ((sagesail-lod0-mg (meters 20)) (sagesail-lod1-mg (meters 40)) (sagesail-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 25.5) - :longest-edge (meters 24.2) - ) +(defskelgroup *sagesail-sg* + sagesail + sagesail-lod0-jg + sagesail-idle-ja + ((sagesail-lod0-mg (meters 20)) (sagesail-lod1-mg (meters 40)) (sagesail-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 25.5) + :longest-edge (meters 24.2)) (defstate sagesail-idle (sagesail) - :trans (behavior () - (let ((f0-0 (get-current-value (-> self sync) 65536.0))) - (quaternion-axis-angle! - (-> self root-override quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - f0-0 - ) - ) - (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root-override quat)) - ) + :trans + (behavior () + (let ((f0-0 (get-current-value (-> self sync) 65536.0))) + (quaternion-axis-angle! (-> self root-override quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + f0-0)) + (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root-override quat))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this sagesail) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -352,84 +329,60 @@ (set! (-> this root-override) (new 'process 'trsq)) (process-drawable-from-entity! this arg0) (logclear! (-> this mask) (process-mask actor-pause)) - (initialize-skeleton this *sagesail-sg* '()) + (initialize-skeleton this *sagesail-sg* ()) (quaternion-copy! (-> this orig-quat) (-> this root-override quat)) (vector-z-quaternion! (-> this blade-normal) (-> this root-override quat)) (vector-normalize! (-> this blade-normal) 1.0) (go sagesail-idle) - (none) - ) + (none)) (deftype windspinner (process-drawable) - ((blade-normal vector :inline) - (orig-quat quaternion :inline) - (angle float) - (angle-vel float) - ) + ((blade-normal vector :inline) + (orig-quat quaternion :inline) + (angle float) + (angle-vel float)) (:states - windspinner-idle - ) - ) - + windspinner-idle)) (defmethod run-logic? ((this windspinner)) (or (not (logtest? (-> this mask) (process-mask actor-pause))) (or (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status was-drawn)) (>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance)) - (vector-vector-distance (-> this root trans) (math-camera-pos)) - ) - ) + (vector-vector-distance (-> this root trans) (math-camera-pos)))) (and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel))) - (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update))) - ) - ) - ) + (and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-status no-skeleton-update)))))) -(defskelgroup *windspinner-sg* windspinner windspinner-lod0-jg windspinner-idle-ja - ((windspinner-lod0-mg (meters 20)) (windspinner-lod1-mg (meters 999999))) - :bounds (static-spherem 0 0 0 8) - ) +(defskelgroup *windspinner-sg* + windspinner + windspinner-lod0-jg + windspinner-idle-ja + ((windspinner-lod0-mg (meters 20)) (windspinner-lod1-mg (meters 999999))) + :bounds (static-spherem 0 0 0 8)) (defstate windspinner-idle (windspinner) - :trans (behavior () - (let* ((f0-0 0.992) - (f1-0 0.008090864) - (a0-0 (-> self root trans)) - (f0-1 - (* f0-0 - (+ (* f1-0 - (-> *wind-work* - wind-force - (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) - ) - ) - (-> self angle-vel) - ) - ) - ) - ) - (if (< 291.27112 f0-1) - (set! f0-1 291.27112) - ) - (set! (-> self angle-vel) f0-1) - ) - (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) - (set! (-> self angle) (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0))) - ) - (quaternion-axis-angle! - (-> self root quat) - (-> self blade-normal x) - (-> self blade-normal y) - (-> self blade-normal z) - (-> self angle) - ) - (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) - (quaternion-normalize! (-> self root quat)) - ) + :trans + (behavior () + (let* ((f0-0 0.992) + (f1-0 0.008090864) + (a0-0 (-> self root trans)) + (f0-1 (* f0-0 + (+ (* f1-0 + (-> *wind-work* wind-force (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63))) + (-> self angle-vel))))) + (if (< 291.27112 f0-1) (set! f0-1 291.27112)) + (set! (-> self angle-vel) f0-1)) + (let ((f0-3 (+ (-> self angle) (-> self angle-vel)))) + (set! (-> self angle) (- f0-3 (* (the float (the int (/ f0-3 65536.0))) 65536.0)))) + (quaternion-axis-angle! (-> self root quat) + (-> self blade-normal x) + (-> self blade-normal y) + (-> self blade-normal z) + (-> self angle)) + (quaternion*! (-> self root quat) (-> self root quat) (-> self orig-quat)) + (quaternion-normalize! (-> self root quat))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this windspinner) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) @@ -437,124 +390,101 @@ (set! (-> this angle-vel) 145.63556) (set! (-> this root) (the-as trsqv (new 'process 'trsq))) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *windspinner-sg* '()) + (initialize-skeleton this *windspinner-sg* ()) (set! (-> this root pause-adjust-distance) 819200.0) (quaternion-copy! (-> this orig-quat) (-> this root quat)) (vector-y-quaternion! (-> this blade-normal) (-> this root quat)) (vector-normalize! (-> this blade-normal) 1.0) (go windspinner-idle) - (none) - ) + (none)) (deftype mayorgears (process-drawable) - ((alt-actor entity-actor) - ) + ((alt-actor entity-actor)) (:states - mayorgears-idle - ) - ) + mayorgears-idle)) - -(defskelgroup *mayorgears-sg* mayorgears mayorgears-geo-jg mayorgears-idle-ja - ((mayorgears-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4.5) - ) +(defskelgroup *mayorgears-sg* + mayorgears + mayorgears-geo-jg + mayorgears-idle-ja + ((mayorgears-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4.5)) (defstate mayorgears-idle (mayorgears) - :code (behavior () - (loop - (if (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) - (ja :num! (loop!)) - (ja :num! (loop! 0.0)) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (if (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) (ja :num! (loop!)) (ja :num! (loop! 0.0))) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this mayorgears) (arg0 entity-actor)) (logior! (-> this mask) (process-mask ambient)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *mayorgears-sg* '()) + (initialize-skeleton this *mayorgears-sg* ()) (set! (-> this draw shadow-mask) (the-as uint 255)) (go mayorgears-idle) - (none) - ) + (none)) ;; og:preserve-this PAL patch here -(deftype evilplant (process-drawable) - () +(deftype evilplant (process-drawable) () (:state-methods - idle - ) - ) + idle)) (defmethod inspect ((obj evilplant)) - (let ((t9-0 (method-of-type process-drawable inspect))) - (t9-0 obj) - ) - obj - ) + (let ((t9-0 (method-of-type process-drawable inspect))) (t9-0 obj)) + obj) -(defskelgroup *evilplant-sg* evilplant evilplant-lod0-jg evilplant-idle-ja - ((evilplant-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 3.8) - ) +(defskelgroup *evilplant-sg* + evilplant + evilplant-lod0-jg + evilplant-idle-ja + ((evilplant-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 3.8)) (defstate idle (evilplant) :virtual #t - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((obj evilplant) (arg0 entity-actor)) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) - (initialize-skeleton obj *evilplant-sg* '()) + (initialize-skeleton obj *evilplant-sg* ()) (go (method-of-object obj idle)) - (none) - ) + (none)) (deftype reflector-middle (process-drawable) - ((reflector-trans vector :inline) - (next-reflector-trans vector :inline) - ) + ((reflector-trans vector :inline) + (next-reflector-trans vector :inline)) (:states - reflector-middle-idle - ) - ) + reflector-middle-idle)) - -(defskelgroup *reflector-middle-sg* reflector-middle reflector-middle-geo-jg reflector-middle-idle-ja - ((reflector-middle-geo-mg (meters 999999))) - :bounds (static-spherem 0 17 0 17) - ) +(defskelgroup *reflector-middle-sg* + reflector-middle + reflector-middle-geo-jg + reflector-middle-idle-ja + ((reflector-middle-geo-mg (meters 999999))) + :bounds (static-spherem 0 17 0 17)) (defstate reflector-middle-idle (reflector-middle) - :trans (behavior () - (when (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) - (process-entity-status! self (entity-perm-status complete) #t) - (draw-eco-beam (-> self reflector-trans) (-> self next-reflector-trans)) - ) - ) + :trans + (behavior () + (when (task-closed? (game-task jungle-lurkerm) (task-status need-reminder)) + (process-entity-status! self (entity-perm-status complete) #t) + (draw-eco-beam (-> self reflector-trans) (-> self next-reflector-trans)))) :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this reflector-middle) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *reflector-middle-sg* '()) + (initialize-skeleton this *reflector-middle-sg* ()) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this reflector-trans quad) (-> this root trans quad)) @@ -562,186 +492,153 @@ (let ((a0-10 (-> this link next))) (when a0-10 (set! (-> this next-reflector-trans quad) (-> a0-10 extra trans quad)) - (+! (-> this next-reflector-trans y) (res-lump-float a0-10 'height-info)) - ) - ) + (+! (-> this next-reflector-trans y) (res-lump-float a0-10 'height-info)))) (logior! (-> this draw status) (draw-status do-not-check-distance)) (go reflector-middle-idle) - (none) - ) + (none)) -(deftype reflector-end (process-drawable) - () +(deftype reflector-end (process-drawable) () (:states - reflector-end-idle - ) - ) - + reflector-end-idle)) (defstate reflector-end-idle (reflector-end) - :code anim-loop - ) + :code anim-loop) (defmethod init-from-entity! ((this reflector-end) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go reflector-end-idle) - (none) - ) + (none)) (deftype villa-starfish (process-drawable) - ((child-count int8) - ) + ((child-count int8)) (:states - villa-starfish-idle - ) - ) + villa-starfish-idle)) +(defskelgroup *starfish-sg* + villa-starfish + villa-starfish-lod0-jg + villa-starfish-idle-ja + ((villa-starfish-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2)) -(defskelgroup *starfish-sg* villa-starfish villa-starfish-lod0-jg villa-starfish-idle-ja - ((villa-starfish-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2) - ) - -(deftype starfish (nav-enemy) - () +(deftype starfish (nav-enemy) () (:states - starfish-idle - starfish-patrol - ) - ) - + starfish-idle + starfish-patrol)) (defstate starfish-idle (starfish) - :enter (behavior () - (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) - (set-time! (-> self state-time)) - (ja-channel-set! 0) - ) - :exit (behavior () - (ja-channel-set! 1) - ) - :trans (behavior () - (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (go starfish-patrol) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - :post ja-post - ) + :enter + (behavior () + (move-to-ground (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) + (set-time! (-> self state-time)) + (ja-channel-set! 0)) + :exit + (behavior () + (ja-channel-set! 1)) + :trans + (behavior () + (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go starfish-patrol))) + :code + (behavior () + (loop (suspend))) + :post ja-post) (defstate starfish-patrol (starfish) - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf19)) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 1)) - (if (or (not *target*) - (< 204800.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) - (go starfish-idle) - ) - ) - ) - :code (behavior () - (set! (-> self target-speed) 4096.0) - (set! (-> self rotate-speed) 12743.111) - (set! (-> self turn-time) (seconds 0.5)) - (loop - (ja-no-eval :group! villa-starfish-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post nav-enemy-patrol-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf19))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 1)) + (if (or (not *target*) (< 204800.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go starfish-idle)))) + :code + (behavior () + (set! (-> self target-speed) 4096.0) + (set! (-> self rotate-speed) 12743.111) + (set! (-> self turn-time) (seconds 0.5)) + (loop (ja-no-eval :group! villa-starfish-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post nav-enemy-patrol-post) -(define *starfish-nav-enemy-info* (new 'static 'nav-enemy-info - :idle-anim -1 - :walk-anim -1 - :turn-anim -1 - :notice-anim -1 - :run-anim -1 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim -1 - :taunt-anim -1 - :die-anim -1 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 1) - :run-rotate-speed (degrees 70) - :run-acceleration (meters 1) - :run-turn-time (seconds 0.5) - :walk-travel-speed (meters 1) - :walk-rotate-speed (degrees 70) - :walk-acceleration (meters 1) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3) - :attack-shove-up (meters 2) - :shadow-size (meters 1) - :nav-nearest-y-threshold (meters 10) - :notice-distance (meters 30) - :stop-chase-distance (meters 40) - :frustration-distance (meters 8) - :frustration-time (seconds 4) - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1) - :shadow-min-y (meters -1) - :shadow-locus-dist (meters 150) - :use-align #f - :draw-shadow #f - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with (collide-kind background) - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *starfish-nav-enemy-info* + (new 'static + 'nav-enemy-info + :idle-anim -1 + :walk-anim -1 + :turn-anim -1 + :notice-anim -1 + :run-anim -1 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim -1 + :taunt-anim -1 + :die-anim -1 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 1) + :run-rotate-speed (degrees 70) + :run-acceleration (meters 1) + :run-turn-time (seconds 0.5) + :walk-travel-speed (meters 1) + :walk-rotate-speed (degrees 70) + :walk-acceleration (meters 1) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3) + :attack-shove-up (meters 2) + :shadow-size (meters 1) + :nav-nearest-y-threshold (meters 10) + :notice-distance (meters 30) + :stop-chase-distance (meters 40) + :frustration-distance (meters 8) + :frustration-time (seconds 4) + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1) + :shadow-min-y (meters -1) + :shadow-locus-dist (meters 150) + :use-align #f + :draw-shadow #f + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with (collide-kind background) + :debug-draw-neck #f + :debug-draw-jump #f)) (defmethod initialize-collision ((this starfish)) (logior! (-> this mask) (process-mask enemy)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this collide-info) s5-0) - ) + (set! (-> this collide-info) s5-0)) 0 - (none) - ) + (none)) (defmethod nav-enemy-method-48 ((this starfish)) - (initialize-skeleton this *starfish-sg* '()) + (initialize-skeleton this *starfish-sg* ()) (init-defaults! this *starfish-nav-enemy-info*) 0 - (none) - ) + (none)) (defbehavior starfish-init-by-other starfish ((arg0 starfish) (arg1 vector)) (initialize-collision self) @@ -752,245 +649,181 @@ (set! (-> self entity) (-> arg0 entity)) (nav-enemy-method-48 self) (go starfish-idle) - (none) - ) + (none)) (defbehavior process-drawable-child-count process-drawable () (let ((v0-0 0)) - (let ((v1-0 (-> self child))) - (while v1-0 - (+! v0-0 1) - (set! v1-0 (-> v1-0 0 brother)) - (nop!) - (nop!) - ) - ) - v0-0 - ) - ) + (let ((v1-0 (-> self child))) (while v1-0 (+! v0-0 1) (set! v1-0 (-> v1-0 0 brother)) (nop!) (nop!))) + v0-0)) (defbehavior starfish-spawn-child starfish () - (let ((gp-0 (new-stack-vector0))) - (get-random-point (-> self path) gp-0) - (process-spawn starfish self gp-0 :to self) - ) - ) + (let ((gp-0 (new-stack-vector0))) (get-random-point (-> self path) gp-0) (process-spawn starfish self gp-0 :to self))) (defstate villa-starfish-idle (villa-starfish) - :code (behavior () - (set-time! (-> self state-time)) - (loop - (when (time-elapsed? (-> self state-time) (seconds 0.5)) - (set-time! (-> self state-time)) - (if (and (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (< (process-drawable-child-count) (-> self child-count)) - ) - (starfish-spawn-child) - ) - ) - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop (when (time-elapsed? (-> self state-time) (seconds 0.5)) + (set-time! (-> self state-time)) + (if (and (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (< (process-drawable-child-count) (-> self child-count))) + (starfish-spawn-child))) + (suspend))) + :post #f) (defmethod init-from-entity! ((this villa-starfish) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (let ((a1-4 (res-lump-value arg0 'num-lurkers uint128 :default (the-as uint128 3)))) - (set! (-> this child-count) (max 1 (min 8 (the-as int a1-4)))) - ) + (set! (-> this child-count) (max 1 (min 8 (the-as int a1-4))))) (set! (-> this path) (new 'process 'path-control this 'path 0.0)) (go villa-starfish-idle) - (none) - ) + (none)) (deftype village-fish (process-drawable) - ((child-count int8) - ) + ((child-count int8)) (:states - village-fish-idle - ) - ) - + village-fish-idle)) (defstate village-fish-idle (village-fish) - :code (behavior () - (set-time! (-> self state-time)) - (loop - (suspend) - ) - ) - :post #f - ) + :code + (behavior () + (set-time! (-> self state-time)) + (loop (suspend))) + :post #f) (defmethod init-from-entity! ((this village-fish) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) (go village-fish-idle) - (none) - ) + (none)) -(deftype villa-fisha (village-fish) - () - ) - - -(deftype villa-fishb (village-fish) - () - ) +(deftype villa-fisha (village-fish) ()) +(deftype villa-fishb (village-fish) ()) (deftype cyclegen (structure) - ((output float) - (inc float) - ) - :pack-me - ) - + ((output float) + (inc float)) + :pack-me) (defun set-period ((arg0 cyclegen) (arg1 int)) - (set! (-> arg0 inc) (/ 5.0 (the float arg1))) - ) + (set! (-> arg0 inc) (/ 5.0 (the float arg1)))) (defun update-clock ((arg0 cyclegen)) (let ((f0-1 (+ (-> arg0 output) (* (-> arg0 inc) (-> *display* time-adjust-ratio))))) - (set! (-> arg0 output) (- f0-1 (the float (the int f0-1)))) - ) - (-> arg0 output) - ) + (set! (-> arg0 output) (- f0-1 (the float (the int f0-1))))) + (-> arg0 output)) (deftype hutlamp (process-drawable) - ((pivot joint-mod-set-local) - (clock cyclegen :inline) - ) + ((pivot joint-mod-set-local) + (clock cyclegen :inline)) (:states - hutlamp-idle - ) - ) - + hutlamp-idle)) (defmethod relocate ((this hutlamp) (arg0 int)) - (if (nonzero? (-> this pivot)) - (&+! (-> this pivot) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this pivot)) (&+! (-> this pivot) arg0)) + (call-parent-method this arg0)) -(defskelgroup *hutlamp-sg* hutlamp hutlamp-lod0-jg hutlamp-idle-ja - ((hutlamp-lod0-mg (meters 999999))) - :bounds (static-spherem 0 1 0 1.2) - :longest-edge (meters 0.7) - ) +(defskelgroup *hutlamp-sg* + hutlamp + hutlamp-lod0-jg + hutlamp-idle-ja + ((hutlamp-lod0-mg (meters 999999))) + :bounds (static-spherem 0 1 0 1.2) + :longest-edge (meters 0.7)) (defstate hutlamp-idle (hutlamp) - :code (behavior () - (loop - (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) - (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3) - ) - (suspend) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (let ((f0-3 (* 1820.4445 (sin (* 65536.0 (update-clock (-> self clock))))))) + (quaternion-vector-angle! (-> self pivot transform quat) *x-vector* f0-3)) + (suspend))) + :post ja-post) (defmethod init-from-entity! ((this hutlamp) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *hutlamp-sg* '()) + (initialize-skeleton this *hutlamp-sg* ()) (set! (-> this pivot) (new 'process 'joint-mod-set-local this 3 #f #t #f)) (set-period (-> this clock) 900) (set! (-> this clock output) (rand-vu)) (go hutlamp-idle) - (none) - ) + (none)) -(deftype revcycleprop (process-drawable) - () +(deftype revcycleprop (process-drawable) () (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *revcycleprop-sg* revcycleprop revcycleprop-lod0-jg revcycleprop-idle-ja - ((revcycleprop-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.2) - ) +(defskelgroup *revcycleprop-sg* + revcycleprop + revcycleprop-lod0-jg + revcycleprop-idle-ja + ((revcycleprop-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.2)) (defstate idle (revcycleprop) :virtual #t :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this revcycleprop) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *revcycleprop-sg* '()) + (initialize-skeleton this *revcycleprop-sg* ()) (set! (-> this draw light-index) (the-as uint 1)) (go (method-of-object this idle)) - (none) - ) + (none)) -(deftype revcycle (process-drawable) - () +(deftype revcycle (process-drawable) () (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *revcycle-sg* revcycle revcycle-geo-jg revcycle-idle-ja - ((revcycle-geo-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.2) - ) +(defskelgroup *revcycle-sg* + revcycle + revcycle-geo-jg + revcycle-idle-ja + ((revcycle-geo-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.2)) (defstate idle (revcycle) :virtual #t :code anim-loop - :post ja-post - ) + :post ja-post) (defmethod init-from-entity! ((this revcycle) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *revcycle-sg* '()) + (initialize-skeleton this *revcycle-sg* ()) (set! (-> this draw light-index) (the-as uint 1)) (go (method-of-object this idle)) - (none) - ) + (none)) -(deftype villagea-water (water-anim) - () - ) +(deftype villagea-water (water-anim) ()) - -(define ripple-for-villagea-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 4.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 10.0 :xdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 10.0 :xdiv -1 :zdiv 1 :speed 1.5) - (new 'static 'ripple-wave :scale 5.0 :xdiv 5 :zdiv 3 :speed 0.75) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-villagea-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 4.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 10.0 :xdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 10.0 :xdiv -1 :zdiv 1 :speed 1.5) + (new 'static 'ripple-wave :scale 5.0 :xdiv 5 :zdiv 3 :speed 0.75) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this villagea-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this draw color-mult) 0.01 0.45 0.5 0.75) (set! (-> v1-2 global-scale) 3072.0) (set! (-> v1-2 close-fade-dist) 163840.0) (set! (-> v1-2 far-fade-dist) 245760.0) - (set! (-> v1-2 waveform) ripple-for-villagea-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-villagea-water)) + (none)) diff --git a/goal_src/jak1/levels/village1/village1-part.gc b/goal_src/jak1/levels/village1/village1-part.gc index c5f50bf43f..af07efe780 100644 --- a/goal_src/jak1/levels/village1/village1-part.gc +++ b/goal_src/jak1/levels/village1/village1-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") @@ -11,1174 +10,1129 @@ ;; DECOMP BEGINS -(deftype villagea-part (part-spawner) - () - ) - +(deftype villagea-part (part-spawner) ()) (defpartgroup group-village1-butterflies :id 127 :bounds (static-bspherem 0 0 0 30) - :parts ((sp-item 380 :fade-after (meters 120) :period (seconds 16.345) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 380 :fade-after (meters 120) :period (seconds 22.125) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 380 :fade-after (meters 120) :period (seconds 32.82) :length (seconds 0.017) :hour-mask #b111111100000000000111111 :binding 381) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - (sp-item 381 :flags (start-dead launch-asap) :binding 382) - (sp-item 382 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 380 + :fade-after (meters 120) + :period (seconds 16.345) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 380 + :fade-after (meters 120) + :period (seconds 22.125) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 380 + :fade-after (meters 120) + :period (seconds 32.82) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111 + :binding 381) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)) + (sp-item 381 :flags (start-dead launch-asap) :binding 382) + (sp-item 382 :flags (is-3d start-dead)))) (defpart 380 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 7.5)) - (:y (meters 14) (meters 3)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:vel-y (meters -0.036666665)) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 20)) - (:flags (bit3)) - (:next-time (seconds 1.85)) - (:next-launcher 383) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 7.5)) + (:y (meters 14) (meters 3)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:vel-y (meters -0.036666665)) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 20)) + (:flags (bit3)) + (:next-time (seconds 1.85)) + (:next-launcher 383) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 383 - :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 384)) - ) + :init-specs ((:accel-y (meters 0)) (:next-time (seconds 9) (seconds 4.997)) (:next-launcher 384))) (defpart 384 - :init-specs ((:accel-y (meters 0.00033333333))) - ) + :init-specs ((:accel-y (meters 0.00033333333)))) (defpart 381 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3) (meters 1)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:g 0.0 256.0) - (:b 128.0 1 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:vel-z (meters 0)) - (:timer (seconds 20)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 385) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3) (meters 1)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:g 0.0 256.0) + (:b 128.0 1 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:vel-z (meters 0)) + (:timer (seconds 20)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 385))) (defpart 385 - :init-specs ((:vel-x (meters -0.017777778) (meters 0.035555556)) - (:vel-y (meters -0.0074074077) (meters 0.0148148155)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 385) - ) - ) + :init-specs + ((:vel-x (meters -0.017777778) (meters 0.035555556)) + (:vel-y (meters -0.0074074077) (meters 0.0148148155)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 385))) (defpart 382 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.9)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 1.3)) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -8.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.9)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 1.3)) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -8.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village1-moth :id 128 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 386 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :hour-mask #b1111111110000000 :binding 387) - (sp-item 387 :flags (start-dead launch-asap) :binding 388) - (sp-item 388 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 386 + :fade-after (meters 120) + :flags (bit1) + :period (seconds 60.1) + :length (seconds 0.017) + :hour-mask #b1111111110000000 + :binding 387) + (sp-item 387 :flags (start-dead launch-asap) :binding 388) + (sp-item 388 :flags (is-3d start-dead)))) (defpart 386 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 60)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 60)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 387 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 1.5)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 60)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 389) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 1.5)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 60)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 389))) (defpart 389 - :init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111)) - (:vel-y (meters -0.0148148155) (meters 0.029629631)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 389) - ) - ) + :init-specs + ((:vel-x (meters -0.035555556) (meters 0.07111111)) + (:vel-y (meters -0.0148148155) (meters 0.029629631)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 389))) (defpart 388 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit9 bit12)))) (defpartgroup group-village1-hummingbird :id 129 :bounds (static-bspherem 0 3 0 4) - :parts ((sp-item 390 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017) :hour-mask #b111111100000000000111111) - (sp-item 391 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 392 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 393 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 394 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - (sp-item 395 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 390 + :fade-after (meters 20) + :flags (is-3d bit1) + :period (seconds 20) + :length (seconds 0.017) + :hour-mask #b111111100000000000111111) + (sp-item 391 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 392 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 393 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 394 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)) + (sp-item 395 :fade-after (meters 20) :flags (is-3d bit1) :period (seconds 20) :length (seconds 0.017)))) (defpart 390 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 1 16.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 0.017)) - (:next-launcher 396) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 1 16.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 0.017)) + (:next-launcher 396))) (defpart 396 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 396)) - ) + :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 396))) (defpart 391 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12 left-multiply-quat)) - (:next-time (seconds 2.75)) - (:next-launcher 397) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12 left-multiply-quat)) + (:next-time (seconds 2.75)) + (:next-launcher 397))) (defpart 397 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) - (:a 96.0 1 16.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 398) - ) - ) + :init-specs + ((:scale-y (meters 0.5) (meters 0.1)) + (:a 96.0 1 16.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 398))) (defpart 398 - :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 398)) - ) + :init-specs ((:scale-y (meters 0.5) (meters 0.1)) (:a 96.0 1 16.0) (:next-time (seconds 0.017)) (:next-launcher 398))) (defpart 392 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 1 32.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12)) - (:next-time (seconds 0.017)) - (:next-launcher 399) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 1 32.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12)) + (:next-time (seconds 0.017)) + (:next-launcher 399))) (defpart 399 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 399) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 399))) (defpart 393 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12)) - (:next-time (seconds 2.75)) - (:next-launcher 400) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12)) + (:next-time (seconds 2.75)) + (:next-launcher 400))) (defpart 400 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 401) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 401))) (defpart 401 - :init-specs ((:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 401) - ) - ) + :init-specs + ((:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 401))) (defpart 394 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 32.0 1 32.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 2.75)) - (:flags (bit2 bit9 bit12)) - (:next-time (seconds 0.017)) - (:next-launcher 402) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 32.0 1 32.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 2.75)) + (:flags (bit2 bit9 bit12)) + (:next-time (seconds 0.017)) + (:next-launcher 402))) (defpart 402 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 402) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 402))) (defpart 395 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 2.0) - (:scale-x (meters 1)) - (:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees 60)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-x (meters 0.0024242424)) - (:vel-y (meters 0.02)) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 6)) - (:flags (bit9 bit12)) - (:next-time (seconds 2.75)) - (:next-launcher 403) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 2.0) + (:scale-x (meters 1)) + (:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees 60)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-x (meters 0.0024242424)) + (:vel-y (meters 0.02)) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 6)) + (:flags (bit9 bit12)) + (:next-time (seconds 2.75)) + (:next-launcher 403))) (defpart 403 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:accel-x (meters 0.00066666666)) - (:accel-y (meters 0.00033333333)) - (:next-time (seconds 0.017)) - (:next-launcher 404) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:accel-x (meters 0.00066666666)) + (:accel-y (meters 0.00033333333)) + (:next-time (seconds 0.017)) + (:next-launcher 404))) (defpart 404 - :init-specs ((:rot-x (degrees 45)) - (:rot-y (degrees -90)) - (:rot-z (degrees -70) (degrees 140)) - (:a 32.0 1 32.0) - (:next-time (seconds 0.017)) - (:next-launcher 404) - ) - ) + :init-specs + ((:rot-x (degrees 45)) + (:rot-y (degrees -90)) + (:rot-z (degrees -70) (degrees 140)) + (:a 32.0 1 32.0) + (:next-time (seconds 0.017)) + (:next-launcher 404))) (defpart 405 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.03) - (:x (meters 0)) - (:y (meters 2.3)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0) - (:g 96.0) - (:b 96.0) - (:a 48.0) - (:vel-z (meters -0.0013333333)) - (:scalevel-x (meters 0.00041666668)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.04) - (:accel-y (meters -0.000006666667)) - (:accel-z (meters 0.0000033333336)) - (:timer (seconds 4)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.03) + (:x (meters 0)) + (:y (meters 2.3)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0) + (:g 96.0) + (:b 96.0) + (:a 48.0) + (:vel-z (meters -0.0013333333)) + (:scalevel-x (meters 0.00041666668)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.04) + (:accel-y (meters -0.000006666667)) + (:accel-z (meters 0.0000033333336)) + (:timer (seconds 4)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.15)))) (defpart 406 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:y (meters 0)) - (:scale-x (meters 0.4) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 60.0) - (:a 196.0) - (:vel-y (meters 0.01) (meters 0.008333334)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:fade-a -0.8) - (:accel-y (meters -0.0002)) - (:timer (seconds 0.25)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -15) 4 (degrees 7.5)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:y (meters 0)) + (:scale-x (meters 0.4) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 60.0) + (:a 196.0) + (:vel-y (meters 0.01) (meters 0.008333334)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:fade-a -0.8) + (:accel-y (meters -0.0002)) + (:timer (seconds 0.25)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -15) 4 (degrees 7.5)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 407 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:y (meters 1.2)) - (:scale-x (meters 0.3) (meters 0.15)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 96.0) - (:a 48.0) - (:vel-y (meters 0.001)) - (:scalevel-x (meters 0.000125)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.08) - (:fade-g -0.026666667) - (:fade-b -0.026666667) - (:fade-a -0.053333335) - (:accel-y (meters 0.00001)) - (:friction 0.9975) - (:timer (seconds 4)) - (:flags (bit2)) - (:conerot-x (degrees -80) 1 (degrees 160)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:y (meters 1.2)) + (:scale-x (meters 0.3) (meters 0.15)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 96.0) + (:a 48.0) + (:vel-y (meters 0.001)) + (:scalevel-x (meters 0.000125)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.08) + (:fade-g -0.026666667) + (:fade-b -0.026666667) + (:fade-a -0.053333335) + (:accel-y (meters 0.00001)) + (:friction 0.9975) + (:timer (seconds 4)) + (:flags (bit2)) + (:conerot-x (degrees -80) 1 (degrees 160)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.2)))) (defpart 408 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.16) - (:x (meters -0.22) (meters 0.44)) - (:y (meters 0)) - (:z (meters -0.22) (meters 0.44)) - (:scale-x (meters 0.6) (meters 0.22)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 64.0) - (:vel-y (meters 0.0033333334)) - (:scalevel-x (meters 0.00026666667)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:accel-y (meters -0.00001)) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.16) + (:x (meters -0.22) (meters 0.44)) + (:y (meters 0)) + (:z (meters -0.22) (meters 0.44)) + (:scale-x (meters 0.6) (meters 0.22)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 64.0) + (:vel-y (meters 0.0033333334)) + (:scalevel-x (meters 0.00026666667)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:accel-y (meters -0.00001)) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpartgroup group-village1-pot :id 130 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 405 :fade-after (meters 50) :falloff-to (meters 60)) - (sp-item 406 :fade-after (meters 50) :falloff-to (meters 60)) - (sp-item 407 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 409 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 405 :fade-after (meters 50) :falloff-to (meters 60)) + (sp-item 406 :fade-after (meters 50) :falloff-to (meters 60)) + (sp-item 407 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 409 :fade-after (meters 60) :falloff-to (meters 80)))) (defpartgroup group-village1-mayor-fire :id 131 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 410 :fade-after (meters 50) :falloff-to (meters 80)) - (sp-item 411 :fade-after (meters 40) :falloff-to (meters 40) :binding 2292) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 2292 :flags (bit1 start-dead launch-asap)) - (sp-item 412 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 413 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 410 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 411 :fade-after (meters 40) :falloff-to (meters 40) :binding 2292) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 2292 :flags (bit1 start-dead launch-asap)) + (sp-item 412 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 413 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 411 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "fire-pop" :volume 100.0)) - (:x (meters -0.6) (meters 1.3)) - (:y (meters 1) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0) - (:b 0.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.04)) - (:accel-y (meters -0.00006666667) (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit1 bit3)) - (:conerot-x (degrees -20) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "fire-pop" :volume 100.0)) + (:x (meters -0.6) (meters 1.3)) + (:y (meters 1) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.04)) + (:accel-y (meters -0.00006666667) (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit1 bit3)) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2292 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-r 0.0) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit1 bit2 bit3 bit7)) - (:next-time (seconds 0.6)) - (:next-launcher 2293) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-r 0.0) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit1 bit2 bit3 bit7)) + (:next-time (seconds 0.6)) + (:next-launcher 2293))) (defpart 2293 - :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667)) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667))) (defpart 410 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0 10.0) - (:x (meters -1.2) (meters 2)) - (:y (meters 0)) - (:z (meters -0.4) (meters 0.8)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.73333335) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0 10.0) + (:x (meters -1.2) (meters 2)) + (:y (meters 0)) + (:z (meters -0.4) (meters 0.8)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.73333335) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 412 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters 0)) - (:z (meters -1) (meters 1.5)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters 0)) + (:z (meters -1) (meters 1.5)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpart 413 - :init-specs ((:num 0.4) - (:x (meters 0.2)) - (:rot-x 8) - (:r 3276.8) - (:g 2662.4) - (:b 2867.2) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 414) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 0.2)) + (:rot-x 8) + (:r 3276.8) + (:g 2662.4) + (:b 2867.2) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 414) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 414 - :init-specs ((:fade-b -1.3653333)) - ) + :init-specs ((:fade-b -1.3653333))) (defpartgroup group-village1-sagehut-seagulls :id 132 :bounds (static-bspherem 0 8 0 45) - :parts ((sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - (sp-item 416 :flags (start-dead launch-asap) :binding 417) - (sp-item 417 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 415 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 416) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)) + (sp-item 416 :flags (start-dead launch-asap) :binding 417) + (sp-item 417 :flags (is-3d start-dead)))) (defun bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) - (set! (-> arg2 y) (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) - (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))) - ) - ) + (set! (-> arg2 y) + (+ (-> (the-as process-drawable (-> arg1 key proc)) root trans y) + (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))) 0 - (none) - ) + (none)) (defpart 415 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-random-next-time) - (:num 1.0) - (:x (meters -15) (meters 30)) - (:y (meters 0) (meters 16)) - (:z (meters -15) (meters 30)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds -0.005)) - (:flags (bit3)) - (:userdata 199.98) - (:func 'bird-bob-func) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-random-next-time) + (:num 1.0) + (:x (meters -15) (meters 30)) + (:y (meters 0) (meters 16)) + (:z (meters -15) (meters 30)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds -0.005)) + (:flags (bit3)) + (:userdata 199.98) + (:func 'bird-bob-func))) (defun sparticle-seagull-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) (set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48))) 0 - (none) - ) + (none)) (defpart 416 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:birth-func 'birth-func-copy-omega-to-z) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0)) - (:z (meters 30)) - (:scale-x (meters 0)) - (:rot-z (degrees 0)) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.04)) - (:timer (seconds 2)) - (:flags (bit3 bit7)) - (:func 'sparticle-seagull-moon) - (:next-time (seconds 0.665)) - (:next-launcher 418) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:birth-func 'birth-func-copy-omega-to-z) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0)) + (:z (meters 30)) + (:scale-x (meters 0)) + (:rot-z (degrees 0)) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.04)) + (:timer (seconds 2)) + (:flags (bit3 bit7)) + (:func 'sparticle-seagull-moon) + (:next-time (seconds 0.665)) + (:next-launcher 418))) (defpart 418 - :init-specs ((:scale-x (meters 8)) - (:scalevel-x (meters -0.08)) - (:timer (seconds 2)) - (:next-time (seconds 0.335)) - (:next-launcher 419) - ) - ) + :init-specs + ((:scale-x (meters 8)) + (:scalevel-x (meters -0.08)) + (:timer (seconds 2)) + (:next-time (seconds 0.335)) + (:next-launcher 419))) (defpart 419 - :init-specs ((:scale-x (meters 0)) - (:scalevel-x (meters -0.04)) - (:timer (seconds 2)) - (:next-time (seconds 0.665)) - (:next-launcher 418) - ) - ) + :init-specs + ((:scale-x (meters 0)) + (:scalevel-x (meters -0.04)) + (:timer (seconds 2)) + (:next-time (seconds 0.665)) + (:next-launcher 418))) (defpart 417 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:birth-func 'birth-func-copy2-rot-color) - (:num 2.0) - (:scale-x (meters 4)) - (:scale-y (meters 1.5)) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:birth-func 'birth-func-copy2-rot-color) + (:num 2.0) + (:scale-x (meters 4)) + (:scale-y (meters 1.5)) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village1-butterfly-sitting :id 133 :bounds (static-bspherem 0 0.2 0 0.5) - :parts ((sp-item 420 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 421 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 420 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 421 :fade-after (meters 60) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)))) (defpart 420 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:num 1.0) - (:y (meters 0.05)) - (:scale-x (meters 0.9)) - (:rot-x (degrees 100.00001)) - (:rot-y (degrees 72.5)) - (:scale-y (meters 1.3)) - (:r 0.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:num 1.0) + (:y (meters 0.05)) + (:scale-x (meters 0.9)) + (:rot-x (degrees 100.00001)) + (:rot-y (degrees 72.5)) + (:scale-y (meters 1.3)) + (:r 0.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 422 - :init-specs ((:rotvel-x (degrees -0.31666666))) - ) + :init-specs ((:rotvel-x (degrees -0.31666666)))) (defpart 421 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:num 1.0) - (:y (meters 0.05)) - (:scale-x (meters 0.9)) - (:rot-x (degrees 80)) - (:rot-y (degrees 72.5)) - (:scale-y (meters 1.3)) - (:r 0.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 bit12 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:num 1.0) + (:y (meters 0.05)) + (:scale-x (meters 0.9)) + (:rot-x (degrees 80)) + (:rot-y (degrees 72.5)) + (:scale-y (meters 1.3)) + (:r 0.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 bit12 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 423 - :init-specs ((:rotvel-x (degrees 0.31666666))) - ) + :init-specs ((:rotvel-x (degrees 0.31666666)))) (defpartgroup group-village1-fountain :id 134 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 424 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150) :period (seconds 1.545) :length (seconds 0.465)) - (sp-item 426 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 1.755) :length (seconds 0.62)) - (sp-item 427 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.867) :length (seconds 0.707)) - (sp-item 428 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.345) :length (seconds 0.987)) - (sp-item 429 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 430 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 431 :fade-after (meters 40) :falloff-to (meters 40)) - ) - ) + :parts + ((sp-item 424 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 425 :fade-after (meters 150) :falloff-to (meters 150) :period (seconds 1.545) :length (seconds 0.465)) + (sp-item 426 :fade-after (meters 90) :falloff-to (meters 90) :period (seconds 1.755) :length (seconds 0.62)) + (sp-item 427 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.867) :length (seconds 0.707)) + (sp-item 428 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 1.345) :length (seconds 0.987)) + (sp-item 429 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 430 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 431 :fade-after (meters 40) :falloff-to (meters 40)))) (defpart 431 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 4.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:friction 0.97) - (:timer (seconds 0.75)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 15) (degrees 75)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 4.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:friction 0.97) + (:timer (seconds 0.75)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 15) (degrees 75)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 430 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.9) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 0.0) - (:vel-x (meters 0) (meters 0.0013333333)) - (:vel-y (meters 0.026666667) (meters 0.013333334)) - (:fade-a 1.0666667) - (:accel-y (meters -0.001)) - (:friction 0.925) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12)) - (:next-time (seconds 0.05) (seconds 0.047)) - (:next-launcher 432) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.9) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 0.0) + (:vel-x (meters 0) (meters 0.0013333333)) + (:vel-y (meters 0.026666667) (meters 0.013333334)) + (:fade-a 1.0666667) + (:accel-y (meters -0.001)) + (:friction 0.925) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12)) + (:next-time (seconds 0.05) (seconds 0.047)) + (:next-launcher 432) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 432 - :init-specs ((:fade-a -0.07111111)) - ) + :init-specs ((:fade-a -0.07111111))) (defpart 426 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 428 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 0) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 0) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 427 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 45) (degrees 30)) - (:conerot-y (degrees 120) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 45) (degrees 30)) + (:conerot-y (degrees 120) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 425 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 3.0 4.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.02) (meters 0.013333334)) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain-nosplash) - (:conerot-x (degrees 60) (degrees 30)) - (:conerot-y (degrees 240) (degrees 120)) - (:conerot-radius (meters 0.4) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 3.0 4.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.02) (meters 0.013333334)) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain-nosplash) + (:conerot-x (degrees 60) (degrees 30)) + (:conerot-y (degrees 240) (degrees 120)) + (:conerot-radius (meters 0.4) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 429 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 3.0) - (:y (meters 0) (meters 0.4)) - (:scale-x (meters 0.1) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0.0033333334) (meters 0.002)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:scalevel-y (meters 0.0026666666)) - (:fade-a -0.26666668) - (:accel-y (meters -0.002)) - (:friction 0.95) - (:timer (seconds 0.5)) - (:flags (bit2 bit12)) - (:userdata 45056.0) - (:func 'check-drop-level-village1-fountain) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0.3) (meters 0.3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 3.0) + (:y (meters 0) (meters 0.4)) + (:scale-x (meters 0.1) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0.0033333334) (meters 0.002)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:scalevel-y (meters 0.0026666666)) + (:fade-a -0.26666668) + (:accel-y (meters -0.002)) + (:friction 0.95) + (:timer (seconds 0.5)) + (:flags (bit2 bit12)) + (:userdata 45056.0) + (:func 'check-drop-level-village1-fountain) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0.3) (meters 0.3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 424 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 7.0) - (:y (meters -0.4) (meters 0.4)) - (:scale-x (meters 0.15) (meters 0.15)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-x (meters 0) (meters 0.0013333333)) - (:vel-y (meters 0.04)) - (:accel-y (meters -0.001)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.65)) - (:next-launcher 433) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 7.0) + (:y (meters -0.4) (meters 0.4)) + (:scale-x (meters 0.15) (meters 0.15)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-x (meters 0) (meters 0.0013333333)) + (:vel-y (meters 0.04)) + (:accel-y (meters -0.001)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.65)) + (:next-launcher 433) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 433 - :init-specs ((:scalevel-y (meters 0.0023076923))) - ) + :init-specs ((:scalevel-y (meters 0.0023076923)))) (defpart 434 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 96.0 32.0) - (:g 112.0 64.0) - (:b 128.0 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12)) - (:conerot-x (degrees 5) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 96.0 32.0) + (:g 112.0 64.0) + (:b 128.0 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12)) + (:conerot-x (degrees 5) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 435 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 96.0 16.0) - (:g 112.0 16.0) - (:b 128.0) - (:a 64.0 64.0) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.01) (meters 0.01)) - (:fade-a -1.2222222) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit12)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 96.0 16.0) + (:g 112.0 16.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.01) (meters 0.01)) + (:fade-a -1.2222222) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit12)) + (:rotate-y (degrees 0) (degrees 360)))) (defun check-drop-level-village1-fountain-nosplash ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -1188,10 +1142,7 @@ (set! (-> gp-0 y) (-> arg1 user-float)) (set! (-> gp-0 z) (-> arg2 z)) (set! (-> gp-0 w) 1.0) - gp-0 - ) - ) - ) + gp-0))) (defun check-drop-level-village1-fountain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) @@ -1199,829 +1150,781 @@ (sp-kill-particle arg0 arg1) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 434) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 435) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 435) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village1-bird-lady-birds :id 135 :bounds (static-bspherem 0 0 6 18) - :parts ((sp-item 436 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 437) - (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) - (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) - (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) - (sp-item 440 :flags (is-3d bit1 start-dead)) - (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) - (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) - (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) - (sp-item 440 :flags (is-3d bit1 start-dead)) - (sp-item 441 :fade-after (meters 40) :period (seconds 2) :length (seconds 0.017) :binding 442) - (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) - (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) - (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) - (sp-item 445 :flags (is-3d bit1 start-dead)) - (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) - (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) - (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) - (sp-item 445 :flags (is-3d bit1 start-dead)) - (sp-item 446 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 447) - (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) - (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) - (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) - (sp-item 450 :flags (is-3d bit1 start-dead)) - (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) - (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) - (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) - (sp-item 450 :flags (is-3d bit1 start-dead)) - (sp-item 451 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 452 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 453 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 454 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 455 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 456 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 457 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 458 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 459 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) - (sp-item 460 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 461) - (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) - (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) - (sp-item 463 :flags (is-3d bit1 start-dead)) - (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) - (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) - (sp-item 463 :flags (is-3d bit1 start-dead)) - (sp-item 464 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 465) - (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) - (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) - (sp-item 467 :flags (is-3d bit1 start-dead)) - (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) - (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) - (sp-item 467 :flags (is-3d bit1 start-dead)) - (sp-item 468 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 469) - (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) - (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) - (sp-item 471 :flags (is-3d bit1 start-dead)) - (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) - (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) - (sp-item 471 :flags (is-3d bit1 start-dead)) - (sp-item 472 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 473) - (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) - (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) - (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) - (sp-item 476 :flags (is-3d bit1 start-dead)) - (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) - (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) - (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) - (sp-item 476 :flags (is-3d bit1 start-dead)) - ) - ) + :parts + ((sp-item 436 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 437) + (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) + (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) + (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) + (sp-item 440 :flags (is-3d bit1 start-dead)) + (sp-item 437 :flags (bit1 start-dead launch-asap) :binding 438) + (sp-item 438 :flags (is-3d bit1 start-dead) :binding 439) + (sp-item 439 :flags (is-3d bit1 start-dead) :binding 440) + (sp-item 440 :flags (is-3d bit1 start-dead)) + (sp-item 441 :fade-after (meters 40) :period (seconds 2) :length (seconds 0.017) :binding 442) + (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) + (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) + (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) + (sp-item 445 :flags (is-3d bit1 start-dead)) + (sp-item 442 :flags (bit1 start-dead launch-asap) :binding 443) + (sp-item 443 :flags (is-3d bit1 start-dead) :binding 444) + (sp-item 444 :flags (is-3d bit1 start-dead) :binding 445) + (sp-item 445 :flags (is-3d bit1 start-dead)) + (sp-item 446 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 447) + (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) + (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) + (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) + (sp-item 450 :flags (is-3d bit1 start-dead)) + (sp-item 447 :flags (bit1 start-dead launch-asap) :binding 448) + (sp-item 448 :flags (is-3d bit1 start-dead) :binding 449) + (sp-item 449 :flags (is-3d bit1 start-dead) :binding 450) + (sp-item 450 :flags (is-3d bit1 start-dead)) + (sp-item 451 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 452 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 453 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 454 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 455 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 456 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 457 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 458 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 459 :fade-after (meters 40) :flags (is-3d bit1) :period (seconds 2) :length (seconds 0.017)) + (sp-item 460 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 461) + (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) + (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) + (sp-item 463 :flags (is-3d bit1 start-dead)) + (sp-item 461 :flags (is-3d bit1 start-dead) :binding 462) + (sp-item 462 :flags (is-3d bit1 start-dead) :binding 463) + (sp-item 463 :flags (is-3d bit1 start-dead)) + (sp-item 464 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 465) + (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) + (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) + (sp-item 467 :flags (is-3d bit1 start-dead)) + (sp-item 465 :flags (is-3d bit1 start-dead) :binding 466) + (sp-item 466 :flags (is-3d bit1 start-dead) :binding 467) + (sp-item 467 :flags (is-3d bit1 start-dead)) + (sp-item 468 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 469) + (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) + (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) + (sp-item 471 :flags (is-3d bit1 start-dead)) + (sp-item 469 :flags (is-3d bit1 start-dead) :binding 470) + (sp-item 470 :flags (is-3d bit1 start-dead) :binding 471) + (sp-item 471 :flags (is-3d bit1 start-dead)) + (sp-item 472 :fade-after (meters 40) :period (seconds 3) :length (seconds 0.017) :binding 473) + (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) + (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) + (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) + (sp-item 476 :flags (is-3d bit1 start-dead)) + (sp-item 473 :flags (bit1 start-dead launch-asap) :binding 474) + (sp-item 474 :flags (is-3d bit1 start-dead) :binding 475) + (sp-item 475 :flags (is-3d bit1 start-dead) :binding 476) + (sp-item 476 :flags (is-3d bit1 start-dead)))) (defpart 472 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0.8)) - (:y (meters 0.8)) - (:z (meters 15.3)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0.8)) + (:y (meters 0.8)) + (:z (meters 15.3)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 473 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 1.0666667)) - (:z (meters 0.25)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 1.0666667)) + (:z (meters 0.25)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 474 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees -60)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -60)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 475 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 476 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 464 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 5.9)) - (:y (meters 2.4)) - (:z (meters -5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 5.9)) + (:y (meters 2.4)) + (:z (meters -5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 465 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 466 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 467 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 468 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -8)) - (:y (meters 3.7)) - (:z (meters 2.2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -8)) + (:y (meters 3.7)) + (:z (meters 2.2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 469 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 470 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 471 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 460 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 1)) - (:y (meters 0.4)) - (:z (meters 15)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:vel-y (meters 0.006666667)) - (:accel-y (meters -0.000144)) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - (:next-time (seconds 1.5)) - (:next-launcher 477) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 1)) + (:y (meters 0.4)) + (:z (meters 15)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:vel-y (meters 0.006666667)) + (:accel-y (meters -0.000144)) + (:timer (seconds 3)) + (:flags (bit2 bit3)) + (:next-time (seconds 1.5)) + (:next-launcher 477))) (defpart 477 - :init-specs ((:accel-y (meters 0.00013))) - ) + :init-specs ((:accel-y (meters 0.00013)))) (defpart 461 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 462 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 463 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 457 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.6)) - (:rot-x (degrees 90)) - (:rot-y (degrees 270)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.6)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.6)) + (:rot-x (degrees 90)) + (:rot-y (degrees 270)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.6)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 458 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60)) - (:rot-y (degrees 150)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60)) + (:rot-y (degrees 150)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 459 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -6)) - (:y (meters 1.9)) - (:z (meters 3.15)) - (:scale-x (meters 0.4)) - (:rot-x (degrees 240)) - (:rot-y (degrees 30)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -6)) + (:y (meters 1.9)) + (:z (meters 3.15)) + (:scale-x (meters 0.4)) + (:rot-x (degrees 240)) + (:rot-y (degrees 30)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 454 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 210)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.5)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 210)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.5)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 455 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.3)) - (:rot-x (degrees -60)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.3)) + (:rot-x (degrees -60)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 456 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters -5.5)) - (:y (meters 4.5)) - (:z (meters -2.5)) - (:scale-x (meters 0.3)) - (:rot-x (degrees 240)) - (:rot-y (degrees -30)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 196.0) - (:g 196.0) - (:b 196.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters -5.5)) + (:y (meters 4.5)) + (:z (meters -2.5)) + (:scale-x (meters 0.3)) + (:rot-x (degrees 240)) + (:rot-y (degrees -30)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 196.0) + (:g 196.0) + (:b 196.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 451 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 180)) - (:rot-z (degrees 0)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:rot-z (degrees 0)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)))) (defpart 452 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.3)) - (:rot-x (degrees -60)) - (:rot-y (degrees 60)) - (:rot-z (degrees -60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees 0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 422) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.3)) + (:rot-x (degrees -60)) + (:rot-y (degrees 60)) + (:rot-z (degrees -60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees 0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 422))) (defpart 478 - :init-specs ((:rotvel-x (degrees -0.31666666))) - ) + :init-specs ((:rotvel-x (degrees -0.31666666)))) (defpart 453 - :init-specs ((:texture (new 'static 'texture-id :index #x8 :page #x2)) - (:num 1.0) - (:x (meters 2)) - (:y (meters 5)) - (:z (meters -4)) - (:scale-x (meters 0.3)) - (:rot-x (degrees 240)) - (:rot-y (degrees -60)) - (:rot-z (degrees 60)) - (:scale-y (meters 1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:rotvel-x (degrees -0.33333334)) - (:timer (seconds 2)) - (:flags (bit2 bit9 left-multiply-quat)) - (:next-time (seconds 1)) - (:next-launcher 423) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x8 :page #x2)) + (:num 1.0) + (:x (meters 2)) + (:y (meters 5)) + (:z (meters -4)) + (:scale-x (meters 0.3)) + (:rot-x (degrees 240)) + (:rot-y (degrees -60)) + (:rot-z (degrees 60)) + (:scale-y (meters 1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:rotvel-x (degrees -0.33333334)) + (:timer (seconds 2)) + (:flags (bit2 bit9 left-multiply-quat)) + (:next-time (seconds 1)) + (:next-launcher 423))) (defpart 479 - :init-specs ((:rotvel-x (degrees 0.31666666))) - ) + :init-specs ((:rotvel-x (degrees 0.31666666)))) (defpart 446 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -6.4)) - (:y (meters 4.8)) - (:z (meters 0.75)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -6.4)) + (:y (meters 4.8)) + (:z (meters 0.75)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 447 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.7111111)) - (:y (meters 4)) - (:z (meters 0.5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 0.0) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.7111111)) + (:y (meters 4)) + (:z (meters 0.5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 0.0) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 448 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees -60)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees -60)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 449 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 450 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 30)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 30)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 441 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -2.1)) - (:y (meters 3.7)) - (:z (meters -1.8)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 128.0) - (:timer (seconds 2)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -2.1)) + (:y (meters 3.7)) + (:z (meters -1.8)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 128.0) + (:timer (seconds 2)) + (:flags (bit2 bit3)))) (defpart 442 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters -1.8666667)) - (:z (meters 0.5)) - (:scale-x (meters 0.175)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 20571.021) - (:vel-x (meters 0.026666667)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters -1.8666667)) + (:z (meters 0.5)) + (:scale-x (meters 0.175)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 20571.021) + (:vel-x (meters 0.026666667)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 443 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:rot-y (degrees 180)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:rot-y (degrees 180)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 444 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees -90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees -90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 445 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees -90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 255.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees -90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 255.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 436 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -2.3)) - (:y (meters 4.6)) - (:z (meters -1.9)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 128.0) - (:timer (seconds 3)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -2.3)) + (:y (meters 4.6)) + (:z (meters -1.9)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 128.0) + (:timer (seconds 3)) + (:flags (bit2 bit3)))) (defpart 437 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 1.4222223)) - (:z (meters 0.5)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:r 0.0) - (:a 128.0) - (:omega 4551.1113) - (:vel-x (meters 0.017777778)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 1.4222223)) + (:z (meters 0.5)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:r 0.0) + (:a 128.0) + (:omega 4551.1113) + (:vel-x (meters 0.017777778)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7)))) (defpart 438 - :init-specs ((:texture (new 'static 'texture-id :index #x1b :page #x2)) - (:num 1.0) - (:scale-x (meters 0.5)) - (:rot-x (degrees 90)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 128.0) - (:g 128.0) - (:b 255.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1b :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5)) + (:rot-x (degrees 90)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 128.0) + (:g 128.0) + (:b 255.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 439 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees -60) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees -60) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) (defpart 440 - :init-specs ((:texture (new 'static 'texture-id :index #x1c :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:rot-x (degrees 135)) - (:rot-y (degrees 90)) - (:rot-z (degrees 120) (degrees 120)) - (:scale-y (meters 0.5)) - (:r 64.0) - (:g 128.0) - (:b 255.0) - (:a 64.0 1 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1c :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:rot-x (degrees 135)) + (:rot-y (degrees 90)) + (:rot-z (degrees 120) (degrees 120)) + (:scale-y (meters 0.5)) + (:r 64.0) + (:g 128.0) + (:b 255.0) + (:a 64.0 1 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9)))) diff --git a/goal_src/jak1/levels/village1/village1-part2.gc b/goal_src/jak1/levels/village1/village1-part2.gc index 5e30d5e366..c6edc6e774 100644 --- a/goal_src/jak1/levels/village1/village1-part2.gc +++ b/goal_src/jak1/levels/village1/village1-part2.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") ;; name: village1-part2.gc @@ -13,2190 +12,2131 @@ (defpartgroup group-village1-sagehut-rings :id 136 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 480 :fade-after (meters 60) :flags (is-3d)) - (sp-item 481 :fade-after (meters 60) :flags (is-3d)) - (sp-item 482 :fade-after (meters 50) :binding 483) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 484 :fade-after (meters 50) :binding 485) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 486 :fade-after (meters 50) :binding 487) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 480 :fade-after (meters 60) :flags (is-3d)) + (sp-item 481 :fade-after (meters 60) :flags (is-3d)) + (sp-item 482 :fade-after (meters 50) :binding 483) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 483 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 484 :fade-after (meters 50) :binding 485) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 485 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 486 :fade-after (meters 50) :binding 487) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 487 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpartgroup group-village1-sagehut-rings-2 :id 137 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 488 :fade-after (meters 50) :binding 489) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 490 :fade-after (meters 50) :binding 491) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 492 :fade-after (meters 50) :binding 493) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 488 :fade-after (meters 50) :binding 489) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 489 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 490 :fade-after (meters 50) :binding 491) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 491 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 492 :fade-after (meters 50) :binding 493) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 493 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpartgroup group-village1-sagehut-rings-3 :id 138 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 494 :fade-after (meters 50) :binding 495) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 496 :fade-after (meters 50) :binding 497) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 498 :fade-after (meters 50) :binding 499) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 494 :fade-after (meters 50) :binding 495) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 495 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 496 :fade-after (meters 50) :binding 497) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 497 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 498 :fade-after (meters 50) :binding 499) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)) + (sp-item 499 :fade-after (meters 50) :flags (start-dead launch-asap) :period (seconds 4) :length (seconds 0.017)))) (defpart 482 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.049)) - (:y (meters 2.368)) - (:z (meters 2.414)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.049)) + (:y (meters 2.368)) + (:z (meters 2.414)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 483 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 1.3333334)) - (:y (meters 0.44444445)) - (:z (meters 1.3)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 8.0 128.0) - (:a 6.0 16.0) - (:omega -2730.6667) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 1.3333334)) + (:y (meters 0.44444445)) + (:z (meters 1.3)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 8.0 128.0) + (:a 6.0 16.0) + (:omega -2730.6667) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 480 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.5) - (:x (meters -0.25) (meters 0.5)) - (:y (meters -0.55)) - (:z (meters 0.08)) - (:scale-x (meters 0.4) (meters 0.25)) - (:rot-x (degrees 80.5)) - (:rot-y (degrees 15.5)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 64.0 64.0) - (:b 0.0 1 64.0) - (:a 32.0 64.0) - (:vel-y (meters 0.0033333334)) - (:vel-z (meters -0.00033333333)) - (:fade-r -0.2) - (:fade-b -0.2) - (:fade-a -0.2) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit14 left-multiply-quat)) - (:rotate-y (degrees 15.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.5) + (:x (meters -0.25) (meters 0.5)) + (:y (meters -0.55)) + (:z (meters 0.08)) + (:scale-x (meters 0.4) (meters 0.25)) + (:rot-x (degrees 80.5)) + (:rot-y (degrees 15.5)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 64.0 64.0) + (:b 0.0 1 64.0) + (:a 32.0 64.0) + (:vel-y (meters 0.0033333334)) + (:vel-z (meters -0.00033333333)) + (:fade-r -0.2) + (:fade-b -0.2) + (:fade-a -0.2) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit14 left-multiply-quat)) + (:rotate-y (degrees 15.5)))) (defpart 481 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:z (meters -0.26)) - (:scale-x (meters 6)) - (:rot-x (degrees 80.5)) - (:rot-y (degrees 15.5)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 8.0 128.0) - (:a 48.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:z (meters -0.26)) + (:scale-x (meters 6)) + (:rot-x (degrees 80.5)) + (:rot-y (degrees 15.5)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 8.0 128.0) + (:a 48.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 18)))) (defpart 484 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.094)) - (:y (meters 3.068)) - (:z (meters 2.414)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:b 0.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.094)) + (:y (meters 3.068)) + (:z (meters 2.414)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:b 0.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 485 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.5) - (:x (meters -1.3333334)) - (:y (meters 0.6666667)) - (:z (meters 1.3)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 16.0) - (:omega 1820.4445) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.5) + (:x (meters -1.3333334)) + (:y (meters 0.6666667)) + (:z (meters 1.3)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 16.0) + (:omega 1820.4445) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 486 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters -0.425)) - (:y (meters 3.792)) - (:z (meters 2.391)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters -0.425)) + (:y (meters 3.792)) + (:z (meters 2.391)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 487 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.8888889)) - (:y (meters 1.3333334)) - (:z (meters 1.1)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 16.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.8888889)) + (:y (meters 1.3333334)) + (:z (meters 1.1)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 16.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 488 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.893)) - (:y (meters 3.56)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.893)) + (:y (meters 3.56)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 489 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2.6666667)) - (:y (meters -1.3333334)) - (:z (meters 0.75)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2.6666667)) + (:y (meters -1.3333334)) + (:z (meters 0.75)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 490 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.482)) - (:y (meters 4.296)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.482)) + (:y (meters 4.296)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 491 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 2.6666667)) - (:y (meters -0.44444445)) - (:z (meters 1)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 2.6666667)) + (:y (meters -0.44444445)) + (:z (meters 1)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 492 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 2.538)) - (:y (meters 4.979)) - (:z (meters 3.058)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 2.538)) + (:y (meters 4.979)) + (:z (meters 3.058)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 493 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 0.22222222)) - (:z (meters 0.9)) - (:scale-x (meters 1.56)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 6.0 12.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 0.22222222)) + (:z (meters 0.9)) + (:scale-x (meters 1.56)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 6.0 12.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 494 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.611)) - (:y (meters 2.762)) - (:z (meters -9.223)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.611)) + (:y (meters 2.762)) + (:z (meters -9.223)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 495 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.6666667)) - (:y (meters -1.1111112)) - (:z (meters 2)) - (:scale-x (meters 2.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 12.0 24.0) - (:omega 0.0) - (:vel-x (meters -0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.6666667)) + (:y (meters -1.1111112)) + (:z (meters 2)) + (:scale-x (meters 2.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 12.0 24.0) + (:omega 0.0) + (:vel-x (meters -0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 496 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.543)) - (:y (meters 2.356)) - (:z (meters -12.283)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.543)) + (:y (meters 2.356)) + (:z (meters -12.283)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 497 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4.888889)) - (:y (meters 0.9777778)) - (:z (meters 1.85)) - (:scale-x (meters 2.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 12.0 24.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4.888889)) + (:y (meters 0.9777778)) + (:z (meters 1.85)) + (:scale-x (meters 2.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 12.0 24.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 498 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25 0.1) - (:x (meters 11.588)) - (:y (meters 6.887)) - (:z (meters -10.833)) - (:scale-x (meters 0.5)) - (:scale-y :copy scale-x) - (:b 128.0) - (:a 0.0) - (:timer (seconds 4)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25 0.1) + (:x (meters 11.588)) + (:y (meters 6.887)) + (:z (meters -10.833)) + (:scale-x (meters 0.5)) + (:scale-y :copy scale-x) + (:b 128.0) + (:a 0.0) + (:timer (seconds 4)) + (:flags (bit3 bit14)))) (defpart 499 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -0.35555556)) - (:y (meters -1.3333334)) - (:z (meters 1.75)) - (:scale-x (meters 2.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 64.0) - (:g 0.0 128.0) - (:a 10.0 20.0) - (:omega 0.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0)) - (:vel-z (meters 0)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:timer (seconds 4)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -0.35555556)) + (:y (meters -1.3333334)) + (:z (meters 1.75)) + (:scale-x (meters 2.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 64.0) + (:g 0.0 128.0) + (:a 10.0 20.0) + (:omega 0.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0)) + (:vel-z (meters 0)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:timer (seconds 4)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-village1-sagehut-drips :id 139 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 500 :fade-after (meters 40) :period (seconds 2.245) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 50) :period (seconds 3.455) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 60) :period (seconds 5.24) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 40) :period (seconds 7.195) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 50) :period (seconds 9.777) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 60) :period (seconds 16.097) :length (seconds 0.017)) - (sp-item 500 :fade-after (meters 40) :period (seconds 21.167) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 2.865) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 50) :period (seconds 3.365) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 60) :period (seconds 4.575) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 7.025) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 50) :period (seconds 8.967) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 60) :period (seconds 13.765) :length (seconds 0.017)) - (sp-item 501 :fade-after (meters 40) :period (seconds 24.165) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 500 :fade-after (meters 40) :period (seconds 2.245) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 50) :period (seconds 3.455) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 60) :period (seconds 5.24) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 40) :period (seconds 7.195) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 50) :period (seconds 9.777) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 60) :period (seconds 16.097) :length (seconds 0.017)) + (sp-item 500 :fade-after (meters 40) :period (seconds 21.167) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 2.865) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 50) :period (seconds 3.365) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 60) :period (seconds 4.575) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 7.025) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 50) :period (seconds 8.967) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 60) :period (seconds 13.765) :length (seconds 0.017)) + (sp-item 501 :fade-after (meters 40) :period (seconds 24.165) :length (seconds 0.017)))) (defpart 502 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 2.0 6.0) - (:sound (static-sound-spec "drip-on-wood" :volume 50.0)) - (:scale-x (meters 0.05) (meters 0.075)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 128.0 64.0) - (:vel-y (meters 0.006666667) (meters 0.013333334)) - (:fade-a -0.5688889) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 5) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 2.0 6.0) + (:sound (static-sound-spec "drip-on-wood" :volume 50.0)) + (:scale-x (meters 0.05) (meters 0.075)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 128.0 64.0) + (:vel-y (meters 0.006666667) (meters 0.013333334)) + (:fade-a -0.5688889) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 5) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 503 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:y (meters 0.02)) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 32.0 32.0) - (:scalevel-x (meters 0.01) (meters 0.01)) - (:scalevel-y (meters 0.01) (meters 0.01)) - (:fade-a -0.7111111) - (:timer (seconds 0.3)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:y (meters 0.02)) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 32.0 32.0) + (:scalevel-x (meters 0.01) (meters 0.01)) + (:scalevel-y (meters 0.01) (meters 0.01)) + (:fade-a -0.7111111) + (:timer (seconds 0.3)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 500 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -0.9)) - (:y (meters 8.825)) - (:z (meters -2.5)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 96.0 32.0) - (:vel-x (meters -0.00125)) - (:vel-y (meters -0.001375)) - (:vel-z (meters 0.0017333332)) - (:scalevel-x (meters -0.00008333333)) - (:scalevel-y (meters 0.00016666666)) - (:timer (seconds 6)) - (:flags (bit3)) - (:userdata 189644.8) - (:func 'check-drop-level-sagehut) - (:next-time (seconds 2) (seconds 0.997)) - (:next-launcher 504) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -0.9)) + (:y (meters 8.825)) + (:z (meters -2.5)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 96.0 32.0) + (:vel-x (meters -0.00125)) + (:vel-y (meters -0.001375)) + (:vel-z (meters 0.0017333332)) + (:scalevel-x (meters -0.00008333333)) + (:scalevel-y (meters 0.00016666666)) + (:timer (seconds 6)) + (:flags (bit3)) + (:userdata 189644.8) + (:func 'check-drop-level-sagehut) + (:next-time (seconds 2) (seconds 0.997)) + (:next-launcher 504))) (defpart 504 - :init-specs ((:scalevel-y (meters 0.00033333333)) (:accel-x (meters 0.000033333334)) (:accel-y (meters -0.0005))) - ) + :init-specs ((:scalevel-y (meters 0.00033333333)) (:accel-x (meters 0.000033333334)) (:accel-y (meters -0.0005)))) (defpart 501 - :init-specs ((:texture (new 'static 'texture-id :index #x9 :page #x2)) - (:num 1.0) - (:x (meters -3.25)) - (:y (meters 5.55)) - (:z (meters 3)) - (:scale-x (meters 0.18)) - (:scale-y :copy scale-x) - (:g 96.0 128.0) - (:b 0.0 64.0) - (:a 0.0 32.0) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y (meters 0.0005)) - (:fade-a 0.32) - (:timer (seconds 4)) - (:flags (bit3)) - (:userdata 189644.8) - (:func 'check-drop-level-sagehut) - (:next-time (seconds 1)) - (:next-launcher 505) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x9 :page #x2)) + (:num 1.0) + (:x (meters -3.25)) + (:y (meters 5.55)) + (:z (meters 3)) + (:scale-x (meters 0.18)) + (:scale-y :copy scale-x) + (:g 96.0 128.0) + (:b 0.0 64.0) + (:a 0.0 32.0) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y (meters 0.0005)) + (:fade-a 0.32) + (:timer (seconds 4)) + (:flags (bit3)) + (:userdata 189644.8) + (:func 'check-drop-level-sagehut) + (:next-time (seconds 1)) + (:next-launcher 505))) (defpart 505 - :init-specs ((:accel-y (meters -0.00076666666))) - ) + :init-specs ((:accel-y (meters -0.00076666666)))) (defun check-drop-level-sagehut ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) (launch-particles (-> *part-id-table* 502) gp-0 :rate 1.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 503) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 503) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village1-sagehut-warpgate :id 140 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1970 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1971 :fade-after (meters 60) :falloff-to (meters 100) :binding 1968) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1968 :flags (bit1 start-dead launch-asap)) - (sp-item 1972 :fade-after (meters 60) :falloff-to (meters 100) :binding 1969) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1969 :flags (bit1 start-dead launch-asap)) - (sp-item 1973 :fade-after (meters 100) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1970 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1971 :fade-after (meters 60) :falloff-to (meters 100) :binding 1968) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1968 :flags (bit1 start-dead launch-asap)) + (sp-item 1972 :fade-after (meters 60) :falloff-to (meters 100) :binding 1969) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1969 :flags (bit1 start-dead launch-asap)) + (sp-item 1973 :fade-after (meters 100) :flags (is-3d)))) (defpart 1973 - :init-specs ((:texture (new 'static 'texture-id :index #x3 :page #x2)) - (:num 0.5) - (:x (meters 0)) - (:scale-x (meters 5)) - (:rot-x (degrees 90)) - (:rot-z (degrees 105)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 0.0 64.0) - (:timer (seconds 0.035)) - (:flags (bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x3 :page #x2)) + (:num 0.5) + (:x (meters 0)) + (:scale-x (meters 5)) + (:rot-x (degrees 90)) + (:rot-z (degrees 105)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 0.0 64.0) + (:timer (seconds 0.035)) + (:flags (bit3 bit14)))) (defpart 1972 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -35)))) (defpart 1969 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 2.4444444)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 2.4444444)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 1970 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 2.968116) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 2.968116) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -35)))) (defpart 1971 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:accel-x (meters 0.000016666667)) - (:timer (seconds 2.3)) - (:flags (bit3 bit14)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:accel-x (meters 0.000016666667)) + (:timer (seconds 2.3)) + (:flags (bit3 bit14)) + (:rotate-y (degrees -35)))) (defpart 1968 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters 2.4444444)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.21333334) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters 2.4444444)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.21333334) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpartgroup group-village1-misty-fog :id 141 :flags (always-draw) :bounds (static-bspherem 0 10 0 260) - :parts ((sp-item 511)) - ) + :parts ((sp-item 511))) (defpart 511 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.04) - (:y (meters 45)) - (:scale-x (meters 300) (meters 100)) - (:scale-y (meters 100)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.016666668)) - (:scalevel-x (meters 0.025)) - (:fade-a 0.10666667) - (:timer (seconds 6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.5) (seconds 0.497)) - (:next-launcher 512) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 120) (degrees 200.00002)) - (:conerot-radius (meters 250) (meters 50)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.04) + (:y (meters 45)) + (:scale-x (meters 300) (meters 100)) + (:scale-y (meters 100)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.016666668)) + (:scalevel-x (meters 0.025)) + (:fade-a 0.10666667) + (:timer (seconds 6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.5) (seconds 0.497)) + (:next-launcher 512) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 120) (degrees 200.00002)) + (:conerot-radius (meters 250) (meters 50)))) (defpart 512 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.497)) (:next-launcher 513)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1.5) (seconds 0.497)) (:next-launcher 513))) (defpart 513 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpartgroup group-village1-training-spouts :id 684 :flags (always-draw) :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 2844 :period (seconds 15) :length (seconds 4)) - (sp-item 2845 :period (seconds 15) :length (seconds 4) :offset 4050) - (sp-item 2846 :period (seconds 15) :length (seconds 4) :offset 1500) - (sp-item 2847 :period (seconds 15) :length (seconds 4) :offset 1050) - (sp-item 2848 :period (seconds 15) :length (seconds 4) :offset 3000) - (sp-item 2849 :period (seconds 15) :length (seconds 4) :offset 2550) - ) - ) + :parts + ((sp-item 2844 :period (seconds 15) :length (seconds 4)) + (sp-item 2845 :period (seconds 15) :length (seconds 4) :offset 4050) + (sp-item 2846 :period (seconds 15) :length (seconds 4) :offset 1500) + (sp-item 2847 :period (seconds 15) :length (seconds 4) :offset 1050) + (sp-item 2848 :period (seconds 15) :length (seconds 4) :offset 3000) + (sp-item 2849 :period (seconds 15) :length (seconds 4) :offset 2550))) (defpart 2848 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 60)) - (:y (meters -8)) - (:z (meters -155)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 60)) + (:y (meters -8)) + (:z (meters -155)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2849 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters 60)) - (:y (meters 95) (meters 20)) - (:z (meters -155)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters 60)) + (:y (meters 95) (meters 20)) + (:z (meters -155)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2846 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters 0)) - (:y (meters -8)) - (:z (meters 0)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters 0)) + (:y (meters -8)) + (:z (meters 0)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2847 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters 0)) - (:y (meters 95) (meters 20)) - (:z (meters 0)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters 0)) + (:y (meters 95) (meters 20)) + (:z (meters 0)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2844 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.06) - (:x (meters -100)) - (:y (meters -8)) - (:z (meters 0)) - (:scale-x (meters 8)) - (:rot-z (degrees 180)) - (:scale-y (meters 64)) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 32.0 32.0) - (:vel-y (meters 0.36666667) (meters 0.033333335)) - (:scalevel-x (meters 0.0033333334)) - (:scalevel-y (meters -0.035555556)) - (:accel-y (meters -0.004)) - (:timer (seconds 2)) - (:flags (bit2 bit12)) - (:next-time (seconds 1.7)) - (:next-launcher 2850) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.06) + (:x (meters -100)) + (:y (meters -8)) + (:z (meters 0)) + (:scale-x (meters 8)) + (:rot-z (degrees 180)) + (:scale-y (meters 64)) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 32.0 32.0) + (:vel-y (meters 0.36666667) (meters 0.033333335)) + (:scalevel-x (meters 0.0033333334)) + (:scalevel-y (meters -0.035555556)) + (:accel-y (meters -0.004)) + (:timer (seconds 2)) + (:flags (bit2 bit12)) + (:next-time (seconds 1.7)) + (:next-launcher 2850) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2850 - :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667)) - ) + :init-specs ((:scalevel-x (meters 0.06666667)) (:fade-a -1.0666667))) (defpart 2845 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.25) - (:x (meters -100)) - (:y (meters 95) (meters 20)) - (:z (meters 0)) - (:scale-x (meters 12)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 200.0 55.0) - (:b 200.0 55.0) - (:a 0.0) - (:scalevel-x (meters 0.07111111)) - (:rotvel-z (degrees -0.1) (degrees 0.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-a 1.0666667) - (:accel-x (meters 0) (meters 0.00033333333)) - (:accel-y (meters -0.001) (meters -0.00033333333)) - (:timer (seconds 6)) - (:flags (bit2 bit12)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2851) - (:conerot-x (degrees 0) (degrees 1)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.25) + (:x (meters -100)) + (:y (meters 95) (meters 20)) + (:z (meters 0)) + (:scale-x (meters 12)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 200.0 55.0) + (:b 200.0 55.0) + (:a 0.0) + (:scalevel-x (meters 0.07111111)) + (:rotvel-z (degrees -0.1) (degrees 0.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-a 1.0666667) + (:accel-x (meters 0) (meters 0.00033333333)) + (:accel-y (meters -0.001) (meters -0.00033333333)) + (:timer (seconds 6)) + (:flags (bit2 bit12)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2851) + (:conerot-x (degrees 0) (degrees 1)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2851 - :init-specs ((:fade-a -0.03678161)) - ) + :init-specs ((:fade-a -0.03678161))) (defpartgroup group-village1-trans-pad :id 142 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 514 :fade-after (meters 160)) - (sp-item 515 :fade-after (meters 160)) - (sp-item 516 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)) - ) - ) + :parts + ((sp-item 514 :fade-after (meters 160)) + (sp-item 515 :fade-after (meters 160)) + (sp-item 516 :fade-after (meters 60) :falloff-to (meters 60) :flags (is-3d)))) (defpart 514 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 5)) - (:scale-x (meters 10) (meters 1)) - (:scale-y (meters 10)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 32.0 32.0) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 5)) + (:scale-x (meters 10) (meters 1)) + (:scale-y (meters 10)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 32.0 32.0) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 515 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.5) - (:y (meters 3)) - (:scale-x (meters 5) (meters 1)) - (:scale-y (meters 10)) - (:r 40.0) - (:g 60.0 60.0) - (:b 128.0) - (:a 64.0 64.0) - (:fade-a -8.533334) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.5) + (:y (meters 3)) + (:scale-x (meters 5) (meters 1)) + (:scale-y (meters 10)) + (:r 40.0) + (:g 60.0 60.0) + (:b 128.0) + (:a 64.0 64.0) + (:fade-a -8.533334) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 516 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 1.0) - (:y (meters 0.75) (meters 0.1)) - (:scale-x (meters 0)) - (:rot-x (degrees 0) (degrees 15)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 16.0) - (:g 0.0 127.0) - (:b 127.0) - (:a 127.0) - (:vel-y (meters 0)) - (:scalevel-x (meters 0.013333334)) - (:rotvel-y (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.21333334) - (:accel-y (meters -0.00015)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:y (meters 0.75) (meters 0.1)) + (:scale-x (meters 0)) + (:rot-x (degrees 0) (degrees 15)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 16.0) + (:g 0.0 127.0) + (:b 127.0) + (:a 127.0) + (:vel-y (meters 0)) + (:scalevel-x (meters 0.013333334)) + (:rotvel-y (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.21333334) + (:accel-y (meters -0.00015)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3)))) diff --git a/goal_src/jak1/levels/village1/yakow.gc b/goal_src/jak1/levels/village1/yakow.gc index 00d20b1dad..b7c9d88797 100644 --- a/goal_src/jak1/levels/village1/yakow.gc +++ b/goal_src/jak1/levels/village1/yakow.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI1.DGO") - (require "engine/nav/navigate.gc") (require "engine/gfx/shadow/shadow-cpu.gc") (require "engine/anim/aligner-h.gc") @@ -19,224 +18,169 @@ ;; DECOMP BEGINS -(defskelgroup *village1cam-sg* village1cam village1cam-lod0-jg village1cam-anim-ja - ((village1cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *village1cam-sg* + village1cam + village1cam-lod0-jg + village1cam-anim-ja + ((village1cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defun yakow-cam () (with-pp (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) - (if gp-0 - (process-spawn pov-camera (-> gp-0 extra trans) *village1cam-sg* "anim" 0 #f '() :to pp) - ) - ) - (none) - ) - ) + (if gp-0 (process-spawn pov-camera (-> gp-0 extra trans) *village1cam-sg* "anim" 0 #f () :to pp))) + (none))) (deftype yakow-bank (basic) - ((walk-cycle-frame-count float) - (run-cycle-frame-count float) - (walk-speed meters) - (run-speed meters) - (walk-anim-speed float) - (run-anim-speed float) - (walk-away-dist meters) - (run-away-dist meters) - (walk-rotate-speed float) - (run-rotate-speed float) - (walk-turn-time time-frame) - (run-turn-time time-frame) - (max-walk-speed float) - (min-run-speed float) - (walk-run-blend-rate float) - (walk-turn-blend-rate float) - (max-run-speed float) - (acceleration meters) - (default-patrol-time time-frame) - (default-idle-distance meters) - (safe-distance meters) - (min-run-anim-speed float) - (max-run-anim-speed float) - (min-walk-anim-speed float) - (speed-boost-impulse meters) - ) - ) + ((walk-cycle-frame-count float) + (run-cycle-frame-count float) + (walk-speed meters) + (run-speed meters) + (walk-anim-speed float) + (run-anim-speed float) + (walk-away-dist meters) + (run-away-dist meters) + (walk-rotate-speed float) + (run-rotate-speed float) + (walk-turn-time time-frame) + (run-turn-time time-frame) + (max-walk-speed float) + (min-run-speed float) + (walk-run-blend-rate float) + (walk-turn-blend-rate float) + (max-run-speed float) + (acceleration meters) + (default-patrol-time time-frame) + (default-idle-distance meters) + (safe-distance meters) + (min-run-anim-speed float) + (max-run-anim-speed float) + (min-walk-anim-speed float) + (speed-boost-impulse meters))) - -(define *YAKOW-bank* (new 'static 'yakow-bank - :walk-cycle-frame-count 16.0 - :run-cycle-frame-count 16.0 - :walk-speed (meters 2.13) - :run-speed (meters 6) - :walk-anim-speed 1.0 - :run-anim-speed 2.0 - :walk-away-dist (meters 10) - :run-away-dist (meters 6) - :walk-rotate-speed 131072.0 - :run-rotate-speed 131072.0 - :walk-turn-time (seconds 0.5) - :run-turn-time (seconds 0.2) - :max-walk-speed 16384.0 - :min-run-speed 15155.2 - :walk-run-blend-rate 6.0 - :walk-turn-blend-rate 4.0 - :max-run-speed 61440.0 - :acceleration (meters 3) - :default-patrol-time (seconds 1) - :default-idle-distance (meters 10) - :safe-distance (meters 20) - :min-run-anim-speed 0.5 - :max-run-anim-speed 1.5 - :min-walk-anim-speed 0.5 - :speed-boost-impulse (meters 4) - ) - ) +(define *YAKOW-bank* + (new 'static + 'yakow-bank + :walk-cycle-frame-count 16.0 + :run-cycle-frame-count 16.0 + :walk-speed (meters 2.13) + :run-speed (meters 6) + :walk-anim-speed 1.0 + :run-anim-speed 2.0 + :walk-away-dist (meters 10) + :run-away-dist (meters 6) + :walk-rotate-speed 131072.0 + :run-rotate-speed 131072.0 + :walk-turn-time (seconds 0.5) + :run-turn-time (seconds 0.2) + :max-walk-speed 16384.0 + :min-run-speed 15155.2 + :walk-run-blend-rate 6.0 + :walk-turn-blend-rate 4.0 + :max-run-speed 61440.0 + :acceleration (meters 3) + :default-patrol-time (seconds 1) + :default-idle-distance (meters 10) + :safe-distance (meters 20) + :min-run-anim-speed 0.5 + :max-run-anim-speed 1.5 + :min-walk-anim-speed 0.5 + :speed-boost-impulse (meters 4))) (deftype yakow (process-drawable) - ((root collide-shape-moving :override) - (fact fact-info-enemy :override) - (player-attack-id int32) - (walk-run-blend float) - (walk-turn-blend float) - (run-mode basic) - (travel-speed meters) - (final-speed meters) - (rotate-speed float) - (turn-time time-frame) - (vulnerable basic) - (grazing basic) - (push-velocity vector :inline) - (home-base vector :inline) - (dest-base vector :inline) - (dest-rot degrees) - (enable-turn-around basic) - (rotating basic) - (in-pen basic) - ) + ((root collide-shape-moving :override) + (fact fact-info-enemy :override) + (player-attack-id int32) + (walk-run-blend float) + (walk-turn-blend float) + (run-mode basic) + (travel-speed meters) + (final-speed meters) + (rotate-speed float) + (turn-time time-frame) + (vulnerable basic) + (grazing basic) + (push-velocity vector :inline) + (home-base vector :inline) + (dest-base vector :inline) + (dest-rot degrees) + (enable-turn-around basic) + (rotating basic) + (in-pen basic)) (:states - yakow-die - yakow-graze - yakow-graze-kicked - yakow-idle - yakow-kicked - yakow-notice - yakow-run-away - (yakow-walk-to vector) - ) - ) + yakow-die + yakow-graze + yakow-graze-kicked + yakow-idle + yakow-kicked + yakow-notice + yakow-run-away + (yakow-walk-to vector))) - -(defskelgroup *yakow-sg* yakow yakow-lod0-jg yakow-idle-ja - ((yakow-lod0-mg (meters 20)) (yakow-lod1-mg (meters 999999))) - :bounds (static-spherem 0 2.5 0 4.4) - :longest-edge (meters 1.3) - :shadow yakow-shadow-mg - ) +(defskelgroup *yakow-sg* + yakow + yakow-lod0-jg + yakow-idle-ja + ((yakow-lod0-mg (meters 20)) (yakow-lod1-mg (meters 999999))) + :bounds (static-spherem 0 2.5 0 4.4) + :longest-edge (meters 1.3) + :shadow yakow-shadow-mg) (defbehavior yakow-default-event-handler yakow ((arg0 process-drawable) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch) (let* ((s4-0 arg0) - (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) - s4-0 - ) - ) - ) + (v1-2 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) s4-0))) (when (and v1-2 (< 8192.0 (- (-> v1-2 root trans y) (-> self root trans y)))) (do-push-aways! (-> self root)) - (send-shove-back (-> self root) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0) - ) - ) - ) + (send-shove-back (-> self root) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)))) (('attack) (let ((v1-9 (-> arg3 param 2))) (cond ((!= v1-9 (-> self player-attack-id)) (set! (-> self player-attack-id) (the-as int v1-9)) - (if (-> self vulnerable) - (go yakow-kicked) - ) - ) - (else - 'push - ) - ) - ) - ) - ) - ) + (if (-> self vulnerable) (go yakow-kicked))) + (else 'push)))))) yakow-default-event-handler (defbehavior yakow-task-complete? yakow ((arg0 symbol)) (local-vars (sv-16 symbol) (sv-20 (pointer process-tree))) - (let ((gp-0 - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) - ) + (let ((gp-0 (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))))) (if arg0 - (process-entity-status! self (entity-perm-status complete) #t) - (process-entity-status! self (entity-perm-status complete) #f) - ) + (process-entity-status! self (entity-perm-status complete) #t) + (process-entity-status! self (entity-perm-status complete) #f)) (when (or (-> self link prev) (-> self link next)) (set! sv-16 (the-as symbol #f)) (set! sv-20 (-> self child)) (apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16)) (cond (sv-16 - (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) - (close-specific-task! (-> self entity extra perm task) (task-status need-introduction)) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (if gp-0 - (yakow-cam) - ) - ;; og:preserve-this PAL patch here - (process-spawn-function - process - (lambda :behavior process - () - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) - (suspend) - ) - (level-hint-spawn - (text-id village1-yakow-resolution) - "sksp018a" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - :to self - ) - ) - (else - (open-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - ) - ) - sv-16 - ) - ) - ) + (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) + (close-specific-task! (-> self entity extra perm task) (task-status need-introduction)) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (if gp-0 (yakow-cam)) + ;; og:preserve-this PAL patch here + (process-spawn-function process + (lambda :behavior process () + (while (or (-> *setting-control* current ambient) (-> *setting-control* current movie) (-> *setting-control* current hint)) + (suspend)) + (level-hint-spawn (text-id village1-yakow-resolution) "sksp018a" (the-as entity #f) *entity-pool* (game-task none))) + :to + self)) + (else (open-specific-task! (-> self entity extra perm task) (task-status need-reminder)))) + sv-16))) (defbehavior yakow-common-post yakow () (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - (if *target* - (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self) - ) + (if *target* (look-at-enemy! (-> *target* neck) (the-as vector (-> self root root-prim prim-core)) #f self)) (ja-post) - (none) - ) + (none)) (defbehavior yakow-simple-post yakow () (yakow-common-post) (update-transforms! (-> self root)) - (none) - ) + (none)) (defbehavior yakow-post yakow () (nav-control-method-11 (-> self nav) (-> self nav target-pos)) @@ -244,62 +188,43 @@ yakow-default-event-handler (let ((f30-0 0.0)) (when (< 40.96 (vector-length (-> self nav travel))) (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (vector-z-quaternion! s5-0 (-> self root quat)) (seek-toward-heading-vec! (-> self root) (-> self nav travel) (-> self rotate-speed) (-> self turn-time)) (vector-z-quaternion! gp-0 (-> self root quat)) (set! (-> self rotating) (< (vector-dot gp-0 s5-0) (cos (* 8192.0 (seconds-per-frame))))) (when (-> self rotating) - (let ((v1-16 (new 'stack-no-clear 'vector))) - (vector-cross! v1-16 gp-0 s5-0) - (set! f30-0 (sign (-> v1-16 y))) - ) - ) - ) - ) - (seek! (-> self walk-turn-blend) f30-0 (* (-> *YAKOW-bank* walk-turn-blend-rate) (seconds-per-frame))) - ) + (let ((v1-16 (new 'stack-no-clear 'vector))) (vector-cross! v1-16 gp-0 s5-0) (set! f30-0 (sign (-> v1-16 y))))))) + (seek! (-> self walk-turn-blend) f30-0 (* (-> *YAKOW-bank* walk-turn-blend-rate) (seconds-per-frame)))) (set! (-> self final-speed) - (fmin (-> self travel-speed) (* (vector-length (-> self nav travel)) (-> *display* frames-per-second))) - ) + (fmin (-> self travel-speed) (* (vector-length (-> self nav travel)) (-> *display* frames-per-second)))) (let ((v1-24 (vector-normalize-copy! (new-stack-vector0) (-> self nav travel) (-> self final-speed)))) (set! (-> self root transv x) (-> v1-24 x)) - (set! (-> self root transv z) (-> v1-24 z)) - ) + (set! (-> self root transv z) (-> v1-24 z))) (vector-v++! (-> self root transv) (compute-acc-due-to-gravity (-> self root) (new-stack-vector0) 0.0)) (let ((gp-2 (new 'stack-no-clear 'vector))) (set! (-> gp-2 quad) (-> self root trans quad)) - (integrate-for-enemy-with-move-to-ground! - (-> self root) - (-> self root transv) - (collide-kind background) - 8192.0 - #t - #f - #f - ) - (set! (-> self final-speed) - (* (vector-vector-xz-distance gp-2 (-> self root trans)) (-> *display* frames-per-second)) - ) - ) + (integrate-for-enemy-with-move-to-ground! (-> self root) + (-> self root transv) + (collide-kind background) + 8192.0 + #t + #f + #f) + (set! (-> self final-speed) (* (vector-vector-xz-distance gp-2 (-> self root trans)) (-> *display* frames-per-second)))) (set! (-> self travel-speed) (fmin (-> self travel-speed) (-> self final-speed))) (water-control-method-10 (-> self water)) (when (and (logtest? (-> self nav current-poly pat) 2) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))) (set! (-> self in-pen) #t) (set! (-> self nav destination-pos quad) (-> self dest-base quad)) - (yakow-task-complete? #t) - ) + (yakow-task-complete? #t)) (yakow-common-post) - (none) - ) + (none)) (defbehavior yakow-generate-travel-vector yakow () (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (target-pos 0))) - (s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))) - ) + (s5-1 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat)))) 0.0 0.0 (set! (-> gp-1 y) 0.0) @@ -310,445 +235,292 @@ yakow-default-event-handler (set! (-> gp-1 quad) (-> self nav travel quad)) (let ((f30-0 (vector-length gp-1))) (vector-normalize! gp-1 1.0) - (if (and (< 409.6 f30-0) (>= (vector-dot s5-1 gp-1) (cos 10922.667))) - (set! (-> s5-1 quad) (-> gp-1 quad)) - ) - ) + (if (and (< 409.6 f30-0) (>= (vector-dot s5-1 gp-1) (cos 10922.667))) (set! (-> s5-1 quad) (-> gp-1 quad)))) (set! (-> self nav travel quad) (-> s5-1 quad)) (vector-normalize! (-> self nav travel) 409600.0) (nav-control-method-24 (-> self nav) 204.8 (the-as clip-travel-vector-to-mesh-return-info #f)) - (vector-length (-> self nav travel)) - ) - ) - (vector+! (-> self nav target-pos) (-> self root trans) (-> self nav travel)) - ) + (vector-length (-> self nav travel)))) + (vector+! (-> self nav target-pos) (-> self root trans) (-> self nav travel))) (defbehavior yakow-run-post yakow () (yakow-generate-travel-vector) (yakow-post) - (none) - ) + (none)) (defbehavior yakow-blend-walk-run yakow () (let ((gp-0 (current-time))) - (loop - (let ((f30-0 (-> self final-speed))) - (cond - ((and (>= 409.6 (-> self final-speed)) (not (-> self rotating))) - (if (not (ja-group? yakow-idle-ja)) - (ja-channel-push! 1 (seconds 0.15)) - ) - (ja :group! yakow-idle-ja :num! min) - (while (or (not (time-elapsed? gp-0 (seconds 0.2))) (< (-> self final-speed) 409.6)) - (suspend) - (ja :num! (loop!)) - ) - ) - (else - (set! gp-0 (current-time)) - ) - ) - (when (not (ja-group? yakow-walk-ja)) - (ja-channel-push! 3 (seconds 0.075)) - (ja :group! yakow-walk-ja :num! min :frame-interp 0.0) - (ja :chan 1 :group! yakow-walk-left-ja :num! min :frame-interp 0.0) - (ja :chan 2 :group! yakow-run-ja :num! min :frame-interp 0.0) - ) - (if (< (-> self walk-turn-blend) 0.0) - (ja :chan 1 :group! yakow-walk-left-ja) - (ja :chan 1 :group! yakow-walk-right-ja) - ) - (cond - ((< f30-0 (-> *YAKOW-bank* min-run-speed)) - (set! (-> self run-mode) #f) - ) - ((< (-> *YAKOW-bank* max-walk-speed) f30-0) - (set! (-> self run-mode) #t) - ) - ) - (if (-> self run-mode) - (seek! (-> self walk-run-blend) 1.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) - (seek! (-> self walk-run-blend) 0.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) - ) - (ja :chan 1 :frame-interp (fabs (-> self walk-turn-blend))) - (ja :chan 2 :frame-interp (-> self walk-run-blend)) - (let* ((f0-25 (* (-> *YAKOW-bank* walk-anim-speed) f30-0)) - (f1-5 (-> *YAKOW-bank* walk-speed)) - (f0-26 (* f0-25 (/ 1.0 f1-5))) - ) - (let* ((f1-9 (* (-> *YAKOW-bank* run-anim-speed) f30-0)) - (f2-1 (-> *YAKOW-bank* run-speed)) - (f1-12 - (fmax (fmin (* f1-9 (/ 1.0 f2-1)) (-> *YAKOW-bank* max-run-anim-speed)) (-> *YAKOW-bank* min-run-anim-speed)) - ) - ) + (loop (let ((f30-0 (-> self final-speed))) + (cond + ((and (>= 409.6 (-> self final-speed)) (not (-> self rotating))) + (if (not (ja-group? yakow-idle-ja)) (ja-channel-push! 1 (seconds 0.15))) + (ja :group! yakow-idle-ja :num! min) + (while (or (not (time-elapsed? gp-0 (seconds 0.2))) (< (-> self final-speed) 409.6)) + (suspend) + (ja :num! (loop!)))) + (else (set! gp-0 (current-time)))) + (when (not (ja-group? yakow-walk-ja)) + (ja-channel-push! 3 (seconds 0.075)) + (ja :group! yakow-walk-ja :num! min :frame-interp 0.0) + (ja :chan 1 :group! yakow-walk-left-ja :num! min :frame-interp 0.0) + (ja :chan 2 :group! yakow-run-ja :num! min :frame-interp 0.0)) + (if (< (-> self walk-turn-blend) 0.0) (ja :chan 1 :group! yakow-walk-left-ja) (ja :chan 1 :group! yakow-walk-right-ja)) + (cond + ((< f30-0 (-> *YAKOW-bank* min-run-speed)) (set! (-> self run-mode) #f)) + ((< (-> *YAKOW-bank* max-walk-speed) f30-0) (set! (-> self run-mode) #t))) (if (-> self run-mode) - (set! f0-26 f1-12) - ) - ) - (if (-> self rotating) - (set! f0-26 (fmax (-> *YAKOW-bank* min-walk-anim-speed) f0-26)) - ) - (ja :num! (loop! f0-26)) - ) - ) + (seek! (-> self walk-run-blend) 1.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame))) + (seek! (-> self walk-run-blend) 0.0 (* (-> *YAKOW-bank* walk-run-blend-rate) (seconds-per-frame)))) + (ja :chan 1 :frame-interp (fabs (-> self walk-turn-blend))) + (ja :chan 2 :frame-interp (-> self walk-run-blend)) + (let* ((f0-25 (* (-> *YAKOW-bank* walk-anim-speed) f30-0)) + (f1-5 (-> *YAKOW-bank* walk-speed)) + (f0-26 (* f0-25 (/ 1.0 f1-5)))) + (let* ((f1-9 (* (-> *YAKOW-bank* run-anim-speed) f30-0)) + (f2-1 (-> *YAKOW-bank* run-speed)) + (f1-12 (fmax (fmin (* f1-9 (/ 1.0 f2-1)) (-> *YAKOW-bank* max-run-anim-speed)) (-> *YAKOW-bank* min-run-anim-speed)))) + (if (-> self run-mode) (set! f0-26 f1-12))) + (if (-> self rotating) (set! f0-26 (fmax (-> *YAKOW-bank* min-walk-anim-speed) f0-26))) + (ja :num! (loop! f0-26)))) (ja :chan 1 :num-func num-func-identity :frame-num (ja-frame-num 0)) (ja :chan 2 :num-func num-func-identity :frame-num (ja-frame-num 0)) (suspend) - 0 - ) - ) - (none) - ) + 0)) + (none)) (defbehavior yakow-facing-direction? yakow ((arg0 vector) (arg1 float)) (let ((s4-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))) - (s5-0 (new 'stack-no-clear 'vector)) - ) + (s5-0 (new 'stack-no-clear 'vector))) (set! (-> s5-0 quad) (-> arg0 quad)) (set! (-> s5-0 y) 0.0) (vector-normalize! s5-0 1.0) - (>= (vector-dot s4-0 s5-0) (cos arg1)) - ) - ) + (>= (vector-dot s4-0 s5-0) (cos arg1)))) (defbehavior yakow-facing-point? yakow ((arg0 vector) (arg1 float)) - (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self root trans)))) - (yakow-facing-direction? v1-1 arg1) - ) - ) + (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> self root trans)))) (yakow-facing-direction? v1-1 arg1))) (defbehavior yakow-facing-player? yakow ((arg0 float)) - (yakow-facing-point? (target-pos 0) arg0) - ) + (yakow-facing-point? (target-pos 0) arg0)) (defstate yakow-idle (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) - (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (yakow-facing-player? 21845.334)) - ) - (go yakow-notice) - ) - ) - :code (behavior () - (ja-channel-push! 1 (seconds 0.15)) - (loop - (cond - ((rand-vu-percent? 0.2) - (effect-control-method-10 (-> self skel effect) 'yakow-1 0.0 -1) - ) - ((rand-vu-percent? 0.2) - (effect-control-method-10 (-> self skel effect) 'yakow-2 0.0 -1) - ) - ) - (let ((f30-0 (rand-vu-float-range 0.9 1.1))) - (ja-no-eval :group! yakow-idle-ja :num! (seek! max f30-0) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! max f30-0)) - ) - ) - (when (rand-vu-percent? 0.25) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post ja-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0)) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) + (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (yakow-facing-player? 21845.334))) + (go yakow-notice))) + :code + (behavior () + (ja-channel-push! 1 (seconds 0.15)) + (loop (cond + ((rand-vu-percent? 0.2) (effect-control-method-10 (-> self skel effect) 'yakow-1 0.0 -1)) + ((rand-vu-percent? 0.2) (effect-control-method-10 (-> self skel effect) 'yakow-2 0.0 -1))) + (let ((f30-0 (rand-vu-float-range 0.9 1.1))) + (ja-no-eval :group! yakow-idle-ja :num! (seek! max f30-0) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! max f30-0)))) + (when (rand-vu-percent? 0.25) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post ja-post) (defstate yakow-notice (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - ) - :code (behavior () - (go yakow-run-away) - ) - :post yakow-simple-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0)) + :code + (behavior () + (go yakow-run-away)) + :post yakow-simple-post) (defstate yakow-walk-to (yakow) :event yakow-default-event-handler - :enter (behavior ((arg0 vector)) - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf10)) - (set! (-> self nav destination-pos quad) (-> arg0 quad)) - (set! (-> self rotate-speed) (-> *YAKOW-bank* walk-rotate-speed)) - (set! (-> self turn-time) (-> *YAKOW-bank* walk-turn-time)) - ) - :trans (behavior () - (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) - (not (-> self in-pen)) - (and *target* - (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (not (yakow-facing-player? 21845.334)) - ) - (go yakow-notice) - ) - (when (time-elapsed? (-> self state-time) (seconds 0.05)) - (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) - (< (vector-vector-xz-distance (-> self root trans) (-> self nav destination-pos)) 4096.0) - ) - (if (-> self in-pen) - (go yakow-graze) - (go yakow-idle) - ) - ) - ) - (seek! - (-> self travel-speed) - (-> *YAKOW-bank* walk-speed) - (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)) - ) - ) - :code (the-as (function vector object) yakow-blend-walk-run) - :post (behavior () - (nav-control-method-19 - (-> self nav) - (-> self nav target-pos) - (-> self root) - (-> self nav destination-pos) - 131072.0 - ) - (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) - (logclear! (-> self nav flags) (nav-control-flags navcf10)) - ) - (yakow-post) - ) - ) + :enter + (behavior ((arg0 vector)) + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf10)) + (set! (-> self nav destination-pos quad) (-> arg0 quad)) + (set! (-> self rotate-speed) (-> *YAKOW-bank* walk-rotate-speed)) + (set! (-> self turn-time) (-> *YAKOW-bank* walk-turn-time))) + :trans + (behavior () + (if (and (time-elapsed? (-> self state-time) (-> *YAKOW-bank* default-patrol-time)) + (not (-> self in-pen)) + (and *target* + (>= (-> self fact idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (not (yakow-facing-player? 21845.334))) + (go yakow-notice)) + (when (time-elapsed? (-> self state-time) (seconds 0.05)) + (when (or (logtest? (nav-control-flags navcf19) (-> self nav flags)) + (< (vector-vector-xz-distance (-> self root trans) (-> self nav destination-pos)) 4096.0)) + (if (-> self in-pen) (go yakow-graze) (go yakow-idle)))) + (seek! (-> self travel-speed) (-> *YAKOW-bank* walk-speed) (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)))) + :code + (the-as (function vector object) + yakow-blend-walk-run) + :post + (behavior () + (nav-control-method-19 (-> self nav) (-> self nav target-pos) (-> self root) (-> self nav destination-pos) 131072.0) + (if (logtest? (nav-control-flags navcf21) (-> self nav flags)) (logclear! (-> self nav flags) (nav-control-flags navcf10))) + (yakow-post))) (defstate yakow-graze (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self travel-speed) 0.0) - (set! (-> self grazing) #t) - (let ((v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (send-event - (if v1-3 - (-> v1-3 extra process) - ) - 'update - ) - ) - ) - :code (behavior () - (while (< 546.13336 (fabs (deg-diff (-> self dest-rot) (y-angle (-> self root))))) - (if (not (ja-group? yakow-walk-ja)) - (ja-channel-push! 1 (seconds 0.075)) - ) - (seek-toward-yaw-angle! (-> self root) (-> self dest-rot) 16384.0 (seconds 0.5)) - (ja :group! yakow-walk-ja :num! (loop!)) - (suspend) - ) - (ja-channel-push! 1 (seconds 0.15)) - (loop - (ja-no-eval :group! yakow-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (when (rand-vu-percent? 0.5) - (ja-channel-push! 1 (seconds 0.1)) - (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + :enter + (behavior () + (set-time! (-> self state-time)) + (set! (-> self travel-speed) 0.0) + (set! (-> self grazing) #t) + (let ((v1-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) (send-event (if v1-3 (-> v1-3 extra process)) 'update))) + :code + (behavior () + (while (< 546.13336 (fabs (deg-diff (-> self dest-rot) (y-angle (-> self root))))) + (if (not (ja-group? yakow-walk-ja)) (ja-channel-push! 1 (seconds 0.075))) + (seek-toward-yaw-angle! (-> self root) (-> self dest-rot) 16384.0 (seconds 0.5)) + (ja :group! yakow-walk-ja :num! (loop!)) + (suspend)) + (ja-channel-push! 1 (seconds 0.15)) + (loop (ja-no-eval :group! yakow-idle-ja :num! (seek!) :frame-num 0.0) (until (ja-done? 0) (suspend) - (ja :num! (seek!)) - ) - (ja-channel-push! 1 (seconds 0.1)) - ) - ) - ) - :post yakow-simple-post - ) + (ja :num! (seek!))) + (when (rand-vu-percent? 0.5) + (ja-channel-push! 1 (seconds 0.1)) + (ja-no-eval :group! yakow-graze-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja-channel-push! 1 (seconds 0.1))))) + :post yakow-simple-post) (defstate yakow-graze-kicked (yakow) :event #f - :code (behavior () - (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go yakow-graze) - ) - :post yakow-simple-post - ) + :code + (behavior () + (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go yakow-graze)) + :post yakow-simple-post) (defstate yakow-run-away (yakow) :event yakow-default-event-handler - :enter (behavior () - (set-time! (-> self state-time)) - (logior! (-> self nav flags) (nav-control-flags navcf10)) - (set! (-> self rotate-speed) (-> *YAKOW-bank* run-rotate-speed)) - (set! (-> self turn-time) (-> *YAKOW-bank* run-turn-time)) - ) - :trans (behavior () - (when (or (not *target*) - (< (-> *YAKOW-bank* safe-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) - (if (-> self in-pen) - (go yakow-walk-to (-> self dest-base)) - (go yakow-walk-to (-> self home-base)) - ) - ) - (let* ((f0-2 (* (if (-> self run-mode) - 0.5 - 1.0 - ) - (vector-vector-distance (-> self root trans) (target-pos 0)) - ) - ) - (f30-2 (lerp-scale - (-> *YAKOW-bank* run-speed) - (-> *YAKOW-bank* walk-speed) - f0-2 - (-> *YAKOW-bank* run-away-dist) - (-> *YAKOW-bank* walk-away-dist) - ) - ) - ) - (if (yakow-facing-player? 21845.334) - (set! f30-2 0.0) - ) - (set! (-> self enable-turn-around) (< (-> *YAKOW-bank* run-speed) f30-2)) - (seek! (-> self travel-speed) f30-2 (* (-> *YAKOW-bank* acceleration) (seconds-per-frame))) - ) - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (logior! (-> self nav flags) (nav-control-flags navcf10)) + (set! (-> self rotate-speed) (-> *YAKOW-bank* run-rotate-speed)) + (set! (-> self turn-time) (-> *YAKOW-bank* run-turn-time))) + :trans + (behavior () + (when (or (not *target*) + (< (-> *YAKOW-bank* safe-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (if (-> self in-pen) (go yakow-walk-to (-> self dest-base)) (go yakow-walk-to (-> self home-base)))) + (let* ((f0-2 (* (if (-> self run-mode) 0.5 1.0) (vector-vector-distance (-> self root trans) (target-pos 0)))) + (f30-2 (lerp-scale (-> *YAKOW-bank* run-speed) + (-> *YAKOW-bank* walk-speed) + f0-2 + (-> *YAKOW-bank* run-away-dist) + (-> *YAKOW-bank* walk-away-dist)))) + (if (yakow-facing-player? 21845.334) (set! f30-2 0.0)) + (set! (-> self enable-turn-around) (< (-> *YAKOW-bank* run-speed) f30-2)) + (seek! (-> self travel-speed) f30-2 (* (-> *YAKOW-bank* acceleration) (seconds-per-frame))))) :code yakow-blend-walk-run - :post yakow-run-post - ) + :post yakow-run-post) (defstate yakow-kicked (yakow) :event #f - :enter (behavior () - (set-time! (-> self state-time)) - (if (-> self grazing) - (go yakow-graze-kicked) - ) - (set! (-> self travel-speed) - (fmax - (fmin (+ (-> self travel-speed) (-> *YAKOW-bank* speed-boost-impulse)) (-> *YAKOW-bank* max-run-speed)) - (-> *YAKOW-bank* run-speed) - ) - ) - ) - :exit (behavior () - '() - ) - :trans (behavior () - (if (time-elapsed? (-> self state-time) (seconds 0.2)) - (seek! - (-> self travel-speed) - (-> *YAKOW-bank* run-speed) - (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)) - ) - ) - 0 - ) - :code (behavior () - (set! (-> self enable-turn-around) #t) - 1.0 - (suspend) - (ja-channel-push! 1 (seconds 0.05)) - (cond - ((< 40.96 (vector-length (-> self nav travel))) - (ja :group! yakow-kicked-ja) - (ja :num-func num-func-identity :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (let* ((f0-3 0.75) - (f1-0 0.25) - (f2-0 (-> *YAKOW-bank* run-speed)) - (f0-4 (fmax f0-3 (fmin - (* f1-0 (/ 1.0 f2-0) (-> self final-speed) (-> *YAKOW-bank* run-anim-speed)) - (-> *YAKOW-bank* max-run-anim-speed) - ) - ) - ) - ) - (ja :num! (seek! max f0-4)) - ) - ) - ) - (else - (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (< 40.96 (-> self final-speed)) - (go yakow-run-away) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (go yakow-run-away) - ) - :post yakow-run-post - ) + :enter + (behavior () + (set-time! (-> self state-time)) + (if (-> self grazing) (go yakow-graze-kicked)) + (set! (-> self travel-speed) + (fmax (fmin (+ (-> self travel-speed) (-> *YAKOW-bank* speed-boost-impulse)) (-> *YAKOW-bank* max-run-speed)) + (-> *YAKOW-bank* run-speed)))) + :exit + (behavior () + ()) + :trans + (behavior () + (if (time-elapsed? (-> self state-time) (seconds 0.2)) + (seek! (-> self travel-speed) (-> *YAKOW-bank* run-speed) (* (-> *YAKOW-bank* acceleration) (seconds-per-frame)))) + 0) + :code + (behavior () + (set! (-> self enable-turn-around) #t) + 1.0 + (suspend) + (ja-channel-push! 1 (seconds 0.05)) + (cond + ((< 40.96 (vector-length (-> self nav travel))) + (ja :group! yakow-kicked-ja) + (ja :num-func num-func-identity :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (let* ((f0-3 0.75) + (f1-0 0.25) + (f2-0 (-> *YAKOW-bank* run-speed)) + (f0-4 (fmax f0-3 + (fmin (* f1-0 (/ 1.0 f2-0) (-> self final-speed) (-> *YAKOW-bank* run-anim-speed)) (-> *YAKOW-bank* max-run-anim-speed))))) + (ja :num! (seek! max f0-4))))) + (else + (ja-no-eval :group! yakow-kicked-in-place-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (< 40.96 (-> self final-speed)) (go yakow-run-away)) + (suspend) + (ja :num! (seek!))))) + (go yakow-run-away)) + :post yakow-run-post) (defstate yakow-die (yakow) :event #f - :code (behavior () - (let ((v1-1 (-> self root root-prim))) - (set! (-> v1-1 collide-with) (collide-kind)) - (set! (-> v1-1 prim-core collide-as) (collide-kind)) - ) - 0 - (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) - (process-entity-status! self (entity-perm-status dead) #t) - ) - ) + :code + (behavior () + (let ((v1-1 (-> self root root-prim))) + (set! (-> v1-1 collide-with) (collide-kind)) + (set! (-> v1-1 prim-core collide-as) (collide-kind))) + 0 + (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) + (process-entity-status! self (entity-perm-status dead) #t))) (defmethod init-from-entity! ((this yakow) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 prim-core action) (collide-action solid attackable attackable-unused)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (set! (-> this align) (new 'process 'align-control this)) (set! (-> this nav) (new 'process 'nav-control (-> this root) 16 40960.0)) (logior! (-> this nav flags) (nav-control-flags display-marks navcf3 navcf5 navcf6 navcf7)) (set! (-> this nav nearest-y-threshold) 409600.0) - (set! (-> this fact) - (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (set! (-> this fact) (new 'process 'fact-info-enemy this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this fact idle-distance) (-> *YAKOW-bank* default-idle-distance)) - (initialize-skeleton this *yakow-sg* '()) - (set! (-> this draw shadow-ctrl) - (new 'process 'shadow-control -4096.0 4096.0 614400.0 (the-as float 24) 245760.0) - ) + (initialize-skeleton this *yakow-sg* ()) + (set! (-> this draw shadow-ctrl) (new 'process 'shadow-control -4096.0 4096.0 614400.0 (the-as float 24) 245760.0)) (set! (-> this link) (new 'process 'actor-link-info this)) (set! (-> this water) (new 'process 'water-control this 6 0.0 8192.0 2048.0)) (set! (-> this water flags) (water-flags wt01)) @@ -759,25 +531,16 @@ yakow-default-event-handler (when v1-40 (set! (-> this dest-base quad) (-> v1-40 quad)) (set! (-> this dest-rot) (-> v1-40 w)) - (set! (-> this dest-base w) 1.0) - ) - ) + (set! (-> this dest-base w) 1.0))) (set! (-> this vulnerable) #t) (set! (-> this grazing) #f) (set! (-> this enable-turn-around) #f) (set! (-> this in-pen) - (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - ) + (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))) (cond ((-> this in-pen) (set! (-> this root trans quad) (-> this dest-base quad)) (set-yaw-angle-clear-roll-pitch! (-> this root) (-> this dest-rot)) - (go yakow-graze) - ) - (else - (yakow-task-complete? #f) - (go yakow-idle) - ) - ) - (none) - ) + (go yakow-graze)) + (else (yakow-task-complete? #f) (go yakow-idle))) + (none)) diff --git a/goal_src/jak1/levels/village2/assistant-village2.gc b/goal_src/jak1/levels/village2/assistant-village2.gc index 9e7b8c06dd..48710a7191 100644 --- a/goal_src/jak1/levels/village2/assistant-village2.gc +++ b/goal_src/jak1/levels/village2/assistant-village2.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "levels/village2/flutflut-bluehut.gc") (require "levels/village2/sage-bluehut.gc") @@ -13,688 +12,500 @@ ;; DECOMP BEGINS (deftype assistant-levitator (process-taskable) - ((boulder entity-actor) - (particle sparticle-launch-control 4) - ) + ((boulder entity-actor) + (particle sparticle-launch-control 4)) (:states - just-particles - ) - ) - + just-particles)) (defmethod relocate ((this assistant-levitator) (arg0 int)) (dotimes (v1-0 4) - (if (nonzero? (-> this particle v1-0)) - (&+! (-> this particle v1-0) arg0) - ) - ) - (the-as assistant-levitator ((method-of-type process-taskable relocate) this arg0)) - ) + (if (nonzero? (-> this particle v1-0)) (&+! (-> this particle v1-0) arg0))) + (the-as assistant-levitator ((method-of-type process-taskable relocate) this arg0))) (defmethod deactivate ((this assistant-levitator)) (dotimes (s5-0 4) - (let ((a0-1 (-> this particle s5-0))) - (if (nonzero? a0-1) - (kill-and-free-particles a0-1) - ) - ) - ) + (let ((a0-1 (-> this particle s5-0))) (if (nonzero? a0-1) (kill-and-free-particles a0-1)))) ((method-of-type process-taskable deactivate) this) - (none) - ) + (none)) -(defskelgroup *assistant-village2-sg* assistant-village2 assistant-village2-lod0-jg assistant-village2-idle-a-ja - ((assistant-village2-lod0-mg (meters 20)) - (assistant-village2-lod1-mg (meters 40)) - (assistant-village2-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 2) - :shadow assistant-village2-shadow-mg - ) +(defskelgroup *assistant-village2-sg* + assistant-village2 + assistant-village2-lod0-jg + assistant-village2-idle-a-ja + ((assistant-village2-lod0-mg (meters 20)) + (assistant-village2-lod1-mg (meters 40)) + (assistant-village2-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2) + :shadow assistant-village2-shadow-mg) -(defskelgroup *jaws-sg* jaws jaws-lod0-jg jaws-idle-ja - ((jaws-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 0.25) - ) +(defskelgroup *jaws-sg* + jaws + jaws-lod0-jg + jaws-idle-ja + ((jaws-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 0.25)) (defmethod process-taskable-method-52 ((this assistant-levitator)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -409.6 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -409.6 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this assistant-levitator)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant-bluehut) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-assistant)) (case (current-status (-> this tasks)) (((task-status unknown) (task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village2-levitator)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (send-event (-> this sage extra process) 'clone (process->handle this)) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction" - :index 15 - :parts 16 - :command-list '((0 send-event target draw #f) - (0 kill "villageb-part-33") - (95 send-event target draw #t) - (95 joint "cameraB") - (131 send-event target draw #f) - (131 joint "camera") - (190 setting-reset ocean-off #t) - (190 kill "pontoonten-20") - (190 kill "pontoonten-19") - (190 kill "pontoonten-18") - (190 kill "pontoonten-17") - (190 kill "pontoonten-16") - (190 kill "pontoonten-15") - (190 kill "pontoonten-14") - (190 kill "pontoonten-13") - (190 kill "pontoonten-12") - (190 kill "pontoonten-11") - (190 kill "pontoonten-10") - (190 kill "pontoonten-9") - (190 kill "pontoonten-8") - (190 kill "pontoonten-7") - (190 kill "pontoonten-6") - (190 kill "pontoonfive-3") - (190 kill "pontoonfive-4") - (190 kill "pontoonfive-5") - (190 kill "pontoonfive-6") - (190 kill "pontoonfive-7") - (190 kill "pontoonfive-8") - (190 kill "pontoonfive-12") - (190 kill "pontoonfive-13") - (190 kill "pontoonfive-14") - (190 kill "pontoonfive-15") - (190 kill "pontoonfive-16") - (190 kill "pontoonfive-17") - (190 kill "pontoonfive-18") - (190 kill "pontoonfive-19") - (190 kill "pontoonfive-20") - (190 kill "allpontoons-1") - (190 kill "med-res-level-12") - (190 kill "med-res-level-13") - (190 kill "med-res-level-15") - (190 kill "swamp-blimp-3") - (190 kill "barrel-85") - (190 kill "barrel-86") - (190 kill "money-2844") - (190 kill "money-2845") - (190 kill "money-2846") - (190 kill "money-2847") - (190 kill "money-2848") - (190 kill "money-2849") - (190 kill "money-4923") - (190 kill "money-4924") - (190 kill "money-4925") - (190 kill "money-4926") - (190 kill "money-4927") - (190 kill "eco-27") - (190 kill "sharkey-25") - (190 kill "barrel-117") - (190 kill "barrel-118") - (190 kill "barrel-119") - (190 kill "barrel-120") - (190 kill "barrel-121") - (190 kill "barrel-122") - (190 kill "crate-3129") - (190 kill "crate-3132") - (190 kill "crate-3133") - (190 kill "villageb-part-32") - (190 kill "villageb-part-30") - (190 kill "exit-chamber-dummy-1") - (190 kill "villageb-part-34") - (191 send-event target draw #t) - (191 joint "cameraB") - (241 joint "camera") - (241 send-event target draw #f) - (241 setting-unset ocean-off) - (241 dead "pontoonten-20") - (241 dead "pontoonten-19") - (241 dead "pontoonten-18") - (241 dead "pontoonten-17") - (241 dead "pontoonten-16") - (241 dead "pontoonten-15") - (241 dead "pontoonten-14") - (241 dead "pontoonten-13") - (241 dead "pontoonten-12") - (241 dead "pontoonten-11") - (241 dead "pontoonten-10") - (241 dead "pontoonten-9") - (241 dead "pontoonten-8") - (241 dead "pontoonten-7") - (241 dead "pontoonten-6") - (241 dead "pontoonfive-3") - (241 dead "pontoonfive-4") - (241 dead "pontoonfive-5") - (241 dead "pontoonfive-6") - (241 dead "pontoonfive-7") - (241 dead "pontoonfive-8") - (241 dead "pontoonfive-12") - (241 dead "pontoonfive-13") - (241 dead "pontoonfive-14") - (241 dead "pontoonfive-15") - (241 dead "pontoonfive-16") - (241 dead "pontoonfive-17") - (241 dead "pontoonfive-18") - (241 dead "pontoonfive-19") - (241 dead "pontoonfive-20") - (241 dead "allpontoons-1") - (241 dead "med-res-level-12") - (241 dead "med-res-level-13") - (241 dead "med-res-level-15") - (241 dead "swamp-blimp-3") - (241 dead "barrel-85") - (241 dead "barrel-86") - (241 dead "money-2844") - (241 dead "money-2845") - (241 dead "money-2846") - (241 dead "money-2847") - (241 dead "money-2848") - (241 dead "money-2849") - (241 dead "money-4923") - (241 dead "money-4924") - (241 dead "money-4925") - (241 dead "money-4926") - (241 dead "money-4927") - (241 dead "eco-27") - (241 dead "sharkey-25") - (241 dead "barrel-117") - (241 dead "barrel-118") - (241 dead "barrel-119") - (241 dead "barrel-120") - (241 dead "barrel-121") - (241 dead "barrel-122") - (241 dead "crate-3129") - (241 dead "crate-3132") - (241 dead "crate-3133") - (241 dead "villageb-part-32") - (241 dead "villageb-part-30") - (321 joint "cameraB") - (352 joint "camera") - (383 joint "cameraB") - (411 joint "camera") - (501 joint "cameraB") - (501 send-event target draw #t) - (567 joint "camera") - (634 alive "fireboulder-6") - (635 joint "cameraB") - (701 joint "camera") - (741 joint "cameraB") - (784 joint "camera") - (936 joint "cameraB") - (1065 joint "camera") - (1145 joint "cameraB") - (1241 joint "camera") - ) - ) - ) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction" + :index 15 + :parts 16 + :command-list + '((0 send-event target draw #f) + (0 kill "villageb-part-33") + (95 send-event target draw #t) + (95 joint "cameraB") + (131 send-event target draw #f) + (131 joint "camera") + (190 setting-reset ocean-off #t) + (190 kill "pontoonten-20") + (190 kill "pontoonten-19") + (190 kill "pontoonten-18") + (190 kill "pontoonten-17") + (190 kill "pontoonten-16") + (190 kill "pontoonten-15") + (190 kill "pontoonten-14") + (190 kill "pontoonten-13") + (190 kill "pontoonten-12") + (190 kill "pontoonten-11") + (190 kill "pontoonten-10") + (190 kill "pontoonten-9") + (190 kill "pontoonten-8") + (190 kill "pontoonten-7") + (190 kill "pontoonten-6") + (190 kill "pontoonfive-3") + (190 kill "pontoonfive-4") + (190 kill "pontoonfive-5") + (190 kill "pontoonfive-6") + (190 kill "pontoonfive-7") + (190 kill "pontoonfive-8") + (190 kill "pontoonfive-12") + (190 kill "pontoonfive-13") + (190 kill "pontoonfive-14") + (190 kill "pontoonfive-15") + (190 kill "pontoonfive-16") + (190 kill "pontoonfive-17") + (190 kill "pontoonfive-18") + (190 kill "pontoonfive-19") + (190 kill "pontoonfive-20") + (190 kill "allpontoons-1") + (190 kill "med-res-level-12") + (190 kill "med-res-level-13") + (190 kill "med-res-level-15") + (190 kill "swamp-blimp-3") + (190 kill "barrel-85") + (190 kill "barrel-86") + (190 kill "money-2844") + (190 kill "money-2845") + (190 kill "money-2846") + (190 kill "money-2847") + (190 kill "money-2848") + (190 kill "money-2849") + (190 kill "money-4923") + (190 kill "money-4924") + (190 kill "money-4925") + (190 kill "money-4926") + (190 kill "money-4927") + (190 kill "eco-27") + (190 kill "sharkey-25") + (190 kill "barrel-117") + (190 kill "barrel-118") + (190 kill "barrel-119") + (190 kill "barrel-120") + (190 kill "barrel-121") + (190 kill "barrel-122") + (190 kill "crate-3129") + (190 kill "crate-3132") + (190 kill "crate-3133") + (190 kill "villageb-part-32") + (190 kill "villageb-part-30") + (190 kill "exit-chamber-dummy-1") + (190 kill "villageb-part-34") + (191 send-event target draw #t) + (191 joint "cameraB") + (241 joint "camera") + (241 send-event target draw #f) + (241 setting-unset ocean-off) + (241 dead "pontoonten-20") + (241 dead "pontoonten-19") + (241 dead "pontoonten-18") + (241 dead "pontoonten-17") + (241 dead "pontoonten-16") + (241 dead "pontoonten-15") + (241 dead "pontoonten-14") + (241 dead "pontoonten-13") + (241 dead "pontoonten-12") + (241 dead "pontoonten-11") + (241 dead "pontoonten-10") + (241 dead "pontoonten-9") + (241 dead "pontoonten-8") + (241 dead "pontoonten-7") + (241 dead "pontoonten-6") + (241 dead "pontoonfive-3") + (241 dead "pontoonfive-4") + (241 dead "pontoonfive-5") + (241 dead "pontoonfive-6") + (241 dead "pontoonfive-7") + (241 dead "pontoonfive-8") + (241 dead "pontoonfive-12") + (241 dead "pontoonfive-13") + (241 dead "pontoonfive-14") + (241 dead "pontoonfive-15") + (241 dead "pontoonfive-16") + (241 dead "pontoonfive-17") + (241 dead "pontoonfive-18") + (241 dead "pontoonfive-19") + (241 dead "pontoonfive-20") + (241 dead "allpontoons-1") + (241 dead "med-res-level-12") + (241 dead "med-res-level-13") + (241 dead "med-res-level-15") + (241 dead "swamp-blimp-3") + (241 dead "barrel-85") + (241 dead "barrel-86") + (241 dead "money-2844") + (241 dead "money-2845") + (241 dead "money-2846") + (241 dead "money-2847") + (241 dead "money-2848") + (241 dead "money-2849") + (241 dead "money-4923") + (241 dead "money-4924") + (241 dead "money-4925") + (241 dead "money-4926") + (241 dead "money-4927") + (241 dead "eco-27") + (241 dead "sharkey-25") + (241 dead "barrel-117") + (241 dead "barrel-118") + (241 dead "barrel-119") + (241 dead "barrel-120") + (241 dead "barrel-121") + (241 dead "barrel-122") + (241 dead "crate-3129") + (241 dead "crate-3132") + (241 dead "crate-3133") + (241 dead "villageb-part-32") + (241 dead "villageb-part-30") + (321 joint "cameraB") + (352 joint "camera") + (383 joint "cameraB") + (411 joint "camera") + (501 joint "cameraB") + (501 send-event target draw #t) + (567 joint "camera") + (634 alive "fireboulder-6") + (635 joint "cameraB") + (701 joint "camera") + (741 joint "cameraB") + (784 joint "camera") + (936 joint "cameraB") + (1065 joint "camera") + (1145 joint "cameraB") + (1241 joint "camera")))) (((game-task sunken-room)) (when arg0 (let* ((s5-2 (-> this tasks)) - (s4-0 (method-of-object s5-2 save-reminder)) - ) - (s4-0 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-2 save-reminder))) + (s4-0 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (close-status! (-> this tasks) (task-status need-introduction)) - (set! (-> this jaws) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jaws-sg* #f :to this)) - ) + (set! (-> this jaws) (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jaws-sg* #f :to this))) (let ((v1-42 (handle->process (-> this jaws)))) - (if v1-42 - (set! (-> (the-as manipy v1-42) draw light-index) (the-as uint 1)) - ) - ) + (if v1-42 (set! (-> (the-as manipy v1-42) draw light-index) (the-as uint 1)))) (send-event (handle->process (-> this jaws)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this jaws)) 'center-joint 3) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-room" - :index 21 - :parts 10 - :command-list '((197 joint "cameraB") - (351 joint "camera") - (431 joint "cameraB") - (553 joint "camera") - (631 joint "cameraB") - (842 joint "camera") - (900 joint "cameraB") - (1069 joint "camera") - ) - ) - ) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-room" + :index 21 + :parts 10 + :command-list + '((197 joint "cameraB") + (351 joint "camera") + (431 joint "cameraB") + (553 joint "camera") + (631 joint "cameraB") + (842 joint "camera") + (900 joint "cameraB") + (1069 joint "camera")))) (((game-task rolling-robbers)) (when arg0 (let* ((s5-5 (-> this tasks)) - (s4-1 (method-of-object s5-5 save-reminder)) - ) - (s4-1 s5-5 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-robbers" - :index 17 - :parts 6 - :command-list '((55 joint "cameraB") (145 joint "camera") (207 joint "cameraB") (363 joint "camera")) - ) - ) + (s4-1 (method-of-object s5-5 save-reminder))) + (s4-1 s5-5 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-robbers" + :index 17 + :parts 6 + :command-list + '((55 joint "cameraB") (145 joint "camera") (207 joint "cameraB") (363 joint "camera")))) (else - (when arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "assistant-village2-introduction-flutflut" - :index 19 - :parts 8 - :command-list '((71 joint "cameraB") (308 joint "camera") (426 joint "cameraB") (550 joint "camera") (644 joint "cameraB")) - ) - ) - ) - ) + (when arg0 + (close-status! (-> this tasks) (task-status need-introduction)) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "assistant-village2-introduction-flutflut" + :index 19 + :parts 8 + :command-list + '((71 joint "cameraB") (308 joint "camera") (426 joint "cameraB") (550 joint "camera") (644 joint "cameraB")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-2 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 2) (the-as uint s4-2)) - (set! s4-2 0) - ) + (if (< (the-as uint 2) (the-as uint s4-2)) (set! s4-2 0)) (countdown (s3-0 3) (let ((v1-92 s4-2)) (cond - ((zero? v1-92) - (if (!= (get-task-status (game-task sunken-room)) (task-status need-reminder)) - (set! s4-2 1) - ) - ) - ((= v1-92 1) - (if (!= (get-task-status (game-task rolling-robbers)) (task-status need-reminder)) - (set! s4-2 2) - ) - ) - (else - (if (!= (get-task-status (game-task swamp-flutflut)) (task-status need-reminder)) - (set! s4-2 0) - ) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-2 2) - ) + ((zero? v1-92) (if (!= (get-task-status (game-task sunken-room)) (task-status need-reminder)) (set! s4-2 1))) + ((= v1-92 1) (if (!= (get-task-status (game-task rolling-robbers)) (task-status need-reminder)) (set! s4-2 2))) + (else (if (!= (get-task-status (game-task swamp-flutflut)) (task-status need-reminder)) (set! s4-2 0)))))) + (if arg0 (save-reminder (-> this tasks) s4-2 2)) (cond - ((zero? s4-2) - (new 'static 'spool-anim :name "assistant-village2-reminder-1-room" :index 22 :parts 3 :command-list '()) - ) - ((= s4-2 1) - (new 'static 'spool-anim :name "assistant-village2-reminder-1-robbers" :index 18 :parts 3 :command-list '()) - ) - (else - (new 'static 'spool-anim :name "assistant-village2-reminder-1-flutflut" :index 20 :parts 3 :command-list '()) - ) - ) - ) - ) + ((zero? s4-2) (new 'static 'spool-anim :name "assistant-village2-reminder-1-room" :index 22 :parts 3 :command-list ())) + ((= s4-2 1) (new 'static 'spool-anim :name "assistant-village2-reminder-1-robbers" :index 18 :parts 3 :command-list ())) + (else (new 'static 'spool-anim :name "assistant-village2-reminder-1-flutflut" :index 20 :parts 3 :command-list ()))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5)))) (defmethod get-art-elem ((this assistant-bluehut)) - (-> this draw art-group data 10) - ) + (-> this draw art-group data 10)) (defmethod play-reminder ((this assistant-bluehut)) (cond ((and (-> this will-talk) *target*) (let* ((f30-1 (+ -1552384.0 (-> (target-pos 0) x))) - (f0-3 (+ 6352896.0 (-> (target-pos 0) z) f30-1)) - ) - (< 0.0 f0-3) - ) - ) - (else - #f - ) - ) - ) + (f0-3 (+ 6352896.0 (-> (target-pos 0) z) f30-1))) + (< 0.0 f0-3))) + (else #f))) (defmethod target-above-threshold? ((this assistant-bluehut)) (when (not (play-reminder this)) (set! (-> this im-talking) #f) - (return #f) - ) + (return #f)) (let ((s5-0 (-> this sage extra process))) (when (not s5-0) - (let ((v1-7 #t)) - (set! (-> this im-talking) v1-7) - (return v1-7) - ) - ) + (let ((v1-7 #t)) (set! (-> this im-talking) v1-7) (return v1-7))) (when (!= (-> (the-as sage-bluehut s5-0) next-state name) 'idle) (set! (-> this im-talking) #f) - (return #f) - ) + (return #f)) (when (not (play-reminder (the-as sage-bluehut s5-0))) - (let ((v1-15 #t)) - (set! (-> this im-talking) v1-15) - (return v1-15) - ) - ) + (let ((v1-15 #t)) (set! (-> this im-talking) v1-15) (return v1-15))) (let* ((s4-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> this node-list data (-> this center-joint-index)))) - (s3-0 (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as sage-bluehut s5-0) node-list data (-> (the-as sage-bluehut s5-0) center-joint-index)) - ) - ) - (f0-1 (- (vector-vector-distance (target-pos 0) s3-0) (vector-vector-distance (target-pos 0) s4-0))) - ) + (s3-0 (vector<-cspace! (new 'stack-no-clear 'vector) + (-> (the-as sage-bluehut s5-0) node-list data (-> (the-as sage-bluehut s5-0) center-joint-index)))) + (f0-1 (- (vector-vector-distance (target-pos 0) s3-0) (vector-vector-distance (target-pos 0) s4-0)))) (cond - ((< f0-1 -4096.0) - (set! (-> this im-talking) #f) - (return #f) - ) - ((< 4096.0 f0-1) - (let ((v1-24 #t)) - (set! (-> this im-talking) v1-24) - (return v1-24) - ) - ) - (else - (return (-> this im-talking)) - ) - ) - ) - ) - (the-as symbol 0) - ) + ((< f0-1 -4096.0) (set! (-> this im-talking) #f) (return #f)) + ((< 4096.0 f0-1) (let ((v1-24 #t)) (set! (-> this im-talking) v1-24) (return v1-24))) + (else (return (-> this im-talking)))))) + (the-as symbol 0)) (defmethod process-taskable-method-43 ((this assistant-bluehut)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f30-0 (rand-float-gen))) (cond - ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) - #f - ) - ((< 0.5 f30-0) - (play-ambient (-> this ambient) "ASSTLP23" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "ASSTLP24" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) #f) + ((< 0.5 f30-0) (play-ambient (-> this ambient) "ASSTLP23" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "ASSTLP24" #f (-> this root trans))))))) (defstate idle (assistant-bluehut) :virtual #t - :trans (behavior () - (case (get-task-status (game-task village2-levitator)) - (((task-status need-hint) (task-status need-introduction)) - (send-event self 'play-anim) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (ja-no-eval :group! (get-art-elem self) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((f0-9 (rand-float-gen))) - (cond - ((< f0-9 0.33333334) - (process-taskable-method-43 self) - (ja-no-eval :group! assistant-village2-idle-hut-look-right-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-1 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-0 300.0) - (f28-0 0.16) - (f26-0 0.17000002) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1) - ) + :trans + (behavior () + (case (get-task-status (game-task village2-levitator)) + (((task-status need-hint) (task-status need-introduction)) (send-event self 'play-anim))) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop (ja-no-eval :group! (get-art-elem self) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((f0-9 (rand-float-gen))) + (cond + ((< f0-9 0.33333334) + (process-taskable-method-43 self) + (ja-no-eval :group! assistant-village2-idle-hut-look-right-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ((< f0-9 0.6666667) - (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) - (ja-no-eval :group! assistant-village2-idle-hut-start-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-village2-idle-hut-welding-ja) - (let* ((f30-1 2.0) - (v1-113 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-114 (the-as number (logior #x3f800000 v1-113))) - ) - (countdown (gp-3 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-114)))) 4)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek!)) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP)) - ) - (suspend) - (ja :num! (seek!)) - ) - (sound-stop (-> self sound-id)) - (ja-no-eval :group! assistant-village2-idle-hut-stop-welding-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) + (ja :num! (seek!))) + (let ((gp-1 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-0 300.0) + (f28-0 0.16) + (f26-0 0.17000002)) + (< (- s5-1 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-1)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))) + ((< f0-9 0.6666667) + (sound-play "welding-loop" :id (-> self sound-id) :position (the-as symbol (target-pos 0))) + (ja-no-eval :group! assistant-village2-idle-hut-start-welding-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-village2-idle-hut-welding-ja) + (let* ((f30-1 2.0) + (v1-113 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-114 (the-as number (logior #x3f800000 v1-113)))) + (countdown (gp-3 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-114)))) 4)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek! 0.0))))) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node assistant-village2-lod0-jg torchTIP))) + (suspend) + (ja :num! (seek!))) + (sound-stop (-> self sound-id)) + (ja-no-eval :group! assistant-village2-idle-hut-stop-welding-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))))) (defstate play-anim (assistant-bluehut) :virtual #t - :exit (behavior () - (let ((a0-1 (handle->process (-> self jaws)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (send-event (-> self sage extra process) 'end-mode) - (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - (close-specific-task! (game-task village2-levitator) (task-status need-reminder-a)) - ) - :trans (behavior () - '() - ) - ) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self jaws)))) (if a0-1 (deactivate a0-1))) + (send-event (-> self sage extra process) 'end-mode) + (send-event (-> (entity-by-type flutflut-bluehut) extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)) + (close-specific-task! (game-task village2-levitator) (task-status need-reminder-a))) + :trans + (behavior () + ())) (defmethod should-display? ((this assistant-bluehut)) (cond ((not (closed? (-> this tasks) (game-task village2-levitator) (task-status unknown))) (process-taskable-method-33 this) - #f - ) - ((or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) (sages-kidnapped?)) - #f - ) - (else - #t - ) - ) - ) + #f) + ((or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) (sages-kidnapped?)) #f) + (else #t))) (defpartgroup group-assistant-bluehut-torch :id 288 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 1322 :fade-after (meters 30) :falloff-to (meters 30)) - (sp-item 1323 :fade-after (meters 60) :falloff-to (meters 80)) - ) - ) + :parts + ((sp-item 1322 :fade-after (meters 30) :falloff-to (meters 30)) + (sp-item 1323 :fade-after (meters 60) :falloff-to (meters 80)))) (defpart 1322 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 1) (meters 3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0 28.0) - (:g 100.0) - (:b 80.0) - (:a 32.0 64.0) - (:fade-a -6.4) - (:timer (seconds 0.035)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 1) (meters 3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0 28.0) + (:g 100.0) + (:b 80.0) + (:a 32.0 64.0) + (:fade-a -6.4) + (:timer (seconds 0.035)) + (:flags (bit2 bit3)))) (defpart 1323 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.1 1.0) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.93) - (:timer (seconds 4)) - (:flags (bit2)) - (:userdata 140288.0) - (:func 'check-drop-level-assistant-bluehut) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees 45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.1 1.0) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.93) + (:timer (seconds 4)) + (:flags (bit2)) + (:userdata 140288.0) + (:func 'check-drop-level-assistant-bluehut) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees 45) (degrees 180)))) (defpart 1324 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0 1.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 96.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0 1.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 96.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-assistant-bluehut ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1324) gp-0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1324) gp-0))) + (none)) (defmethod init-from-entity! ((this assistant-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village2-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -706,458 +517,435 @@ (set! (-> this draw light-index) (the-as uint 1)) (set! (-> this sound-id) (new-sound-id)) (process-taskable-method-42 this) - (none) - ) + (none)) (defpartgroup group-levitator-blue-beam :id 658 :flags (use-local-clock) :bounds (static-bspherem -20 8 0 80) - :parts ((sp-item 2673 :fade-after (meters 120) :falloff-to (meters 140) :binding 2670) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) - (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2672 :flags (bit1 start-dead)) - (sp-item 2671 :flags (bit1 start-dead)) - (sp-item 2674 :falloff-to (meters 400)) - (sp-item 2675) - (sp-item 2676 :falloff-to (meters 300)) - (sp-item 2693 :falloff-to (meters 400)) - (sp-item 2694 :falloff-to (meters 400)) - ) - ) + :parts + ((sp-item 2673 :fade-after (meters 120) :falloff-to (meters 140) :binding 2670) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2671) + (sp-item 2670 :flags (bit1 start-dead launch-asap) :binding 2672) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2672 :flags (bit1 start-dead)) + (sp-item 2671 :flags (bit1 start-dead)) + (sp-item 2674 :falloff-to (meters 400)) + (sp-item 2675) + (sp-item 2676 :falloff-to (meters 300)) + (sp-item 2693 :falloff-to (meters 400)) + (sp-item 2694 :falloff-to (meters 400)))) (defpart 2694 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -1440) (degrees 2880)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -1440) (degrees 2880)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2693 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -1440) (degrees 2880)) - (:scale-y (meters 0.3) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -1440) (degrees 2880)) + (:scale-y (meters 0.3) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2673 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.025 0.025) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.053333335)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.025 0.025) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.053333335)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2670 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 0.5)) - (:scale-x (meters 2.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 0.5)) + (:scale-x (meters 2.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2671 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2672 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.4) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.4) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2674 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0) - (:scale-x (meters 2) (meters 0.5)) - (:scale-y (meters 0.6) (meters 0.8)) - (:r 16.0 48.0) - (:g 16.0 48.0) - (:b 128.0) - (:a 128.0) - (:vel-y (meters 0.32)) - (:scalevel-x (meters 0.005)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters -1.5) (meters 1.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0) + (:scale-x (meters 2) (meters 0.5)) + (:scale-y (meters 0.6) (meters 0.8)) + (:r 16.0 48.0) + (:g 16.0 48.0) + (:b 128.0) + (:a 128.0) + (:vel-y (meters 0.32)) + (:scalevel-x (meters 0.005)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters -1.5) (meters 1.5)))) (defpart 2676 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 3) (meters 1.5)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:vel-y (meters 0.10666667)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 102)) - (:conerot-y (degrees -90)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 3) (meters 1.5)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:vel-y (meters 0.10666667)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 102)) + (:conerot-y (degrees -90)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2675 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 64.0) - (:g 64.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.067)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 64.0) + (:g 64.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.067)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-levitator-blue-beam-impact :id 659 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 34) - :parts ((sp-item 2695) (sp-item 2696 :fade-after (meters 200) :falloff-to (meters 200)) (sp-item 2677)) - ) + :parts ((sp-item 2695) (sp-item 2696 :fade-after (meters 200) :falloff-to (meters 200)) (sp-item 2677))) (defpart 2696 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 6.0) - (:y (meters -0.5) (meters 1)) - (:scale-x (meters 0.6) (meters 1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 64.0 64.0) - (:b 255.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.10666667)) - (:scalevel-x (meters -0.005)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.26666668) - (:fade-g -1.0666667) - (:fade-b 0.0) - (:accel-y (meters -0.00033333333) (meters -0.00033333333)) - (:friction 0.95) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit0 bit2 bit3 bit14)) - (:conerot-x (degrees 50.000004) (degrees 120)) - (:conerot-y (degrees 30) (degrees 120)) - (:conerot-radius (meters -0.5) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 6.0) + (:y (meters -0.5) (meters 1)) + (:scale-x (meters 0.6) (meters 1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 64.0 64.0) + (:b 255.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.10666667)) + (:scalevel-x (meters -0.005)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.26666668) + (:fade-g -1.0666667) + (:fade-b 0.0) + (:accel-y (meters -0.00033333333) (meters -0.00033333333)) + (:friction 0.95) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit0 bit2 bit3 bit14)) + (:conerot-x (degrees 50.000004) (degrees 120)) + (:conerot-y (degrees 30) (degrees 120)) + (:conerot-radius (meters -0.5) (meters 0.5)))) (defpart 2695 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 4)) - (:rot-z (degrees 180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 4)) + (:rot-z (degrees 180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2677 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 6) (meters 6)) - (:rot-z (degrees 180) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 16.0 64.0) - (:b 128.0 128.0) - (:a 128.0) - (:fade-a -5.12) - (:timer (seconds 0.035)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 1440)) - (:conerot-y (degrees 0) (degrees 1440)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 6) (meters 6)) + (:rot-z (degrees 180) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 16.0 64.0) + (:b 128.0 128.0) + (:a 128.0) + (:fade-a -5.12) + (:timer (seconds 0.035)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 1440)) + (:conerot-y (degrees 0) (degrees 1440)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-levitator-on-big :id 660 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2751 :fade-after (meters 100) :falloff-to (meters 100) :binding 2750) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) - (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2797 :flags (bit1 start-dead)) - (sp-item 2798 :flags (bit1 start-dead)) - (sp-item 2678) - ) - ) + :parts + ((sp-item 2751 :fade-after (meters 100) :falloff-to (meters 100) :binding 2750) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2797) + (sp-item 2750 :flags (bit1 start-dead launch-asap) :binding 2798) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2797 :flags (bit1 start-dead)) + (sp-item 2798 :flags (bit1 start-dead)) + (sp-item 2678))) (defpart 2678 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defpart 2751 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 255.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2750 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 3)) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 3)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) (defpart 2797 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 0.2 0.4) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 0.2 0.4) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2798 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.2 0.4) - (:scale-x (meters 0.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y (meters 0.2) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.4) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.2 0.4) + (:scale-x (meters 0.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y (meters 0.2) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.4) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpartgroup group-levitator-on-small :id 661 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2679)) - ) + :parts ((sp-item 2679))) (defpart 2679 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defbehavior assistant-levitator-blue-glow assistant-levitator () (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -1166,60 +954,44 @@ (spawn (-> self particle 2) gp-0) (set-vector! gp-0 -38912.0 6144.0 4096.0 1.0) (vector+! gp-0 gp-0 (-> self entity extra trans)) - (spawn (-> self particle 3) gp-0) - ) - (none) - ) + (spawn (-> self particle 3) gp-0)) + (none)) (defbehavior assistant-levitator-blue-beam assistant-levitator () (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) + (gp-0 (new 'stack-no-clear 'vector))) (let ((s4-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self boulder extra trans quad)) (let ((v1-3 (-> self boulder extra process))) - (if v1-3 - (vector<-cspace! gp-0 (-> (the-as fireboulder v1-3) node-list data 4)) - ) - ) + (if v1-3 (vector<-cspace! gp-0 (-> (the-as fireboulder v1-3) node-list data 4)))) (set-vector! s5-0 -49152.0 10240.0 5529.6 1.0) (vector+! s5-0 s5-0 (-> self entity extra trans)) (vector-! s4-0 gp-0 s5-0) (let ((t2-0 (new 'stack-no-clear 'collide-tri-result))) 0.0 - (if (>= (fill-and-probe-using-line-sphere - *collide-cache* - s5-0 - s4-0 - 6144.0 - (collide-kind target) - (the-as process #f) - t2-0 - (new 'static 'pat-surface :noentity #x1) - ) - 0.0 - ) - (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))) - ) - ) + (if (>= (fill-and-probe-using-line-sphere *collide-cache* + s5-0 + s4-0 + 6144.0 + (collide-kind target) + (the-as process #f) + t2-0 + (new 'static 'pat-surface :noentity #x1)) + 0.0) + (send-event *target* 'shove #f (static-attack-info ((shove-up (meters 2)) (shove-back (meters 3))))))) (vector-normalize! s4-0 (+ -20480.0 (vector-length s4-0))) (vector+! gp-0 s5-0 s4-0) (let ((f30-1 (vector-y-angle s4-0)) - (f0-11 (- 16384.0 (vector-x-angle s4-0))) - ) + (f0-11 (- 16384.0 (vector-x-angle s4-0)))) (set! (-> *part-id-table* 2674 init-specs 14 initial-valuef) f30-1) (set! (-> *part-id-table* 2674 init-specs 13 initial-valuef) f0-11) (set! (-> *part-id-table* 2676 init-specs 14 initial-valuef) f30-1) (set! (-> *part-id-table* 2676 init-specs 13 initial-valuef) f0-11) (set! (-> *part-id-table* 2673 init-specs 14 initial-valuef) f30-1) - (set! (-> *part-id-table* 2673 init-specs 13 initial-valuef) f0-11) - ) - ) + (set! (-> *part-id-table* 2673 init-specs 13 initial-valuef) f0-11))) (spawn (-> self particle 0) s5-0) - (spawn (-> self particle 1) gp-0) - ) - (none) - ) + (spawn (-> self particle 1) gp-0)) + (none)) (defmethod play-anim! ((this assistant-levitator) (arg0 symbol)) (with-pp @@ -1233,228 +1005,145 @@ (set! (-> a1-1 message) 'clone) (set! (-> a1-1 param 0) (the-as uint (process->handle this))) (let ((t9-2 send-event-function) - (v1-10 (-> this boulder)) - ) - (t9-2 - (if v1-10 - (-> v1-10 extra process) - ) - a1-1 - ) - ) - ) - ) - (new 'static 'spool-anim - :name "assistant-village2-resolution" - :index 16 - :parts 7 - :command-list '((196 joint "cameraB") - (241 joint "camera") - (286 joint "cameraB") - (436 joint "camera") - (526 joint "cameraB") - (581 joint "camera") - (639 joint "cameraB") - (715 joint "camera") - ) - ) - ) + (v1-10 (-> this boulder))) + (t9-2 (if v1-10 (-> v1-10 extra process)) a1-1)))) + (new 'static + 'spool-anim + :name "assistant-village2-resolution" + :index 16 + :parts 7 + :command-list + '((196 joint "cameraB") + (241 joint "camera") + (286 joint "cameraB") + (436 joint "camera") + (526 joint "cameraB") + (581 joint "camera") + (639 joint "cameraB") + (715 joint "camera")))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5))))) (defmethod get-art-elem ((this assistant-levitator)) (if (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (-> this draw art-group data 9) - (-> this draw art-group data 5) - ) - ) + (-> this draw art-group data 9) + (-> this draw art-group data 5))) (defstate play-anim (assistant-levitator) :virtual #t - :exit (behavior () - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'stop-cloning) - (let ((t9-0 send-event-function) - (v1-1 (-> self boulder)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - :trans (behavior () - (assistant-levitator-blue-glow) - (if (< 200.0 (ja-aframe-num 0)) - (assistant-levitator-blue-beam) - ) - ((-> (method-of-type process-taskable play-anim) trans)) - ) - ) + :exit + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'stop-cloning) + (let ((t9-0 send-event-function) + (v1-1 (-> self boulder))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + ((-> (method-of-type process-taskable play-anim) exit))) + :trans + (behavior () + (assistant-levitator-blue-glow) + (if (< 200.0 (ja-aframe-num 0)) (assistant-levitator-blue-beam)) + ((-> (method-of-type process-taskable play-anim) trans)))) (defstate hidden (assistant-levitator) :virtual #t - :trans (behavior () - ((-> (method-of-type process-taskable hidden) trans)) - (when (and (cond - ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - #t - ) - (else - (set-time! (-> self state-time)) - #f - ) - ) - (and (closed? (-> self tasks) (game-task village2-levitator) (task-status need-introduction)) - (not (closed? (-> self tasks) (game-task village2-levitator) (task-status need-reward-speech))) - (not (movie?)) - (not (level-hint-displayed?)) - (not (and *cheat-mode* (cpad-hold? 0 l3))) - (not (time-elapsed? (-> self state-time) (seconds 10))) - ) - ) - (hide-hud) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (seen-text? *game-info* (text-id village2-levitator-need-cells)) - (hud-hidden?) - (can-grab-display? self) - (not (-> *setting-control* current hint)) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-28 gp-0)) - (set! (-> v1-28 width) (the float 448)) - ) - (let ((v1-29 gp-0)) - (set! (-> v1-29 height) (the float 80)) - ) - (let ((v1-30 gp-0)) - (set! (-> v1-30 scale) 0.8) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) - (print-game-text (lookup-text! *common-text* (text-id village2-levitator-need-cells-text) #f) gp-0 #f 128 22) - ) - ) - (level-hint-spawn - (text-id village2-levitator-need-cells) - "asstvb71" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - ) + :trans + (behavior () + ((-> (method-of-type process-taskable hidden) trans)) + (when (and (cond + ((and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) #t) + (else (set-time! (-> self state-time)) #f)) + (and (closed? (-> self tasks) (game-task village2-levitator) (task-status need-introduction)) + (not (closed? (-> self tasks) (game-task village2-levitator) (task-status need-reward-speech))) + (not (movie?)) + (not (level-hint-displayed?)) + (not (and *cheat-mode* (cpad-hold? 0 l3))) + (not (time-elapsed? (-> self state-time) (seconds 10))))) + (hide-hud) + (kill-current-level-hint () '(sidekick voicebox) 'exit) + (when (and (seen-text? *game-info* (text-id village2-levitator-need-cells)) + (hud-hidden?) + (can-grab-display? self) + (not (-> *setting-control* current hint))) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-28 gp-0)) (set! (-> v1-28 width) (the float 448))) + (let ((v1-29 gp-0)) (set! (-> v1-29 height) (the float 80))) + (let ((v1-30 gp-0)) (set! (-> v1-30 scale) 0.8)) + (set! (-> gp-0 flags) (font-flags shadow kerning middle large)) + (print-game-text (lookup-text! *common-text* (text-id village2-levitator-need-cells-text) #f) gp-0 #f 128 22))) + (level-hint-spawn (text-id village2-levitator-need-cells) "asstvb71" (the-as entity #f) *entity-pool* (game-task none))))) (defmethod target-above-threshold? ((this assistant-levitator)) - (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) - ) + (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech))) (defstate idle (assistant-levitator) :virtual #t - :exit (behavior () - (stop! (-> self sound)) - ((-> (method-of-type process-taskable idle) exit)) - ) - :trans (behavior () - (assistant-levitator-blue-glow) - (update! (-> self sound)) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (cond - ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (ja-no-eval :group! assistant-village2-idle-after-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (assistant-levitator-blue-beam) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (ja :group! assistant-village2-idle-a-ja) - (let* ((f30-0 2.0) - (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-32 (the-as number (logior #x3f800000 v1-31))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-32)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-village2-idle-to-b-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! assistant-village2-idle-b-ja) - (let* ((f30-1 2.0) - (v1-91 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-92 (the-as number (logior #x3f800000 v1-91))) - ) - (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-92)))) 3)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! assistant-village2-idle-to-a-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) + :exit + (behavior () + (stop! (-> self sound)) + ((-> (method-of-type process-taskable idle) exit))) + :trans + (behavior () + (assistant-levitator-blue-glow) + (update! (-> self sound)) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop (cond + ((= (get-task-status (game-task village2-levitator)) (task-status invalid)) + (ja-no-eval :group! assistant-village2-idle-after-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (assistant-levitator-blue-beam) + (suspend) + (ja :num! (seek!)))) + (else + (ja :group! assistant-village2-idle-a-ja) + (let* ((f30-0 2.0) + (v1-31 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-32 (the-as number (logior #x3f800000 v1-31)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-32)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-village2-idle-to-b-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! assistant-village2-idle-b-ja) + (let* ((f30-1 2.0) + (v1-91 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-92 (the-as number (logior #x3f800000 v1-91)))) + (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-92)))) 3)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! assistant-village2-idle-to-a-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))))))) (defmethod should-display? ((this assistant-levitator)) (or (= (get-task-status (game-task village2-levitator)) (task-status need-reward-speech)) - (zero? (get-task-status (game-task village2-levitator))) - ) - ) + (zero? (get-task-status (game-task village2-levitator))))) (defstate just-particles (assistant-levitator) - :code (behavior () - (ja-channel-set! 0) - (loop - (assistant-levitator-blue-glow) - (assistant-levitator-blue-beam) - (update! (-> self sound)) - (suspend) - ) - ) - ) + :code + (behavior () + (ja-channel-set! 0) + (loop (assistant-levitator-blue-glow) + (assistant-levitator-blue-beam) + (update! (-> self sound)) + (suspend)))) (defmethod init-from-entity! ((this assistant-levitator) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village2-sg* 3 31 (new 'static 'vector :w 4096.0) 5) @@ -1464,12 +1153,8 @@ (set! (-> this particle 1) (create-launch-control (-> *part-group-id-table* 659) this)) (set! (-> this particle 2) (create-launch-control (-> *part-group-id-table* 660) this)) (set! (-> this particle 3) (create-launch-control (-> *part-group-id-table* 661) this)) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "lev-mach-idle" :fo-max 30) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "lev-mach-idle" :fo-max 30) (-> this root trans))) (if (= (get-task-status (game-task village2-levitator)) (task-status invalid)) - (go just-particles) - (process-taskable-method-42 this) - ) - (none) - ) + (go just-particles) + (process-taskable-method-42 this)) + (none)) diff --git a/goal_src/jak1/levels/village2/flutflut-bluehut.gc b/goal_src/jak1/levels/village2/flutflut-bluehut.gc index 9c823e1fb2..8da61e3d1a 100644 --- a/goal_src/jak1/levels/village2/flutflut-bluehut.gc +++ b/goal_src/jak1/levels/village2/flutflut-bluehut.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: flutflut-bluehut.gc @@ -10,109 +9,76 @@ ;; DECOMP BEGINS -(deftype flutflut-bluehut (process-taskable) - () - ) +(deftype flutflut-bluehut (process-taskable) ()) - -(defskelgroup *flutflut-bluehut-sg* flutflut-bluehut flutflut-bluehut-lod0-jg flutflut-bluehut-idle-breathe-ja - ((flutflut-bluehut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 3.25) - ) +(defskelgroup *flutflut-bluehut-sg* + flutflut-bluehut + flutflut-bluehut-lod0-jg + flutflut-bluehut-idle-breathe-ja + ((flutflut-bluehut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 3.25)) (defmethod play-anim! ((this flutflut-bluehut) (arg0 symbol)) (current-status (-> this tasks)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (the-as basic (get-art-elem this)) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (the-as basic (get-art-elem this))) (defmethod get-art-elem ((this flutflut-bluehut)) - (-> this draw art-group data 2) - ) + (-> this draw art-group data 2)) (defmethod should-display? ((this flutflut-bluehut)) (and (closed? (-> this tasks) (game-task village2-levitator) (task-status need-introduction)) - (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - ) - ) + (task-closed? (game-task beach-flutflut) (task-status need-resolution)))) (defstate idle (flutflut-bluehut) :virtual #t - :trans (behavior () - (set! (-> self will-talk) #f) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (ja :group! flutflut-bluehut-idle-breathe-ja) - (let* ((f30-0 2.0) - (v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-9 (the-as number (logior #x3f800000 v1-8))) - ) - (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-9)))) 1)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((s5-0 (current-time))) - (while (< (+ (current-time) (seconds -0.5)) s5-0) + :trans + (behavior () + (set! (-> self will-talk) #f) + ((-> (method-of-type process-taskable idle) trans))) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop (ja :group! flutflut-bluehut-idle-breathe-ja) + (let* ((f30-0 2.0) + (v1-8 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-9 (the-as number (logior #x3f800000 v1-8)))) + (countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-9)))) 1)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - (let ((s5-1 (current-time))) - (while (< (+ (current-time) (seconds -0.5)) s5-1) + (ja :num! (seek!))) + (let ((s5-0 (current-time))) (while (< (+ (current-time) (seconds -0.5)) s5-0) (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (ja :group! flutflut-bluehut-idle-scratch-ja) - (let* ((f30-1 2.0) - (v1-102 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-103 (the-as number (logior #x3f800000 v1-102))) - ) - (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-103)))) 6)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek! 0.0) :frame-num max) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! 0.0)) - ) - ) - ) - ) + (ja :num! (seek! 0.0))) + (let ((s5-1 (current-time))) (while (< (+ (current-time) (seconds -0.5)) s5-1) (suspend))))) + (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (ja :group! flutflut-bluehut-idle-scratch-ja) + (let* ((f30-1 2.0) + (v1-102 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-103 (the-as number (logior #x3f800000 v1-102)))) + (countdown (gp-1 (+ (the int (* f30-1 (+ -1.0 (the-as float v1-103)))) 6)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + (ja-no-eval :group! flutflut-bluehut-idle-start-scratch-ja :num! (seek! 0.0) :frame-num max) + (until (ja-done? 0) + (suspend) + (ja :num! (seek! 0.0)))))) (defmethod init-from-entity! ((this flutflut-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *flutflut-bluehut-sg* 3 0 (new 'static 'vector :w 4096.0) 27) (set! (-> this tasks) (get-task-control (game-task village2-levitator))) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/gambler.gc b/goal_src/jak1/levels/village2/gambler.gc index 3b4ff30722..5eab8410ba 100644 --- a/goal_src/jak1/levels/village2/gambler.gc +++ b/goal_src/jak1/levels/village2/gambler.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: gambler.gc @@ -10,16 +9,15 @@ ;; DECOMP BEGINS -(deftype gambler (process-taskable) - () - ) +(deftype gambler (process-taskable) ()) - -(defskelgroup *gambler-sg* gambler gambler-lod0-jg gambler-idle-tiptoe-ja - ((gambler-lod0-mg (meters 20)) (gambler-lod1-mg (meters 40)) (gambler-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow gambler-shadow-mg - ) +(defskelgroup *gambler-sg* + gambler + gambler-lod0-jg + gambler-idle-tiptoe-ja + ((gambler-lod0-mg (meters 20)) (gambler-lod1-mg (meters 40)) (gambler-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow gambler-shadow-mg) (defmethod play-anim! ((this gambler) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -27,189 +25,110 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task village2-gambler-money) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "gambler-introduction-1" - :index 11 - :parts 9 - :command-list '((0 want-levels village2 rolling) - (0 display-level rolling #f) - (29 joint "cameraB") - (103 joint "camera") - (231 joint "cameraB") - (730 display-level rolling display) - (730 want-force-vis rolling #t) - (732 alive "gorge-pusher-5") - (732 alive "gorge-pusher-6") - (732 alive "gorge-start-1") - (732 joint "camera") - (945 joint "cameraB") - (950 dead "gorge-pusher-5") - (950 dead "gorge-pusher-6") - (950 dead "gorge-start-1") - (950 display-level rolling #f) - (950 want-force-vis rolling #f) - ) - ) - ) + (close-specific-task! (game-task village2-gambler-money) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "gambler-introduction-1" + :index 11 + :parts 9 + :command-list + '((0 want-levels village2 rolling) + (0 display-level rolling #f) + (29 joint "cameraB") + (103 joint "camera") + (231 joint "cameraB") + (730 display-level rolling display) + (730 want-force-vis rolling #t) + (732 alive "gorge-pusher-5") + (732 alive "gorge-pusher-6") + (732 alive "gorge-start-1") + (732 joint "camera") + (945 joint "cameraB") + (950 dead "gorge-pusher-5") + (950 dead "gorge-pusher-6") + (950 dead "gorge-start-1") + (950 display-level rolling #f) + (950 want-force-vis rolling #f)))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((closed? (-> this tasks) (game-task rolling-race) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list ())) ((closed? (-> this tasks) (game-task village2-gambler-money) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list ())) ((zero? (get-reminder (-> this tasks) 5)) - (if arg0 - (save-reminder (-> this tasks) 1 5) - ) - (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 5)) + (new 'static 'spool-anim :name "gambler-reminder-race" :index 12 :parts 2 :command-list ())) (else - (if arg0 - (save-reminder (-> this tasks) 0 5) - ) - (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 5)) + (new 'static 'spool-anim :name "gambler-reminder-money" :index 13 :parts 2 :command-list ())))) (((task-status need-reward-speech)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-race)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "gambler-resolution-race" :index 14 :parts 3 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "gambler-resolution-race" :index 14 :parts 3 :command-list ())) (else - (cond - (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim :name "gambler-resolution-money" :index 15 :parts 2 :command-list '()) - ) - ) - ) + (cond + (arg0 + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "gambler-resolution-money" :index 15 :parts 2 :command-list ())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 7) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 7)))) (defmethod get-art-elem ((this gambler)) - (-> this draw art-group data 7) - ) + (-> this draw art-group data 7)) (defmethod process-taskable-method-43 ((this gambler)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 61440.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.9230769 f0-2) - (play-ambient (-> this ambient) "GAM-AM01" #f (-> this root trans)) - ) - ((< 0.84615386 f0-2) - (play-ambient (-> this ambient) "GAM-AM02" #f (-> this root trans)) - ) - ((< 0.7692308 f0-2) - (play-ambient (-> this ambient) "GAM-AM03" #f (-> this root trans)) - ) - ((< 0.6923077 f0-2) - (play-ambient (-> this ambient) "GAM-AM04" #f (-> this root trans)) - ) - ((< 0.61538464 f0-2) - (play-ambient (-> this ambient) "GAM-AM05" #f (-> this root trans)) - ) - ((< 0.53846157 f0-2) - (play-ambient (-> this ambient) "GAM-AM06" #f (-> this root trans)) - ) - ((< 0.46153846 f0-2) - (play-ambient (-> this ambient) "GAM-AM07" #f (-> this root trans)) - ) - ((< 0.3846154 f0-2) - (play-ambient (-> this ambient) "GAM-AM08" #f (-> this root trans)) - ) - ((< 0.30769232 f0-2) - (play-ambient (-> this ambient) "GAM-AM09" #f (-> this root trans)) - ) + ((< 0.9230769 f0-2) (play-ambient (-> this ambient) "GAM-AM01" #f (-> this root trans))) + ((< 0.84615386 f0-2) (play-ambient (-> this ambient) "GAM-AM02" #f (-> this root trans))) + ((< 0.7692308 f0-2) (play-ambient (-> this ambient) "GAM-AM03" #f (-> this root trans))) + ((< 0.6923077 f0-2) (play-ambient (-> this ambient) "GAM-AM04" #f (-> this root trans))) + ((< 0.61538464 f0-2) (play-ambient (-> this ambient) "GAM-AM05" #f (-> this root trans))) + ((< 0.53846157 f0-2) (play-ambient (-> this ambient) "GAM-AM06" #f (-> this root trans))) + ((< 0.46153846 f0-2) (play-ambient (-> this ambient) "GAM-AM07" #f (-> this root trans))) + ((< 0.3846154 f0-2) (play-ambient (-> this ambient) "GAM-AM08" #f (-> this root trans))) + ((< 0.30769232 f0-2) (play-ambient (-> this ambient) "GAM-AM09" #f (-> this root trans))) ((< 0.23076923 f0-2) (if (not (task-closed? (game-task ogre-boss) (task-status need-reminder))) - (play-ambient (-> this ambient) "GAM-AM10" #f (-> this root trans)) - ) - ) - ((< 0.15384616 f0-2) - (play-ambient (-> this ambient) "GAM-AM11" #f (-> this root trans)) - ) - ((< 0.07692308 f0-2) - (play-ambient (-> this ambient) "GAM-AM12" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "GAM-AM13" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "GAM-AM10" #f (-> this root trans)))) + ((< 0.15384616 f0-2) (play-ambient (-> this ambient) "GAM-AM11" #f (-> this root trans))) + ((< 0.07692308 f0-2) (play-ambient (-> this ambient) "GAM-AM12" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "GAM-AM13" #f (-> this root trans))))))) (defstate idle (gambler) :virtual #t - :code (behavior () - (when (!= (ja-group) gambler-idle-fidget-ja) - (ja-channel-push! 1 (seconds 0.2)) - (ja :group! gambler-idle-fidget-ja) - ) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (process-taskable-method-43 self) - (let ((f0-9 (rand-float-gen))) - (cond - ((< f0-9 0.16666667) - (ja :group! gambler-idle-tiptoe-ja) - ) - ((< f0-9 0.33333334) - (ja :group! gambler-idle-look-1-ja) - ) - ((< f0-9 0.5) - (ja :group! gambler-idle-fidget-ja) - ) - ((< f0-9 0.6666667) - (ja :group! gambler-idle-scratch-1-ja) - ) - ((< f0-9 0.8333333) - (ja :group! gambler-idle-look-2-ja) - ) - (else - (ja :group! gambler-idle-scratch-2-ja) - ) - ) - ) - ) - ) - ) + :code + (behavior () + (when (!= (ja-group) gambler-idle-fidget-ja) + (ja-channel-push! 1 (seconds 0.2)) + (ja :group! gambler-idle-fidget-ja)) + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (process-taskable-method-43 self) + (let ((f0-9 (rand-float-gen))) + (cond + ((< f0-9 0.16666667) (ja :group! gambler-idle-tiptoe-ja)) + ((< f0-9 0.33333334) (ja :group! gambler-idle-look-1-ja)) + ((< f0-9 0.5) (ja :group! gambler-idle-fidget-ja)) + ((< f0-9 0.6666667) (ja :group! gambler-idle-scratch-1-ja)) + ((< f0-9 0.8333333) (ja :group! gambler-idle-look-2-ja)) + (else (ja :group! gambler-idle-scratch-2-ja))))))) (defmethod init-from-entity! ((this gambler) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *gambler-sg* 3 32 (new 'static 'vector :w 4096.0) 5) @@ -217,5 +136,4 @@ (set! (-> this sound-flava) (music-flava gambler)) (set! (-> this draw light-index) (the-as uint 4)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/geologist.gc b/goal_src/jak1/levels/village2/geologist.gc index b2eb0facec..4baaf92f0d 100644 --- a/goal_src/jak1/levels/village2/geologist.gc +++ b/goal_src/jak1/levels/village2/geologist.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: geologist.gc @@ -10,16 +9,15 @@ ;; DECOMP BEGINS -(deftype geologist (process-taskable) - () - ) +(deftype geologist (process-taskable) ()) - -(defskelgroup *geologist-sg* geologist geologist-lod0-jg geologist-idle-ja - ((geologist-lod0-mg (meters 20)) (geologist-lod1-mg (meters 40)) (geologist-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow geologist-shadow-mg - ) +(defskelgroup *geologist-sg* + geologist + geologist-lod0-jg + geologist-idle-ja + ((geologist-lod0-mg (meters 20)) (geologist-lod1-mg (meters 40)) (geologist-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow geologist-shadow-mg) (defmethod play-anim! ((this geologist) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -27,136 +25,83 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task village2-geologist-money) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "geologist-introduction" - :index 6 - :parts 13 - :command-list '((0 want-levels village2 rolling) - (199 joint "cameraB") - (325 joint "camera") - (520 alive "racer-2") - (544 joint "cameraB") - (546 dead "racer-2") - (809 joint "camera") - (1031 joint "cameraB") - (1229 joint "camera") - ) - ) - ) + (close-specific-task! (game-task village2-geologist-money) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "geologist-introduction" + :index 6 + :parts 13 + :command-list + '((0 want-levels village2 rolling) + (199 joint "cameraB") + (325 joint "camera") + (520 alive "racer-2") + (544 joint "cameraB") + (546 dead "racer-2") + (809 joint "camera") + (1031 joint "cameraB") + (1229 joint "camera")))) (((task-status need-reminder)) (set! (-> this skippable) #t) (cond ((closed? (-> this tasks) (game-task rolling-moles) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '()) - ) + (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list ())) ((closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-reward-speech)) - (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list ())) ((zero? (get-reminder (-> this tasks) 0)) - (if arg0 - (save-reminder (-> this tasks) 1 0) - ) - (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list '()) - ) + (if arg0 (save-reminder (-> this tasks) 1 0)) + (new 'static 'spool-anim :name "geologist-reminder-moles" :index 7 :parts 3 :command-list ())) (else - (if arg0 - (save-reminder (-> this tasks) 0 0) - ) - (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list '()) - ) - ) - ) + (if arg0 (save-reminder (-> this tasks) 0 0)) + (new 'static 'spool-anim :name "geologist-reminder-money" :index 8 :parts 2 :command-list ())))) (((task-status need-reward-speech)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-moles)) (when arg0 (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - ) - (new 'static 'spool-anim :name "geologist-resolution-moles" :index 9 :parts 3 :command-list '()) - ) + (close-current! (-> this tasks))) + (new 'static 'spool-anim :name "geologist-resolution-moles" :index 9 :parts 3 :command-list ())) (else - (cond - (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - ) - (else - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim :name "geologist-resolution-money" :index 10 :parts 2 :command-list '()) - ) - ) - ) + (cond + (arg0 + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc)))) + (else (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "geologist-resolution-money" :index 10 :parts 2 :command-list ())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5)))) (defmethod get-art-elem ((this geologist)) - (-> this draw art-group data 5) - ) + (-> this draw art-group data 5)) (defmethod process-taskable-method-43 ((this geologist)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8888889 f0-2) - (play-ambient (-> this ambient) "GEO-AM01" #f (-> this root trans)) - ) + ((< 0.8888889 f0-2) (play-ambient (-> this ambient) "GEO-AM01" #f (-> this root trans))) ((< 0.7777778 f0-2) (if (not (closed? (-> this tasks) (game-task rolling-moles) (task-status need-reminder))) - (play-ambient (-> this ambient) "GEO-AM02" #f (-> this root trans)) - ) - ) - ((< 0.6666667 f0-2) - (play-ambient (-> this ambient) "GEO-AM03" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM02" #f (-> this root trans)))) + ((< 0.6666667 f0-2) (play-ambient (-> this ambient) "GEO-AM03" #f (-> this root trans))) ((< 0.5555556 f0-2) (if (closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-introduction)) - (play-ambient (-> this ambient) "GEO-AM04" #f (-> this root trans)) - ) - ) - ((< 0.44444445 f0-2) - (play-ambient (-> this ambient) "GEO-AM05" #f (-> this root trans)) - ) - ((< 0.33333334 f0-2) - (play-ambient (-> this ambient) "GEO-AM06" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM04" #f (-> this root trans)))) + ((< 0.44444445 f0-2) (play-ambient (-> this ambient) "GEO-AM05" #f (-> this root trans))) + ((< 0.33333334 f0-2) (play-ambient (-> this ambient) "GEO-AM06" #f (-> this root trans))) ((< 0.22222222 f0-2) (if (not (closed? (-> this tasks) (game-task rolling-moles) (task-status need-reminder))) - (play-ambient (-> this ambient) "GEO-AM07" #f (-> this root trans)) - ) - ) - ((< 0.11111111 f0-2) - (play-ambient (-> this ambient) "GEO-LO02" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "GEO-AM07" #f (-> this root trans)))) + ((< 0.11111111 f0-2) (play-ambient (-> this ambient) "GEO-LO02" #f (-> this root trans))) ((closed? (-> this tasks) (game-task village2-geologist-money) (task-status need-resolution)) - (play-ambient (-> this ambient) "GEO-AM08" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "GEO-LO01" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "GEO-AM08" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "GEO-LO01" #f (-> this root trans))))))) (defmethod init-from-entity! ((this geologist) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *geologist-sg* 3 45 (new 'static 'vector :w 4096.0) 5) @@ -164,5 +109,4 @@ (set! (-> this sound-flava) (music-flava geologist)) (set! (-> this draw light-index) (the-as uint 2)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/sage-bluehut.gc b/goal_src/jak1/levels/village2/sage-bluehut.gc index 0e4f933935..0e4a9e8853 100644 --- a/goal_src/jak1/levels/village2/sage-bluehut.gc +++ b/goal_src/jak1/levels/village2/sage-bluehut.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village1/sage.gc") ;; name: sage-bluehut.gc @@ -11,301 +10,189 @@ ;; DECOMP BEGINS (deftype assistant-bluehut (process-taskable) - ((sound-id sound-id) - (jaws handle) - (sage entity-actor) - (im-talking symbol) - ) - ) - + ((sound-id sound-id) + (jaws handle) + (sage entity-actor) + (im-talking symbol))) (deftype sage-bluehut (process-taskable) - ((reminder-played symbol) - (assistant entity-actor) - ) - ) + ((reminder-played symbol) + (assistant entity-actor))) - -(defskelgroup *sage-bluehut-sg* sage-bluehut sage-bluehut-lod0-jg sage-bluehut-idle-ja - ((sage-bluehut-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow sage-bluehut-shadow-mg - ) +(defskelgroup *sage-bluehut-sg* + sage-bluehut + sage-bluehut-lod0-jg + sage-bluehut-idle-ja + ((sage-bluehut-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow sage-bluehut-shadow-mg) (defmethod play-anim! ((this sage-bluehut) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-sage)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task rolling-plants)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (close-status! (-> this tasks) (task-status need-introduction)) (let ((s5-2 (-> this assistant extra process))) - (if (and s5-2 (should-display? (the-as assistant-bluehut s5-2))) - (send-event s5-2 'clone (process->handle this)) - ) - ) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-bluehut-introduction-crop-dusting" - :index 8 - :parts 12 - :command-list '((678 joint "cameraB") (1166 joint "camera") (1258 joint "cameraB")) - ) - ) + (if (and s5-2 (should-display? (the-as assistant-bluehut s5-2))) (send-event s5-2 'clone (process->handle this)))) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-bluehut-introduction-crop-dusting" + :index 8 + :parts 12 + :command-list + '((678 joint "cameraB") (1166 joint "camera") (1258 joint "cameraB")))) (else - (when arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-1) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-2) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-3) (task-status need-introduction)) - (close-specific-task! (game-task swamp-tether-4) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-bluehut-introduction-prec-arm" - :index 6 - :parts 8 - :command-list '((141 joint "cameraB") - (214 joint "camera") - (308 joint "cameraB") - (686 joint "camera") - (786 joint "cameraB") - (843 joint "camera") - ) - ) - ) - ) - ) + (when arg0 + (close-status! (-> this tasks) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-1) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-2) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-3) (task-status need-introduction)) + (close-specific-task! (game-task swamp-tether-4) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-bluehut-introduction-prec-arm" + :index 6 + :parts 8 + :command-list + '((141 joint "cameraB") + (214 joint "camera") + (308 joint "cameraB") + (686 joint "camera") + (786 joint "cameraB") + (843 joint "camera")))))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (if arg0 - (set! (-> this reminder-played) #t) - ) + (if arg0 (set! (-> this reminder-played) #t)) (cond ((zero? (get-reminder (-> this tasks) 0)) - (new 'static 'spool-anim :name "sage-bluehut-reminder-1-crop-dusting" :index 9 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "sage-bluehut-reminder-1-crop-dusting" :index 9 :parts 3 :command-list ())) (else - (if arg0 - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-bluehut-reminder-1-prec-arm" - :index 7 - :parts 4 - :command-list '((90 joint "cameraB") (259 joint "camera") (352 joint "cameraB")) - ) - ) - ) - ) + (if arg0 (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-bluehut-reminder-1-prec-arm" + :index 7 + :parts 4 + :command-list + '((90 joint "cameraB") (259 joint "camera") (352 joint "cameraB")))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod process-taskable-method-45 ((this sage-bluehut)) (cond - ((= (current-status (-> this tasks)) (task-status unknown)) - #f - ) - ((= (current-status (-> this tasks)) (task-status invalid)) - #f - ) + ((= (current-status (-> this tasks)) (task-status unknown)) #f) + ((= (current-status (-> this tasks)) (task-status invalid)) #f) ((and (closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 0) - ) - #t - ) - ((and (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) - (= (get-reminder (-> this tasks) 0) 1) - ) - #t - ) - ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) - #t - ) - (else - #f - ) - ) - ) + (= (get-reminder (-> this tasks) 0) 0)) + #t) + ((and (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) (= (get-reminder (-> this tasks) 0) 1)) + #t) + ((and (-> this reminder-played) (< 81920.0 (vector-vector-distance (-> this root trans) (camera-pos)))) #t) + (else #f))) (defmethod get-art-elem ((this sage-bluehut)) (cond ((and (= (current-task (-> this tasks)) (game-task rolling-plants)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 0 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) ((and (= (current-task (-> this tasks)) (game-task swamp-arm)) (or (= (current-status (-> this tasks)) (task-status need-hint)) - (= (current-status (-> this tasks)) (task-status need-introduction)) - ) - ) - (save-reminder (-> this tasks) 1 0) - ) + (= (current-status (-> this tasks)) (task-status need-introduction)))) + (save-reminder (-> this tasks) 1 0)) ((process-taskable-method-45 this) (set! (-> this reminder-played) #f) (cond - ((closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) - (save-reminder (-> this tasks) 1 0) - ) + ((closed? (-> this tasks) (game-task rolling-plants) (task-status need-reminder)) (save-reminder (-> this tasks) 1 0)) ((or (closed? (-> this tasks) (game-task swamp-arm) (task-status need-reminder)) - (not (closed? (-> this tasks) (game-task swamp-arm) (task-status need-introduction))) - ) - (save-reminder (-> this tasks) 0 0) - ) - ((zero? (get-reminder (-> this tasks) 0)) - (save-reminder (-> this tasks) 1 0) - ) - (else - (save-reminder (-> this tasks) 0 0) - ) - ) - ) - ) - (if (zero? (get-reminder (-> this tasks) 0)) - (-> this draw art-group data 4) - (-> this draw art-group data 5) - ) - ) + (not (closed? (-> this tasks) (game-task swamp-arm) (task-status need-introduction)))) + (save-reminder (-> this tasks) 0 0)) + ((zero? (get-reminder (-> this tasks) 0)) (save-reminder (-> this tasks) 1 0)) + (else (save-reminder (-> this tasks) 0 0))))) + (if (zero? (get-reminder (-> this tasks) 0)) (-> this draw art-group data 4) (-> this draw art-group data 5))) (defstate play-anim (sage-bluehut) :virtual #t - :exit (behavior () - (send-event (-> self assistant extra process) 'end-mode) - (set! (-> self draw bounds w) 10240.0) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> self assistant extra process) 'end-mode) + (set! (-> self draw bounds w) 10240.0) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod should-display? ((this sage-bluehut)) - (and (task-closed? (game-task village2-levitator) (task-status need-introduction)) (not (sages-kidnapped?))) - ) + (and (task-closed? (game-task village2-levitator) (task-status need-introduction)) (not (sages-kidnapped?)))) (defmethod play-reminder ((this sage-bluehut)) - (the-as - symbol - (and (-> this will-talk) *target* (< -6365184.0 (-> (target-pos 0) z)) (< (-> (target-pos 0) x) 1612800.0)) - ) - ) + (the-as symbol + (and (-> this will-talk) *target* (< -6365184.0 (-> (target-pos 0) z)) (< (-> (target-pos 0) x) 1612800.0)))) (defmethod target-above-threshold? ((this sage-bluehut)) (local-vars (v0-1 symbol)) - (if (not (play-reminder this)) - (return #f) - ) + (if (not (play-reminder this)) (return #f)) (let ((gp-1 (-> this assistant extra process))) - (if (not gp-1) - (return #t) - ) + (if (not gp-1) (return #t)) (target-above-threshold? (the-as assistant-bluehut gp-1)) - (return (not (-> (the-as assistant-bluehut gp-1) im-talking))) - ) - v0-1 - ) + (return (not (-> (the-as assistant-bluehut gp-1) im-talking)))) + v0-1) (defmethod process-taskable-method-43 ((this sage-bluehut)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.8 f0-2) - (play-ambient (-> this ambient) "SAGELP20" #f (-> this root trans)) - ) - ((< 0.6 f0-2) - (play-ambient (-> this ambient) "SAGELP21" #f (-> this root trans)) - ) - ((< 0.4 f0-2) - (play-ambient (-> this ambient) "SAGELP22" #f (-> this root trans)) - ) - ((< 0.2 f0-2) - (play-ambient (-> this ambient) "SAGELP23" #f (-> this root trans)) - ) + ((< 0.8 f0-2) (play-ambient (-> this ambient) "SAGELP20" #f (-> this root trans))) + ((< 0.6 f0-2) (play-ambient (-> this ambient) "SAGELP21" #f (-> this root trans))) + ((< 0.4 f0-2) (play-ambient (-> this ambient) "SAGELP22" #f (-> this root trans))) + ((< 0.2 f0-2) (play-ambient (-> this ambient) "SAGELP23" #f (-> this root trans))) ((nonzero? (get-task-status (game-task citadel-sage-blue))) - (play-ambient (-> this ambient) "SAGELP24" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "SAGELP24" #f (-> this root trans))))))) (defstate idle (sage-bluehut) :virtual #t - :code (behavior () - (loop - (let ((gp-0 (get-art-elem self))) - (cond - ((= gp-0 sage-bluehut-idle-stand-ja) - (if (!= (ja-group) gp-0) - (ja-channel-push! 1 (seconds 0.2)) - ) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) - (let* ((f30-0 3.0) - (v1-15 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-16 (the-as number (logior #x3f800000 v1-15))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-16)))) 5)) - (process-taskable-method-43 self) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! sage-bluehut-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (process-taskable-method-43 self) - (if (!= (ja-group) gp-0) - (ja-channel-push! 1 (seconds 0.2)) - ) - (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (if (process-taskable-method-45 self) - (go-virtual idle) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - ) - ) + :code + (behavior () + (loop (let ((gp-0 (get-art-elem self))) + (cond + ((= gp-0 sage-bluehut-idle-stand-ja) + (if (!= (ja-group) gp-0) (ja-channel-push! 1 (seconds 0.2))) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) + (let* ((f30-0 3.0) + (v1-15 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-16 (the-as number (logior #x3f800000 v1-15)))) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-16)))) 5)) + (process-taskable-method-43 self) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!))))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! sage-bluehut-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!)))) + (else + (process-taskable-method-43 self) + (if (!= (ja-group) gp-0) (ja-channel-push! 1 (seconds 0.2))) + (set! (-> self skel root-channel 0 frame-group) (the-as art-joint-anim gp-0)) + (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (if (process-taskable-method-45 self) (go-virtual idle)) + (suspend) + (ja :num! (seek!))))))))) (defmethod init-from-entity! ((this sage-bluehut) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-bluehut-sg* 3 40 (new 'static 'vector :w 4505.6) 5) @@ -315,5 +202,4 @@ (set! (-> this draw light-index) (the-as uint 1)) (set! (-> this sound-flava) (music-flava sage)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/sunken-elevator.gc b/goal_src/jak1/levels/village2/sunken-elevator.gc index 29cce9569a..cc9cbc4b6a 100644 --- a/goal_src/jak1/levels/village2/sunken-elevator.gc +++ b/goal_src/jak1/levels/village2/sunken-elevator.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "engine/common-obs/plat-button.gc") @@ -12,155 +11,103 @@ ;; DECOMP BEGINS (deftype sunken-elevator (plat-button) - ((play-at-top-going-up-camera? symbol) - (teleport-if-below-y float) - (teleport-if-above-y float) - ) - ) + ((play-at-top-going-up-camera? symbol) + (teleport-if-below-y float) + (teleport-if-above-y float))) - -(defskelgroup *sunken-elevator-sg* sunken-elevator sunken-elevator-lod0-jg sunken-elevator-pressed-ja - ((sunken-elevator-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -1 0 6.6) - ) +(defskelgroup *sunken-elevator-sg* + sunken-elevator + sunken-elevator-lod0-jg + sunken-elevator-pressed-ja + ((sunken-elevator-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -1 0 6.6)) (defmethod should-teleport? ((this sunken-elevator)) (let ((f0-0 (-> (camera-pos) y))) (case (-> this path-pos) - ((0.0) - (if (< f0-0 (-> this teleport-if-below-y)) - (return #t) - ) - ) - ((1.0) - (if (< (-> this teleport-if-above-y) f0-0) - (return #t) - ) - ) - ) - ) - #f - ) + ((0.0) (if (< f0-0 (-> this teleport-if-below-y)) (return #t))) + ((1.0) (if (< (-> this teleport-if-above-y) f0-0) (return #t))))) + #f) (defstate plat-button-pressed (sunken-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-pressed) enter))) - (if t9-0 - (t9-0) - ) - ) - (case (-> self path-pos) - ((0.0) - (load-state-want-display-level 'sunken 'display) - (let ((gp-0 (get-process *default-dead-pool* village2cam #x4000))) - (set! (-> (the-as village2cam (-> (when gp-0 - (let ((t9-3 (method-of-type village2cam activate))) - (t9-3 (the-as village2cam gp-0) self 'village2cam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - ) - (-> gp-0 ppointer) - ) - 0 - ) - ) - seq - ) - (the-as uint 0) - ) - ) - 0 - ) - ((1.0) - (let ((v1-10 (process-spawn - village2cam - :init pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as village2cam (-> v1-10 0)) seq) (the-as uint 1)) - ) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-pressed) enter))) (if t9-0 (t9-0))) + (case (-> self path-pos) + ((0.0) + (load-state-want-display-level 'sunken 'display) + (let ((gp-0 (get-process *default-dead-pool* village2cam #x4000))) + (set! (-> (the-as village2cam + (-> (when gp-0 + (let ((t9-3 (method-of-type village2cam activate))) + (t9-3 (the-as village2cam gp-0) self 'village2cam (the-as pointer #x70004000))) + (run-now-in-process gp-0 + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + ()) + (-> gp-0 ppointer)) + 0)) + seq) + (the-as uint 0))) + 0) + ((1.0) + (let ((v1-10 (process-spawn village2cam + :init + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + () + :to + self))) + (set! (-> (the-as village2cam (-> v1-10 0)) seq) (the-as uint 1))))))) (defstate plat-button-move-upward (sunken-elevator) :virtual #t - :enter (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) - (if t9-0 - (t9-0) - ) - ) - (set! (-> self play-at-top-going-up-camera?) #t) - ) - :trans (behavior () - (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) - (if t9-0 - (t9-0) - ) - ) - (when (and (-> self play-at-top-going-up-camera?) (>= 0.14 (-> self path-pos))) - (set! *teleport* #t) - (set! (-> self play-at-top-going-up-camera?) #f) - (load-state-want-display-level 'sunken 'special) - (let ((v1-8 (process-spawn - village2cam - :init pov-camera-init-by-other - (-> self spawn-pos) - *village2cam-sg* - "elevator-at-top-going-down" - 0 - #f - '() - :to self - ) - ) - ) - (set! (-> (the-as village2cam (-> v1-8 0)) seq) (the-as uint 2)) - ) - ) - ) - ) + :enter + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) enter))) (if t9-0 (t9-0))) + (set! (-> self play-at-top-going-up-camera?) #t)) + :trans + (behavior () + (let ((t9-0 (-> (method-of-type plat-button plat-button-move-upward) trans))) (if t9-0 (t9-0))) + (when (and (-> self play-at-top-going-up-camera?) (>= 0.14 (-> self path-pos))) + (set! *teleport* #t) + (set! (-> self play-at-top-going-up-camera?) #f) + (load-state-want-display-level 'sunken 'special) + (let ((v1-8 (process-spawn village2cam + :init + pov-camera-init-by-other + (-> self spawn-pos) + *village2cam-sg* + "elevator-at-top-going-down" + 0 + #f + () + :to + self))) + (set! (-> (the-as village2cam (-> v1-8 0)) seq) (the-as uint 2)))))) (defstate plat-button-move-downward (sunken-elevator) :virtual #t - :trans (behavior () - (let ((s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'vector)) - ) - (set! *teleport* #t) - (set! (-> s5-0 quad) (-> self root trans quad)) - (let ((t9-1 (-> (find-parent-state) trans))) - (if t9-1 - (t9-1) - ) - ) - (vector-! gp-0 (-> self root trans) s5-0) - (when (< (-> self path-pos) 0.9) - (move-by-vector! (-> *target* control) gp-0) - (send-event *target* 'reset-height) - ) - ) - ) - ) + :trans + (behavior () + (let ((s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'vector))) + (set! *teleport* #t) + (set! (-> s5-0 quad) (-> self root trans quad)) + (let ((t9-1 (-> (find-parent-state) trans))) (if t9-1 (t9-1))) + (vector-! gp-0 (-> self root trans) s5-0) + (when (< (-> self path-pos) 0.9) + (move-by-vector! (-> *target* control) gp-0) + (send-event *target* 'reset-height))))) (defmethod can-target-move? ((this sunken-elevator)) (set! (-> this play-at-top-going-up-camera?) #f) @@ -168,44 +115,25 @@ (eval-path-curve! (-> this path) s5-0 0.4 'interp) (set! (-> this teleport-if-above-y) (-> s5-0 y)) (eval-path-curve! (-> this path) s5-0 0.6 'interp) - (set! (-> this teleport-if-below-y) (-> s5-0 y)) - ) - (none) - ) + (set! (-> this teleport-if-below-y) (-> s5-0 y))) + (none)) (defmethod plat-button-method-27 ((this sunken-elevator)) (ja-channel-set! 1) (cond ((can-activate? this) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) 0.0))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)))))) (ja-post) (update-transforms! (-> this root)) - (none) - ) + (none)) (defmethod plat-button-method-31 ((this sunken-elevator)) - (initialize-skeleton this *sunken-elevator-sg* '()) + (initialize-skeleton this *sunken-elevator-sg* ()) 0 - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village2/swamp-blimp.gc b/goal_src/jak1/levels/village2/swamp-blimp.gc index 5363ab0fb5..d2c5c039d1 100644 --- a/goal_src/jak1/levels/village2/swamp-blimp.gc +++ b/goal_src/jak1/levels/village2/swamp-blimp.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/anim/joint-mod-h.gc") (require "engine/game/task/hint-control.gc") @@ -13,285 +12,259 @@ (declare-type swamp-blimp process-drawable) - ;; DECOMP BEGINS -(defskelgroup *swamp-tetherrock-sg* swamp-tetherrock swamp-tetherrock-lod0-jg swamp-tetherrock-idle-ja - ((swamp-tetherrock-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 6) - ) +(defskelgroup *swamp-tetherrock-sg* + swamp-tetherrock + swamp-tetherrock-lod0-jg + swamp-tetherrock-idle-ja + ((swamp-tetherrock-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 6)) -(defskelgroup *swamp-tetherrock-explode-sg* swamp-tetherrock-explode swamp-tetherrock-explode-lod0-jg swamp-tetherrock-explode-idle-ja - ((swamp-tetherrock-explode-lod0-mg (meters 999999))) - :bounds (static-spherem 0 4 0 16) - ) +(defskelgroup *swamp-tetherrock-explode-sg* + swamp-tetherrock-explode + swamp-tetherrock-explode-lod0-jg + swamp-tetherrock-explode-idle-ja + ((swamp-tetherrock-explode-lod0-mg (meters 999999))) + :bounds (static-spherem 0 4 0 16)) -(defskelgroup *precursor-arm-sg* precursor-arm precursor-arm-lod0-jg precursor-arm-idle-ja - ((precursor-arm-lod0-mg (meters 999999))) - :bounds (static-spherem 0 15 0 15) - ) +(defskelgroup *precursor-arm-sg* + precursor-arm + precursor-arm-lod0-jg + precursor-arm-idle-ja + ((precursor-arm-lod0-mg (meters 999999))) + :bounds (static-spherem 0 15 0 15)) -(defskelgroup *swamp-rope-sg* swamp-rope swamp-rope-lod0-jg swamp-rope-idle-ja - ((swamp-rope-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 300) - :longest-edge (meters 66) - ) +(defskelgroup *swamp-rope-sg* + swamp-rope + swamp-rope-lod0-jg + swamp-rope-idle-ja + ((swamp-rope-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 300) + :longest-edge (meters 66)) -(defskelgroup *swamp-blimp-sg* swamp-blimp swamp-blimp-lod0-jg swamp-blimp-idle-ja - ((swamp-blimp-lod0-mg (meters 20)) (swamp-blimp-lod1-mg (meters 999999))) - :bounds (static-spherem 10 60 0 95) - :longest-edge (meters 40) - ) +(defskelgroup *swamp-blimp-sg* + swamp-blimp + swamp-blimp-lod0-jg + swamp-blimp-idle-ja + ((swamp-blimp-lod0-mg (meters 20)) (swamp-blimp-lod1-mg (meters 999999))) + :bounds (static-spherem 10 60 0 95) + :longest-edge (meters 40)) (defpartgroup group-tetherrock-explode :id 285 :duration (seconds 0.5) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2065 :period (seconds 2) :length (seconds 0.017)) - (sp-item 2066 :period (seconds 2) :length (seconds 0.135)) - (sp-item 2067 :period (seconds 2) :length (seconds 0.067)) - (sp-item 2068 :period (seconds 2) :length (seconds 0.067)) - ) - ) + :parts + ((sp-item 2065 :period (seconds 2) :length (seconds 0.017)) + (sp-item 2066 :period (seconds 2) :length (seconds 0.135)) + (sp-item 2067 :period (seconds 2) :length (seconds 0.067)) + (sp-item 2068 :period (seconds 2) :length (seconds 0.067)))) (defpart 2066 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 6.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.33) (meters 0.66)) - (:scale-y :copy scale-x) - (:r 192.0 64.0) - (:g 192.0 64.0) - (:b 0.0) - (:a 32.0 96.0) - (:vel-y (meters 0.053333335) (meters 0.21333334)) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00016666666) (meters -0.00016666666)) - (:friction 0.9) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.1) (seconds 0.097)) - (:next-launcher 2069) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 6.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.33) (meters 0.66)) + (:scale-y :copy scale-x) + (:r 192.0 64.0) + (:g 192.0 64.0) + (:b 0.0) + (:a 32.0 96.0) + (:vel-y (meters 0.053333335) (meters 0.21333334)) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00016666666) (meters -0.00016666666)) + (:friction 0.9) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.1) (seconds 0.097)) + (:next-launcher 2069) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2) (meters 4)))) (defpart 2069 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -1.4222223))) (defpart 2068 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 16)) - (:r 255.0) - (:g 196.0) - (:b 0.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.04)) - (:fade-a -1.6) - (:timer (seconds 0.2)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 16)) + (:r 255.0) + (:g 196.0) + (:b 0.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.04)) + (:fade-a -1.6) + (:timer (seconds 0.2)) + (:flags (bit2 bit3 bit14)))) (defpart 2065 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters 2)) - (:scale-x (meters 32)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 32.0) - (:b 0.0) - (:a 128.0) - (:fade-a -2.3272727) - (:timer (seconds 0.18)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters 2)) + (:scale-x (meters 32)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 32.0) + (:b 0.0) + (:a 128.0) + (:fade-a -2.3272727) + (:timer (seconds 0.18)) + (:flags (bit2 bit3 bit14)))) (defpart 2067 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 192.0 64.0) - (:b 128.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.053333335)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.42666668) - (:accel-y (meters 0.00016666666) (meters 0.00016666666)) - (:friction 0.8) - (:timer (seconds 1.7)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.14)) - (:next-launcher 2070) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 192.0 64.0) + (:b 128.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.053333335)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.42666668) + (:accel-y (meters 0.00016666666) (meters 0.00016666666)) + (:friction 0.8) + (:timer (seconds 1.7)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.14)) + (:next-launcher 2070) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 4)))) (defpart 2070 - :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0583333)) - ) + :init-specs ((:fade-r -0.53333336) (:fade-g -0.53333336) (:fade-b -1.0583333))) (defpart 2017 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.2) - (:y (meters 0.1)) - (:scale-x (meters 3)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 64.0) - (:scalevel-x (meters 0.016666668) (meters 0.01)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 2)) - (:flags (bit2 bit4 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 109) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.2) + (:y (meters 0.1)) + (:scale-x (meters 3)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 64.0) + (:scalevel-x (meters 0.016666668) (meters 0.01)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit4 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 109))) (defpartgroup group-swamp-tether-rock-hit :id 287 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1321 :period (seconds 0.05) :length (seconds 0.017))) - ) + :parts ((sp-item 1321 :period (seconds 0.05) :length (seconds 0.017)))) (defpart 1321 - :init-specs ((:texture (new 'static 'texture-id :index #x1d :page #x2)) - (:num 1.0 1.0) - (:scale-x (meters 0.1) (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 70.0 16.0) - (:g 70.0 16.0) - (:b 70.0) - (:a 128.0) - (:vel-y (meters 0.04) (meters 0.04)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:accel-y (meters -0.0026666666)) - (:friction 0.99) - (:timer (seconds 0.5)) - (:flags (bit2)) - (:userdata 0.0) - (:conerot-x (degrees 20) (degrees 50.000004)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1d :page #x2)) + (:num 1.0 1.0) + (:scale-x (meters 0.1) (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 70.0 16.0) + (:g 70.0 16.0) + (:b 70.0) + (:a 128.0) + (:vel-y (meters 0.04) (meters 0.04)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:accel-y (meters -0.0026666666)) + (:friction 0.99) + (:timer (seconds 0.5)) + (:flags (bit2)) + (:userdata 0.0) + (:conerot-x (degrees 20) (degrees 50.000004)) + (:conerot-y (degrees 0) (degrees 360)))) (deftype swamp-blimp-bank (basic) - ((arm-index int32) - (pause-before-dropping-arm int32) - (rise-per-break float) - (arm-sink-wait float) - ) - ) - + ((arm-index int32) + (pause-before-dropping-arm int32) + (rise-per-break float) + (arm-sink-wait float))) (define *SWAMP_BLIMP-bank* - (new 'static 'swamp-blimp-bank :pause-before-dropping-arm #x4b0 :rise-per-break 16384.0 :arm-sink-wait 1500.0) - ) + (new 'static 'swamp-blimp-bank :pause-before-dropping-arm #x4b0 :rise-per-break 16384.0 :arm-sink-wait 1500.0)) (deftype tetherrock-info (structure) - ((rock-camera string) - (arm-camera string) - (blimp-rp int32) - (other-rp int32) - (connected-to-rock basic) - (damping float) - ) - ) - + ((rock-camera string) + (arm-camera string) + (blimp-rp int32) + (other-rp int32) + (connected-to-rock basic) + (damping float))) (defun tetherrock-get-info ((arg0 entity)) (case (-> arg0 extra perm task) (((game-task swamp-tether-1)) - (new 'static 'tetherrock-info - :rock-camera "camera-182" - :arm-camera "camera-187" - :blimp-rp 10 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-182" + :arm-camera "camera-187" + :blimp-rp 10 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-2)) - (new 'static 'tetherrock-info - :rock-camera "camera-183" - :arm-camera "camera-186" - :blimp-rp 6 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-183" + :arm-camera "camera-186" + :blimp-rp 6 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-3)) - (new 'static 'tetherrock-info - :rock-camera "camera-180" - :arm-camera "camera-184" - :blimp-rp 7 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-180" + :arm-camera "camera-184" + :blimp-rp 7 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (((game-task swamp-tether-4)) - (new 'static 'tetherrock-info - :rock-camera "camera-181" - :arm-camera "camera-185" - :blimp-rp 9 - :other-rp 4 - :connected-to-rock #t - :damping 0.99 - ) - ) + (new 'static + 'tetherrock-info + :rock-camera "camera-181" + :arm-camera "camera-185" + :blimp-rp 9 + :other-rp 4 + :connected-to-rock #t + :damping 0.99)) (else - (new 'static 'tetherrock-info - :rock-camera "" - :arm-camera "" - :blimp-rp 8 - :other-rp 4 - :connected-to-rock #f - :damping 0.7 - ) - ) - ) - ) + (new 'static 'tetherrock-info :rock-camera "" :arm-camera "" :blimp-rp 8 :other-rp 4 :connected-to-rock #f :damping 0.7)))) (deftype swamp-rope-rand-float (structure) - ((min-time int32) - (max-time int32) - (max-val float) - (timer int32) - (value float) - ) + ((min-time int32) + (max-time int32) + (max-val float) + (timer int32) + (value float)) :pack-me (:methods - (init! (_type_ int int float) none) - (update-timer! (_type_) none) - ) - ) - + (init! (_type_ int int float) none) + (update-timer! (_type_) none))) (defmethod init! ((this swamp-rope-rand-float) (arg0 int) (arg1 int) (arg2 float)) (set! (-> this min-time) arg0) @@ -300,36 +273,27 @@ (set! (-> this timer) 0) (set! (-> this value) 0.0) 0 - (none) - ) + (none)) (defmethod update-timer! ((this swamp-rope-rand-float)) - (set! (-> this timer) - (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) + (set! (-> this timer) (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter)))) (when (<= (-> this timer) 0) (set! (-> this timer) (rand-vu-int-range (-> this min-time) (-> this max-time))) - (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val))) - ) + (set! (-> this value) (rand-vu-float-range (- (-> this max-val)) (-> this max-val)))) 0 - (none) - ) + (none)) (deftype swamp-rope-oscillator (structure) - ((target float) - (value float) - (vel float) - (accel float) - (vector-overlay vector :inline :overlay-at target) - (max-vel float) - (damping float) - ) + ((target float) + (value float) + (vel float) + (accel float) + (vector-overlay vector :inline :overlay-at target) + (max-vel float) + (damping float)) (:methods - (init! (_type_ float float float float) none) - (swamp-rope-oscillator-method-10 (_type_ float) none) - ) - ) - + (init! (_type_ float float float float) none) + (swamp-rope-oscillator-method-10 (_type_ float) none))) (defmethod init! ((this swamp-rope-oscillator) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> this target) arg0) @@ -339,35 +303,27 @@ (set! (-> this max-vel) arg2) (set! (-> this damping) arg3) 0 - (none) - ) + (none)) (defmethod swamp-rope-oscillator-method-10 ((this swamp-rope-oscillator) (arg0 float)) - (let ((f0-3 (* (- (+ (-> this target) arg0) (-> this value)) (* (-> this accel) (-> *display* time-adjust-ratio)))) - ) - (+! (-> this vel) f0-3) - ) + (let ((f0-3 (* (- (+ (-> this target) arg0) (-> this value)) (* (-> this accel) (-> *display* time-adjust-ratio))))) + (+! (-> this vel) f0-3)) (set! (-> this vel) (fmin (-> this max-vel) (fmax (- (-> this max-vel)) (-> this vel)))) (set! (-> this vel) (* (-> this vel) (-> this damping))) (+! (-> this value) (* (-> this vel) (-> *display* time-adjust-ratio))) 0 - (none) - ) + (none)) (deftype swamp-blimp-rand-vector (structure) - ((min-time int32) - (max-time int32) - (xz-max float) - (y-max float) - (timer int32) - (value vector :inline) - ) + ((min-time int32) + (max-time int32) + (xz-max float) + (y-max float) + (timer int32) + (value vector :inline)) (:methods - (init! (_type_ int int float float) none) - (update-timer! (_type_) none) - ) - ) - + (init! (_type_ int int float float) none) + (update-timer! (_type_) none))) (defmethod init! ((this swamp-blimp-rand-vector) (arg0 int) (arg1 int) (arg2 float) (arg3 float)) (set! (-> this min-time) arg0) @@ -377,462 +333,308 @@ (set! (-> this timer) 0) (vector-reset! (-> this value)) 0 - (none) - ) + (none)) (defmethod update-timer! ((this swamp-blimp-rand-vector)) - (set! (-> this timer) - (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) + (set! (-> this timer) (- (the-as time-frame (-> this timer)) (- (current-time) (-> *display* old-base-frame-counter)))) (when (<= (-> this timer) 0) (set! (-> this timer) (rand-vu-int-range (-> this min-time) (-> this max-time))) (set! (-> this value x) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) (set! (-> this value y) (rand-vu-float-range (- (-> this y-max)) (-> this y-max))) - (set! (-> this value z) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max))) - ) + (set! (-> this value z) (rand-vu-float-range (- (-> this xz-max)) (-> this xz-max)))) 0 - (none) - ) + (none)) (deftype swamp-blimp-oscillator (structure) - ((target vector :inline) - (value vector :inline) - (vel vector :inline) - (accel float) - (max-vel float) - (damping float) - ) + ((target vector :inline) + (value vector :inline) + (vel vector :inline) + (accel float) + (max-vel float) + (damping float)) :pack-me (:methods - (init! (_type_ vector float float float) none) - (swamp-blimp-oscillator-method-10 (_type_ vector) none) - ) - ) - + (init! (_type_ vector float float float) none) + (swamp-blimp-oscillator-method-10 (_type_ vector) none))) (defmethod init! ((this swamp-blimp-oscillator) (arg0 vector) (arg1 float) (arg2 float) (arg3 float)) (cond - (arg0 - (set! (-> this target quad) (-> arg0 quad)) - (set! (-> this value quad) (-> arg0 quad)) - ) - (else - (vector-reset! (-> this target)) - (vector-reset! (-> this value)) - ) - ) + (arg0 (set! (-> this target quad) (-> arg0 quad)) (set! (-> this value quad) (-> arg0 quad))) + (else (vector-reset! (-> this target)) (vector-reset! (-> this value)))) (vector-reset! (-> this vel)) (set! (-> this accel) arg1) (set! (-> this max-vel) arg2) (set! (-> this damping) arg3) 0 - (none) - ) + (none)) (defmethod swamp-blimp-oscillator-method-10 ((this swamp-blimp-oscillator) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) (cond - (arg0 - (vector+! gp-0 (-> this target) arg0) - (vector-! gp-0 gp-0 (-> this value)) - ) - (else - (vector-! gp-0 (-> this target) (-> this value)) - ) - ) + (arg0 (vector+! gp-0 (-> this target) arg0) (vector-! gp-0 gp-0 (-> this value))) + (else (vector-! gp-0 (-> this target) (-> this value)))) (vector-float*! gp-0 gp-0 (* (-> this accel) (-> *display* time-adjust-ratio))) (vector+! (-> this vel) (-> this vel) gp-0) (let ((f0-2 (vector-length (-> this vel)))) - (if (< (-> this max-vel) f0-2) - (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) f0-2)) - ) - ) + (if (< (-> this max-vel) f0-2) (vector-float*! (-> this vel) (-> this vel) (/ (-> this max-vel) f0-2)))) (vector-float*! (-> this vel) (-> this vel) (-> this damping)) (vector-float*! gp-0 (-> this vel) (-> *display* time-adjust-ratio)) - (vector+! (-> this value) (-> this value) gp-0) - ) + (vector+! (-> this value) (-> this value) gp-0)) 0 - (none) - ) + (none)) (deftype swamp-tetherrock (process-drawable) - ((root collide-shape-moving :override) - (tension float) - (tension-pt vector :inline) - (blimp entity-actor) - (rot-at-init quaternion :inline) - (hits int32) - ) + ((root collide-shape-moving :override) + (tension float) + (tension-pt vector :inline) + (blimp entity-actor) + (rot-at-init quaternion :inline) + (hits int32)) (:states - swamp-tetherrock-break - swamp-tetherrock-die - swamp-tetherrock-hide - swamp-tetherrock-idle - ) - ) - + swamp-tetherrock-break + swamp-tetherrock-die + swamp-tetherrock-hide + swamp-tetherrock-idle)) (deftype precursor-arm (process-drawable) - ((root collide-shape :override) - (y-init float) - (y-offset float) - (rot-speed float) - (rot-dist float) - (rot-base float) - (rot-t float) - (init-mat matrix :inline) - (tension float) - ) + ((root collide-shape :override) + (y-init float) + (y-offset float) + (rot-speed float) + (rot-dist float) + (rot-base float) + (rot-t float) + (init-mat matrix :inline) + (tension float)) (:states - precursor-arm-die - precursor-arm-idle - precursor-arm-sink - ) - ) - + precursor-arm-die + precursor-arm-idle + precursor-arm-sink)) (deftype swamp-rope (process-drawable) - ((parent-override (pointer swamp-blimp) :overlay-at parent) - (parent-rp int32) - (other-entity entity-actor) - (other-rp int32) - (old-scale float) - (frame swamp-rope-oscillator :inline) - (other-pos vector :inline) - (scale-base float) - (base-vec vector :inline) - (scale-t float) - (x-t float) - (z-t float) - (rot-speed float) - ) + ((parent-override (pointer swamp-blimp) :overlay-at parent) + (parent-rp int32) + (other-entity entity-actor) + (other-rp int32) + (old-scale float) + (frame swamp-rope-oscillator :inline) + (other-pos vector :inline) + (scale-base float) + (base-vec vector :inline) + (scale-t float) + (x-t float) + (z-t float) + (rot-speed float)) (:methods - (swamp-rope-method-20 (_type_) basic) - ) + (swamp-rope-method-20 (_type_) basic)) (:states - swamp-rope-break - swamp-rope-idle-arm - swamp-rope-idle-rock - ) - ) - + swamp-rope-break + swamp-rope-idle-arm + swamp-rope-idle-rock)) (defmethod swamp-rope-method-20 ((this swamp-rope)) - (and (-> this other-entity) - (not (task-closed? (-> this other-entity extra perm task) (task-status need-reminder))) - ) - ) + (and (-> this other-entity) (not (task-closed? (-> this other-entity extra perm task) (task-status need-reminder))))) (deftype swamp-blimp (process-drawable) - ((root collide-shape-moving :override) - (the-ropes handle 5) - (arm-timer int32) - (trans-at-init vector :inline) - (rot-at-init quaternion :inline) - (y-vel float) - (y-offset float) - (y-offset-target float) - (main-tilt-rand swamp-blimp-rand-vector :inline) - (main-tilt-oscillator swamp-blimp-oscillator :inline) - (gondola-tilt-oscillator swamp-blimp-oscillator :inline) - (pos-rand swamp-blimp-rand-vector :inline) - (pos-oscillator swamp-blimp-oscillator :inline) - (scale-rand swamp-rope-rand-float :inline) - (scale-oscillator swamp-rope-oscillator :inline) - (gondola joint-mod) - (bag joint-mod) - ) + ((root collide-shape-moving :override) + (the-ropes handle 5) + (arm-timer int32) + (trans-at-init vector :inline) + (rot-at-init quaternion :inline) + (y-vel float) + (y-offset float) + (y-offset-target float) + (main-tilt-rand swamp-blimp-rand-vector :inline) + (main-tilt-oscillator swamp-blimp-oscillator :inline) + (gondola-tilt-oscillator swamp-blimp-oscillator :inline) + (pos-rand swamp-blimp-rand-vector :inline) + (pos-oscillator swamp-blimp-oscillator :inline) + (scale-rand swamp-rope-rand-float :inline) + (scale-oscillator swamp-rope-oscillator :inline) + (gondola joint-mod) + (bag joint-mod)) (:states - swamp-blimp-bye-bye - swamp-blimp-idle - ) - ) - + swamp-blimp-bye-bye + swamp-blimp-idle)) (defmethod relocate ((this swamp-blimp) (arg0 int)) - (if (nonzero? (-> this gondola)) - (&+! (-> this gondola) arg0) - ) - (if (nonzero? (-> this bag)) - (&+! (-> this bag) arg0) - ) - (call-parent-method this arg0) - ) + (if (nonzero? (-> this gondola)) (&+! (-> this gondola) arg0)) + (if (nonzero? (-> this bag)) (&+! (-> this bag) arg0)) + (call-parent-method this arg0)) (defstate swamp-tetherrock-die (swamp-tetherrock) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (suspend) - 0 - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (suspend) + 0)) (defstate swamp-tetherrock-hide (swamp-tetherrock) - :code (behavior () - (clear-collide-with-as (-> self root)) - (logior! (-> self draw status) (draw-status hidden)) - (loop - (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) - (if (not (-> self child)) - (go swamp-tetherrock-die) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (clear-collide-with-as (-> self root)) + (logior! (-> self draw status) (draw-status hidden)) + (loop (when (= (get-task-status (-> self entity extra perm task)) (task-status invalid)) + (if (not (-> self child)) (go swamp-tetherrock-die))) + (suspend)))) (defstate swamp-tetherrock-break (swamp-tetherrock) - :exit (behavior () - (remove-setting! 'movie) - (remove-setting! 'process-mask) - (apply-settings *setting-control*) - ) - :code (behavior () - (let ((gp-0 (tetherrock-get-info (-> self entity)))) - (hide-hud-quick) - (process-grab? *target*) - (set-setting! 'movie (process->ppointer self) 0.0 0) - (set-setting! 'process-mask 'set 0.0 (process-mask movie platform)) - (apply-settings *setting-control*) - (let* ((s4-0 (get-task-control (game-task swamp-tether-1))) - (s5-0 (+ (get-reminder s4-0 0) 1)) - ) - (save-reminder s4-0 s5-0 0) - (cond - ((= s5-0 1) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 2) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 3) - (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera) - ) - ((= s5-0 4) - (ambient-hint-spawn "gamcam06" (the-as vector #f) *entity-pool* 'camera) - ) - ) - ) - (let ((s5-1 (entity-by-name (-> gp-0 rock-camera)))) - (cam-slave-get-vector-with-offset (the-as entity-actor s5-1) *camera-other-trans* 'trans) - (cam-slave-get-rot (the-as entity-actor s5-1) *camera-other-matrix*) - (set! (-> *camera-other-fov* data) (cam-slave-get-fov s5-1)) - ) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 0.6)) - (set! *camera-look-through-other* 2) - (suspend) - ) - (set! (-> self tension) 0.0) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (birth-pickup-at-point - (-> self root trans) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (the-as fact-info #f) - ) - (let ((a1-12 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-12 from) self) - (set! (-> a1-12 num-params) 1) - (set! (-> a1-12 message) 'tetherrock-break-evt) - (set! (-> a1-12 param 0) (the-as uint (-> self entity))) - (let* ((t9-19 send-event-function) - (v1-41 (-> self blimp)) - (s5-2 (t9-19 - (if v1-41 - (-> v1-41 extra process) - ) - a1-12 - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 285) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - (logior! (-> self draw status) (draw-status skip-bones)) - (let ((s4-3 - (ppointer->handle - (manipy-spawn (-> self root trans) (-> self entity) *swamp-tetherrock-explode-sg* #f :to *entity-pool*) - ) - ) - ) - (send-event (handle->process (the-as handle s4-3)) 'anim-mode 'play1) - (send-event (handle->process (the-as handle s4-3)) 'art-joint-anim "swamp-tetherrock-explode-explode" 0) - (send-event (handle->process (the-as handle s4-3)) 'draw #t) - (while (handle->process (the-as handle s4-3)) - (set! *camera-look-through-other* 2) - (suspend) - ) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 3)) - (set! *camera-look-through-other* 2) - (suspend) - ) - (when (zero? s5-2) - (let ((gp-1 (entity-by-name (-> gp-0 arm-camera)))) - (cam-slave-get-vector-with-offset (the-as entity-actor gp-1) *camera-other-trans* 'trans) - (cam-slave-get-rot (the-as entity-actor gp-1) *camera-other-matrix*) - (set! (-> *camera-other-fov* data) (cam-slave-get-fov gp-1)) - ) - (set! (-> *camera-other-root* quad) (-> self root trans quad)) + :exit + (behavior () + (remove-setting! 'movie) + (remove-setting! 'process-mask) + (apply-settings *setting-control*)) + :code + (behavior () + (let ((gp-0 (tetherrock-get-info (-> self entity)))) + (hide-hud-quick) + (process-grab? *target*) + (set-setting! 'movie (process->ppointer self) 0.0 0) + (set-setting! 'process-mask 'set 0.0 (process-mask movie platform)) + (apply-settings *setting-control*) + (let* ((s4-0 (get-task-control (game-task swamp-tether-1))) + (s5-0 (+ (get-reminder s4-0 0) 1))) + (save-reminder s4-0 s5-0 0) + (cond + ((= s5-0 1) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 2) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 3) (ambient-hint-spawn "gamcam03" (the-as vector #f) *entity-pool* 'camera)) + ((= s5-0 4) (ambient-hint-spawn "gamcam06" (the-as vector #f) *entity-pool* 'camera)))) + (let ((s5-1 (entity-by-name (-> gp-0 rock-camera)))) + (cam-slave-get-vector-with-offset (the-as entity-actor s5-1) *camera-other-trans* 'trans) + (cam-slave-get-rot (the-as entity-actor s5-1) *camera-other-matrix*) + (set! (-> *camera-other-fov* data) (cam-slave-get-fov s5-1))) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 0.6)) + (set! *camera-look-through-other* 2) + (suspend)) + (set! (-> self tension) 0.0) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (birth-pickup-at-point (-> self root trans) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (the-as fact-info #f)) + (let ((a1-12 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-12 from) self) + (set! (-> a1-12 num-params) 1) + (set! (-> a1-12 message) 'tetherrock-break-evt) + (set! (-> a1-12 param 0) (the-as uint (-> self entity))) + (let* ((t9-19 send-event-function) + (v1-41 (-> self blimp)) + (s5-2 (t9-19 (if v1-41 (-> v1-41 extra process)) a1-12))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 285) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*) + (logior! (-> self draw status) (draw-status skip-bones)) + (let ((s4-3 (ppointer->handle (manipy-spawn (-> self root trans) (-> self entity) *swamp-tetherrock-explode-sg* #f :to *entity-pool*)))) + (send-event (handle->process (the-as handle s4-3)) 'anim-mode 'play1) + (send-event (handle->process (the-as handle s4-3)) 'art-joint-anim "swamp-tetherrock-explode-explode" 0) + (send-event (handle->process (the-as handle s4-3)) 'draw #t) + (while (handle->process (the-as handle s4-3)) + (set! *camera-look-through-other* 2) + (suspend))) (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) + (until (time-elapsed? (-> self state-time) (seconds 3)) (set! *camera-look-through-other* 2) - (suspend) - ) - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (seconds 5)) - (set! *camera-look-through-other* 2) - (let ((gp-2 (new 'stack-no-clear 'vector)) - (a0-58 (-> self blimp extra process)) - ) - (when a0-58 - (vector-! gp-2 (-> (the-as swamp-blimp a0-58) root trans) *camera-other-trans*) - (vector-normalize! gp-2 1.0) - (forward-down->inv-matrix *camera-other-matrix* gp-2 (-> *camera* local-down)) - ) - ) - (suspend) - ) - ) - (process-release? *target*) - (process-spawn-function - process - (lambda ((arg0 int)) - (while (or (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) - (suspend) - ) - (cond - ((= arg0 3) - (level-hint-spawn - (text-id swamp-tetherrocks-3-left) - "sksp0157" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 2) - (level-hint-spawn - (text-id swamp-tetherrocks-2-left) - "sksp0158" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((= arg0 1) - (level-hint-spawn - (text-id swamp-tetherrocks-1-left) - "sksp0159" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ((zero? arg0) - (level-hint-spawn (text-id swamp-arm-resolution) "sagevb04" (the-as entity #f) *entity-pool* (game-task none)) - ) - ) - (none) - ) - s5-2 - :to self - ) - ) - ) - ) - (go swamp-tetherrock-hide) - ) - :post ja-post - ) + (suspend)) + (when (zero? s5-2) + (let ((gp-1 (entity-by-name (-> gp-0 arm-camera)))) + (cam-slave-get-vector-with-offset (the-as entity-actor gp-1) *camera-other-trans* 'trans) + (cam-slave-get-rot (the-as entity-actor gp-1) *camera-other-matrix*) + (set! (-> *camera-other-fov* data) (cam-slave-get-fov gp-1))) + (set! (-> *camera-other-root* quad) (-> self root trans quad)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (set! *camera-look-through-other* 2) + (suspend)) + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (seconds 5)) + (set! *camera-look-through-other* 2) + (let ((gp-2 (new 'stack-no-clear 'vector)) + (a0-58 (-> self blimp extra process))) + (when a0-58 + (vector-! gp-2 (-> (the-as swamp-blimp a0-58) root trans) *camera-other-trans*) + (vector-normalize! gp-2 1.0) + (forward-down->inv-matrix *camera-other-matrix* gp-2 (-> *camera* local-down)))) + (suspend))) + (process-release? *target*) + (process-spawn-function process + (lambda ((arg0 int)) + (while (or (-> *setting-control* current ambient) (-> *setting-control* current hint) (-> *setting-control* current movie)) + (suspend)) + (cond + ((= arg0 3) + (level-hint-spawn (text-id swamp-tetherrocks-3-left) "sksp0157" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 2) + (level-hint-spawn (text-id swamp-tetherrocks-2-left) "sksp0158" (the-as entity #f) *entity-pool* (game-task none))) + ((= arg0 1) + (level-hint-spawn (text-id swamp-tetherrocks-1-left) "sksp0159" (the-as entity #f) *entity-pool* (game-task none))) + ((zero? arg0) + (level-hint-spawn (text-id swamp-arm-resolution) "sagevb04" (the-as entity #f) *entity-pool* (game-task none)))) + (none)) + s5-2 + :to + self)))) + (go swamp-tetherrock-hide)) + :post ja-post) (defstate swamp-tetherrock-idle (swamp-tetherrock) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('attack) - (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) - (+! (-> self hits) 1) - (cond - ((>= (-> self hits) 1) - (go swamp-tetherrock-break) - ) - (else - (let* ((s5-0 proc) - (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) - ) - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 287) - 150 - #f - #f - #f - (if gp-0 - (-> (the-as process-drawable gp-0) root trans) - (-> self root trans) - ) - :to *entity-pool* - ) - ) - ) - ) - ) - ) - ) - ) - :code (behavior () - (loop - (let ((s4-0 (new 'static 'vector :y 1.0 :w 1.0)) - (s3-0 (new 'stack-no-clear 'vector)) - (s5-0 (new 'stack-no-clear 'vector)) - (gp-0 (new 'stack-no-clear 'quaternion)) - ) - 0.0 - (vector-! s3-0 (-> self tension-pt) (-> self root trans)) - (vector-normalize! s3-0 1.0) - (vector-cross! s5-0 s4-0 s3-0) - (let ((f30-0 (asin (vector-normalize-ret-len! s5-0 1.0)))) - (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 (* (fmin 1820.4445 f30-0) (- 1.0 (-> self tension)))) - ) - (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init)) - ) - (if (and *target* (>= 49152.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (level-hint-spawn - (text-id swamp-tetherrock-eco-yellow-hint) - "sksp0138" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('attack) + (when (and (>= argc 2) (= (-> block param 1) 'eco-yellow)) + (+! (-> self hits) 1) + (cond + ((>= (-> self hits) 1) (go swamp-tetherrock-break)) + (else + (let* ((s5-0 proc) + (gp-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) s5-0))) + (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 287) + 150 + #f + #f + #f + (if gp-0 (-> (the-as process-drawable gp-0) root trans) (-> self root trans)) + :to + *entity-pool*)))))))) + :code + (behavior () + (loop (let ((s4-0 (new 'static 'vector :y 1.0 :w 1.0)) + (s3-0 (new 'stack-no-clear 'vector)) + (s5-0 (new 'stack-no-clear 'vector)) + (gp-0 (new 'stack-no-clear 'quaternion))) + 0.0 + (vector-! s3-0 (-> self tension-pt) (-> self root trans)) + (vector-normalize! s3-0 1.0) + (vector-cross! s5-0 s4-0 s3-0) + (let ((f30-0 (asin (vector-normalize-ret-len! s5-0 1.0)))) + (vector-normalize! s5-0 1.0) + (quaternion-vector-angle! gp-0 s5-0 (* (fmin 1820.4445 f30-0) (- 1.0 (-> self tension))))) + (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init))) + (if (and *target* (>= 49152.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (level-hint-spawn (text-id swamp-tetherrock-eco-yellow-hint) + "sksp0138" + (the-as entity #f) + *entity-pool* + (game-task none))) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this swamp-tetherrock) (arg0 entity-actor)) (logior! (-> this mask) (process-mask attackable)) @@ -840,9 +642,7 @@ (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) @@ -851,184 +651,118 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 24576.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *swamp-tetherrock-sg* '()) - (set! (-> this fact) - (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) - ) + (initialize-skeleton this *swamp-tetherrock-sg* ()) + (set! (-> this fact) (new 'process 'fact-info this (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc))) (set! (-> this blimp) (entity-actor-lookup arg0 'alt-actor 0)) (set! (-> this tension) 0.0) (vector-reset! (-> this tension-pt)) (quaternion-copy! (-> this rot-at-init) (-> this root quat)) (logclear! (-> this mask) (process-mask actor-pause)) (case (get-task-status (-> this entity extra perm task)) - (((task-status invalid)) - (go swamp-tetherrock-die) - ) + (((task-status invalid)) (go swamp-tetherrock-die)) (((task-status need-resolution)) - (birth-pickup-at-point - (-> this root trans) - (pickup-type fuel-cell) - (the float (-> this entity extra perm task)) - #f - this - (the-as fact-info #f) - ) - (go swamp-tetherrock-hide) - ) - (else - (go swamp-tetherrock-idle) - ) - ) - (none) - ) + (birth-pickup-at-point (-> this root trans) + (pickup-type fuel-cell) + (the float (-> this entity extra perm task)) + #f + this + (the-as fact-info #f)) + (go swamp-tetherrock-hide)) + (else (go swamp-tetherrock-idle))) + (none)) (defstate precursor-arm-die (precursor-arm) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - (loop - (suspend) - ) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self) + (loop (suspend)))) (defstate precursor-arm-sink (precursor-arm) - :code (behavior () - (set-time! (-> self state-time)) - (until (time-elapsed? (-> self state-time) (the int (-> *SWAMP_BLIMP-bank* arm-sink-wait))) - (suspend) - ) - (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) - (close-specific-task! (-> self entity extra perm task) (task-status need-resolution)) - (loop - (cond - ((< -40960.0 (-> self y-offset)) - (set! (-> self y-offset) (- (-> self y-offset) (* 409.6 (-> *display* time-adjust-ratio)))) - ) - (else - (set! (-> self y-offset) -40960.0) - (cleanup-for-death self) - (deactivate self) - ) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (until (time-elapsed? (-> self state-time) (the int (-> *SWAMP_BLIMP-bank* arm-sink-wait))) + (suspend)) + (close-specific-task! (-> self entity extra perm task) (task-status need-reminder)) + (close-specific-task! (-> self entity extra perm task) (task-status need-resolution)) + (loop (cond + ((< -40960.0 (-> self y-offset)) + (set! (-> self y-offset) (- (-> self y-offset) (* 409.6 (-> *display* time-adjust-ratio))))) + (else (set! (-> self y-offset) -40960.0) (cleanup-for-death self) (deactivate self))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))) + :post transform-post) (defun precursor-arm-slip ((arg0 float)) (cond - ((>= arg0 1.0) - 1.0 - ) - ((>= 0.0 arg0) - 0.0 - ) + ((>= arg0 1.0) 1.0) + ((>= 0.0 arg0) 0.0) (else - (let ((f0-2 1.0) - (f1-3 (- 1.0 arg0)) - ) - (- f0-2 (* f1-3 f1-3)) - ) - ) - ) - ) + (let ((f0-2 1.0) + (f1-3 (- 1.0 arg0))) + (- f0-2 (* f1-3 f1-3)))))) (defstate precursor-arm-idle (precursor-arm) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('arm-sink-evt) - (go precursor-arm-sink) - ) - ) - ) - :trans (behavior () - (when (>= (-> self rot-t) 1.0) - (+! (-> self rot-base) (-> self rot-dist)) - (set! (-> self rot-dist) (rand-vu-float-range -16384.0 16384.0)) - (set! (-> self rot-speed) - (/ 1.0 (* 300.0 (+ (* 0.001373291 (fabs (-> self rot-dist))) (rand-vu-float-range 2.0 5.0)))) - ) - (set! (-> self rot-t) 0.0) - ) - (+! (-> self rot-t) (* (-> self rot-speed) (-> *display* time-adjust-ratio))) - (let ((gp-0 (new 'stack-no-clear 'matrix))) - (matrix-rotate-y! - gp-0 - (+ (-> self rot-base) (* (parameter-ease-sin-clamp (-> self rot-t)) (-> self rot-dist))) - ) - (matrix*! gp-0 (-> self init-mat) gp-0) - (matrix->quaternion (-> self root quat) gp-0) - ) - (when (< (vector-vector-distance (-> self root trans) (camera-pos)) 204800.0) - (let ((a2-1 (new 'static 'vector))) - (set! (-> a2-1 quad) (-> self root trans quad)) - (set! (-> a2-1 y) 0.0) - (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2017) a2-1) - ) - ) - ) - :code (behavior () - (loop - (set! (-> self tension) 1.5) - (let* ((f26-0 (+ 225.0 (* 150.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f0-5 (+ 4096.0 (* 8192.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f30-2 (-> self y-offset)) - (f0-6 (+ f0-5 f30-2)) - (f28-2 (fmin f0-6 (- 57344.0 f0-6))) - ) - (when (< 0.0 f28-2) - (let ((f26-1 (+ f26-0 (* 0.14648438 f28-2)))) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (the int f26-1))) - (if (< (- f26-1 (the float (- (current-time) (-> self state-time)))) 150.0) - (set! (-> self tension) 0.5) - ) - (set! (-> self y-offset) - (+ f30-2 (* f28-2 (precursor-arm-slip (/ (the float (- (current-time) (-> self state-time))) f26-1)))) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - ) - ) - (suspend) - (let* ((f26-2 (+ 600.0 (* 300.0 (sin (rand-vu-float-range 0.0 16384.0))))) - (f0-26 (* 49152.0 (sin (rand-vu-float-range 0.0 16384.0)))) - (f30-5 (-> self y-offset)) - (f28-4 (- f0-26 f30-5)) - ) - (when (< f28-4 0.0) - (let ((f26-3 (- f26-2 (* 0.036621094 f28-4)))) - (set-time! (-> self state-time)) - (while (not (time-elapsed? (-> self state-time) (the int f26-3))) - (if (< (- f26-3 (the float (- (current-time) (-> self state-time)))) 150.0) - (set! (-> self tension) 1.5) - ) - (set! (-> self y-offset) - (+ f30-5 (* f28-4 (parameter-ease-sin-clamp (/ (the float (- (current-time) (-> self state-time))) f26-3)))) - ) - (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) - (suspend) - ) - ) - ) - ) - (suspend) - ) - ) - :post transform-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('arm-sink-evt) (go precursor-arm-sink)))) + :trans + (behavior () + (when (>= (-> self rot-t) 1.0) + (+! (-> self rot-base) (-> self rot-dist)) + (set! (-> self rot-dist) (rand-vu-float-range -16384.0 16384.0)) + (set! (-> self rot-speed) (/ 1.0 (* 300.0 (+ (* 0.001373291 (fabs (-> self rot-dist))) (rand-vu-float-range 2.0 5.0))))) + (set! (-> self rot-t) 0.0)) + (+! (-> self rot-t) (* (-> self rot-speed) (-> *display* time-adjust-ratio))) + (let ((gp-0 (new 'stack-no-clear 'matrix))) + (matrix-rotate-y! gp-0 (+ (-> self rot-base) (* (parameter-ease-sin-clamp (-> self rot-t)) (-> self rot-dist)))) + (matrix*! gp-0 (-> self init-mat) gp-0) + (matrix->quaternion (-> self root quat) gp-0)) + (when (< (vector-vector-distance (-> self root trans) (camera-pos)) 204800.0) + (let ((a2-1 (new 'static 'vector))) + (set! (-> a2-1 quad) (-> self root trans quad)) + (set! (-> a2-1 y) 0.0) + (launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 2017) a2-1)))) + :code + (behavior () + (loop (set! (-> self tension) 1.5) + (let* ((f26-0 (+ 225.0 (* 150.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f0-5 (+ 4096.0 (* 8192.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f30-2 (-> self y-offset)) + (f0-6 (+ f0-5 f30-2)) + (f28-2 (fmin f0-6 (- 57344.0 f0-6)))) + (when (< 0.0 f28-2) + (let ((f26-1 (+ f26-0 (* 0.14648438 f28-2)))) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (the int f26-1))) + (if (< (- f26-1 (the float (- (current-time) (-> self state-time)))) 150.0) (set! (-> self tension) 0.5)) + (set! (-> self y-offset) + (+ f30-2 (* f28-2 (precursor-arm-slip (/ (the float (- (current-time) (-> self state-time))) f26-1))))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))))) + (suspend) + (let* ((f26-2 (+ 600.0 (* 300.0 (sin (rand-vu-float-range 0.0 16384.0))))) + (f0-26 (* 49152.0 (sin (rand-vu-float-range 0.0 16384.0)))) + (f30-5 (-> self y-offset)) + (f28-4 (- f0-26 f30-5))) + (when (< f28-4 0.0) + (let ((f26-3 (- f26-2 (* 0.036621094 f28-4)))) + (set-time! (-> self state-time)) + (while (not (time-elapsed? (-> self state-time) (the int f26-3))) + (if (< (- f26-3 (the float (- (current-time) (-> self state-time)))) 150.0) (set! (-> self tension) 1.5)) + (set! (-> self y-offset) + (+ f30-5 (* f28-4 (parameter-ease-sin-clamp (/ (the float (- (current-time) (-> self state-time))) f26-3))))) + (set! (-> self root trans y) (+ (-> self y-offset) (-> self y-init))) + (suspend))))) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this precursor-arm) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player)))) @@ -1039,14 +773,12 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 61440.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *precursor-arm-sg* '()) + (initialize-skeleton this *precursor-arm-sg* ()) (set! (-> this rot-speed) 0.0) (set! (-> this rot-dist) 0.0) (set! (-> this rot-base) 0.0) @@ -1059,54 +791,38 @@ (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this event-hook) (-> precursor-arm-idle event)) (if (= (get-task-status (-> this entity extra perm task)) (task-status invalid)) - (go precursor-arm-die) - (go precursor-arm-idle) - ) - (none) - ) + (go precursor-arm-die) + (go precursor-arm-idle)) + (none)) (defbehavior swamp-rope-update-bounding-spheres swamp-rope () (let ((a0-0 (new 'stack-no-clear 'vector))) (vector-! a0-0 (-> self other-pos) (-> self root trans)) (vector-float*! a0-0 a0-0 0.5) (set! (-> self draw bounds quad) (-> a0-0 quad)) - (set! (-> self draw bounds w) (vector-length a0-0)) - ) + (set! (-> self draw bounds w) (vector-length a0-0))) 0 - (none) - ) + (none)) (defbehavior swamp-rope-post swamp-rope () (swamp-rope-update-bounding-spheres) (ja-post) 0 - (none) - ) + (none)) (defbehavior swamp-rope-break-code swamp-rope () (when (or (< 0.001 (fabs (-> self base-vec x))) (< 0.001 (fabs (-> self base-vec z)))) - (set! (-> self base-vec x) - (- (-> self base-vec x) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec x))) - ) - (set! (-> self base-vec z) - (- (-> self base-vec z) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec z))) - ) - (vector-normalize! (-> self base-vec) 1.0) - ) + (set! (-> self base-vec x) (- (-> self base-vec x) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec x)))) + (set! (-> self base-vec z) (- (-> self base-vec z) (* 0.02 (-> *display* time-adjust-ratio) (-> self base-vec z)))) + (vector-normalize! (-> self base-vec) 1.0)) (when (< 0.4 (-> self scale-base)) (let ((f1-13 (fmax 0.002 (* 0.05 (+ -0.4 (-> self scale-base)))))) - (set! (-> self scale-base) (- (-> self scale-base) (* f1-13 (-> *display* time-adjust-ratio)))) - ) - ) + (set! (-> self scale-base) (- (-> self scale-base) (* f1-13 (-> *display* time-adjust-ratio)))))) (+! (-> self scale-t) (* 0.005 (-> *display* time-adjust-ratio))) (+! (-> self x-t) (* 0.004 (-> *display* time-adjust-ratio))) (+! (-> self z-t) (* 0.003 (-> *display* time-adjust-ratio))) - (let ((f0-19 - (* (sin (+ 32768.0 (* 65536.0 (-> self scale-t)))) (fmax 0.003 (fmin 0.1 (* 0.1 (- 3.0 (-> self scale-t)))))) - ) - ) - (set! (-> self root scale y) (+ (-> self scale-base) f0-19)) - ) + (let ((f0-19 (* (sin (+ 32768.0 (* 65536.0 (-> self scale-t)))) (fmax 0.003 (fmin 0.1 (* 0.1 (- 3.0 (-> self scale-t)))))))) + (set! (-> self root scale y) (+ (-> self scale-base) f0-19))) (let ((gp-0 (new 'stack-no-clear 'matrix))) (let ((s5-0 (new 'stack-no-clear 'vector))) (vector-reset! (-> gp-0 vector 3)) @@ -1116,63 +832,48 @@ (vector+! s5-0 s5-0 (-> self base-vec)) (set! (-> gp-0 vector 1 quad) (-> s5-0 quad)) (vector-normalize! (-> gp-0 vector 1) 1.0) - (set-vector! - s5-0 - (sin (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) - 0.0 - (cos (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) - 1.0 - ) - (vector-cross! (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) s5-0) - ) + (set-vector! s5-0 + (sin (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) + 0.0 + (cos (* (-> self rot-speed) (the float (- (current-time) (-> self state-time))))) + 1.0) + (vector-cross! (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) s5-0)) (vector-normalize! (the-as vector (-> gp-0 vector)) 1.0) (vector-cross! (-> gp-0 vector 2) (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1)) - (matrix->quaternion (-> self root quat) gp-0) - ) - ) + (matrix->quaternion (-> self root quat) gp-0))) (defstate swamp-rope-break (swamp-rope) - :enter (behavior () - (set! (-> self scale-base) (-> self root scale y)) - ) - :trans (behavior () - (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp))) - ) - :code (behavior () - (let ((f30-0 18.204445) - (f28-0 9.102222) - ) - (set! (-> self rot-speed) (+ f30-0 (* f28-0 (rand-float-gen)))) - ) - (let* ((f30-1 3000000.0) - (v1-5 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-6 (the-as number (logior #x3f800000 v1-5))) - ) - (set! (-> self state-time) (the-as time-frame (the int (* f30-1 (+ -1.0 (the-as float v1-6)))))) - ) - (ja-channel-push! 1 (seconds 0.5)) - (loop - (let* ((f30-2 0.3) - (f28-1 0.25) - (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-11 (the-as number (logior #x3f800000 v1-10))) - (f30-3 (+ f30-2 (* f28-1 (+ -1.0 (the-as float v1-11))))) - ) - (ja-no-eval :group! swamp-rope-swing-ja :num! (seek! max f30-3) :frame-num 0.0) - (until (ja-done? 0) - (swamp-rope-break-code) - (suspend) - (ja :num! (seek! max f30-3)) - ) - ) - ) - ) - :post (behavior () - (set! (-> self other-pos quad) (-> self root trans quad)) - (+! (-> self other-pos y) -245760.0) - (swamp-rope-post) - ) - ) + :enter + (behavior () + (set! (-> self scale-base) (-> self root scale y))) + :trans + (behavior () + (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp)))) + :code + (behavior () + (let ((f30-0 18.204445) + (f28-0 9.102222)) + (set! (-> self rot-speed) (+ f30-0 (* f28-0 (rand-float-gen))))) + (let* ((f30-1 3000000.0) + (v1-5 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-6 (the-as number (logior #x3f800000 v1-5)))) + (set! (-> self state-time) (the-as time-frame (the int (* f30-1 (+ -1.0 (the-as float v1-6))))))) + (ja-channel-push! 1 (seconds 0.5)) + (loop (let* ((f30-2 0.3) + (f28-1 0.25) + (v1-10 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-11 (the-as number (logior #x3f800000 v1-10))) + (f30-3 (+ f30-2 (* f28-1 (+ -1.0 (the-as float v1-11)))))) + (ja-no-eval :group! swamp-rope-swing-ja :num! (seek! max f30-3) :frame-num 0.0) + (until (ja-done? 0) + (swamp-rope-break-code) + (suspend) + (ja :num! (seek! max f30-3)))))) + :post + (behavior () + (set! (-> self other-pos quad) (-> self root trans quad)) + (+! (-> self other-pos y) -245760.0) + (swamp-rope-post))) (defbehavior swamp-rope-trans swamp-rope () (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp))) @@ -1180,96 +881,62 @@ ((not (swamp-rope-method-20 self)) (let ((gp-0 (new 'stack-no-clear 'matrix))) (quaternion->matrix gp-0 (-> self root quat)) - (set! (-> self base-vec quad) (-> gp-0 vector 1 quad)) - ) - (go swamp-rope-break) - ) + (set! (-> self base-vec quad) (-> gp-0 vector 1 quad))) + (go swamp-rope-break)) (else - (let* ((a0-5 (-> self other-entity)) - (v1-10 (if a0-5 - (-> a0-5 extra process) - ) - ) - ) - (if (and v1-10 (nonzero? (-> (the-as swamp-rope v1-10) root))) - (vector<-cspace! (-> self other-pos) (-> (the-as swamp-rope v1-10) node-list data (-> self other-rp))) - ) - ) - (let ((gp-1 (new 'stack-no-clear 'matrix))) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (vector-reset! (-> gp-1 vector 3)) - (vector-! (-> gp-1 vector 1) (-> self root trans) (-> self other-pos)) - (set! (-> self old-scale) (-> self root scale y)) - (set! (-> self root scale y) (* 0.0000020345053 (vector-normalize-ret-len! (-> gp-1 vector 1) 1.0))) - (set-vector! s5-0 0.0 -1.0 0.0 1.0) - (vector-cross! (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1) s5-0) - ) - (vector-normalize! (the-as vector (-> gp-1 vector)) 1.0) - (vector-cross! (-> gp-1 vector 2) (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1)) - (matrix->quaternion (-> self root quat) gp-1) - ) - ) - ) + (let* ((a0-5 (-> self other-entity)) + (v1-10 (if a0-5 (-> a0-5 extra process)))) + (if (and v1-10 (nonzero? (-> (the-as swamp-rope v1-10) root))) + (vector<-cspace! (-> self other-pos) (-> (the-as swamp-rope v1-10) node-list data (-> self other-rp))))) + (let ((gp-1 (new 'stack-no-clear 'matrix))) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (vector-reset! (-> gp-1 vector 3)) + (vector-! (-> gp-1 vector 1) (-> self root trans) (-> self other-pos)) + (set! (-> self old-scale) (-> self root scale y)) + (set! (-> self root scale y) (* 0.0000020345053 (vector-normalize-ret-len! (-> gp-1 vector 1) 1.0))) + (set-vector! s5-0 0.0 -1.0 0.0 1.0) + (vector-cross! (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1) s5-0)) + (vector-normalize! (the-as vector (-> gp-1 vector)) 1.0) + (vector-cross! (-> gp-1 vector 2) (the-as vector (-> gp-1 vector)) (-> gp-1 vector 1)) + (matrix->quaternion (-> self root quat) gp-1)))) 0 - (none) - ) + (none)) (defstate swamp-rope-idle-rock (swamp-rope) :trans swamp-rope-trans - :code (behavior () - (ja :group! swamp-rope-slack-ja) - (loop - (let* ((f0-1 (* 2000.0 (- (-> self old-scale) (-> self root scale y)))) - (f1-3 (+ 0.5 f0-1)) - ) - (set! (-> self frame target) (fmin 1.0 (fmax 0.0 f1-3))) - ) - (swamp-rope-oscillator-method-10 (-> self frame) 0.0) - (let* ((v1-6 (-> self other-entity)) - (a0-4 (if v1-6 - (-> v1-6 extra process) - ) - ) - ) - (when a0-4 - (set! (-> (the-as swamp-rope a0-4) parent-rp) (the-as int (-> self frame value))) - (set! (-> (the-as swamp-rope a0-4) frame vector-overlay quad) (-> self root trans quad)) - ) - ) - (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) - (suspend) - ) - ) - :post swamp-rope-post - ) + :code + (behavior () + (ja :group! swamp-rope-slack-ja) + (loop (let* ((f0-1 (* 2000.0 (- (-> self old-scale) (-> self root scale y)))) + (f1-3 (+ 0.5 f0-1))) + (set! (-> self frame target) (fmin 1.0 (fmax 0.0 f1-3)))) + (swamp-rope-oscillator-method-10 (-> self frame) 0.0) + (let* ((v1-6 (-> self other-entity)) + (a0-4 (if v1-6 (-> v1-6 extra process)))) + (when a0-4 + (set! (-> (the-as swamp-rope a0-4) parent-rp) (the-as int (-> self frame value))) + (set! (-> (the-as swamp-rope a0-4) frame vector-overlay quad) (-> self root trans quad)))) + (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) + (suspend))) + :post swamp-rope-post) (defstate swamp-rope-idle-arm (swamp-rope) :trans swamp-rope-trans - :code (behavior () - (ja :group! swamp-rope-slack-ja) - (loop - (let* ((a0-3 (-> self other-entity)) - (v1-3 (if a0-3 - (-> a0-3 extra process) - ) - ) - ) - (if v1-3 - (set! (-> self frame target) (- 1.0 (-> (the-as swamp-rope v1-3) scale-t))) - ) - ) - (swamp-rope-oscillator-method-10 (-> self frame) 0.0) - (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) - (suspend) - ) - ) - :post swamp-rope-post - ) + :code + (behavior () + (ja :group! swamp-rope-slack-ja) + (loop (let* ((a0-3 (-> self other-entity)) + (v1-3 (if a0-3 (-> a0-3 extra process)))) + (if v1-3 (set! (-> self frame target) (- 1.0 (-> (the-as swamp-rope v1-3) scale-t))))) + (swamp-rope-oscillator-method-10 (-> self frame) 0.0) + (ja :num-func num-func-identity :frame-num (* (-> self frame value) (the float (ja-num-frames 0)))) + (suspend))) + :post swamp-rope-post) (defbehavior swamp-rope-init-by-other swamp-rope ((arg0 vector) (arg1 entity-actor)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self root trans quad) (-> arg0 quad)) - (initialize-skeleton self *swamp-rope-sg* '()) + (initialize-skeleton self *swamp-rope-sg* ()) (logclear! (-> self mask) (process-mask actor-pause)) (set! (-> self other-entity) arg1) (when (-> self other-entity) @@ -1278,28 +945,19 @@ (init! (-> self frame) 0.0 0.002 0.02 (-> gp-1 damping)) (set! (-> self parent-rp) (-> gp-1 blimp-rp)) (set! (-> self other-rp) (-> gp-1 other-rp)) - (if (-> gp-1 connected-to-rock) - (go swamp-rope-idle-rock) - (go swamp-rope-idle-arm) - ) - ) - ) + (if (-> gp-1 connected-to-rock) (go swamp-rope-idle-rock) (go swamp-rope-idle-arm)))) (go swamp-rope-break) - (none) - ) + (none)) (defbehavior blimp-trans swamp-blimp () (when (< (-> self y-offset) (-> self y-offset-target)) (+! (-> self y-vel) (* 0.4096 (-> *display* time-adjust-ratio))) (set! (-> self y-vel) - (fmax 4.096 (fmin (fmin 819.2 (* 0.01 (- (-> self y-offset-target) (-> self y-offset)))) (-> self y-vel))) - ) + (fmax 4.096 (fmin (fmin 819.2 (* 0.01 (- (-> self y-offset-target) (-> self y-offset)))) (-> self y-vel)))) (+! (-> self y-offset) (* (-> self y-vel) (-> *display* time-adjust-ratio))) (when (>= (-> self y-offset) (-> self y-offset-target)) (set! (-> self y-offset) (-> self y-offset-target)) - (set! (-> self y-vel) 0.0) - ) - ) + (set! (-> self y-vel) 0.0))) (update-timer! (-> self scale-rand)) (set! (-> self scale-oscillator target) (* 0.9 (-> self scale-oscillator target))) (swamp-rope-oscillator-method-10 (-> self scale-oscillator) (-> self scale-rand value)) @@ -1308,8 +966,7 @@ (set! (-> a3-0 x) (sqrtf (/ 1.0 (-> a3-0 y)))) (set! (-> a3-0 z) (-> a3-0 x)) (set! (-> a3-0 w) 1.0) - (set-trs! (-> self bag) (the-as vector #f) (the-as quaternion #f) a3-0) - ) + (set-trs! (-> self bag) (the-as vector #f) (the-as quaternion #f) a3-0)) (update-timer! (-> self main-tilt-rand)) (update-timer! (-> self pos-rand)) (swamp-blimp-oscillator-method-10 (-> self main-tilt-oscillator) (-> self main-tilt-rand value)) @@ -1321,73 +978,44 @@ 0.0 (vector-normalize! (-> self gondola-tilt-oscillator value) 1.0) (let ((f30-0 (acos (-> self gondola-tilt-oscillator value y)))) - (set-vector! - s5-0 - (-> self gondola-tilt-oscillator value z) - 0.0 - (- (-> self gondola-tilt-oscillator value x)) - 1.0 - ) + (set-vector! s5-0 (-> self gondola-tilt-oscillator value z) 0.0 (- (-> self gondola-tilt-oscillator value x)) 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 f30-0) - ) + (quaternion-vector-angle! gp-0 s5-0 f30-0)) (set-trs! (-> self gondola) (the-as vector #f) gp-0 (the-as vector #f)) (vector-normalize! (-> self main-tilt-oscillator value) 1.0) (let ((f30-1 (acos (-> self main-tilt-oscillator value y)))) (set-vector! s5-0 (-> self main-tilt-oscillator value z) 0.0 (- (-> self main-tilt-oscillator value x)) 1.0) (vector-normalize! s5-0 1.0) - (quaternion-vector-angle! gp-0 s5-0 f30-1) - ) - ) - (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init)) - ) + (quaternion-vector-angle! gp-0 s5-0 f30-1))) + (quaternion*! (-> self root quat) gp-0 (-> self rot-at-init))) (quaternion-normalize! (-> self root quat)) (vector+! (-> self root trans) (-> self trans-at-init) (-> self pos-oscillator value)) - (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset))) - ) + (set! (-> self root trans y) (+ (-> self root trans y) (-> self y-offset)))) (defstate swamp-blimp-bye-bye (swamp-blimp) - :enter (behavior () - (let ((gp-0 (entity-actor-lookup (-> self entity) 'alt-actor (-> *SWAMP_BLIMP-bank* arm-index)))) - (when gp-0 - (entity-birth-no-kill gp-0) - (let ((a0-2 (-> gp-0 extra process))) - (if a0-2 - (send-event a0-2 'arm-sink-evt) - ) - ) - ) - ) - (set! (-> self draw force-lod) 0) - 0 - ) + :enter + (behavior () + (let ((gp-0 (entity-actor-lookup (-> self entity) 'alt-actor (-> *SWAMP_BLIMP-bank* arm-index)))) + (when gp-0 + (entity-birth-no-kill gp-0) + (let ((a0-2 (-> gp-0 extra process))) (if a0-2 (send-event a0-2 'arm-sink-evt))))) + (set! (-> self draw force-lod) 0) + 0) :trans blimp-trans - :code (behavior () - (set-time! (-> self state-time)) - (let ((gp-0 (new 'stack-no-clear 'quaternion))) - (quaternion-copy! gp-0 (-> self rot-at-init)) - (loop - (quaternion-vector-angle! - (-> self rot-at-init) - (new 'static 'vector :y 1.0 :w 1.0) - (* 18.204445 (the float (- (current-time) (-> self state-time)))) - ) - (quaternion*! (-> self rot-at-init) (-> self rot-at-init) gp-0) - (if (< (-> self pos-oscillator target x) 409600.0) - (+! (-> self pos-oscillator target x) 40.96) - ) - (if (< (-> self pos-oscillator target y) 4096000.0) - (+! (-> self pos-oscillator target y) 819.2) - ) - (if (< (-> self pos-oscillator target z) 4096000.0) - (+! (-> self pos-oscillator target z) 1228.8) - ) - (suspend) - ) - ) - ) - :post transform-post - ) + :code + (behavior () + (set-time! (-> self state-time)) + (let ((gp-0 (new 'stack-no-clear 'quaternion))) + (quaternion-copy! gp-0 (-> self rot-at-init)) + (loop (quaternion-vector-angle! (-> self rot-at-init) + (new 'static 'vector :y 1.0 :w 1.0) + (* 18.204445 (the float (- (current-time) (-> self state-time))))) + (quaternion*! (-> self rot-at-init) (-> self rot-at-init) gp-0) + (if (< (-> self pos-oscillator target x) 409600.0) (+! (-> self pos-oscillator target x) 40.96)) + (if (< (-> self pos-oscillator target y) 4096000.0) (+! (-> self pos-oscillator target y) 819.2)) + (if (< (-> self pos-oscillator target z) 4096000.0) (+! (-> self pos-oscillator target z) 1228.8)) + (suspend)))) + :post transform-post) (defbehavior swamp-blimp-setup swamp-blimp () (rlet ((vf0 :class vf)) @@ -1400,54 +1028,26 @@ (when s4-0 (cond ((= s5-0 (-> *SWAMP_BLIMP-bank* arm-index)) - (vector+! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> (the-as swamp-rope s4-0) other-pos) - ) - (vector-! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> self root trans) - ) - ) + (vector+! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (-> (the-as swamp-rope s4-0) other-pos)) + (vector-! (the-as vector (-> self pos-oscillator)) (the-as vector (-> self pos-oscillator)) (-> self root trans))) ((swamp-rope-method-20 (the-as swamp-rope s4-0)) - (vector+! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> (the-as swamp-rope s4-0) other-pos) - ) - (vector-! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (-> self trans-at-init) - ) - (+! gp-0 1) - ) + (vector+! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (-> (the-as swamp-rope s4-0) other-pos)) + (vector-! (the-as vector (-> self pos-oscillator)) (the-as vector (-> self pos-oscillator)) (-> self trans-at-init)) + (+! gp-0 1)) (else - (vector-! - (the-as vector (-> self gondola-tilt-oscillator)) - (the-as vector (-> self gondola-tilt-oscillator)) - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> self node-list data (-> (the-as swamp-rope s4-0) parent-rp)) - ) - ) - (vector+! - (the-as vector (-> self gondola-tilt-oscillator)) - (the-as vector (-> self gondola-tilt-oscillator)) - (-> self root trans) - ) - ) - ) - ) - ) - ) - (vector-float*! - (the-as vector (-> self pos-oscillator)) - (the-as vector (-> self pos-oscillator)) - (/ 1.0 (the float (+ gp-0 1))) - ) + (vector-! (the-as vector (-> self gondola-tilt-oscillator)) + (the-as vector (-> self gondola-tilt-oscillator)) + (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> (the-as swamp-rope s4-0) parent-rp)))) + (vector+! (the-as vector (-> self gondola-tilt-oscillator)) + (the-as vector (-> self gondola-tilt-oscillator)) + (-> self root trans))))))) + (vector-float*! (the-as vector (-> self pos-oscillator)) + (the-as vector (-> self pos-oscillator)) + (/ 1.0 (the float (+ gp-0 1)))) (set! (-> self pos-oscillator target y) 0.0) (set! (-> self scale-oscillator target) -0.2) (+! (-> self y-offset-target) (-> *SWAMP_BLIMP-bank* rise-per-break)) @@ -1457,74 +1057,47 @@ (set! (-> v1-29 target x) 0.0) (set! (-> v1-29 target y) 1.0) (set! (-> v1-29 target z) 0.0) - (set! (-> v1-29 target w) 1.0) - ) - (set! (-> self arm-timer) (-> *SWAMP_BLIMP-bank* pause-before-dropping-arm)) - ) + (set! (-> v1-29 target w) 1.0)) + (set! (-> self arm-timer) (-> *SWAMP_BLIMP-bank* pause-before-dropping-arm))) (else - (set! (-> self gondola-tilt-oscillator target y) 0.0) - (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) - (set! (-> self gondola-tilt-oscillator target y) (the float (+ gp-0 1))) - (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) - ) - ) - gp-0 - ) - ) - ) + (set! (-> self gondola-tilt-oscillator target y) 0.0) + (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0) + (set! (-> self gondola-tilt-oscillator target y) (the float (+ gp-0 1))) + (vector-normalize! (the-as vector (-> self gondola-tilt-oscillator)) 1.0))) + gp-0))) (defstate swamp-blimp-idle (swamp-blimp) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('tetherrock-break-evt) - (increment-success-for-hint (text-id swamp-tetherrock-eco-yellow-hint)) - (swamp-blimp-setup) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('tetherrock-break-evt) (increment-success-for-hint (text-id swamp-tetherrock-eco-yellow-hint)) (swamp-blimp-setup)))) :trans blimp-trans - :code (behavior () - (ja :group! swamp-blimp-idle-ja) - (loop - (when (< 300 (-> self arm-timer)) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (>= 300 (-> self arm-timer)) - (+! (-> self pos-oscillator target y) (* 16384.0 (-> *display* time-adjust-ratio))) - ) - ) - (when (< 240 (-> self arm-timer)) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (if (>= 150 (-> self arm-timer)) - (set! (-> self scale-oscillator target) 0.2) - ) - ) - (when (> (-> self arm-timer) 0) - (set! (-> self arm-timer) - (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter))) - ) - (when (<= (-> self arm-timer) 0) - (set! (-> self scale-oscillator target) -0.2) - (go swamp-blimp-bye-bye) - ) - ) - (ja :num-func num-func-identity :frame-num 0.0) - (suspend) - ) - ) - :post transform-post - ) + :code + (behavior () + (ja :group! swamp-blimp-idle-ja) + (loop (when (< 300 (-> self arm-timer)) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (>= 300 (-> self arm-timer)) (+! (-> self pos-oscillator target y) (* 16384.0 (-> *display* time-adjust-ratio))))) + (when (< 240 (-> self arm-timer)) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (if (>= 150 (-> self arm-timer)) (set! (-> self scale-oscillator target) 0.2))) + (when (> (-> self arm-timer) 0) + (set! (-> self arm-timer) + (- (the-as time-frame (-> self arm-timer)) (- (current-time) (-> *display* old-base-frame-counter)))) + (when (<= (-> self arm-timer) 0) + (set! (-> self scale-oscillator target) -0.2) + (go swamp-blimp-bye-bye))) + (ja :num-func num-func-identity :frame-num 0.0) + (suspend))) + :post transform-post) (defmethod init-from-entity! ((this swamp-blimp) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) @@ -1533,14 +1106,12 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 409600.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *swamp-blimp-sg* '()) + (initialize-skeleton this *swamp-blimp-sg* ()) (quaternion-copy! (-> this rot-at-init) (-> this root quat)) (set! (-> this arm-timer) 0) (set! (-> this trans-at-init quad) (-> this root trans quad)) @@ -1551,34 +1122,25 @@ (let ((s5-1 (new 'stack-no-clear 'vector))) (set-vector! s5-1 0.0 1.0 0.0 1.0) (init! (-> this main-tilt-oscillator) s5-1 0.001 0.01 0.99) - (init! (-> this gondola-tilt-oscillator) s5-1 0.001 0.01 0.99) - ) + (init! (-> this gondola-tilt-oscillator) s5-1 0.001 0.01 0.99)) (init! (-> this pos-rand) 1500 2400 20480.0 4096.0) (init! (-> this pos-oscillator) (the-as vector #f) 0.00032768 1638.4 0.995) (init! (-> this scale-rand) 1500 2400 0.02) (init! (-> this scale-oscillator) 0.0 0.002 0.015 0.99) (dotimes (v1-38 5) - (set! (-> this the-ropes v1-38) (the-as handle #f)) - ) + (set! (-> this the-ropes v1-38) (the-as handle #f))) (let ((s5-2 (entity-actor-count (-> this entity) 'alt-actor))) (dotimes (s4-1 s5-2) (let ((s3-1 (entity-actor-lookup (-> this entity) 'alt-actor s4-1))) (if s3-1 - (set! (-> this the-ropes s4-1) - (ppointer->handle (process-spawn swamp-rope (-> this trans-at-init) s3-1 :to this)) - ) - ) - ) - ) - ) + (set! (-> this the-ropes s4-1) (ppointer->handle (process-spawn swamp-rope (-> this trans-at-init) s3-1 :to this))))))) (set! (-> this gondola) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) this 5)) (set! (-> this bag) (new 'process 'joint-mod (joint-mod-handler-mode joint-set*) this 3)) (logclear! (-> this mask) (process-mask actor-pause)) (process-entity-status! this (entity-perm-status bit-7) #t) (swamp-blimp-setup) (go swamp-blimp-idle) - (none) - ) + (none)) (defun-debug bustarock ((arg0 int)) (with-pp @@ -1593,19 +1155,6 @@ (set! (-> a1-1 param 0) (the-as uint 'eco-yellow)) (set! (-> a1-1 param 1) (the-as uint 'eco-yellow)) (let ((t9-3 send-event-function) - (v1-4 gp-1) - ) - (t9-3 - (if v1-4 - (-> v1-4 extra process) - ) - a1-1 - ) - ) - ) - ) - (format #t "found the rock~%") - ) - ) - ) - ) + (v1-4 gp-1)) + (t9-3 (if v1-4 (-> v1-4 extra process)) a1-1)))) + (format #t "found the rock~%"))))) diff --git a/goal_src/jak1/levels/village2/village2-obs.gc b/goal_src/jak1/levels/village2/village2-obs.gc index e96e8c33c0..b15fe4da65 100644 --- a/goal_src/jak1/levels/village2/village2-obs.gc +++ b/goal_src/jak1/levels/village2/village2-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/common-obs/rigid-body.gc") (require "engine/camera/pov-camera.gc") (require "engine/game/task/task-control.gc") @@ -10,145 +9,113 @@ ;; name in dgo: village2-obs ;; dgos: L1, VI2 - ;; DECOMP BEGINS (deftype village2cam (pov-camera) - ((seq uint64) - ) - ) + ((seq uint64))) - -(defskelgroup *village2cam-sg* village2cam village2cam-lod0-jg -1 - ((village2cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 10) - ) +(defskelgroup *village2cam-sg* + village2cam + village2cam-lod0-jg + -1 + ((village2cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 10)) (defmethod set-stack-size! ((this village2cam)) (stack-size-set! (-> this main-thread) 512) - (none) - ) + (none)) (defstate pov-camera-playing (village2cam) :virtual #t - :code (behavior () - (let ((v1-0 (-> self seq))) - (cond - ((zero? v1-0) - (ja-no-eval :group! village2cam-elevator-at-top-going-down-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 1) - (ja-no-eval :group! village2cam-elevator-at-bottom-going-up-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 2) - (pov-camera-play-and-reposition - (the-as art-joint-anim village2cam-elevator-at-top-going-up-ja) - (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) - 1.0 - ) - ) - (else - (suspend) - 0 - ) - ) - ) - (go-virtual pov-camera-done-playing) - ) - ) + :code + (behavior () + (let ((v1-0 (-> self seq))) + (cond + ((zero? v1-0) + (ja-no-eval :group! village2cam-elevator-at-top-going-down-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 1) + (ja-no-eval :group! village2cam-elevator-at-bottom-going-up-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 2) + (pov-camera-play-and-reposition (the-as art-joint-anim village2cam-elevator-at-top-going-up-ja) + (new 'static 'vector :x 2199552.0 :y 40960.0 :z -6676480.0) + 1.0)) + (else (suspend) 0))) + (go-virtual pov-camera-done-playing))) -(defskelgroup *med-res-rolling-sg* medres-rolling medres-rolling-lod0-jg medres-rolling-idle-ja - ((medres-rolling-lod0-mg (meters 999999))) - :bounds (static-spherem -520 110 70 100) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-rolling-sg* + medres-rolling + medres-rolling-lod0-jg + medres-rolling-idle-ja + ((medres-rolling-lod0-mg (meters 999999))) + :bounds (static-spherem -520 110 70 100) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-rolling1-sg* medres-rolling1 medres-rolling1-lod0-jg medres-rolling1-idle-ja - ((medres-rolling1-lod0-mg (meters 999999))) - :bounds (static-spherem -300 30 -20 120) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-rolling1-sg* + medres-rolling1 + medres-rolling1-lod0-jg + medres-rolling1-idle-ja + ((medres-rolling1-lod0-mg (meters 999999))) + :bounds (static-spherem -300 30 -20 120) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-village2-sg* medres-village2 medres-village2-lod0-jg medres-village2-idle-ja - ((medres-village2-lod0-mg (meters 999999))) - :bounds (static-spherem -60 65 0 90) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-village2-sg* + medres-village2 + medres-village2-lod0-jg + medres-village2-idle-ja + ((medres-village2-lod0-mg (meters 999999))) + :bounds (static-spherem -60 65 0 90) + :longest-edge (meters 0.01)) (deftype pontoon (rigid-body-platform) - ((anchor-point vector :inline) - (task uint8) - (alt-task uint8) - ) + ((anchor-point vector :inline) + (task uint8) + (alt-task uint8)) (:states - pontoon-die - pontoon-hidden - ) - ) - + pontoon-die + pontoon-hidden)) (defstate pontoon-hidden (pontoon) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (clear-collide-with-as (-> self root-overlay)) - ) - :exit (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (restore-collide-with-as (-> self root-overlay)) - ) - :trans (behavior () - (if (task-closed? (the-as game-task (-> self task)) (task-status need-resolution)) - (go-virtual rigid-body-platform-idle) - ) - ) - :code (behavior () - (loop - (suspend) - ) - ) - ) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (clear-collide-with-as (-> self root-overlay))) + :exit + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (restore-collide-with-as (-> self root-overlay))) + :trans + (behavior () + (if (task-closed? (the-as game-task (-> self task)) (task-status need-resolution)) (go-virtual rigid-body-platform-idle))) + :code + (behavior () + (loop (suspend)))) (defstate pontoon-die (pontoon) - :code (behavior () - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior () + (cleanup-for-death self) + (deactivate self))) (defstate rigid-body-platform-float (pontoon) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (cleanup-for-death self) - (deactivate self) - ) - (else - (rigid-body-platform-event-handler proc argc message block) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (cleanup-for-death self) (deactivate self)) + (else (rigid-body-platform-event-handler proc argc message block))))) (defstate rigid-body-platform-idle (pontoon) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('die) - (cleanup-for-death self) - (deactivate self) - ) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('die) (cleanup-for-death self) (deactivate self))))) (defmethod init-from-entity! ((this pontoon) (arg0 entity-actor)) (logior! (-> this mask) (process-mask platform)) @@ -160,113 +127,98 @@ (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (set! (-> this alt-task) (res-lump-value arg0 'alt-task uint)) (cond - ((and (nonzero? (-> this alt-task)) - (task-closed? (the-as game-task (-> this alt-task)) (task-status need-resolution)) - ) - (go pontoon-die) - ) - ((zero? (-> this task)) - (go (method-of-object this rigid-body-platform-idle)) - ) + ((and (nonzero? (-> this alt-task)) (task-closed? (the-as game-task (-> this alt-task)) (task-status need-resolution))) + (go pontoon-die)) + ((zero? (-> this task)) (go (method-of-object this rigid-body-platform-idle))) ((task-closed? (the-as game-task (-> this task)) (task-status need-resolution)) - (go (method-of-object this rigid-body-platform-idle)) - ) - (else - (go pontoon-hidden) - ) - ) + (go (method-of-object this rigid-body-platform-idle))) + (else (go pontoon-hidden))) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-23 ((this pontoon) (arg0 float)) (call-parent-method this arg0) (rigid-body-platform-method-27 this (-> this anchor-point)) 0 - (none) - ) + (none)) -(define *pontoonfive-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 4.0 - :buoyancy-factor 3.0 - :max-buoyancy-depth (meters 3) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.98 - :angular-damping 0.98 - :control-point-count 4 - :mass 2.0 - :inertial-tensor-x (meters 2.5) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 90) - :platform #t - :sound-name "pontoonten" - ) - ) +(define *pontoonfive-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.98 + :angular-damping 0.98 + :control-point-count 4 + :mass 2.0 + :inertial-tensor-x (meters 2.5) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90) + :platform #t + :sound-name "pontoonten")) -(define *pontoonten-constants* (new 'static 'rigid-body-platform-constants - :drag-factor 4.0 - :buoyancy-factor 3.0 - :max-buoyancy-depth (meters 3) - :gravity-factor 1.0 - :gravity (meters 80) - :player-weight (meters 35) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000) - :player-force-clamp (meters 1000000) - :player-force-timeout (seconds 0.1) - :explosion-force (meters 1000) - :linear-damping 0.98 - :angular-damping 0.95 - :control-point-count 4 - :mass 4.0 - :inertial-tensor-x (meters 5) - :inertial-tensor-y (meters 2) - :inertial-tensor-z (meters 3.2) - :idle-distance (meters 90) - :platform #t - :sound-name "pontoonten" - ) - ) +(define *pontoonten-constants* + (new 'static + 'rigid-body-platform-constants + :drag-factor 4.0 + :buoyancy-factor 3.0 + :max-buoyancy-depth (meters 3) + :gravity-factor 1.0 + :gravity (meters 80) + :player-weight (meters 35) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000) + :player-force-clamp (meters 1000000) + :player-force-timeout (seconds 0.1) + :explosion-force (meters 1000) + :linear-damping 0.98 + :angular-damping 0.95 + :control-point-count 4 + :mass 4.0 + :inertial-tensor-x (meters 5) + :inertial-tensor-y (meters 2) + :inertial-tensor-z (meters 3.2) + :idle-distance (meters 90) + :platform #t + :sound-name "pontoonten")) -(deftype pontoonfive (pontoon) - () - ) +(deftype pontoonfive (pontoon) ()) +(deftype pontoonten (pontoon) ()) -(deftype pontoonten (pontoon) - () - ) +(defskelgroup *pontoonfive-sg* + pontoonfive + pontoonfive-lod0-jg + pontoonfive-idle-ja + ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 5) + :longest-edge (meters 3.5)) - -(defskelgroup *pontoonfive-sg* pontoonfive pontoonfive-lod0-jg pontoonfive-idle-ja - ((pontoonfive-lod0-mg (meters 20)) (pontoonfive-lod1-mg (meters 40)) (pontoonfive-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 5) - :longest-edge (meters 3.5) - ) - -(defskelgroup *pontoonten-sg* pontoonten pontoonten-lod0-jg pontoonten-idle-ja - ((pontoonten-lod0-mg (meters 20)) (pontoonten-lod1-mg (meters 40)) (pontoonten-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 7) - :longest-edge (meters 4) - ) +(defskelgroup *pontoonten-sg* + pontoonten + pontoonten-lod0-jg + pontoonten-idle-ja + ((pontoonten-lod0-mg (meters 20)) (pontoonten-lod1-mg (meters 40)) (pontoonten-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 4)) (defmethod rigid-body-platform-method-30 ((this pontoonfive)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -275,18 +227,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this pontoonfive)) - (initialize-skeleton this *pontoonfive-sg* '()) + (initialize-skeleton this *pontoonfive-sg* ()) (rigid-body-platform-method-29 this *pontoonfive-constants*) (set! (-> this float-height-offset) 6144.0) (set! (-> this root-overlay nav-radius) 12288.0) @@ -294,39 +243,32 @@ (set! (-> v1-6 0 local-pos x) 9216.0) (set! (-> v1-6 0 local-pos y) 0.0) (set! (-> v1-6 0 local-pos z) 12083.2) - (set! (-> v1-6 0 local-pos w) 1.0) - ) + (set! (-> v1-6 0 local-pos w) 1.0)) (let ((v1-8 (-> this control-point-array data 1))) (set! (-> v1-8 local-pos x) 9216.0) (set! (-> v1-8 local-pos y) 0.0) (set! (-> v1-8 local-pos z) -12083.2) - (set! (-> v1-8 local-pos w) 1.0) - ) + (set! (-> v1-8 local-pos w) 1.0)) (let ((v1-10 (-> this control-point-array data 2))) (set! (-> v1-10 local-pos x) -9216.0) (set! (-> v1-10 local-pos y) 0.0) (set! (-> v1-10 local-pos z) -12083.2) - (set! (-> v1-10 local-pos w) 1.0) - ) + (set! (-> v1-10 local-pos w) 1.0)) (let ((v1-12 (-> this control-point-array data 3))) (set! (-> v1-12 local-pos x) -9216.0) (set! (-> v1-12 local-pos y) 0.0) (set! (-> v1-12 local-pos z) 12083.2) - (set! (-> v1-12 local-pos w) 1.0) - ) + (set! (-> v1-12 local-pos w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-30 ((this pontoonten)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) @@ -335,18 +277,15 @@ (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) - (set-root-prim! s5-0 s4-0) - ) + (set-root-prim! s5-0 s4-0)) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root-overlay) s5-0) - ) + (set! (-> this root-overlay) s5-0)) 0 - (none) - ) + (none)) (defmethod rigid-body-platform-method-31 ((this pontoonten)) - (initialize-skeleton this *pontoonten-sg* '()) + (initialize-skeleton this *pontoonten-sg* ()) (rigid-body-platform-method-29 this *pontoonten-constants*) (set! (-> this float-height-offset) 6144.0) (set! (-> this root-overlay nav-radius) 20480.0) @@ -354,212 +293,165 @@ (set! (-> v1-6 0 local-pos x) 17408.0) (set! (-> v1-6 0 local-pos y) 0.0) (set! (-> v1-6 0 local-pos z) 10035.2) - (set! (-> v1-6 0 local-pos w) 1.0) - ) + (set! (-> v1-6 0 local-pos w) 1.0)) (let ((v1-8 (-> this control-point-array data 1))) (set! (-> v1-8 local-pos x) 17408.0) (set! (-> v1-8 local-pos y) 0.0) (set! (-> v1-8 local-pos z) -10035.2) - (set! (-> v1-8 local-pos w) 1.0) - ) + (set! (-> v1-8 local-pos w) 1.0)) (let ((v1-10 (-> this control-point-array data 2))) (set! (-> v1-10 local-pos x) -17408.0) (set! (-> v1-10 local-pos y) 0.0) (set! (-> v1-10 local-pos z) -10035.2) - (set! (-> v1-10 local-pos w) 1.0) - ) + (set! (-> v1-10 local-pos w) 1.0)) (let ((v1-12 (-> this control-point-array data 3))) (set! (-> v1-12 local-pos x) -17408.0) (set! (-> v1-12 local-pos y) 0.0) (set! (-> v1-12 local-pos z) 10035.2) - (set! (-> v1-12 local-pos w) 1.0) - ) + (set! (-> v1-12 local-pos w) 1.0)) (set! (-> this anchor-point quad) (-> this root-overlay trans quad)) (nav-mesh-connect this (-> this root-overlay) (the-as nav-control #f)) 0 - (none) - ) + (none)) (defpartgroup group-allpontoons-trail :id 563 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2841 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) - (sp-item 2842 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) - ) - ) + :parts + ((sp-item 2841 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)) + (sp-item 2842 :flags (is-3d) :period (seconds 3) :length (seconds 0.017)))) (defpart 2841 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 9)) - (:y (meters 0.1)) - (:scale-x (meters 0.2) (meters 2)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.01) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2843) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 9)) + (:y (meters 0.1)) + (:scale-x (meters 0.2) (meters 2)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.01) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2843) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2843 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2842 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 8) (meters 8)) - (:y (meters 0.1)) - (:scale-x (meters 0.2) (meters 2)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667) (meters 0.001)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2843) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 8) (meters 8)) + (:y (meters 0.1)) + (:scale-x (meters 0.2) (meters 2)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2843) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (deftype allpontoons (process-drawable) - ((task uint8) - ) - (:states - (allpontoons-be-clone handle) - allpontoons-idle - ) - ) + ((task uint8)) + (:states (allpontoons-be-clone handle) + allpontoons-idle)) - -(defskelgroup *allpontoons-sg* allpontoons allpontoons-lod0-jg allpontoons-idle-ja - ((allpontoons-lod0-mg (meters 999999))) - :bounds (static-spherem 32 0 -5 34) - ) +(defskelgroup *allpontoons-sg* + allpontoons + allpontoons-lod0-jg + allpontoons-idle-ja + ((allpontoons-lod0-mg (meters 999999))) + :bounds (static-spherem 32 0 -5 34)) (defstate allpontoons-be-clone (allpontoons) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('end-mode) - (cleanup-for-death self) - (deactivate self) - ) - ) - ) - :enter (behavior ((arg0 handle)) - (logclear! (-> self draw status) (draw-status hidden)) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - ) - :trans (behavior () - (when (>= (ja-aframe-num 0) 500.0) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 1)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 2)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 3)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 4)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 5)) - ) - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 6)) - ) - ) - ) - :code (behavior ((arg0 handle)) - (clone-anim arg0 3 #t "") - (cleanup-for-death self) - (deactivate self) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('end-mode) (cleanup-for-death self) (deactivate self)))) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self draw status) (draw-status hidden)) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause))) + :trans + (behavior () + (when (>= (ja-aframe-num 0) 500.0) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 1))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 2))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 3))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 4))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 5))) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node allpontoons-lod0-jg 6))))) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (cleanup-for-death self) + (deactivate self))) (defstate allpontoons-idle (allpontoons) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone) - (go allpontoons-be-clone (the-as handle (-> block param 0))) - ) - ) - ) - :enter (behavior () - (logior! (-> self draw status) (draw-status hidden)) - ) - :code (behavior () - (loop - (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) - (cleanup-for-death self) - (deactivate self) - ) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone) (go allpontoons-be-clone (the-as handle (-> block param 0)))))) + :enter + (behavior () + (logior! (-> self draw status) (draw-status hidden))) + :code + (behavior () + (loop (when (and (nonzero? (-> self task)) (task-closed? (the-as game-task (-> self task)) (task-status need-resolution))) + (cleanup-for-death self) + (deactivate self)) + (logior! (-> self mask) (process-mask sleep)) + (suspend)))) (defmethod init-from-entity! ((this allpontoons) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *allpontoons-sg* '()) + (initialize-skeleton this *allpontoons-sg* ()) (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (set! (-> this part) (create-launch-control (-> *part-group-id-table* 563) this)) (go allpontoons-idle) - (none) - ) + (none)) (deftype fireboulder (process-drawable) - ((root collide-shape :override) - (tracker handle) - (task uint8) - ) - (:states - (fireboulder-be-clone handle) - fireboulder-hover - fireboulder-idle - ) - ) + ((root collide-shape :override) + (tracker handle) + (task uint8)) + (:states (fireboulder-be-clone handle) + fireboulder-hover + fireboulder-idle)) - -(defskelgroup *fireboulder-sg* fireboulder fireboulder-lod0-jg fireboulder-idle-ja - ((fireboulder-lod0-mg (meters 999999))) - :bounds (static-spherem 0 3.5 0 6) - :longest-edge (meters 3.5) - ) +(defskelgroup *fireboulder-sg* + fireboulder + fireboulder-lod0-jg + fireboulder-idle-ja + ((fireboulder-lod0-mg (meters 999999))) + :bounds (static-spherem 0 3.5 0 6) + :longest-edge (meters 3.5)) (defbehavior fireboulder-disable-blocking-collision fireboulder () (let ((v1-1 (-> self root root-prim))) @@ -568,16 +460,11 @@ (when (= (-> a1-2 prim-id) 256) (set! (-> a1-2 prim-core collide-as) (collide-kind)) (set! (-> a1-2 collide-with) (collide-kind)) - 0 - ) - ) - ) + 0))) (set! (-> v1-1 local-sphere x) 0.0) - (set! (-> v1-1 local-sphere w) 24576.0) - ) + (set! (-> v1-1 local-sphere w) 24576.0)) 0 - (none) - ) + (none)) (defbehavior fireboulder-hover-stuff fireboulder () (local-vars (v0-1 object)) @@ -587,141 +474,104 @@ ((handle->process (-> self tracker)) (let ((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0))) (set-time! (-> v1-6 start-time)) - (set! v0-1 (-> v1-6 root trans)) - ) - (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad)) - ) + (set! v0-1 (-> v1-6 root trans))) + (set! (-> (the-as vector v0-1) quad) (-> gp-0 quad))) (else - (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) - (set! v0-1 - (ppointer->handle - (when gp-1 - (let ((t9-2 (method-of-type part-tracker activate))) - (t9-2 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000)) - ) - (run-now-in-process gp-1 part-tracker-init (-> *part-group-id-table* 678) -1 #f #f #f (-> self root trans)) - (-> gp-1 ppointer) - ) - ) - ) - ) - (set! (-> self tracker) (the-as handle v0-1)) - ) - ) - ) - v0-1 - ) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (set! v0-1 + (ppointer->handle (when gp-1 + (let ((t9-2 (method-of-type part-tracker activate))) + (t9-2 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000))) + (run-now-in-process gp-1 part-tracker-init (-> *part-group-id-table* 678) -1 #f #f #f (-> self root trans)) + (-> gp-1 ppointer))))) + (set! (-> self tracker) (the-as handle v0-1))))) + v0-1) (defstate fireboulder-hover (fireboulder) - :enter (behavior () - (fireboulder-disable-blocking-collision) - (ja-channel-set! 1) - (ja :group! fireboulder-hover-ja) - (logclear! (-> self draw status) (draw-status hidden)) - (set! (-> self root trans quad) (-> self entity extra trans quad)) - (vector-reset! (-> self draw origin)) - (logior! (-> self skel status) (janim-status inited)) - (ja-post) - (logclear! (-> self skel status) (janim-status inited)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector<-cspace! gp-0 (joint-node fireboulder-lod0-jg bouldercenter)) - (vector-! (-> self draw bounds) gp-0 (-> self root trans)) - ) - (set! (-> self draw bounds w) 24576.0) - ) - :exit (behavior () - (stop! (-> self sound)) - ) - :trans (behavior () - (fireboulder-hover-stuff) - (update! (-> self sound)) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 455.1111 (-> *display* time-adjust-ratio))) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post transform-post - ) + :enter + (behavior () + (fireboulder-disable-blocking-collision) + (ja-channel-set! 1) + (ja :group! fireboulder-hover-ja) + (logclear! (-> self draw status) (draw-status hidden)) + (set! (-> self root trans quad) (-> self entity extra trans quad)) + (vector-reset! (-> self draw origin)) + (logior! (-> self skel status) (janim-status inited)) + (ja-post) + (logclear! (-> self skel status) (janim-status inited)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (vector<-cspace! gp-0 (joint-node fireboulder-lod0-jg bouldercenter)) + (vector-! (-> self draw bounds) gp-0 (-> self root trans))) + (set! (-> self draw bounds w) 24576.0)) + :exit + (behavior () + (stop! (-> self sound))) + :trans + (behavior () + (fireboulder-hover-stuff) + (update! (-> self sound))) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (quaternion-rotate-y! (-> self root quat) (-> self root quat) (* 455.1111 (-> *display* time-adjust-ratio))) + (suspend) + (ja :num! (seek!))))) + :post transform-post) (defstate fireboulder-be-clone (fireboulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('stop-cloning) - (go fireboulder-hover) - ) - ) - ) - :enter (behavior ((arg0 handle)) - (logclear! (-> self mask) (process-mask actor-pause)) - ) - :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (logclear! (-> self skel status) (janim-status spool)) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('stop-cloning) (go fireboulder-hover)))) + :enter + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause))) + :exit + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (logclear! (-> self skel status) (janim-status spool))) :trans fireboulder-hover-stuff - :code (behavior ((arg0 handle)) - (clone-anim arg0 3 #t "") - (format 0 "ERROR: fireboulder-be-clone ended~%") - (cleanup-for-death self) - (deactivate self) - ) - ) + :code + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (format 0 "ERROR: fireboulder-be-clone ended~%") + (cleanup-for-death self) + (deactivate self))) (defstate fireboulder-idle (fireboulder) - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('clone) - (go fireboulder-be-clone (the-as handle (-> block param 0))) - ) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self tracker)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ) - :code (behavior () - (transform-post) - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (cond - ((zero? (-> self task)) - ) - ((handle->process (-> self tracker)) - (set-time! (-> (the-as (pointer part-tracker) (-> self tracker process)) 0 start-time)) - ) - (else - (set! (-> self tracker) (ppointer->handle (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 271) - -1 - #f - #f - #f - (-> self root trans) - :to *entity-pool* - ) - ) - ) - ) - ) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('clone) (go fireboulder-be-clone (the-as handle (-> block param 0)))))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self tracker)))) (if a0-1 (deactivate a0-1)))) + :code + (behavior () + (transform-post) + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (cond + ((zero? (-> self task))) + ((handle->process (-> self tracker)) + (set-time! (-> (the-as (pointer part-tracker) (-> self tracker process)) 0 start-time))) + (else + (set! (-> self tracker) + (ppointer->handle (process-spawn part-tracker + :init + part-tracker-init + (-> *part-group-id-table* 271) + -1 + #f + #f + #f + (-> self root trans) + :to + *entity-pool*))))) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this fireboulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-others)))) @@ -739,8 +589,7 @@ (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) - (append-prim s3-0 s2-0) - ) + (append-prim s3-0 s2-0)) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 256)))) (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) (set! (-> s2-1 collide-with) (collide-kind target)) @@ -748,162 +597,108 @@ (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) - (append-prim s3-0 s2-1) - ) - ) + (append-prim s3-0 s2-1))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (cond ((name= (-> this name) "fireboulder-6") (quaternion-axis-angle! (-> this root quat) 0.0 1.0 0.0 16384.0) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "rock-hover" :fo-max 30) (-> this root trans)) - ) - ) - (else - (fireboulder-disable-blocking-collision) - ) - ) - (initialize-skeleton this *fireboulder-sg* '()) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "rock-hover" :fo-max 30) (-> this root trans)))) + (else (fireboulder-disable-blocking-collision))) + (initialize-skeleton this *fireboulder-sg* ()) (set! (-> this tracker) (the-as handle #f)) (set-vector! (-> this draw color-emissive) 0.125 0.0625 0.0 0.0) (set! (-> this task) (the-as uint (-> arg0 extra perm task))) (cond - ((zero? (-> this task)) - (go fireboulder-idle) - ) - ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) - (go fireboulder-hover) - ) - (else - (go fireboulder-idle) - ) - ) - (none) - ) + ((zero? (-> this task)) (go fireboulder-idle)) + ((= (get-task-status (-> arg0 extra perm task)) (task-status invalid)) (go fireboulder-hover)) + (else (go fireboulder-idle))) + (none)) -(deftype ceilingflag (process-drawable) - () +(deftype ceilingflag (process-drawable) () (:states - ceilingflag-idle - ) - ) + ceilingflag-idle)) - -(defskelgroup *ceilingflag-sg* ceilingflag ceilingflag-geo-jg ceilingflag-idle-ja - ((ceilingflag-geo-mg (meters 999999))) - :bounds (static-spherem 0 -4 0 7) - ) +(defskelgroup *ceilingflag-sg* + ceilingflag + ceilingflag-geo-jg + ceilingflag-idle-ja + ((ceilingflag-geo-mg (meters 999999))) + :bounds (static-spherem 0 -4 0 7)) (defstate ceilingflag-idle (ceilingflag) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this ceilingflag) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *ceilingflag-sg* '()) + (initialize-skeleton this *ceilingflag-sg* ()) (go ceilingflag-idle) - (none) - ) + (none)) (deftype exit-chamber-dummy (process-drawable) - ((orig-trans vector :inline) - (fcell-handle handle) - ) + ((orig-trans vector :inline) + (fcell-handle handle)) (:methods - (skip-reminder? (_type_) symbol) - ) + (skip-reminder? (_type_) symbol)) (:states - exit-chamber-dummy-idle - exit-chamber-dummy-wait-to-appear - ) - ) + exit-chamber-dummy-idle + exit-chamber-dummy-wait-to-appear)) - -(defskelgroup *exit-chamber-dummy-sg* exit-chamber-dummy exit-chamber-dummy-lod0-jg -1 - ((exit-chamber-dummy-lod0-mg (meters 999999))) - :bounds (static-spherem 0 5 0 15) - ) +(defskelgroup *exit-chamber-dummy-sg* + exit-chamber-dummy + exit-chamber-dummy-lod0-jg + -1 + ((exit-chamber-dummy-lod0-mg (meters 999999))) + :bounds (static-spherem 0 5 0 15)) (defmethod skip-reminder? ((this exit-chamber-dummy)) (case (get-reminder (get-task-control (game-task sunken-room)) 0) - ((2) - (let ((v1-4 (level-get *level* 'sunken))) - (if (or (not v1-4) (!= (-> v1-4 status) 'active)) - (return #t) - ) - ) - ) - ) - #f - ) + ((2) (let ((v1-4 (level-get *level* 'sunken))) (if (or (not v1-4) (!= (-> v1-4 status) 'active)) (return #t))))) + #f) (defstate exit-chamber-dummy-wait-to-appear (exit-chamber-dummy) - :code (behavior () - (logior! (-> self draw status) (draw-status hidden)) - (while (not (skip-reminder? self)) - (suspend) - ) - (when (and (not (task-complete? *game-info* (game-task sunken-room))) (not (-> self child))) - (let ((a0-3 (new 'stack-no-clear 'vector))) - (set! (-> a0-3 quad) (-> self root trans quad)) - (+! (-> a0-3 y) 67584.0) - (let ((v1-12 (birth-pickup-at-point a0-3 (pickup-type fuel-cell) 47.0 #f self (the-as fact-info #f)))) - (set! (-> self fcell-handle) (ppointer->handle v1-12)) - (send-event (ppointer->process v1-12) 'collide-shape #f) - ) - ) - ) - (go exit-chamber-dummy-idle) - ) - ) + :code + (behavior () + (logior! (-> self draw status) (draw-status hidden)) + (while (not (skip-reminder? self)) + (suspend)) + (when (and (not (task-complete? *game-info* (game-task sunken-room))) (not (-> self child))) + (let ((a0-3 (new 'stack-no-clear 'vector))) + (set! (-> a0-3 quad) (-> self root trans quad)) + (+! (-> a0-3 y) 67584.0) + (let ((v1-12 (birth-pickup-at-point a0-3 (pickup-type fuel-cell) 47.0 #f self (the-as fact-info #f)))) + (set! (-> self fcell-handle) (ppointer->handle v1-12)) + (send-event (ppointer->process v1-12) 'collide-shape #f)))) + (go exit-chamber-dummy-idle))) (defstate exit-chamber-dummy-idle (exit-chamber-dummy) - :code (behavior () - (logclear! (-> self draw status) (draw-status hidden)) - (let ((gp-0 0)) - (while (< gp-0 2) - (if (skip-reminder? self) - (set! gp-0 0) - (+! gp-0 1) - ) - (set! (-> self root trans y) - (+ (-> self orig-trans y) (* 2252.8 (cos (* 36.40889 (the float (mod (current-time) 1800)))))) - ) - (let ((a0-7 (handle->process (-> self fcell-handle)))) - (when a0-7 - (let ((v1-14 (new 'stack-no-clear 'vector))) - (set! (-> v1-14 quad) (-> self root trans quad)) - (+! (-> v1-14 y) 67584.0) - (send-event a0-7 'trans v1-14) - ) - ) - ) - (suspend) - ) - ) - (let ((a0-11 (handle->process (-> self fcell-handle)))) - (if a0-11 - (deactivate a0-11) - ) - ) - (go exit-chamber-dummy-wait-to-appear) - ) - :post ja-post - ) + :code + (behavior () + (logclear! (-> self draw status) (draw-status hidden)) + (let ((gp-0 0)) + (while (< gp-0 2) + (if (skip-reminder? self) (set! gp-0 0) (+! gp-0 1)) + (set! (-> self root trans y) + (+ (-> self orig-trans y) (* 2252.8 (cos (* 36.40889 (the float (mod (current-time) 1800))))))) + (let ((a0-7 (handle->process (-> self fcell-handle)))) + (when a0-7 + (let ((v1-14 (new 'stack-no-clear 'vector))) + (set! (-> v1-14 quad) (-> self root trans quad)) + (+! (-> v1-14 y) 67584.0) + (send-event a0-7 'trans v1-14)))) + (suspend))) + (let ((a0-11 (handle->process (-> self fcell-handle)))) (if a0-11 (deactivate a0-11))) + (go exit-chamber-dummy-wait-to-appear)) + :post ja-post) (defmethod init-from-entity! ((this exit-chamber-dummy) (arg0 entity-actor)) (set! (-> this fcell-handle) (the-as handle #f)) @@ -912,220 +707,200 @@ (logclear! (-> this mask) (process-mask actor-pause)) (+! (-> this root trans y) 24576.0) (set! (-> this orig-trans quad) (-> this root trans quad)) - (initialize-skeleton this *exit-chamber-dummy-sg* '()) + (initialize-skeleton this *exit-chamber-dummy-sg* ()) (ja-channel-set! 1) (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)) (logior! (-> this draw status) (draw-status hidden)) (go exit-chamber-dummy-wait-to-appear) - (none) - ) + (none)) (deftype ogreboss-village2 (process-drawable) - ((boulder handle) - ) + ((boulder handle)) (:states - ogreboss-village2-idle - ogreboss-village2-throw - ) - ) + ogreboss-village2-idle + ogreboss-village2-throw)) - -(defskelgroup *ogreboss-village2-sg* ogreboss-village2 ogreboss-village2-lod0-jg ogreboss-village2-idle-ja - ((ogreboss-village2-lod0-mg (meters 999999))) - :bounds (static-spherem 0 10 0 15) - ) +(defskelgroup *ogreboss-village2-sg* + ogreboss-village2 + ogreboss-village2-lod0-jg + ogreboss-village2-idle-ja + ((ogreboss-village2-lod0-mg (meters 999999))) + :bounds (static-spherem 0 10 0 15)) (defpartgroup group-ogreboulder-trail :id 564 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 2319 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 2320 :fade-after (meters 200) :falloff-to (meters 200)) - ) - ) + :parts + ((sp-item 2319 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 2320 :fade-after (meters 200) :falloff-to (meters 200)))) (defpart 2320 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 48.0 48.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.10666667) - (:fade-b 0.10666667) - (:fade-a -0.32) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 48.0 48.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.10666667) + (:fade-b 0.10666667) + (:fade-a -0.32) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 1)) + (:flags (bit2 bit14)))) (defpart 2319 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -1) (meters 2)) - (:y (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 8) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 96.0) - (:b 32.0) - (:a 80.0 80.0) - (:vel-y (meters 0.0016666667) (meters 0.00083333335)) - (:scalevel-x (meters 0.04)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.53333336) - (:fade-b -0.17777778) - (:fade-a -1.0666667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -1) (meters 2)) + (:y (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 8) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 96.0) + (:b 32.0) + (:a 80.0 80.0) + (:vel-y (meters 0.0016666667) (meters 0.00083333335)) + (:scalevel-x (meters 0.04)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.53333336) + (:fade-b -0.17777778) + (:fade-a -1.0666667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboulder-hit-wall :id 551 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2287 :period (seconds 3) :length (seconds 0.135))) - ) + :parts ((sp-item 2287 :period (seconds 3) :length (seconds 0.135)))) (defpart 2287 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 12.0) - (:y (meters 1) (meters 3)) - (:scale-x (meters 0.4) (meters 0.1)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 10) (meters 6)) - (:r 196.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 32.0 64.0) - (:scalevel-y (meters 1.4)) - (:fade-a -3.2) - (:timer (seconds 0.1)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 12.0) + (:y (meters 1) (meters 3)) + (:scale-x (meters 0.4) (meters 0.1)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 10) (meters 6)) + (:r 196.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 32.0 64.0) + (:scalevel-y (meters 1.4)) + (:fade-a -3.2) + (:timer (seconds 0.1)) + (:flags (bit2 bit3 bit14)))) (defpartgroup group-ogreboulder-splash :id 552 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 64) - :parts ((sp-item 2288 :period (seconds 3) :length (seconds 0.067)) - (sp-item 2321 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) - (sp-item 2322 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) - ) - ) + :parts + ((sp-item 2288 :period (seconds 3) :length (seconds 0.067)) + (sp-item 2321 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)) + (sp-item 2322 :flags (is-3d) :period (seconds 3) :length (seconds 0.035)))) (defpart 2321 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 0) (meters 9)) - (:scale-x (meters 16) (meters 8)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.026666667) (meters 0.026666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2323) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 0) (meters 9)) + (:scale-x (meters 16) (meters 8)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.026666667) (meters 0.026666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2323) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2323 - :init-specs ((:fade-a -0.094814815)) - ) + :init-specs ((:fade-a -0.094814815))) (defpart 2322 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 8.0) - (:x (meters 8) (meters 8)) - (:scale-x (meters 4.5) (meters 3.5)) - (:rot-y (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 64.0) - (:b 128.0 64.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-a 3.2) - (:timer (seconds 5)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.035) (seconds 0.097)) - (:next-launcher 2323) - (:conerot-x (degrees 70) (degrees 20)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 8.0) + (:x (meters 8) (meters 8)) + (:scale-x (meters 4.5) (meters 3.5)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 64.0) + (:b 128.0 64.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-a 3.2) + (:timer (seconds 5)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.035) (seconds 0.097)) + (:next-launcher 2323) + (:conerot-x (degrees 70) (degrees 20)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2288 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 16.0) - (:y (meters 0) (meters 1)) - (:scale-x (meters 12) (meters 6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 50.0) - (:g 80.0 64.0) - (:b 200.0) - (:a 48.0 48.0) - (:vel-y (meters 0.10666667) (meters 0.10666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.16) - (:accel-y (meters 0.0005) (meters 0.0005)) - (:friction 0.85) - (:timer (seconds 2.2)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 8)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 16.0) + (:y (meters 0) (meters 1)) + (:scale-x (meters 12) (meters 6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 50.0) + (:g 80.0 64.0) + (:b 200.0) + (:a 48.0 48.0) + (:vel-y (meters 0.10666667) (meters 0.10666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.16) + (:accel-y (meters 0.0005) (meters 0.0005)) + (:friction 0.85) + (:timer (seconds 2.2)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 8)))) (defbehavior ogreboss-village2-trans ogreboss-village2 () (when (= (get-task-status (game-task village2-levitator)) (task-status invalid)) (cleanup-for-death self) - (deactivate self) - ) - (none) - ) + (deactivate self)) + (none)) (defbehavior boulder1-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1134,23 +909,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder2-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1159,23 +921,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder2-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1184,23 +933,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder2-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder2-trans-2)) 0 - (none) - ) + (none)) (defbehavior boulder3-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1209,23 +945,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder3-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1234,23 +957,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder3-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder3-trans-2)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans-3 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1259,23 +969,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "boulder-splash") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 552) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook nothing) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 552) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook nothing)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans-2 fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1284,23 +981,10 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder4-trans-3) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder4-trans-3)) 0 - (none) - ) + (none)) (defbehavior boulder4-trans fireboulder () (spawn (-> self part) (-> self draw origin)) @@ -1309,157 +993,96 @@ (set! (-> gp-0 quad) (-> self draw origin quad)) (+! (-> gp-0 y) 2048.0) (sound-play "v2ogre-boulder") - (process-spawn - part-tracker - :init part-tracker-init - (-> *part-group-id-table* 551) - -1 - #f - #f - #f - gp-0 - :to *entity-pool* - ) - ) - (send-event self 'trans-hook boulder4-trans-2) - ) + (process-spawn part-tracker :init part-tracker-init (-> *part-group-id-table* 551) -1 #f #f #f gp-0 :to *entity-pool*)) + (send-event self 'trans-hook boulder4-trans-2)) 0 - (none) - ) + (none)) (defstate ogreboss-village2-throw (ogreboss-village2) :trans ogreboss-village2-trans - :code (behavior () - (set! (-> self boulder) - (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *fireboulder-sg* #f :to self)) - ) - (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-pre-throw" 0) - (send-event (handle->process (-> self boulder)) 'draw #t) - (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) - (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) - (send-event - (handle->process (-> self boulder)) - 'eval - (lambda :behavior ogreboss-village2 - () - (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) - (set! (-> self part) v0-0) - v0-0 - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-pre-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((f0-9 (rand-float-gen))) - (cond - ((< 0.75 f0-9) - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder1" 0) - (send-event (handle->process (-> self boulder)) 'trans-hook boulder1-trans) - ) - ((< 0.5 f0-9) - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder2" 0) - (send-event (handle->process (-> self boulder)) 'trans-hook boulder2-trans) - ) - ((< 0.25 f0-9) - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder3" 0) - (send-event (handle->process (-> self boulder)) 'trans-hook boulder3-trans) - ) - (else - (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder4" 0) - (send-event (handle->process (-> self boulder)) 'trans-hook boulder4-trans) - ) - ) - ) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-throw-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (go ogreboss-village2-idle) - ) - :post ja-post - ) + :code + (behavior () + (set! (-> self boulder) + (ppointer->handle (manipy-spawn (-> self entity extra trans) (-> self entity) *fireboulder-sg* #f :to self))) + (send-event (handle->process (-> self boulder)) 'anim-mode 'play1) + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-pre-throw" 0) + (send-event (handle->process (-> self boulder)) 'draw #t) + (send-event (handle->process (-> self boulder)) 'origin-joint-index 4) + (send-event (handle->process (-> self boulder)) 'max-vis-dist 2048000.0) + (send-event (handle->process (-> self boulder)) + 'eval + (lambda :behavior ogreboss-village2 () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 564) self))) (set! (-> self part) v0-0) v0-0))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-pre-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (let ((f0-9 (rand-float-gen))) + (cond + ((< 0.75 f0-9) + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder1" 0) + (send-event (handle->process (-> self boulder)) 'trans-hook boulder1-trans)) + ((< 0.5 f0-9) + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder2" 0) + (send-event (handle->process (-> self boulder)) 'trans-hook boulder2-trans)) + ((< 0.25 f0-9) + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder3" 0) + (send-event (handle->process (-> self boulder)) 'trans-hook boulder3-trans)) + (else + (send-event (handle->process (-> self boulder)) 'art-joint-anim "fireboulder-boulder4" 0) + (send-event (handle->process (-> self boulder)) 'trans-hook boulder4-trans)))) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-throw-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (go ogreboss-village2-idle)) + :post ja-post) (defstate ogreboss-village2-idle (ogreboss-village2) :trans ogreboss-village2-trans - :code (behavior () - (loop - (ja-channel-push! 1 (seconds 0.1)) - (let ((v1-0 (rand-vu-int-range 0 2))) - (cond - ((zero? v1-0) - (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 140.0 0)) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 140.0 0))) - ) - (let ((gp-2 (current-time))) - (until (time-elapsed? gp-2 (seconds 0.167)) + :code + (behavior () + (loop (ja-channel-push! 1 (seconds 0.1)) + (let ((v1-0 (rand-vu-int-range 0 2))) + (cond + ((zero? v1-0) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 140.0 0)) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! ogreboss-village2-idle-ja - :num! (seek! (ja-aframe 168.0 0)) - :frame-num (ja-aframe 140.0 0) - ) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 168.0 0))) - ) - (let ((gp-5 (current-time))) - (until (time-elapsed? gp-5 (seconds 0.167)) + (ja :num! (seek! (ja-aframe 140.0 0)))) + (let ((gp-2 (current-time))) (until (time-elapsed? gp-2 (seconds 0.167)) (suspend))) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek! (ja-aframe 168.0 0)) :frame-num (ja-aframe 140.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek!) :frame-num (ja-aframe 168.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((= v1-0 1) - (ja-no-eval :group! ogreboss-village2-idle-alt-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - (else - (dotimes (gp-7 4) - (ja-no-eval :group! ogreboss-village2-idle-bored-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - ) - ) - (let ((f0-33 (rand-float-gen))) - (cond - ((< 0.6666667 f0-33) - (ja-channel-push! 1 (seconds 0.2)) - (ja-no-eval :group! ogreboss-village2-victory-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ((not (handle->process (-> self boulder))) - (go ogreboss-village2-throw) - ) - ) - ) - ) - ) - :post ja-post - ) + (ja :num! (seek! (ja-aframe 168.0 0)))) + (let ((gp-5 (current-time))) (until (time-elapsed? gp-5 (seconds 0.167)) (suspend))) + (ja-no-eval :group! ogreboss-village2-idle-ja :num! (seek!) :frame-num (ja-aframe 168.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((= v1-0 1) + (ja-no-eval :group! ogreboss-village2-idle-alt-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + (else + (dotimes (gp-7 4) + (ja-no-eval :group! ogreboss-village2-idle-bored-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))))) + (let ((f0-33 (rand-float-gen))) + (cond + ((< 0.6666667 f0-33) + (ja-channel-push! 1 (seconds 0.2)) + (ja-no-eval :group! ogreboss-village2-victory-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!)))) + ((not (handle->process (-> self boulder))) (go ogreboss-village2-throw)))))) + :post ja-post) (defmethod init-from-entity! ((this ogreboss-village2) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -1475,58 +1098,47 @@ (set! (-> s2-0 prim-core action) (collide-action solid)) (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) - (append-prim s3-0 s2-0) - ) - ) + (append-prim s3-0 s2-0))) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *ogreboss-village2-sg* '()) + (initialize-skeleton this *ogreboss-village2-sg* ()) (set-vector! (-> this root scale) 0.65 0.65 0.65 1.0) (transform-post) (set! (-> this root pause-adjust-distance) 122880.0) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this boulder) (the-as handle #f)) (go ogreboss-village2-idle) - (none) - ) + (none)) -(deftype villageb-ogreboss (ogreboss-village2) - () - ) +(deftype villageb-ogreboss (ogreboss-village2) ()) +(deftype villageb-water (water-anim) ()) -(deftype villageb-water (water-anim) - () - ) - - -(define ripple-for-villageb-water (new 'static 'ripple-wave-set - :count 3 - :converted #f - :normal-scale 6.0 - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 7.0 :xdiv 1 :speed 6.0) - (new 'static 'ripple-wave :scale 7.0 :xdiv -1 :zdiv 1 :speed 6.0) - (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 3.0) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-villageb-water + (new 'static + 'ripple-wave-set + :count 3 + :converted #f + :normal-scale 6.0 + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 7.0 :xdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 7.0 :xdiv -1 :zdiv 1 :speed 6.0) + (new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 3.0) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this villageb-water)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set-vector! (-> this draw color-mult) 0.01 0.45 0.5 0.75) (set! (-> v1-2 global-scale) 3072.0) (set! (-> v1-2 close-fade-dist) 163840.0) (set! (-> v1-2 far-fade-dist) 245760.0) - (set! (-> v1-2 waveform) ripple-for-villageb-water) - ) - (none) - ) + (set! (-> v1-2 waveform) ripple-for-villageb-water)) + (none)) diff --git a/goal_src/jak1/levels/village2/village2-part.gc b/goal_src/jak1/levels/village2/village2-part.gc index a484c16ea0..b959a0566e 100644 --- a/goal_src/jak1/levels/village2/village2-part.gc +++ b/goal_src/jak1/levels/village2/village2-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/gfx/sprite/sparticle/sparticle.gc") (require "engine/common-obs/generic-obs-h.gc") @@ -11,1975 +10,1866 @@ ;; DECOMP BEGINS -(deftype villageb-part (part-spawner) - () - ) - +(deftype villageb-part (part-spawner) ()) (defpartgroup group-village2-moth :id 264 :bounds (static-bspherem 0 0 0 3) - :parts ((sp-item 1129 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :binding 1127) - (sp-item 1127 :flags (start-dead launch-asap) :binding 1128) - (sp-item 1128 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1129 :fade-after (meters 120) :flags (bit1) :period (seconds 60.1) :length (seconds 0.017) :binding 1127) + (sp-item 1127 :flags (start-dead launch-asap) :binding 1128) + (sp-item 1128 :flags (is-3d start-dead)))) (defpart 1129 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0) - (:a 0.0) - (:timer (seconds 60)) - (:flags (bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0) + (:a 0.0) + (:timer (seconds 60)) + (:flags (bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1127 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters 0) (meters 16)) - (:z (meters 1.5)) - (:scale-x (meters 0.1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 60)) - (:flags (bit3 bit7)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1130) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters 0) (meters 16)) + (:z (meters 1.5)) + (:scale-x (meters 0.1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 60)) + (:flags (bit3 bit7)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1130))) (defpart 1130 - :init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111)) - (:vel-y (meters -0.0148148155) (meters 0.029629631)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:next-time (seconds 0.5) (seconds 1.497)) - (:next-launcher 1130) - ) - ) + :init-specs + ((:vel-x (meters -0.035555556) (meters 0.07111111)) + (:vel-y (meters -0.0148148155) (meters 0.029629631)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:next-time (seconds 0.5) (seconds 1.497)) + (:next-launcher 1130))) (defpart 1128 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 2.0) - (:scale-x (meters 0.4)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.4)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 128.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 2.0) + (:scale-x (meters 0.4)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.4)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 128.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit9 bit12)))) (defpartgroup group-village2-tableflys :id 265 :bounds (static-bspherem 0 3 0 10) - :parts ((sp-item 1133 :flags (launch-asap) :binding 1131) - (sp-item 1134 :flags (launch-asap) :binding 1131) - (sp-item 1135 :flags (launch-asap) :binding 1131) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) - (sp-item 1132 :flags (is-3d start-dead)) - (sp-item 1132 :flags (is-3d start-dead)) - (sp-item 1132 :flags (is-3d start-dead)) - ) - ) + :parts + ((sp-item 1133 :flags (launch-asap) :binding 1131) + (sp-item 1134 :flags (launch-asap) :binding 1131) + (sp-item 1135 :flags (launch-asap) :binding 1131) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1131 :flags (start-dead launch-asap) :binding 1132) + (sp-item 1132 :flags (is-3d start-dead)) + (sp-item 1132 :flags (is-3d start-dead)) + (sp-item 1132 :flags (is-3d start-dead)))) (defpart 1133 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 2)) - (:z (meters 5)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 2)) + (:z (meters 5)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1136 - :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 1136)) - ) + :init-specs ((:timer (seconds 1)) (:next-time (seconds 0.5)) (:next-launcher 1136))) (defpart 1134 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 4)) - (:y (meters 2)) - (:z (meters -2)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 4)) + (:y (meters 2)) + (:z (meters -2)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1135 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters -4)) - (:y (meters 2)) - (:z (meters -2)) - (:scale-x (meters 0.01)) - (:scale-y :copy scale-x) - (:a 128.0) - (:timer (seconds 1)) - (:flags (bit3)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters -4)) + (:y (meters 2)) + (:z (meters -2)) + (:scale-x (meters 0.01)) + (:scale-y :copy scale-x) + (:a 128.0) + (:timer (seconds 1)) + (:flags (bit3)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1131 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 1 2.0) - (:y (meters 0) (meters 16)) - (:z (meters 1) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0.0044444446) (meters 0.0044444446)) - (:vel-y (meters 0.008888889) (meters 0.008888889)) - (:vel-z (meters 0)) - (:timer (seconds 1)) - (:flags (bit7)) - (:next-time (seconds 0.5)) - (:next-launcher 1136) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 1 2.0) + (:y (meters 0) (meters 16)) + (:z (meters 1) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0.0044444446) (meters 0.0044444446)) + (:vel-y (meters 0.008888889) (meters 0.008888889)) + (:vel-z (meters 0)) + (:timer (seconds 1)) + (:flags (bit7)) + (:next-time (seconds 0.5)) + (:next-launcher 1136))) (defpart 1132 - :init-specs ((:texture (new 'static 'texture-id :index #x22 :page #x2)) - (:birth-func 'birth-func-copy-rot-color) - (:num 3.0) - (:scale-x (meters 0.15)) - (:rot-x (degrees -60) (degrees 300)) - (:scale-y (meters 0.15)) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 64.0 64.0) - (:timer (seconds 0.017)) - (:flags (bit2 bit9 bit12)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x22 :page #x2)) + (:birth-func 'birth-func-copy-rot-color) + (:num 3.0) + (:scale-x (meters 0.15)) + (:rot-x (degrees -60) (degrees 300)) + (:scale-y (meters 0.15)) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:timer (seconds 0.017)) + (:flags (bit2 bit9 bit12)))) (defpartgroup group-village2-flamepot :id 266 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.641) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.23) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.3) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.06) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.5) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-half :id 267 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1145 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1146 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1147 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1145 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1146 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1147 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-alt1 :id 268 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.26) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.45) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.76) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.59) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.04) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.26) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.45) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 1.76) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 3.59) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.04) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-alt2 :id 269 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.031) :length (seconds 0.2)) - (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.96) :length (seconds 0.73)) - (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.15) :length (seconds 0.3)) - (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.57) :length (seconds 2.23)) - (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.857) :length (seconds 0.1)) - (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1137 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1138 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.031) :length (seconds 0.2)) + (sp-item 1139 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1140 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.96) :length (seconds 0.73)) + (sp-item 1141 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.15) :length (seconds 0.3)) + (sp-item 1142 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.57) :length (seconds 2.23)) + (sp-item 1143 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 2.857) :length (seconds 0.1)) + (sp-item 1144 :fade-after (meters 50) :falloff-to (meters 60)))) (defpartgroup group-village2-flamepot-off :id 270 :bounds (static-bspherem 0 5 0 6) - :parts ((sp-item 1148 :fade-after (meters 100) :falloff-to (meters 100))) - ) + :parts ((sp-item 1148 :fade-after (meters 100) :falloff-to (meters 100)))) (defpart 1144 - :init-specs ((:num 0.4) - (:x (meters 1)) - (:rot-x 5) - (:r 4096.0) - (:g 2949.12) - (:b 3276.8) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.026666667)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1149) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 1)) + (:rot-x 5) + (:r 4096.0) + (:g 2949.12) + (:b 3276.8) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.026666667)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1149) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1149 - :init-specs ((:fade-b -5.4613333)) - ) + :init-specs ((:fade-b -5.4613333))) (defpart 1147 - :init-specs ((:num 0.15) - (:x (meters 0.4)) - (:rot-x 5) - (:r 4096.0) - (:g 2867.2) - (:b 3072.0) - (:vel-y (meters 0.01)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1150) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 0.4)) + (:rot-x 5) + (:r 4096.0) + (:g 2867.2) + (:b 3072.0) + (:vel-y (meters 0.01)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1150) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1150 - :init-specs ((:fade-b -3.4133334)) - ) + :init-specs ((:fade-b -3.4133334))) (defpart 1137 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.4) - (:x (meters -0.25) (meters 0.75)) - (:y (meters -0.25)) - (:z (meters -0.25) (meters 0.75)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.011666667) (meters 0.0075)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.4) + (:x (meters -0.25) (meters 0.75)) + (:y (meters -0.25)) + (:z (meters -0.25) (meters 0.75)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.011666667) (meters 0.0075)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1145 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.35 0.25) - (:x (meters -0.1) (meters 0.1)) - (:y (meters -0.25)) - (:z (meters -0.1) (meters 0.1)) - (:scale-x (meters 0.6) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.005) (meters 0.004166667)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000013333334)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.35 0.25) + (:x (meters -0.1) (meters 0.1)) + (:y (meters -0.25)) + (:z (meters -0.1) (meters 0.1)) + (:scale-x (meters 0.6) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.005) (meters 0.004166667)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000013333334)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1138 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.0) - (:x (meters 0) (meters 0.5)) - (:y (meters -0.25)) - (:z (meters 0) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.0) + (:x (meters 0) (meters 0.5)) + (:y (meters -0.25)) + (:z (meters 0) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1139 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.2) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.02) (meters 0.01)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.2) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.02) (meters 0.01)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1146 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06 0.06) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.0001)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06 0.06) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.0001)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1148 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.1) - (:x (meters -0.5) (meters 1)) - (:y (meters -0.25)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0055555557)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1151) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.1) + (:x (meters -0.5) (meters 1)) + (:y (meters -0.25)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0055555557)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1151) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1151 - :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1152)) - ) + :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1152))) (defpart 1152 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 1140 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.55) - (:x (meters -0.6) (meters 1.2)) - (:y (meters -0.25)) - (:z (meters -0.6) (meters 1.2)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.55) + (:x (meters -0.6) (meters 1.2)) + (:y (meters -0.25)) + (:z (meters -0.6) (meters 1.2)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1141 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.06 1 0.9) - (:x (meters -0.6) (meters 0.5)) - (:y (meters 0.75)) - (:z (meters -0.6) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.06 1 0.9) + (:x (meters -0.6) (meters 0.5)) + (:y (meters 0.75)) + (:z (meters -0.6) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1142 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 0.9) - (:x (meters -0.6) (meters 1.2)) - (:y (meters -0.25)) - (:z (meters -0.6) (meters 1)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.01) (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 0.9) + (:x (meters -0.6) (meters 1.2)) + (:y (meters -0.25)) + (:z (meters -0.6) (meters 1)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.01) (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1143 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1 1.5) - (:x (meters -0.25) (meters 0.75)) - (:y (meters 0.75)) - (:z (meters -0.5) (meters 0.5)) - (:scale-x (meters 1) (meters 0.9)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.02) 1 (meters 0.005)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1 1.5) + (:x (meters -0.25) (meters 0.75)) + (:y (meters 0.75)) + (:z (meters -0.5) (meters 0.5)) + (:scale-x (meters 1) (meters 0.9)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.02) 1 (meters 0.005)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpartgroup group-village2-fireboulder-off :id 634 :bounds (static-bspherem 0 4 0 10.5) - :parts ((sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)))) (defpartgroup group-village2-fireboulder :id 271 :duration (seconds 60) :bounds (static-bspherem 0 4 0 10.5) - :parts ((sp-item 1153 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1154 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.2)) - (sp-item 1155 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1156 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1157 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1158 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.3)) - (sp-item 1159 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1160 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1161 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1162 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.1)) - (sp-item 1163 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1164 :fade-after (meters 50) :falloff-to (meters 50)) - (sp-item 1165 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1166 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.8) :length (seconds 0.25)) - (sp-item 1167 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1168 :fade-after (meters 200) :falloff-to (meters 240)) - (sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) - (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)) - ) - ) + :parts + ((sp-item 1153 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1154 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1) :length (seconds 0.2)) + (sp-item 1155 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1156 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1157 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1158 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 2) :length (seconds 0.3)) + (sp-item 1159 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1160 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1161 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1162 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 1.5) :length (seconds 0.1)) + (sp-item 1163 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1164 :fade-after (meters 50) :falloff-to (meters 50)) + (sp-item 1165 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1166 :fade-after (meters 100) :falloff-to (meters 120) :period (seconds 0.8) :length (seconds 0.25)) + (sp-item 1167 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1168 :fade-after (meters 200) :falloff-to (meters 240)) + (sp-item 1169 :fade-after (meters 80) :falloff-to (meters 100)) + (sp-item 1170 :fade-after (meters 80) :falloff-to (meters 100)))) (defpart 1156 - :init-specs ((:num 0.15) - (:x (meters 1.5) (meters 1)) - (:y (meters 6) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 1.5) (meters 1)) + (:y (meters 6) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1171 - :init-specs ((:fade-b 13.653334)) - ) + :init-specs ((:fade-b 13.653334))) (defpart 1160 - :init-specs ((:num 0.15) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 5.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 5.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1164 - :init-specs ((:num 0.15) - (:x (meters 2.7)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 2)) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 5324.8) - (:vel-x (meters -0.006666667) (meters 0.013333334)) - (:vel-y (meters 0.026666667)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:timer (seconds 0.6)) - (:flags (aux-list)) - (:next-time (seconds 0.4)) - (:next-launcher 1171) - ) - ) + :init-specs + ((:num 0.15) + (:x (meters 2.7)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 2)) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 5324.8) + (:vel-x (meters -0.006666667) (meters 0.013333334)) + (:vel-y (meters 0.026666667)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:timer (seconds 0.6)) + (:flags (aux-list)) + (:next-time (seconds 0.4)) + (:next-launcher 1171))) (defpart 1153 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1.2) - (:x (meters 1.5) (meters 1)) - (:y (meters 5) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1.2) + (:x (meters 1.5) (meters 1)) + (:y (meters 5) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1154 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.7) - (:x (meters 1.5) (meters 0.7)) - (:y (meters 6) (meters 0.6)) - (:z (meters 0.5) (meters 1.8)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.7) + (:x (meters 1.5) (meters 0.7)) + (:y (meters 6) (meters 0.6)) + (:z (meters 0.5) (meters 1.8)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1155 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.05 0.2) - (:x (meters 1.5) (meters 1)) - (:y (meters 6) (meters 1)) - (:z (meters 0.5) (meters 2.5)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 20.0 12.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.05 0.2) + (:x (meters 1.5) (meters 1)) + (:y (meters 6) (meters 1)) + (:z (meters 0.5) (meters 2.5)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 20.0 12.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1172 - :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1173)) - ) + :init-specs ((:fade-g 0.53333336) (:fade-b 1.0666667) (:next-time (seconds 0.4)) (:next-launcher 1173))) (defpart 1173 - :init-specs ((:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-g 0.0) (:fade-b 0.0))) (defpart 1157 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1.2) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 4.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1.2) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 4.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1158 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 1 1.2) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 4.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 1 1.2) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 4.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1159 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters -3.5) (meters 0.5)) - (:y (meters 5.5) (meters 1)) - (:z (meters -1) (meters 1)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 5)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters -3.5) (meters 0.5)) + (:y (meters 5.5) (meters 1)) + (:z (meters -1) (meters 1)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 5)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1161 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.7 1.5) - (:x (meters 2.7)) - (:y (meters 3) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.7 1.5) + (:x (meters 2.7)) + (:y (meters 3) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1162 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6 1 1.4) - (:x (meters 2.7)) - (:y (meters 3) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -15)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6 1 1.4) + (:x (meters 2.7)) + (:y (meters 3) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -15)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1163 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters 2.7)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 2)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -5)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters 2.7)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 2)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -5)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1165 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1.5) - (:x (meters -3) (meters 1)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.016666668) (meters 0.01)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1.5) + (:x (meters -3) (meters 1)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.016666668) (meters 0.01)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1166 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.65 1 1.5) - (:x (meters -3) (meters 1)) - (:y (meters 4) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) - (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5) - (:accel-y (meters -0.000006666667)) - (:timer (seconds 0.5)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.65 1 1.5) + (:x (meters -3) (meters 1)) + (:y (meters 4) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.026666667) 1 (meters 0.006666667)) + (:rotvel-z (degrees -3.0000002) (degrees 6.0000005)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5) + (:accel-y (meters -0.000006666667)) + (:timer (seconds 0.5)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1167 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.08 0.25) - (:x (meters -3) (meters 1)) - (:y (meters 5) (meters 1)) - (:z (meters -3) (meters 1.5)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 32.0) - (:vel-y (meters 0.023333333) (meters 0.01)) - (:scalevel-x (meters 0.005)) - (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.0627451) - (:accel-y (meters -0.00026666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.5) (seconds 0.197)) - (:next-launcher 1172) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.08 0.25) + (:x (meters -3) (meters 1)) + (:y (meters 5) (meters 1)) + (:z (meters -3) (meters 1.5)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 32.0) + (:vel-y (meters 0.023333333) (meters 0.01)) + (:scalevel-x (meters 0.005)) + (:rotvel-z (degrees -0.99999994) (degrees 1.9999999)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.0627451) + (:accel-y (meters -0.00026666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.5) (seconds 0.197)) + (:next-launcher 1172) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees -45)))) (defpart 1168 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.1 0.4) - (:x (meters 1.5) (meters 1)) - (:y (meters -0.5)) - (:z (meters 0.5) (meters 1)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a -0.5416667) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees -45)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0) 2 (degrees -102)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.1 0.4) + (:x (meters 1.5) (meters 1)) + (:y (meters -0.5)) + (:z (meters 0.5) (meters 1)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a -0.5416667) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees -45)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0) 2 (degrees -102)))) (defpart 1169 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.15) - (:y (meters 4)) - (:scale-x (meters 2.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.15) + (:y (meters 4)) + (:scale-x (meters 2.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) (defpart 1174 - :init-specs ((:vel-y (meters 0.013333334)) - (:fade-a 0.0) - (:accel-y (meters -0.000000097656255)) - (:next-time (seconds 1)) - (:next-launcher 1175) - ) - ) + :init-specs + ((:vel-y (meters 0.013333334)) + (:fade-a 0.0) + (:accel-y (meters -0.000000097656255)) + (:next-time (seconds 1)) + (:next-launcher 1175))) (defpart 1175 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.10666667))) (defpart 1170 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.3) - (:y (meters 0)) - (:scale-x (meters 2.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 48.0) - (:b 48.0) - (:a 0.0) - (:vel-y (meters 0.0073333336)) - (:scalevel-x (meters 0.0013333333)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.4) - (:accel-y (meters 0.00013333333)) - (:friction 0.995) - (:timer (seconds 5.25)) - (:flags (bit2)) - (:next-time (seconds 0.25)) - (:next-launcher 1176) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.3) + (:y (meters 0)) + (:scale-x (meters 2.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 48.0) + (:b 48.0) + (:a 0.0) + (:vel-y (meters 0.0073333336)) + (:scalevel-x (meters 0.0013333333)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.4) + (:accel-y (meters 0.00013333333)) + (:friction 0.995) + (:timer (seconds 5.25)) + (:flags (bit2)) + (:next-time (seconds 0.25)) + (:next-launcher 1176) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 2)))) (defpart 1176 - :init-specs ((:fade-a 0.0) (:next-time (seconds 2)) (:next-launcher 1177)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 2)) (:next-launcher 1177))) (defpart 1177 - :init-specs ((:vel-x (meters 0)) - (:vel-y (meters 0.011666667)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.10666667) - (:fade-g -0.08) - (:fade-b -0.08) - (:fade-a -0.053333335) - (:accel-y (meters 0.000033333334)) - (:timer (seconds 2)) - ) - ) + :init-specs + ((:vel-x (meters 0)) + (:vel-y (meters 0.011666667)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.10666667) + (:fade-g -0.08) + (:fade-b -0.08) + (:fade-a -0.053333335) + (:accel-y (meters 0.000033333334)) + (:timer (seconds 2)))) (defpartgroup group-village2-window-flames-45 :id 272 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1178 :fade-after (meters 300)) - (sp-item 1179 :fade-after (meters 300)) - (sp-item 1179 :fade-after (meters 180)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) - (sp-item 1180 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) - (sp-item 1181 :fade-after (meters 300)) - (sp-item 1182 :fade-after (meters 300)) - (sp-item 1182 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1178 :fade-after (meters 300)) + (sp-item 1179 :fade-after (meters 300)) + (sp-item 1179 :fade-after (meters 180)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) + (sp-item 1180 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) + (sp-item 1181 :fade-after (meters 300)) + (sp-item 1182 :fade-after (meters 300)) + (sp-item 1182 :fade-after (meters 180)))) (defpart 1178 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.035) - (:x (meters 4) (meters 12)) - (:y (meters 4) (meters 8)) - (:z (meters 8)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.035) + (:x (meters 4) (meters 12)) + (:y (meters 4) (meters 8)) + (:z (meters 8)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees -15)))) (defpart 1183 - :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 1184)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 1) (seconds 0.997)) (:next-launcher 1184))) (defpart 1184 - :init-specs ((:fade-a -0.08)) - ) + :init-specs ((:fade-a -0.08))) (defpart 1179 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 0) (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 0) (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees -15)))) (defpart 1185 - :init-specs ((:fade-a -0.85333335)) - ) + :init-specs ((:fade-a -0.85333335))) (defpart 1180 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.8 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 255.0) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:fade-a -0.048484847) - (:accel-x (meters -0.00008333333) (meters 0.00016666666)) - (:accel-y (meters -0.00066666666)) - (:accel-z (meters -0.00008333333) (meters 0.00016666666)) - (:timer (seconds 2.8)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.8 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 255.0) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:fade-a -0.048484847) + (:accel-x (meters -0.00008333333) (meters 0.00016666666)) + (:accel-y (meters -0.00066666666)) + (:accel-z (meters -0.00008333333) (meters 0.00016666666)) + (:timer (seconds 2.8)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees -15)))) (defpart 1181 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -6) (meters 16)) - (:y (meters 8) (meters 8)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -6) (meters 16)) + (:y (meters 8) (meters 8)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 15)))) (defpart 1182 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters 2) (meters 4)) - (:y (meters 4) (meters 6)) - (:z (meters -8) 1 (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0025) (meters 0.0025)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters 2) (meters 4)) + (:y (meters 4) (meters 6)) + (:z (meters -8) 1 (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0025) (meters 0.0025)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 5)))) (defpartgroup group-village2-window-flames-41 :id 273 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1186 :fade-after (meters 300)) - (sp-item 1187 :fade-after (meters 300)) - (sp-item 1187 :fade-after (meters 180)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) - (sp-item 1188 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) - (sp-item 1189 :fade-after (meters 300)) - (sp-item 1190 :fade-after (meters 300)) - (sp-item 1190 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1186 :fade-after (meters 300)) + (sp-item 1187 :fade-after (meters 300)) + (sp-item 1187 :fade-after (meters 180)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 7.2) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 2.23) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 14.265) :length (seconds 0.017)) + (sp-item 1188 :fade-after (meters 200) :period (seconds 4.127) :length (seconds 0.017)) + (sp-item 1189 :fade-after (meters 300)) + (sp-item 1190 :fade-after (meters 300)) + (sp-item 1190 :fade-after (meters 180)))) (defpart 1186 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters 6) (meters 12)) - (:y (meters 4) (meters 8)) - (:z (meters 8)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters 6) (meters 12)) + (:y (meters 4) (meters 8)) + (:z (meters 8)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 82)))) (defpart 1187 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 0) (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 0) (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 82)))) (defpart 1188 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.8 0.4) - (:x (meters 10) (meters 4)) - (:y (meters 6)) - (:z (meters 7) 1 (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 2 128.0) - (:b 0.0) - (:a 255.0) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:fade-a -0.048484847) - (:accel-x (meters -0.00008333333) (meters 0.00016666666)) - (:accel-y (meters -0.00066666666)) - (:accel-z (meters -0.00008333333) (meters 0.00016666666)) - (:timer (seconds 2.7)) - (:flags (bit2 bit3 bit14)) - (:rotate-y (degrees 82)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.8 0.4) + (:x (meters 10) (meters 4)) + (:y (meters 6)) + (:z (meters 7) 1 (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 2 128.0) + (:b 0.0) + (:a 255.0) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:fade-a -0.048484847) + (:accel-x (meters -0.00008333333) (meters 0.00016666666)) + (:accel-y (meters -0.00066666666)) + (:accel-z (meters -0.00008333333) (meters 0.00016666666)) + (:timer (seconds 2.7)) + (:flags (bit2 bit3 bit14)) + (:rotate-y (degrees 82)))) (defpart 1189 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -2) (meters 16)) - (:y (meters 8) (meters 8)) - (:z (meters -6) (meters 6)) - (:scale-x (meters 4) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 112.00001)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -2) (meters 16)) + (:y (meters 8) (meters 8)) + (:z (meters -6) (meters 6)) + (:scale-x (meters 4) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 112.00001)))) (defpart 1190 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters 6) (meters 4)) - (:y (meters 4) (meters 6)) - (:z (meters -8) 1 (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0025) (meters 0.0025)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:rotate-y (degrees 106)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters 6) (meters 4)) + (:y (meters 4) (meters 6)) + (:z (meters -8) 1 (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0025) (meters 0.0025)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:rotate-y (degrees 106)))) (defpartgroup group-village2-big-boulder :id 274 :bounds (static-bspherem 8 -8 0 36) - :parts ((sp-item 1191 :fade-after (meters 300)) - (sp-item 1192 :fade-after (meters 300)) - (sp-item 1192 :fade-after (meters 180)) - ) - ) + :parts + ((sp-item 1191 :fade-after (meters 300)) + (sp-item 1192 :fade-after (meters 300)) + (sp-item 1192 :fade-after (meters 180)))) (defpart 1191 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.015 0.03) - (:x (meters -2) (meters 4)) - (:y (meters 8) (meters 4)) - (:z (meters -2) (meters 4)) - (:scale-x (meters 8) 1 (meters 10)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 32.0) - (:g 32.0) - (:b 32.0) - (:a 0.0 8.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:accel-y (meters 0.00006666667)) - (:timer (seconds 6)) - (:flags (bit2)) - (:next-time (seconds 1)) - (:next-launcher 1183) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.015 0.03) + (:x (meters -2) (meters 4)) + (:y (meters 8) (meters 4)) + (:z (meters -2) (meters 4)) + (:scale-x (meters 8) 1 (meters 10)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 32.0) + (:g 32.0) + (:b 32.0) + (:a 0.0 8.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:accel-y (meters 0.00006666667)) + (:timer (seconds 6)) + (:flags (bit2)) + (:next-time (seconds 1)) + (:next-launcher 1183) + (:rotate-y (degrees 0)))) (defpart 1192 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4 0.4) - (:x (meters 2)) - (:y (meters 4)) - (:scale-x (meters 2) (meters 5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 0.0) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) - (:scalevel-y :copy scalevel-x) - (:fade-a 4.266667) - (:accel-y (meters 0.0023333333) (meters 0.0026666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.1)) - (:next-launcher 1185) - (:conerot-x (degrees 0) (degrees 90)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4 0.4) + (:x (meters 2)) + (:y (meters 4)) + (:scale-x (meters 2) (meters 5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 0.0) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.020000001) (degrees 0.040000003)) + (:scalevel-y :copy scalevel-x) + (:fade-a 4.266667) + (:accel-y (meters 0.0023333333) (meters 0.0026666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.1)) + (:next-launcher 1185) + (:conerot-x (degrees 0) (degrees 90)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)) + (:rotate-y (degrees 0)))) (defpartgroup group-village2-sages-controlpanel :id 275 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1193 :fade-after (meters 30) :period (seconds 2.455) :length (seconds 0.035)) - (sp-item 1193 :fade-after (meters 30) :period (seconds 5.655) :length (seconds 0.035)) - (sp-item 1193 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) - (sp-item 1194 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) - (sp-item 1194 :fade-after (meters 30) :period (seconds 7.21) :length (seconds 0.035)) - (sp-item 1195 :fade-after (meters 40) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 1193 :fade-after (meters 30) :period (seconds 2.455) :length (seconds 0.035)) + (sp-item 1193 :fade-after (meters 30) :period (seconds 5.655) :length (seconds 0.035)) + (sp-item 1193 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) + (sp-item 1194 :fade-after (meters 30) :period (seconds 16.93) :length (seconds 0.035)) + (sp-item 1194 :fade-after (meters 30) :period (seconds 7.21) :length (seconds 0.035)) + (sp-item 1195 :fade-after (meters 40) :falloff-to (meters 50)))) (defpart 1195 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.4) - (:x (meters 0.9)) - (:y (meters 0.25)) - (:z (meters -1.2)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.53333336) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 1196) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.4) + (:x (meters 0.9)) + (:y (meters 0.25)) + (:z (meters -1.2)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.53333336) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 1196) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1196 - :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667))) (defpart 1193 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 16.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:x (meters 0.9)) - (:y (meters 0.05)) - (:z (meters -0.9)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 16.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:x (meters 0.9)) + (:y (meters 0.05)) + (:z (meters -0.9)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -45) (degrees 180)))) (defpart 1194 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 4.0 16.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:x (meters -1.2)) - (:y (meters -0.5)) - (:z (meters 1.2)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 64.0 64.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.6) - (:accel-y (meters -0.0016666667)) - (:friction 0.94) - (:timer (seconds 0.3) (seconds 0.197)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -45) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 4.0 16.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:x (meters -1.2)) + (:y (meters -0.5)) + (:z (meters 1.2)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 64.0 64.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.6) + (:accel-y (meters -0.0016666667)) + (:friction 0.94) + (:timer (seconds 0.3) (seconds 0.197)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -45) (degrees 180)))) (defpartgroup group-village2-sages-machine :id 276 :bounds (static-bspherem 0 0 0 8) - :parts ((sp-item 1199 :fade-after (meters 40) :period (seconds 2.56) :length (seconds 0.035) :binding 1197) - (sp-item 1199 :fade-after (meters 40) :period (seconds 3.655) :length (seconds 0.035) :binding 1198) - (sp-item 1199 :fade-after (meters 40) :period (seconds 7.125) :length (seconds 0.035) :binding 1197) - (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1198 :fade-after (meters 40) :flags (start-dead)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 1) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 1.567) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 2.045) :length (seconds 0.017)) - (sp-item 1200 :fade-after (meters 40) :period (seconds 4.455) :length (seconds 0.017)) - (sp-item 1201 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 1202 :fade-after (meters 40)) - (sp-item 1203 :fade-after (meters 40) :falloff-to (meters 50)) - (sp-item 1204 :fade-after (meters 40) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 1199 :fade-after (meters 40) :period (seconds 2.56) :length (seconds 0.035) :binding 1197) + (sp-item 1199 :fade-after (meters 40) :period (seconds 3.655) :length (seconds 0.035) :binding 1198) + (sp-item 1199 :fade-after (meters 40) :period (seconds 7.125) :length (seconds 0.035) :binding 1197) + (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1197 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1198 :fade-after (meters 40) :flags (start-dead)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 1) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 1.567) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 2.045) :length (seconds 0.017)) + (sp-item 1200 :fade-after (meters 40) :period (seconds 4.455) :length (seconds 0.017)) + (sp-item 1201 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 1202 :fade-after (meters 40)) + (sp-item 1203 :fade-after (meters 40) :falloff-to (meters 50)) + (sp-item 1204 :fade-after (meters 40) :falloff-to (meters 50)))) (defpart 1201 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.5 1.0) - (:x (meters -0.75)) - (:y (meters -0.8)) - (:z (meters 2.6)) - (:scale-x (meters 0.2) (meters 0.4)) - (:scale-y :copy scale-x) - (:r 32.0 32.0) - (:g 32.0 32.0) - (:b 128.0) - (:a 64.0 64.0) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.06) - (:fade-a -0.18) - (:timer (seconds 0.1) (seconds 1.497)) - (:flags (bit2 bit3 bit14)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -120) (degrees 210)) - (:conerot-radius (meters 0.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.5 1.0) + (:x (meters -0.75)) + (:y (meters -0.8)) + (:z (meters 2.6)) + (:scale-x (meters 0.2) (meters 0.4)) + (:scale-y :copy scale-x) + (:r 32.0 32.0) + (:g 32.0 32.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.06) + (:fade-a -0.18) + (:timer (seconds 0.1) (seconds 1.497)) + (:flags (bit2 bit3 bit14)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -120) (degrees 210)) + (:conerot-radius (meters 0.3)))) (defpart 1202 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:x (meters -0.75)) - (:y (meters -0.8)) - (:z (meters 2.6)) - (:scale-x (meters 2) (meters 2.4)) - (:scale-y :copy scale-x) - (:r 32.0 64.0) - (:g 32.0 64.0) - (:b 128.0 128.0) - (:a 32.0 64.0) - (:scalevel-x (meters -0.00055555557)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 0.017)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:x (meters -0.75)) + (:y (meters -0.8)) + (:z (meters 2.6)) + (:scale-x (meters 2) (meters 2.4)) + (:scale-y :copy scale-x) + (:r 32.0 64.0) + (:g 32.0 64.0) + (:b 128.0 128.0) + (:a 32.0 64.0) + (:scalevel-x (meters -0.00055555557)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 0.017)) + (:flags (bit2 bit3 bit14)))) (defpart 1200 - :init-specs ((:texture (new 'static 'texture-id :index #x1f :page #x2)) - (:num 1.0 0.5) - (:x (meters -0.7)) - (:y (meters -0.7)) - (:z (meters 2.6)) - (:scale-x (meters 4) (meters 3)) - (:rot-x 4) - (:rot-z (degrees 60) (degrees 60)) - (:scale-y (meters 0.4) (meters 0.4)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.6) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 1205) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1f :page #x2)) + (:num 1.0 0.5) + (:x (meters -0.7)) + (:y (meters -0.7)) + (:z (meters 2.6)) + (:scale-x (meters 4) (meters 3)) + (:rot-x 4) + (:rot-z (degrees 60) (degrees 60)) + (:scale-y (meters 0.4) (meters 0.4)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.6) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 1205))) (defpart 1205 - :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-a -2.1333334)) - ) + :init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0666667) (:fade-g -1.0666667) (:fade-a -2.1333334))) (defpart 1203 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.4) - (:x (meters -1.25)) - (:y (meters 0)) - (:z (meters 0)) - (:scale-x (meters 1) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0) - (:b 64.0 32.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.53333336) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.1) (seconds 0.297)) - (:next-launcher 1206) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.4) + (:x (meters -1.25)) + (:y (meters 0)) + (:z (meters 0)) + (:scale-x (meters 1) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0) + (:b 64.0 32.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.53333336) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.1) (seconds 0.297)) + (:next-launcher 1206) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 1206 - :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667) (:friction 0.95)) - ) + :init-specs ((:fade-r -0.053333335) (:fade-g -0.053333335) (:fade-b -0.053333335) (:fade-a -0.10666667) (:friction 0.95))) (defpart 1204 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.8) - (:x (meters -0.7)) - (:y (meters -0.7)) - (:z (meters 2.6)) - (:scale-x (meters 0.5) (meters 0.25)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 64.0 32.0) - (:g 64.0 32.0) - (:b 64.0) - (:a 32.0 32.0) - (:vel-y (meters 0.0033333334) (meters 0.0033333334)) - (:scalevel-x (meters 0.0022222223)) - (:rotvel-z (degrees -0.4) (degrees 0.8)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.053333335) - (:fade-g -0.053333335) - (:fade-b -0.053333335) - (:fade-a -0.10666667) - (:friction 0.99) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees -4) 4 (degrees 2)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.8) + (:x (meters -0.7)) + (:y (meters -0.7)) + (:z (meters 2.6)) + (:scale-x (meters 0.5) (meters 0.25)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 64.0 32.0) + (:g 64.0 32.0) + (:b 64.0) + (:a 32.0 32.0) + (:vel-y (meters 0.0033333334) (meters 0.0033333334)) + (:scalevel-x (meters 0.0022222223)) + (:rotvel-z (degrees -0.4) (degrees 0.8)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.053333335) + (:fade-g -0.053333335) + (:fade-b -0.053333335) + (:fade-a -0.10666667) + (:friction 0.99) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees -4) 4 (degrees 2)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0)))) (defpart 1199 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:scale-x (meters 1)) - (:scale-y :copy scale-x) - (:r 64.0) - (:g 64.0) - (:b 64.0) - (:a 128.0) - (:fade-a -6.4) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 180)) - (:conerot-y (degrees -60) (degrees 120)) - (:conerot-radius (meters 1.1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:scale-x (meters 1)) + (:scale-y :copy scale-x) + (:r 64.0) + (:g 64.0) + (:b 64.0) + (:a 128.0) + (:fade-a -6.4) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 180)) + (:conerot-y (degrees -60) (degrees 120)) + (:conerot-radius (meters 1.1)))) (defpart 1197 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 8.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:fade-a -0.4) - (:accel-y (meters -0.0016666667)) - (:friction 0.92) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -180) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 8.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:fade-a -0.4) + (:accel-y (meters -0.0016666667)) + (:friction 0.92) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -180) (degrees 180)))) (defpart 1198 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 2.0 6.0) - (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) - (:scale-x (meters 0.1) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 128.0) - (:b 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.013333334) (meters 0.08)) - (:scalevel-x (meters -0.00016666666)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.2) - (:fade-b -0.2) - (:accel-y (meters -0.002)) - (:friction 0.92) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:userdata 91750.4) - (:func 'check-drop-level-sagehut2) - (:conerot-x (degrees 0) (degrees 120)) - (:conerot-y (degrees -180) (degrees 180)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 2.0 6.0) + (:sound (static-sound-spec "spark" :num 0.1 :volume 100.0)) + (:scale-x (meters 0.1) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 128.0) + (:b 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.013333334) (meters 0.08)) + (:scalevel-x (meters -0.00016666666)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.2) + (:fade-b -0.2) + (:accel-y (meters -0.002)) + (:friction 0.92) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:userdata 91750.4) + (:func 'check-drop-level-sagehut2) + (:conerot-x (degrees 0) (degrees 120)) + (:conerot-y (degrees -180) (degrees 180)))) (defpart 1207 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.0 3.0) - (:scale-x (meters 0.075) (meters 0.075)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0) - (:a 32.0 96.0) - (:vel-y (meters 0.011666667) (meters 0.0033333334)) - (:fade-a -0.85333335) - (:accel-y (meters -0.00016666666)) - (:timer (seconds 1)) - (:flags (bit2 bit14)) - (:conerot-x (degrees 50.000004) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.0 3.0) + (:scale-x (meters 0.075) (meters 0.075)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0) + (:a 32.0 96.0) + (:vel-y (meters 0.011666667) (meters 0.0033333334)) + (:fade-a -0.85333335) + (:accel-y (meters -0.00016666666)) + (:timer (seconds 1)) + (:flags (bit2 bit14)) + (:conerot-x (degrees 50.000004) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)))) (defun check-drop-level-sagehut2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector)) (when (< (-> arg2 y) (-> arg1 user-float)) (let ((gp-0 (new 'stack-no-clear 'vector))) (sp-kill-particle arg0 arg1) - (if (< (rand-float-gen) 0.25) - (sound-play "water-drop") - ) + (if (< (rand-float-gen) 0.25) (sound-play "water-drop")) (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0) - (launch-particles (-> *part-id-table* 1207) gp-0 :rate 1.0) - ) - ) - (none) - ) + (launch-particles (-> *part-id-table* 1207) gp-0 :rate 1.0))) + (none)) (defpartgroup group-village2-fireboulder-hover :id 678 :duration (seconds 3) :flags (use-local-clock) :bounds (static-bspherem 0 0 0 16) - :parts ((sp-item 2792 :fade-after (meters 100) :falloff-to (meters 100) :binding 2791) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2791 :flags (bit1 start-dead launch-asap)) - (sp-item 2793) - (sp-item 2794 :falloff-to (meters 400)) - (sp-item 2795 :falloff-to (meters 400)) - (sp-item 2796 :falloff-to (meters 400)) - ) - ) + :parts + ((sp-item 2792 :fade-after (meters 100) :falloff-to (meters 100) :binding 2791) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2791 :flags (bit1 start-dead launch-asap)) + (sp-item 2793) + (sp-item 2794 :falloff-to (meters 400)) + (sp-item 2795 :falloff-to (meters 400)) + (sp-item 2796 :falloff-to (meters 400)))) (defpart 2795 - :init-specs ((:texture (new 'static 'texture-id :index #x23 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 12.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -45) (degrees 180)) - (:scale-y (meters 0.5) (meters 0.2)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.5) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x23 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 12.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -45) (degrees 180)) + (:scale-y (meters 0.5) (meters 0.2)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.5) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2794 - :init-specs ((:texture (new 'static 'texture-id :index #x24 :page #x2)) - (:num 0.2 2.0) - (:scale-x (meters 12.5) (meters 3.5)) - (:rot-x 4) - (:rot-z (degrees -45) (degrees 180)) - (:scale-y (meters 0.5) (meters 0.1)) - (:r 64.0) - (:g 64.0) - (:b 128.0) - (:a 128.0) - (:fade-a -1.5) - (:timer (seconds 0.3)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.035)) - (:next-launcher 146) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x24 :page #x2)) + (:num 0.2 2.0) + (:scale-x (meters 12.5) (meters 3.5)) + (:rot-x 4) + (:rot-z (degrees -45) (degrees 180)) + (:scale-y (meters 0.5) (meters 0.1)) + (:r 64.0) + (:g 64.0) + (:b 128.0) + (:a 128.0) + (:fade-a -1.5) + (:timer (seconds 0.3)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.035)) + (:next-launcher 146))) (defpart 2793 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:x (meters -0.001) (meters 0.002)) - (:y (meters -0.001) (meters 0.002)) - (:z (meters -0.001) (meters 0.002)) - (:scale-x (meters 14)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 255.0) - (:a 64.0 64.0) - (:vel-y (meters 0)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:fade-a -3.2) - (:timer (seconds 0.135)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:x (meters -0.001) (meters 0.002)) + (:y (meters -0.001) (meters 0.002)) + (:z (meters -0.001) (meters 0.002)) + (:scale-x (meters 14)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 255.0) + (:a 64.0 64.0) + (:vel-y (meters 0)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:fade-a -3.2) + (:timer (seconds 0.135)) + (:flags (bit2 bit3)))) (defpart 2792 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:scale-x (meters 1) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 255.0) - (:b 128.0 128.0) - (:a 32.0 32.0) - (:scalevel-x (meters -0.0033333334)) - (:scalevel-y :copy scalevel-x) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:scale-x (meters 1) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 255.0) + (:b 128.0 128.0) + (:a 32.0 32.0) + (:scalevel-x (meters -0.0033333334)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit14)))) (defpart 2791 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 4) (meters 1)) - (:scale-x (meters 0.5) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 0.0) - (:g 0.0 128.0) - (:b 128.0 128.0) - (:a 128.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) - (:vel-y (meters 0) (meters 0.053333335)) - (:vel-z (meters 0)) - (:accel-z (meters 0)) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit7 bit14)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 4) (meters 1)) + (:scale-x (meters 0.5) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 0.0) + (:g 0.0 128.0) + (:b 128.0 128.0) + (:a 128.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) 1 (meters 0.053333335)) + (:vel-y (meters 0) (meters 0.053333335)) + (:vel-z (meters 0)) + (:accel-z (meters 0)) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit7 bit14)))) diff --git a/goal_src/jak1/levels/village2/village2-part2.gc b/goal_src/jak1/levels/village2/village2-part2.gc index e13d4a19e0..d9643856e0 100644 --- a/goal_src/jak1/levels/village2/village2-part2.gc +++ b/goal_src/jak1/levels/village2/village2-part2.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-launcher-h.gc") @@ -13,3138 +12,3023 @@ ;; DECOMP BEGINS (defpart 1208 - :init-specs ((:fade-a -0.10666667)) - ) + :init-specs ((:fade-a -0.10666667))) (defpart 1209 - :init-specs ((:fade-a -0.16)) - ) + :init-specs ((:fade-a -0.16))) (defpart 1210 - :init-specs ((:fade-a -2.6666667)) - ) + :init-specs ((:fade-a -2.6666667))) (defpartgroup group-village2-waterfall-29 :id 277 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1211) - (sp-item 1211 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1211 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1212 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1213 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1214) - (sp-item 1214 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1214 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1215 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1216 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1217) - (sp-item 1217 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1217 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1218 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1219 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1220) - (sp-item 1220 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1220 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1221 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1222 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1223) - (sp-item 1223 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1223 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1224) - (sp-item 1224 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1224 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1225 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1226 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1227 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1228) - (sp-item 1228 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1228 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1229 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1230) - (sp-item 1230 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1230 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1231 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1232) - (sp-item 1232 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1232 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1233 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1234) - (sp-item 1234 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1234 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1235) - (sp-item 1235 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1235 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1236 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1237 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1238 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1239 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1240) - (sp-item 1240 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1240 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1241 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1242 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1211) + (sp-item 1211 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1211 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1212 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1213 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1214) + (sp-item 1214 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1214 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1215 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1216 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1217) + (sp-item 1217 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1217 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1218 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1219 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1220) + (sp-item 1220 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1220 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1221 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1222 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1223) + (sp-item 1223 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1223 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1224) + (sp-item 1224 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1224 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1225 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1226 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1227 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1228) + (sp-item 1228 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1228 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1229 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1230) + (sp-item 1230 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1230 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1231 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1232) + (sp-item 1232 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1232 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1233 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1234) + (sp-item 1234 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1234 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1235) + (sp-item 1235 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1235 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1236 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1237 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1238 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1239 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1240) + (sp-item 1240 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1240 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1241 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1242 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 1211 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.7)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.7)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -30)))) (defpart 1214 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.7)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.7)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1217 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.8) - (:x (meters -2) (meters 1)) - (:y (meters 24) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.8) + (:x (meters -2) (meters 1)) + (:y (meters 24) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -110)))) (defpart 1220 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.8) - (:x (meters -4) (meters 8)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.016666668)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 0.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.8) + (:x (meters -4) (meters 8)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 0.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1223 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -1) (meters 4)) - (:y (meters 28.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.013333334)) - (:vel-y (meters 0.006666667) (meters 0.016666668)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 0.55)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -1) (meters 4)) + (:y (meters 28.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.013333334)) + (:vel-y (meters 0.006666667) (meters 0.016666668)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 0.55)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1224 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.5 0.5) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 0.6) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00045537343)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.6)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.5 0.5) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 0.6) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00045537343)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.6)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -15)))) (defpart 1212 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -30)))) (defpart 1215 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1218 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.02)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.02)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -110)))) (defpart 1221 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 2.0) - (:x (meters -4) (meters 10)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters -0.0033333334) (meters 0.006666667)) - (:vel-y (meters 0.016666668) (meters 0.033333335)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-y (meters -0.0023333333) (meters -0.00033333333)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 2.0) + (:x (meters -4) (meters 10)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters -0.0033333334) (meters 0.006666667)) + (:vel-y (meters 0.016666668) (meters 0.033333335)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-y (meters -0.0023333333) (meters -0.00033333333)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1225 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.02) (meters 0.02)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00027777778)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.02) (meters 0.02)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00027777778)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -15)))) (defpart 1213 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -7)) - (:y (meters 41.5) (meters 1.5)) - (:z (meters -7.5) (meters 3)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.8)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -30)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -7)) + (:y (meters 41.5) (meters 1.5)) + (:z (meters -7.5) (meters 3)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.8)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -30)))) (defpart 1216 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -12)) - (:y (meters 42.5) (meters 1.5)) - (:z (meters -3.5) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.8)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -12)) + (:y (meters 42.5) (meters 1.5)) + (:z (meters -3.5) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.8)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1219 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 1.5)) - (:z (meters 0.5) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.2)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - (:rotate-y (degrees -110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 1.5)) + (:z (meters 0.5) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.2)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.35)) + (:next-launcher 1210) + (:rotate-y (degrees -110)))) (defpart 1222 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -4) (meters 8)) - (:y (meters 27.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:vel-z (meters 0.033333335) (meters 0.013333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -4) (meters 8)) + (:y (meters 27.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:vel-z (meters 0.033333335) (meters 0.013333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1227 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -1) (meters 4)) - (:y (meters 28.5) (meters 1.5)) - (:z (meters -10) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.013333334)) - (:vel-y (meters 0.016666668) (meters 0.016666668)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667) (meters -0.00016666666)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -1) (meters 4)) + (:y (meters 28.5) (meters 1.5)) + (:z (meters -10) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.013333334)) + (:vel-y (meters 0.016666668) (meters 0.016666668)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667) (meters -0.00016666666)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:rotate-y (degrees 0)))) (defpart 1226 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters 6) (meters 1)) - (:y (meters 26) (meters 1.5)) - (:z (meters -9.5) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.018333333) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00013888889)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.45)) - (:next-launcher 1210) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters 6) (meters 1)) + (:y (meters 26) (meters 1.5)) + (:z (meters -9.5) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.018333333) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00013888889)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.45)) + (:next-launcher 1210) + (:rotate-y (degrees -15)))) (defpart 1228 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.05 0.05) - (:x (meters 2) (meters 7)) - (:y (meters 12.5)) - (:z (meters 15) (meters 10)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.05 0.05) + (:x (meters 2) (meters 7)) + (:y (meters 12.5)) + (:z (meters 15) (meters 10)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1229 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 3) (meters 5)) - (:y (meters 7)) - (:z (meters 16) (meters 12)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 3) (meters 5)) + (:y (meters 7)) + (:z (meters 16) (meters 12)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1230 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.035 0.03) - (:x (meters 3.5) (meters 5)) - (:y (meters 12.5)) - (:z (meters 1.5) (meters 5)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.035 0.03) + (:x (meters 3.5) (meters 5)) + (:y (meters 12.5)) + (:z (meters 1.5) (meters 5)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1231 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.025) - (:x (meters 3) (meters 2)) - (:y (meters 8)) - (:z (meters 3) (meters 2)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.025) + (:x (meters 3) (meters 2)) + (:y (meters 8)) + (:z (meters 3) (meters 2)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1232 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.035 0.03) - (:x (meters -7.5) (meters 5)) - (:y (meters 12.5)) - (:z (meters -16.5) (meters 5)) - (:scale-x (meters 12.5)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.035 0.03) + (:x (meters -7.5) (meters 5)) + (:y (meters 12.5)) + (:z (meters -16.5) (meters 5)) + (:scale-x (meters 12.5)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1233 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.025) - (:x (meters -6.5) (meters 3)) - (:y (meters 8)) - (:z (meters -15.5) (meters 3)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.025) + (:x (meters -6.5) (meters 3)) + (:y (meters 8)) + (:z (meters -15.5) (meters 3)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1234 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.1 1.0) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 10.5) (meters 4.5)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.1 1.0) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 10.5) (meters 4.5)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1235 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.03 1.0) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 15) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.05)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.94)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.03 1.0) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 15) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.05)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.94)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1236 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.3) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 10.5) (meters 2.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.3) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 10.5) (meters 2.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1237 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.7) - (:x (meters -6)) - (:y (meters 43) (meters 0.5)) - (:z (meters 13) (meters 5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.45)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.7) + (:x (meters -6)) + (:y (meters 43) (meters 0.5)) + (:z (meters 13) (meters 5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.45)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1238 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.1) - (:x (meters -6)) - (:y (meters 42.5) (meters 0.5)) - (:z (meters 14) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.028333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters 0.0033333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.8)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.1) + (:x (meters -6)) + (:y (meters 42.5) (meters 0.5)) + (:z (meters 14) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.028333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.8)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1239 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.06) - (:x (meters -6)) - (:y (meters 42.5) (meters 0.5)) - (:z (meters 10) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.028333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.3)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.06) + (:x (meters -6)) + (:y (meters 42.5) (meters 0.5)) + (:z (meters 10) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.028333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.3)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1240 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.2 1.0) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.026666667) (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.033333335) (meters 0.026666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:accel-z (meters -0.00045537343)) - (:timer (seconds 0.68)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.75)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.2 1.0) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.026666667) (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.033333335) (meters 0.026666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:accel-z (meters -0.00045537343)) + (:timer (seconds 0.68)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.75)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -90)))) (defpart 1241 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.013333334) (meters 0.04)) - (:vel-y (meters 0.0033333334) (meters 0.04)) - (:vel-z (meters 0.02) (meters 0.02)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:accel-z (meters -0.00020833334)) - (:timer (seconds 1.05)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.013333334) (meters 0.04)) + (:vel-y (meters 0.0033333334) (meters 0.04)) + (:vel-z (meters 0.02) (meters 0.02)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:accel-z (meters -0.00020833334)) + (:timer (seconds 1.05)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1242 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.3) - (:x (meters 0)) - (:y (meters 28) (meters 1.5)) - (:z (meters 10) (meters 3.5)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:accel-z (meters -0.00012626263)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.2)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.3) + (:x (meters 0)) + (:y (meters 28) (meters 1.5)) + (:z (meters 10) (meters 3.5)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:accel-z (meters -0.00012626263)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.2)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpartgroup group-village2-waterfall-30 :id 278 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1243) - (sp-item 1243 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1243 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1244 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1245 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1246) - (sp-item 1246 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1246 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1247 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1243) + (sp-item 1243 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1243 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1244 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1245 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1246) + (sp-item 1246 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1246 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1247 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1243 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -8) (meters 4)) - (:y (meters 49.5)) - (:z (meters -3.5) (meters 7)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.23)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -8) (meters 4)) + (:y (meters 49.5)) + (:z (meters -3.5) (meters 7)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.23)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees -90)))) (defpart 1244 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.5) - (:x (meters -8) (meters 4)) - (:y (meters 49.5)) - (:z (meters -5) (meters 10)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.5) + (:x (meters -8) (meters 4)) + (:y (meters 49.5)) + (:z (meters -5) (meters 10)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -90)))) (defpart 1245 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -7) (meters 3.5)) - (:y (meters 49.5)) - (:z (meters -4) (meters 8)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.22)) - (:next-launcher 1210) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -7) (meters 3.5)) + (:y (meters 49.5)) + (:z (meters -4) (meters 8)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.22)) + (:next-launcher 1210) + (:rotate-y (degrees -90)))) (defpart 1246 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.1) - (:x (meters 3) (meters 6)) - (:y (meters 6)) - (:z (meters -6) (meters 12)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.1) + (:x (meters 3) (meters 6)) + (:y (meters 6)) + (:z (meters -6) (meters 12)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -90)))) (defpart 1247 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 5) (meters 10)) - (:y (meters 2.5)) - (:z (meters -8) (meters 16)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 5) (meters 10)) + (:y (meters 2.5)) + (:z (meters -8) (meters 16)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpartgroup group-village2-waterfall-31 :id 279 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 2324)) - ) + :parts ((sp-item 2324))) (defpartgroup group-village2-waterfall-32 :id 280 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1253) - (sp-item 1253 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1253 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1254 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1255 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1256) - (sp-item 1256 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1256 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1257 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1258) - (sp-item 1258 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1258 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1259 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1260 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1261) - (sp-item 1261 :fade-after (meters 160) :falloff-to (meters 160)) - (sp-item 1261 :fade-after (meters 240) :falloff-to (meters 240)) - (sp-item 1262 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1263 :fade-after (meters 160) :falloff-to (meters 160)) - ) - ) + :parts + ((sp-item 1253) + (sp-item 1253 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1253 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1254 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1255 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1256) + (sp-item 1256 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1256 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1257 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1258) + (sp-item 1258 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1258 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1259 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1260 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1261) + (sp-item 1261 :fade-after (meters 160) :falloff-to (meters 160)) + (sp-item 1261 :fade-after (meters 240) :falloff-to (meters 240)) + (sp-item 1262 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1263 :fade-after (meters 160) :falloff-to (meters 160)))) (defpart 1253 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.266 0.333) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.6)) - (:next-launcher 1264) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.266 0.333) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.6)) + (:next-launcher 1264) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -15)))) (defpart 1264 - :init-specs ((:scale-y (meters 1) (meters 1)) - (:vel-x (meters 0.053333335) (meters 0.013333334)) - (:vel-y (meters -0.026666667) (meters -0.013333334)) - (:vel-z (meters 0.04) (meters 0.013333334)) - (:accel-x (meters -0.0013071896)) - (:accel-z (meters -0.0007843137)) - (:next-time (seconds 0.85)) - (:next-launcher 1210) - ) - ) + :init-specs + ((:scale-y (meters 1) (meters 1)) + (:vel-x (meters 0.053333335) (meters 0.013333334)) + (:vel-y (meters -0.026666667) (meters -0.013333334)) + (:vel-z (meters 0.04) (meters 0.013333334)) + (:accel-x (meters -0.0013071896)) + (:accel-z (meters -0.0007843137)) + (:next-time (seconds 0.85)) + (:next-launcher 1210))) (defpart 1254 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 2.4)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1265) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 2.4)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1265) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -15)))) (defpart 1265 - :init-specs ((:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:vel-x (meters 0.026666667) (meters 0.013333334)) - (:vel-y (meters 0) (meters 0.013333334)) - (:vel-z (meters 0.013333334) (meters 0.026666667)) - (:accel-x (meters -0.00031746033)) - ) - ) + :init-specs + ((:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:vel-x (meters 0.026666667) (meters 0.013333334)) + (:vel-y (meters 0) (meters 0.013333334)) + (:vel-z (meters 0.013333334) (meters 0.026666667)) + (:accel-x (meters -0.00031746033)))) (defpart 1255 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -13.5) (meters 1)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.5)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.4)) - (:next-launcher 1266) - (:rotate-y (degrees -15)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -13.5) (meters 1)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.5)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.4)) + (:next-launcher 1266) + (:rotate-y (degrees -15)))) (defpart 1266 - :init-specs ((:vel-x (meters 0.053333335) (meters 0.013333334)) - (:vel-y (meters -0.026666667) (meters -0.013333334)) - (:vel-z (meters 0.04) (meters 0.006666667)) - (:scalevel-x (meters 0.009765625)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.001234568)) - (:accel-z (meters -0.0006584363)) - (:next-time (seconds 1.35)) - (:next-launcher 1210) - ) - ) + :init-specs + ((:vel-x (meters 0.053333335) (meters 0.013333334)) + (:vel-y (meters -0.026666667) (meters -0.013333334)) + (:vel-z (meters 0.04) (meters 0.006666667)) + (:scalevel-x (meters 0.009765625)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.001234568)) + (:accel-z (meters -0.0006584363)) + (:next-time (seconds 1.35)) + (:next-launcher 1210))) (defpart 1256 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.1) - (:x (meters -3) (meters 12)) - (:y (meters 6)) - (:z (meters -19) (meters 16)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees -45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.1) + (:x (meters -3) (meters 12)) + (:y (meters 6)) + (:z (meters -19) (meters 16)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees -45)))) (defpart 1257 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters -3) (meters 12)) - (:y (meters 2.5)) - (:z (meters -17) (meters 12)) - (:scale-x (meters 1) (meters 3)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.04) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees -90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters -3) (meters 12)) + (:y (meters 2.5)) + (:z (meters -17) (meters 12)) + (:scale-x (meters 1) (meters 3)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.04) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees -90)))) (defpart 1258 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.033 1.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -2) (meters 3)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.95)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.9)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.033 1.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -2) (meters 3)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.95)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.9)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees -25.000002)))) (defpart 1259 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -3) (meters 5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.35)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -3) (meters 5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.35)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -25.000002)))) (defpart 1260 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.2) - (:x (meters -12) (meters 1)) - (:y (meters 50.5)) - (:z (meters -3) (meters 5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.65)) - (:next-launcher 1210) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.2) + (:x (meters -12) (meters 1)) + (:y (meters 50.5)) + (:z (meters -3) (meters 5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.65)) + (:next-launcher 1210) + (:rotate-y (degrees -25.000002)))) (defpart 1261 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.33 1.2) - (:x (meters -2) (meters 1)) - (:y (meters 23.5) (meters 6)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.8)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.33 1.2) + (:x (meters -2) (meters 1)) + (:y (meters 23.5) (meters 6)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.8)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpart 1262 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -2) (meters 1)) - (:y (meters 25.5) (meters 4)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.053333335)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.35)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees -45) (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -2) (meters 1)) + (:y (meters 25.5) (meters 4)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.053333335)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.35)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees -45) (degrees 90)))) (defpart 1263 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5 0.5) - (:x (meters -2) (meters 1)) - (:y (meters 22.5) (meters 7)) - (:z (meters -3) (meters 6)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.75)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.65)) - (:next-launcher 1210) - (:rotate-y (degrees 10) (degrees 50.000004)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5 0.5) + (:x (meters -2) (meters 1)) + (:y (meters 22.5) (meters 7)) + (:z (meters -3) (meters 6)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.75)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.65)) + (:next-launcher 1210) + (:rotate-y (degrees 10) (degrees 50.000004)))) (defpartgroup group-village2-waterfall-33 :id 281 :flags (always-draw) :bounds (static-bspherem 0 22 0 35) - :parts ((sp-item 1267) - (sp-item 1267 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1267 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1268) - (sp-item 1268 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1268 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1269 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1270 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1271 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1272 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1273) - (sp-item 1273 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1273 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1274 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1275 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1276) - (sp-item 1276 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1276 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1277 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1267) + (sp-item 1267 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1267 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1268) + (sp-item 1268 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1268 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1269 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1270 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1271 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1272 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1273) + (sp-item 1273 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1273 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1274 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1275 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1276) + (sp-item 1276 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1276 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1277 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1267 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.4 1.0) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.01)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.65)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.4 1.0) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.01)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.65)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1268 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.03 1.0) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 1.4) (meters 0.8)) - (:scale-y (meters 0.6) (meters 0.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.05) (meters 0.01)) - (:vel-y (meters 0) (meters 0.0033333334)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.075)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.03 1.0) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 1.4) (meters 0.8)) + (:scale-y (meters 0.6) (meters 0.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.05) (meters 0.01)) + (:vel-y (meters 0) (meters 0.0033333334)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.075)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1269 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.3) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.3) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1270 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.7) - (:x (meters -7.5)) - (:y (meters 48) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.043333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00045138889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.45)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.7) + (:x (meters -7.5)) + (:y (meters 48) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.043333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00045138889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.45)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1271 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.1) - (:x (meters -7)) - (:y (meters 47.5) (meters 0.5)) - (:z (meters -6) (meters 2)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters 0.0033333334)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.9)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.1) + (:x (meters -7)) + (:y (meters 47.5) (meters 0.5)) + (:z (meters -6) (meters 2)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters 0.0033333334)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.9)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1272 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 0.06) - (:x (meters -7)) - (:y (meters 47.5) (meters 0.5)) - (:z (meters -4) (meters 4)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.0033333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00021464647)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.3)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 0.06) + (:x (meters -7)) + (:y (meters 47.5) (meters 0.5)) + (:z (meters -4) (meters 4)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.0033333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00021464647)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.3)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1273 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.2 1.0) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 1.4) (meters 1.8)) - (:scale-y (meters 1) (meters 1.4)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 32.0 16.0) - (:vel-x (meters 0.04) (meters 0.033333335)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:accel-z (meters -0.00022768672)) - (:timer (seconds 0.85)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.95)) - (:next-launcher 1210) - (:launchrot-x (degrees -8) (degrees 16)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.2 1.0) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 1.4) (meters 1.8)) + (:scale-y (meters 1) (meters 1.4)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 32.0 16.0) + (:vel-x (meters 0.04) (meters 0.033333335)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:accel-z (meters -0.00022768672)) + (:timer (seconds 0.85)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.95)) + (:next-launcher 1210) + (:launchrot-x (degrees -8) (degrees 16)) + (:rotate-y (degrees 90)))) (defpart 1274 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.013333334) (meters 0.04)) - (:vel-y (meters 0.0033333334) (meters 0.04)) - (:vel-z (meters 0.01) (meters 0.02)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:accel-z (meters -0.00017361112)) - (:timer (seconds 1.25)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.013333334) (meters 0.04)) + (:vel-y (meters 0.0033333334) (meters 0.04)) + (:vel-z (meters 0.01) (meters 0.02)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:accel-z (meters -0.00017361112)) + (:timer (seconds 1.25)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 90)))) (defpart 1275 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3 0.3) - (:x (meters -1.5)) - (:y (meters 33) (meters 1.5)) - (:z (meters -6) (meters 4.5)) - (:scale-x (meters 2.2) (meters 2)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y :copy scale-x) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.03) (meters 0.02)) - (:vel-y (meters -0.006666667) (meters 0.006666667)) - (:vel-z (meters 0.006666667) (meters 0.016666668)) - (:scalevel-x (meters 0.015136719)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-x (meters -0.00037878787)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:accel-z (meters -0.00012626263)) - (:timer (seconds 1.6)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.8)) - (:next-launcher 1210) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3 0.3) + (:x (meters -1.5)) + (:y (meters 33) (meters 1.5)) + (:z (meters -6) (meters 4.5)) + (:scale-x (meters 2.2) (meters 2)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y :copy scale-x) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.03) (meters 0.02)) + (:vel-y (meters -0.006666667) (meters 0.006666667)) + (:vel-z (meters 0.006666667) (meters 0.016666668)) + (:scalevel-x (meters 0.015136719)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-x (meters -0.00037878787)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:accel-z (meters -0.00012626263)) + (:timer (seconds 1.6)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.8)) + (:next-launcher 1210) + (:rotate-y (degrees 90)))) (defpart 1276 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.15) - (:x (meters 2.5) (meters 12)) - (:y (meters 7)) - (:z (meters -11) (meters 17)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.15) + (:x (meters 2.5) (meters 12)) + (:y (meters 7)) + (:z (meters -11) (meters 17)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 90)))) (defpart 1277 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.05) - (:x (meters 3.5) (meters 10)) - (:y (meters 2.5)) - (:z (meters -10) (meters 15)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 0.0) - (:scalevel-x (meters 0.02) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.2) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.05) + (:x (meters 3.5) (meters 10)) + (:y (meters 2.5)) + (:z (meters -10) (meters 15)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 0.0) + (:scalevel-x (meters 0.02) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.2) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 90)))) (defpartgroup group-village2-waterfall-34 :id 282 :flags (always-draw) :bounds (static-bspherem -15 17 -10 40) - :parts ((sp-item 1278) - (sp-item 1278 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1278 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1279 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1280 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1281) - (sp-item 1281 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1281 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1282 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1283 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1284) - (sp-item 1284 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1284 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1285 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1286 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1287) - (sp-item 1287 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1287 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1288 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1289 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1290) - (sp-item 1290 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1290 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1291 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1292 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1293) - (sp-item 1293 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1293 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1294 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1295 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1296) - (sp-item 1296 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1296 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1297 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1298 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1300 :fade-after (meters 80) :falloff-to (meters 80)) - (sp-item 1301 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1302) - (sp-item 1302 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1302 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1303) - (sp-item 1303 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1303 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1304) - (sp-item 1304 :fade-after (meters 150) :falloff-to (meters 150)) - (sp-item 1304 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1305) - (sp-item 1305 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1305 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1306 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1307) - (sp-item 1307 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1307 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1308 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - (sp-item 1309) - (sp-item 1309 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1309 :fade-after (meters 200) :falloff-to (meters 200)) - (sp-item 1310 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) - ) - ) + :parts + ((sp-item 1278) + (sp-item 1278 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1278 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1279 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1280 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1281) + (sp-item 1281 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1281 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1282 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1283 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1284) + (sp-item 1284 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1284 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1285 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1286 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1287) + (sp-item 1287 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1287 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1288 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1289 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1290) + (sp-item 1290 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1290 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1291 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1292 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1293) + (sp-item 1293 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1293 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1294 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1295 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1296) + (sp-item 1296 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1296 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1297 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1298 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1300 :fade-after (meters 80) :falloff-to (meters 80)) + (sp-item 1301 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1302) + (sp-item 1302 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1302 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1303) + (sp-item 1303 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1303 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1304) + (sp-item 1304 :fade-after (meters 150) :falloff-to (meters 150)) + (sp-item 1304 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1305) + (sp-item 1305 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1305 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1306 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1307) + (sp-item 1307 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1307 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1308 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)) + (sp-item 1309) + (sp-item 1309 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1309 :fade-after (meters 200) :falloff-to (meters 200)) + (sp-item 1310 :fade-after (meters 160) :falloff-to (meters 160) :flags (is-3d)))) (defpart 1278 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.3) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.3) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 120)))) (defpart 1281 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.075) - (:x (meters -18) (meters 4)) - (:y (meters 42.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.075) + (:x (meters -18) (meters 4)) + (:y (meters 42.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 140)))) (defpart 1284 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.075) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667)) - (:vel-y (meters 0.013333334) (meters 0.013333334)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 1.28)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.075) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667)) + (:vel-y (meters 0.013333334) (meters 0.013333334)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 1.28)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 110)))) (defpart 1279 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 120)))) (defpart 1282 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.375) - (:x (meters -18) (meters 4)) - (:y (meters 43.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.5)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.375) + (:x (meters -18) (meters 4)) + (:y (meters 43.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.5)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 140)))) (defpart 1285 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.375) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.06) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00062500004)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 1.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.375) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.06) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00062500004)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 1.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 110)))) (defpart 1280 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters -15) (meters 4)) - (:y (meters 43.5)) - (:z (meters 1.5) (meters 2.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 120)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters -15) (meters 4)) + (:y (meters 43.5)) + (:z (meters 1.5) (meters 2.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 120)))) (defpart 1283 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.225 0.15) - (:x (meters -18) (meters 4)) - (:y (meters 43.5)) - (:z (meters 8) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 140)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.225 0.15) + (:x (meters -18) (meters 4)) + (:y (meters 43.5)) + (:z (meters 8) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 140)))) (defpart 1286 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.225 0.15) - (:x (meters -20) (meters 4)) - (:y (meters 43.5)) - (:z (meters -12) (meters 0.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.038333334)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.0033333334) (meters 0.006666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00029040404)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 2.27)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 2.1)) - (:next-launcher 1210) - (:rotate-y (degrees 110)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.225 0.15) + (:x (meters -20) (meters 4)) + (:y (meters 43.5)) + (:z (meters -12) (meters 0.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.038333334)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.0033333334) (meters 0.006666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00029040404)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 2.27)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 2.1)) + (:next-launcher 1210) + (:rotate-y (degrees 110)))) (defpart 1287 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.6) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 15.5) (meters 5.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.06666667) (meters 0.016666668)) - (:vel-y (meters 0) (meters 0.013333334)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0011384335)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.6) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 15.5) (meters 5.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.06666667) (meters 0.016666668)) + (:vel-y (meters 0) (meters 0.013333334)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0011384335)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 1290 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.3) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 15.5) (meters 6.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.033333335) (meters 0.016666668)) - (:vel-y (meters 0.026666667) (meters 0.013333334)) - (:vel-z (meters -0.016666668) (meters 0.033333335)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0006830601)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.55)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.5)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.3) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 15.5) (meters 6.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.033333335) (meters 0.016666668)) + (:vel-y (meters 0.026666667) (meters 0.013333334)) + (:vel-z (meters -0.016666668) (meters 0.033333335)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0006830601)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.55)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.5)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 190)))) (defpart 1288 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 15.5) (meters 5.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.07333333) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 15.5) (meters 5.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.07333333) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 190)))) (defpart 1291 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 14.5) (meters 8.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.04) (meters 0.006666667)) - (:vel-y (meters 0.026666667) (meters 0.026666667)) - (:vel-z (meters -0.02) (meters 0.04)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.00041666668)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 14.5) (meters 8.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.04) (meters 0.006666667)) + (:vel-y (meters 0.026666667) (meters 0.026666667)) + (:vel-z (meters -0.02) (meters 0.04)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.00041666668)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 190)))) (defpart 1289 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 26) (meters 4)) - (:y (meters 4.5)) - (:z (meters 14.5) (meters 5.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.041666668)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 26) (meters 4)) + (:y (meters 4.5)) + (:z (meters 14.5) (meters 5.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.041666668)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 190)))) (defpart 1292 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 33) (meters 4)) - (:y (meters -1)) - (:z (meters 14.5) (meters 8.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.031666666)) - (:vel-y (meters 0.01) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00026515152)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 0.9)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1210) - (:rotate-y (degrees 190)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 33) (meters 4)) + (:y (meters -1)) + (:z (meters 14.5) (meters 8.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.031666666)) + (:vel-y (meters 0.01) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00026515152)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 0.9)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1210) + (:rotate-y (degrees 190)))) (defpart 1293 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.3 0.6) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.05) (meters 0.016666668)) - (:vel-y (meters -0.006666667) (meters 0.013333334)) - (:vel-z (meters -0.01) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.45)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.3 0.6) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.05) (meters 0.016666668)) + (:vel-y (meters -0.006666667) (meters 0.013333334)) + (:vel-z (meters -0.01) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.45)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 60)))) (defpart 1294 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.013333334) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.013333334) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 60)))) (defpart 1295 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 24) (meters 4)) - (:y (meters 4.5)) - (:z (meters -28.5) (meters 5.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 60)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 24) (meters 4)) + (:y (meters 4.5)) + (:z (meters -28.5) (meters 5.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 60)))) (defpart 1296 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.45 0.75) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.05) (meters 0.016666668)) - (:vel-y (meters -0.006666667) (meters 0.013333334)) - (:vel-z (meters -0.016666668) (meters 0.02)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.00091074686)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.4)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-x (degrees -15) (degrees 30)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.45 0.75) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.05) (meters 0.016666668)) + (:vel-y (meters -0.006666667) (meters 0.013333334)) + (:vel-z (meters -0.016666668) (meters 0.02)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.00091074686)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.4)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-x (degrees -15) (degrees 30)) + (:rotate-y (degrees 130)))) (defpart 1297 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.75) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.9)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.75) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.9)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 130)))) (defpart 1300 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.325) - (:x (meters 45) (meters 4)) - (:y (meters -1) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 128.0) - (:b 128.0) - (:a 24.0) - (:vel-x (meters 0.053333335) (meters 0.006666667)) - (:vel-y (meters 0.0033333334) (meters 0.02)) - (:vel-z (meters -0.026666667) (meters 0.026666667)) - (:scalevel-x (meters -0.00024414062)) - (:scalevel-y (meters 0.001953125)) - (:fade-a 0.0) - (:accel-x (meters -0.0007638889)) - (:accel-y (meters -0.0016666667) (meters -0.00083333335)) - (:timer (seconds 0.7)) - (:flags (bit2 bit3 bit12 bit14)) - (:launchrot-x (degrees -20) (degrees 40)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.325) + (:x (meters 45) (meters 4)) + (:y (meters -1) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 24.0) + (:vel-x (meters 0.053333335) (meters 0.006666667)) + (:vel-y (meters 0.0033333334) (meters 0.02)) + (:vel-z (meters -0.026666667) (meters 0.026666667)) + (:scalevel-x (meters -0.00024414062)) + (:scalevel-y (meters 0.001953125)) + (:fade-a 0.0) + (:accel-x (meters -0.0007638889)) + (:accel-y (meters -0.0016666667) (meters -0.00083333335)) + (:timer (seconds 0.7)) + (:flags (bit2 bit3 bit12 bit14)) + (:launchrot-x (degrees -20) (degrees 40)) + (:rotate-y (degrees 130)))) (defpart 1298 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.375 0.3) - (:x (meters 38) (meters 4)) - (:y (meters 4) (meters 1.5)) - (:z (meters -10) (meters 7.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 1)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 1.15)) - (:next-launcher 1210) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.375 0.3) + (:x (meters 38) (meters 4)) + (:y (meters 4) (meters 1.5)) + (:z (meters -10) (meters 7.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 1)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 1.15)) + (:next-launcher 1210) + (:rotate-y (degrees 130)))) (defpart 1301 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.15 0.225) - (:x (meters 45) (meters 4)) - (:y (meters -1) (meters 1.5)) - (:z (meters -10.5) (meters 6.5)) - (:scale-x (meters 1.2) (meters 0.8)) - (:rot-z (degrees 0) (degrees 180)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 16.0 16.0) - (:vel-x (meters 0.035)) - (:vel-y (meters 0.0033333334) (meters 0.01)) - (:vel-z (meters -0.013333334) (meters 0.013333334)) - (:scalevel-x (meters 0.0146484375)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y (meters 0.0146484375)) - (:accel-x (meters -0.00031565657)) - (:accel-y (meters -0.001) (meters -0.00025)) - (:timer (seconds 0.7)) - (:flags (bit2 bit12 bit14)) - (:rotate-y (degrees 130)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.15 0.225) + (:x (meters 45) (meters 4)) + (:y (meters -1) (meters 1.5)) + (:z (meters -10.5) (meters 6.5)) + (:scale-x (meters 1.2) (meters 0.8)) + (:rot-z (degrees 0) (degrees 180)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 16.0 16.0) + (:vel-x (meters 0.035)) + (:vel-y (meters 0.0033333334) (meters 0.01)) + (:vel-z (meters -0.013333334) (meters 0.013333334)) + (:scalevel-x (meters 0.0146484375)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y (meters 0.0146484375)) + (:accel-x (meters -0.00031565657)) + (:accel-y (meters -0.001) (meters -0.00025)) + (:timer (seconds 0.7)) + (:flags (bit2 bit12 bit14)) + (:rotate-y (degrees 130)))) (defpart 1302 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.45) - (:x (meters -30)) - (:y (meters 3.5) (meters 2)) - (:z (meters -18.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 100.00001) 1 (degrees 140)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.45) + (:x (meters -30)) + (:y (meters 3.5) (meters 2)) + (:z (meters -18.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 100.00001) 1 (degrees 140)) + (:rotate-y (degrees 0)))) (defpart 1303 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.4) - (:x (meters -24)) - (:y (meters 3.5) (meters 2)) - (:z (meters -25.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 160) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.4) + (:x (meters -24)) + (:y (meters 3.5) (meters 2)) + (:z (meters -25.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 160) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1304 - :init-specs ((:texture (new 'static 'texture-id :index #x18 :page #x2)) - (:num 0.15 0.4) - (:x (meters -26)) - (:y (meters 3.5) (meters 2)) - (:z (meters -11.5) (meters 0.5)) - (:scale-x (meters 2.4) (meters 1.6)) - (:scale-y (meters 1.2) (meters 0.8)) - (:r 192.0) - (:g 192.0) - (:b 192.0) - (:a 24.0 16.0) - (:vel-x (meters 0.03) (meters 0.01)) - (:vel-y (meters 0.05) (meters 0.033333335)) - (:vel-z (meters 0)) - (:scalevel-x (meters 0.0073242188)) - (:scalevel-y (meters 0.029296875)) - (:accel-x (meters -0.0004098361)) - (:accel-y (meters -0.0036666668) (meters -0.00066666666)) - (:timer (seconds 0.65)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.55)) - (:next-launcher 1210) - (:launchrot-y (degrees 140) (degrees 40)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x18 :page #x2)) + (:num 0.15 0.4) + (:x (meters -26)) + (:y (meters 3.5) (meters 2)) + (:z (meters -11.5) (meters 0.5)) + (:scale-x (meters 2.4) (meters 1.6)) + (:scale-y (meters 1.2) (meters 0.8)) + (:r 192.0) + (:g 192.0) + (:b 192.0) + (:a 24.0 16.0) + (:vel-x (meters 0.03) (meters 0.01)) + (:vel-y (meters 0.05) (meters 0.033333335)) + (:vel-z (meters 0)) + (:scalevel-x (meters 0.0073242188)) + (:scalevel-y (meters 0.029296875)) + (:accel-x (meters -0.0004098361)) + (:accel-y (meters -0.0036666668) (meters -0.00066666666)) + (:timer (seconds 0.65)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.55)) + (:next-launcher 1210) + (:launchrot-y (degrees 140) (degrees 40)) + (:rotate-y (degrees 0)))) (defpart 1305 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.0375 0.0375) - (:x (meters -9) (meters 4)) - (:y (meters -2)) - (:z (meters -47) (meters 4)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.0375 0.0375) + (:x (meters -9) (meters 4)) + (:y (meters -2)) + (:z (meters -47) (meters 4)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1307 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.075 0.015) - (:x (meters -45) (meters 12)) - (:y (meters -2)) - (:z (meters -33) (meters 5)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.075 0.015) + (:x (meters -45) (meters 12)) + (:y (meters -2)) + (:z (meters -33) (meters 5)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1309 - :init-specs ((:texture (new 'static 'texture-id :index #x29 :page #x2)) - (:num 0.075 0.015) - (:x (meters -49) (meters 6)) - (:y (meters -2)) - (:z (meters -15) (meters 6)) - (:scale-x (meters 12)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 150.0 42.0) - (:b 192.0) - (:a 0.0) - (:vel-x (meters -0.006666667) (meters 0.02)) - (:vel-y (meters 0.01)) - (:vel-z (meters -0.006666667) (meters 0.013333334)) - (:scalevel-x (meters 0.013333334) (meters 0.01)) - (:scalevel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-a 1.28) - (:accel-y (meters 0.0000033333336)) - (:friction 0.99) - (:timer (seconds 3)) - (:flags (bit2 bit12 bit14)) - (:next-time (seconds 0.15) (seconds 0.097)) - (:next-launcher 1209) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x29 :page #x2)) + (:num 0.075 0.015) + (:x (meters -49) (meters 6)) + (:y (meters -2)) + (:z (meters -15) (meters 6)) + (:scale-x (meters 12)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 150.0 42.0) + (:b 192.0) + (:a 0.0) + (:vel-x (meters -0.006666667) (meters 0.02)) + (:vel-y (meters 0.01)) + (:vel-z (meters -0.006666667) (meters 0.013333334)) + (:scalevel-x (meters 0.013333334) (meters 0.01)) + (:scalevel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-a 1.28) + (:accel-y (meters 0.0000033333336)) + (:friction 0.99) + (:timer (seconds 3)) + (:flags (bit2 bit12 bit14)) + (:next-time (seconds 0.15) (seconds 0.097)) + (:next-launcher 1209) + (:rotate-y (degrees 0)))) (defpart 1306 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.00625) - (:x (meters -9) (meters 4)) - (:y (meters -6)) - (:z (meters -47) (meters 4)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.00625) + (:x (meters -9) (meters 4)) + (:y (meters -6)) + (:z (meters -47) (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpart 1308 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.0375) - (:x (meters -44) (meters 10)) - (:y (meters -6)) - (:z (meters -32) (meters 3)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.0375) + (:x (meters -44) (meters 10)) + (:y (meters -6)) + (:z (meters -32) (meters 3)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpart 1310 - :init-specs ((:texture (new 'static 'texture-id :index #x1e :page #x2)) - (:num 0.00625) - (:x (meters -45) (meters 4)) - (:y (meters -6)) - (:z (meters -14) (meters 4)) - (:scale-x (meters 2) (meters 4)) - (:scale-y :copy scale-x) - (:r 92.0) - (:g 92.0) - (:b 92.0) - (:a 1.0) - (:scalevel-x (meters 0.026666667) (meters 0.006666667)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.21333334) - (:timer (seconds 3)) - (:flags (bit2 bit3 bit12 bit14)) - (:next-time (seconds 1)) - (:next-launcher 1208) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 0.00625) + (:x (meters -45) (meters 4)) + (:y (meters -6)) + (:z (meters -14) (meters 4)) + (:scale-x (meters 2) (meters 4)) + (:scale-y :copy scale-x) + (:r 92.0) + (:g 92.0) + (:b 92.0) + (:a 1.0) + (:scalevel-x (meters 0.026666667) (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.21333334) + (:timer (seconds 3)) + (:flags (bit2 bit3 bit12 bit14)) + (:next-time (seconds 1)) + (:next-launcher 1208) + (:rotate-y (degrees 0)))) (defpartgroup group-village2-sagehut-warpgate :id 283 :bounds (static-bspherem 7 4 -4.5 12) - :parts ((sp-item 1313 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1314 :fade-after (meters 60) :falloff-to (meters 100) :binding 1311) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1311 :flags (bit1 start-dead launch-asap)) - (sp-item 1315 :fade-after (meters 60) :falloff-to (meters 100) :binding 1312) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - (sp-item 1312 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1313 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1314 :fade-after (meters 60) :falloff-to (meters 100) :binding 1311) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1311 :flags (bit1 start-dead launch-asap)) + (sp-item 1315 :fade-after (meters 60) :falloff-to (meters 100) :binding 1312) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)) + (sp-item 1312 :flags (bit1 start-dead launch-asap)))) (defpart 1315 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1312 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 0.2) - (:x (meters 4.4444447)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 0.2) + (:x (meters 4.4444447)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 1313 - :init-specs ((:num 3.0 3.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 5.936232) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 3.0 3.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 5.936232) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees 0)))) (defpart 1314 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.2 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 2.3)) - (:flags (bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.2 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 2.3)) + (:flags (bit3)) + (:rotate-y (degrees 0)))) (defpart 1311 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.4) - (:x (meters 4.4444447)) - (:y (meters 4)) - (:z (meters 2.1)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0033333334)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.10666667) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.4) + (:x (meters 4.4444447)) + (:y (meters 4)) + (:z (meters 2.1)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0033333334)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.10666667) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-village2-tree-fire :id 284 :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 1316 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1317 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1318 :fade-after (meters 120) :falloff-to (meters 120)) - (sp-item 1319 :fade-after (meters 120) :falloff-to (meters 120)) - ) - ) + :parts + ((sp-item 1316 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1317 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1318 :fade-after (meters 120) :falloff-to (meters 120)) + (sp-item 1319 :fade-after (meters 120) :falloff-to (meters 120)))) (defpart 1316 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:x (meters 2.2) (meters 0.5)) - (:y (meters -0.9)) - (:z (meters -0.9) (meters 0.5)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a 1.0666667) - (:accel-y (meters 0.00025)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 1320) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-z (degrees 0)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:x (meters 2.2) (meters 0.5)) + (:y (meters -0.9)) + (:z (meters -0.9) (meters 0.5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a 1.0666667) + (:accel-y (meters 0.00025)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 1320) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-z (degrees 0)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0)))) (defpart 1320 - :init-specs ((:fade-a -0.53333336)) - ) + :init-specs ((:fade-a -0.53333336))) (defpart 1317 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.1 1.0) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 0.5) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) - (:fade-g 0.32) - (:fade-b 0.32) - (:fade-a 1.0666667) - (:accel-y (meters 0.00025)) - (:timer (seconds 0.6) (seconds 0.097)) - (:flags (bit2 bit3 bit14)) - (:next-time (seconds 0.2)) - (:next-launcher 1320) - (:conerot-x (degrees 45)) - (:conerot-y (degrees 240)) - (:conerot-radius (meters 0) (meters 0.5)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.1 1.0) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 0.5) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.9999999) (degrees 3.9999998)) + (:fade-g 0.32) + (:fade-b 0.32) + (:fade-a 1.0666667) + (:accel-y (meters 0.00025)) + (:timer (seconds 0.6) (seconds 0.097)) + (:flags (bit2 bit3 bit14)) + (:next-time (seconds 0.2)) + (:next-launcher 1320) + (:conerot-x (degrees 45)) + (:conerot-y (degrees 240)) + (:conerot-radius (meters 0) (meters 0.5)) + (:rotate-y (degrees 0)))) (defpart 1318 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 1.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 1.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) (defpart 1319 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2 0.2) - (:x (meters -0.6) (meters 0.5)) - (:y (meters -0.2) (meters 0.5)) - (:z (meters -2.9) (meters 0.5)) - (:scale-x (meters 1.5) (meters 1.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 64.0) - (:a 0.0) - (:scalevel-x (meters 0.0044444446)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.34133333) - (:fade-g -0.17066666) - (:fade-b -0.17066666) - (:fade-a 0.4) - (:accel-y (meters 0.00033333333)) - (:timer (seconds 4)) - (:flags (bit2 bit14)) - (:next-time (seconds 0.25)) - (:next-launcher 1174) - (:conerot-x (degrees 30) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 4.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2 0.2) + (:x (meters -0.6) (meters 0.5)) + (:y (meters -0.2) (meters 0.5)) + (:z (meters -2.9) (meters 0.5)) + (:scale-x (meters 1.5) (meters 1.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 64.0) + (:a 0.0) + (:scalevel-x (meters 0.0044444446)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.34133333) + (:fade-g -0.17066666) + (:fade-b -0.17066666) + (:fade-a 0.4) + (:accel-y (meters 0.00033333333)) + (:timer (seconds 4)) + (:flags (bit2 bit14)) + (:next-time (seconds 0.25)) + (:next-launcher 1174) + (:conerot-x (degrees 30) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 4.5)))) diff --git a/goal_src/jak1/levels/village2/warrior.gc b/goal_src/jak1/levels/village2/warrior.gc index 06e76b6373..1ae8fefd43 100644 --- a/goal_src/jak1/levels/village2/warrior.gc +++ b/goal_src/jak1/levels/village2/warrior.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI2.DGO") - (require "levels/village2/village2-obs.gc") (require "engine/common-obs/process-taskable.gc") @@ -11,168 +10,105 @@ ;; DECOMP BEGINS -(deftype warrior (process-taskable) - () - ) +(deftype warrior (process-taskable) ()) - -(defskelgroup *warrior-sg* warrior warrior-lod0-jg warrior-idle-ja - ((warrior-lod0-mg (meters 20)) (warrior-lod1-mg (meters 40)) (warrior-lod2-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow warrior-shadow-mg - ) +(defskelgroup *warrior-sg* + warrior + warrior-lod0-jg + warrior-idle-ja + ((warrior-lod0-mg (meters 20)) (warrior-lod1-mg (meters 40)) (warrior-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow warrior-shadow-mg) (defmethod process-taskable-method-52 ((this warrior)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this warrior)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this warrior) (arg0 symbol)) (with-pp (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "warrior-introduction" - :index 6 - :parts 29 - :command-list '((125 joint "cameraB") - (260 joint "camera") - (574 joint "cameraB") - (918 joint "camera") - (1174 joint "cameraB") - (1174 shadow self #f) - (1301 joint "camera") - (1301 shadow self #t) - (2025 joint "cameraB") - (2322 joint "camera") - (2560 joint "cameraB") - ) - ) - ) + (if arg0 (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "warrior-introduction" + :index 6 + :parts 29 + :command-list + '((125 joint "cameraB") + (260 joint "camera") + (574 joint "cameraB") + (918 joint "camera") + (1174 joint "cameraB") + (1174 shadow self #f) + (1301 joint "camera") + (1301 shadow self #t) + (2025 joint "cameraB") + (2322 joint "camera") + (2560 joint "cameraB")))) (((task-status need-reminder)) (set! (-> this skippable) #t) - (new 'static 'spool-anim :name "warrior-reminder-1" :index 7 :parts 3 :command-list '()) - ) + (new 'static 'spool-anim :name "warrior-reminder-1" :index 7 :parts 3 :command-list ())) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - (send-event (-> (entity-by-type allpontoons) extra process) 'clone (process->handle this)) - (dotimes (s5-2 (entity-actor-count (-> this entity) 'alt-actor)) - (entity-birth-no-kill (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) - (let ((s4-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-2 from) pp) - (set! (-> s4-2 num-params) 0) - (set! (-> s4-2 message) 'die) - (let ((s3-0 send-event-function) - (v1-25 (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) - ) - (s3-0 - (if v1-25 - (-> v1-25 extra process) - ) - s4-2 - ) - ) - ) - ) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) - (new 'static 'spool-anim - :name "warrior-resolution" - :index 8 - :parts 6 - :command-list '((508 blackout 10) (511 blackout 0)) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) + (send-event (-> (entity-by-type allpontoons) extra process) 'clone (process->handle this)) + (dotimes (s5-2 (entity-actor-count (-> this entity) 'alt-actor)) + (entity-birth-no-kill (entity-actor-lookup (-> this entity) 'alt-actor s5-2)) + (let ((s4-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-2 from) pp) + (set! (-> s4-2 num-params) 0) + (set! (-> s4-2 message) 'die) + (let ((s3-0 send-event-function) + (v1-25 (entity-actor-lookup (-> this entity) 'alt-actor s5-2))) + (s3-0 (if v1-25 (-> v1-25 extra process)) s4-2))))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) + (new 'static 'spool-anim :name "warrior-resolution" :index 8 :parts 6 :command-list '((508 blackout 10) (511 blackout 0)))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 5) - ) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 5))))) (defmethod get-art-elem ((this warrior)) - (-> this draw art-group data 5) - ) + (-> this draw art-group data 5)) (defstate play-anim (warrior) :virtual #t - :exit (behavior () - (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod process-taskable-method-43 ((this warrior)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 2) 61440.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.66 f0-2) - (play-ambient (-> this ambient) "WAR-LO1A" #f (-> this root trans)) - ) - ((< 0.33 f0-2) - (play-ambient (-> this ambient) "WAR-LO1B" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "WAR-LO1C" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.66 f0-2) (play-ambient (-> this ambient) "WAR-LO1A" #f (-> this root trans))) + ((< 0.33 f0-2) (play-ambient (-> this ambient) "WAR-LO1B" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "WAR-LO1C" #f (-> this root trans))))))) (defmethod initialize-collision ((this warrior) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player)))) @@ -189,24 +125,19 @@ (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) - (append-prim s4-0 s3-0) - ) + (append-prim s4-0 s3-0)) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) (set! (-> s3-1 collide-with) (collide-kind target)) (set! (-> s3-1 prim-core action) (collide-action solid)) (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) - ) + (append-prim s4-0 s3-1))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) - (set! (-> this root) s5-0) - ) + (set! (-> this root) s5-0)) 0 - (none) - ) + (none)) (defmethod init-from-entity! ((this warrior) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *warrior-sg* 3 33 (new 'static 'vector :y -4096.0 :w 10240.0) 5) @@ -214,5 +145,4 @@ (set! (-> this sound-flava) (music-flava warrior)) (set! (-> this draw light-index) (the-as uint 3)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/assistant-village3.gc b/goal_src/jak1/levels/village3/assistant-village3.gc index 8722455e13..4952b81b8d 100644 --- a/goal_src/jak1/levels/village3/assistant-village3.gc +++ b/goal_src/jak1/levels/village3/assistant-village3.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: assistant-village3.gc @@ -10,177 +9,110 @@ ;; DECOMP BEGINS -(deftype assistant-villagec (process-taskable) - () - ) +(deftype assistant-villagec (process-taskable) ()) - -(defskelgroup *assistant-village3-sg* assistant-village3 assistant-village3-lod0-jg assistant-village3-idle-ja - ((assistant-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow assistant-village3-shadow-mg - ) +(defskelgroup *assistant-village3-sg* + assistant-village3 + assistant-village3-lod0-jg + assistant-village3-idle-ja + ((assistant-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow assistant-village3-shadow-mg) (defmethod process-taskable-method-52 ((this assistant-villagec)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))) 0 - (set! (-> v1-1 settings top-plane w) (- (+ 1024.0 f0-0))) - ) - 0 - ) - ) - (none) - ) + (set! (-> v1-1 settings top-plane w) (- (+ 1024.0 f0-0)))) + 0)) + (none)) (defmethod draw-npc-shadow ((this assistant-villagec)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this assistant-villagec) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-assistant)) (cond ((= (get-task-status (game-task finalboss-movies)) (task-status need-introduction)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - (else - (new 'static 'spool-anim :name "assistant-village3-reminder" :index 4 :parts 3 :command-list '()) - ) - ) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)) + (else (new 'static 'spool-anim :name "assistant-village3-reminder" :index 4 :parts 3 :command-list ())))) (defmethod get-art-elem ((this assistant-villagec)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod should-display? ((this assistant-villagec)) - (and (task-closed? (game-task village3-button) (task-status need-introduction)) (not (sages-kidnapped?))) - ) + (and (task-closed? (game-task village3-button) (task-status need-introduction)) (not (sages-kidnapped?)))) (defmethod target-above-threshold? ((this assistant-villagec)) - (the-as symbol (and *target* (< (-> (target-pos 0) z) -14245888.0))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) z) -14245888.0)))) (defmethod process-taskable-method-43 ((this assistant-villagec)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.85714287 f0-2) - (play-ambient (-> this ambient) "ASSTLP31" #f (-> this root trans)) - ) - ((< 0.71428573 f0-2) - (play-ambient (-> this ambient) "ASSTLP32" #f (-> this root trans)) - ) - ((< 0.5714286 f0-2) - (play-ambient (-> this ambient) "ASSTLP33" #f (-> this root trans)) - ) + ((< 0.85714287 f0-2) (play-ambient (-> this ambient) "ASSTLP31" #f (-> this root trans))) + ((< 0.71428573 f0-2) (play-ambient (-> this ambient) "ASSTLP32" #f (-> this root trans))) + ((< 0.5714286 f0-2) (play-ambient (-> this ambient) "ASSTLP33" #f (-> this root trans))) ((< 0.42857143 f0-2) (let ((v1-16 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-16 (task-status need-reward-speech)) (= v1-16 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP34" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP34" #f (-> this root trans))))) ((< 0.2857143 f0-2) (let ((v1-21 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-21 (task-status need-reward-speech)) (= v1-21 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP35" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP35" #f (-> this root trans))))) ((< 0.14285715 f0-2) (let ((v1-26 (get-task-status (game-task lavatube-end)))) (if (not (or (= v1-26 (task-status need-reward-speech)) (= v1-26 (task-status invalid)))) - (play-ambient (-> this ambient) "ASSTLP36" #f (-> this root trans)) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP36" #f (-> this root trans))))) ((nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "ASSTLP37" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "ASSTLP37" #f (-> this root trans))))))) (defstate idle (assistant-villagec) :virtual #t - :code (behavior () - (if (!= (ja-group) (get-art-elem self)) - (ja-channel-push! 1 (seconds 0.05)) - ) - (loop - (process-taskable-method-43 self) - (ja-no-eval :group! assistant-village3-idle-ja :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (let ((gp-0 (current-time))) - (while (let ((s5-0 (current-time)) - (f30-0 300.0) - (f28-0 0.16) - (f26-0 0.17000002) - ) - (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0) - ) + :code + (behavior () + (if (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.05))) + (loop (process-taskable-method-43 self) + (ja-no-eval :group! assistant-village3-idle-ja :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) (suspend) - ) - ) - (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 0.0 0))) - ) - (let ((gp-3 (current-time))) - (while (let ((s5-1 (current-time)) - (f30-1 300.0) - (f28-1 0.16) - (f26-1 0.17000002) - ) - (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3) - ) + (ja :num! (seek!))) + (let ((gp-0 (current-time))) + (while (let ((s5-0 (current-time)) + (f30-0 300.0) + (f28-0 0.16) + (f26-0 0.17000002)) + (< (- s5-0 (the-as time-frame (the int (* f30-0 (+ f28-0 (* f26-0 (rand-float-gen))))))) gp-0)) + (suspend))) + (ja-no-eval :group! (ja-group) :num! (seek! (ja-aframe 0.0 0)) :frame-num (ja-aframe 16.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - ) - ) - ) + (ja :num! (seek! (ja-aframe 0.0 0)))) + (let ((gp-3 (current-time))) + (while (let ((s5-1 (current-time)) + (f30-1 300.0) + (f28-1 0.16) + (f26-1 0.17000002)) + (< (- s5-1 (the-as time-frame (the int (* f30-1 (+ f28-1 (* f26-1 (rand-float-gen))))))) gp-3)) + (suspend)))))) (defmethod init-from-entity! ((this assistant-villagec) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *assistant-village3-sg* 3 31 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task assistant-village3))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/minecart.gc b/goal_src/jak1/levels/village3/minecart.gc index e4e83866ba..3c0f12220b 100644 --- a/goal_src/jak1/levels/village3/minecart.gc +++ b/goal_src/jak1/levels/village3/minecart.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/generic-obs.gc") (require "engine/util/sync-info.gc") @@ -11,67 +10,51 @@ ;; DECOMP BEGINS -(defskelgroup *minecartsteel-sg* minecartsteel minecartsteel-lod0-jg minecartsteel-idle-ja - ((minecartsteel-lod0-mg (meters 20)) - (minecartsteel-lod1-mg (meters 40)) - (minecartsteel-lod2-mg (meters 999999)) - ) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *minecartsteel-sg* + minecartsteel + minecartsteel-lod0-jg + minecartsteel-idle-ja + ((minecartsteel-lod0-mg (meters 20)) (minecartsteel-lod1-mg (meters 40)) (minecartsteel-lod2-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (deftype minecartsteel (process-drawable) - ((root collide-shape-moving :override) - (index int32) - (anim spool-anim) - (sync sync-info :inline) - ) + ((root collide-shape-moving :override) + (index int32) + (anim spool-anim) + (sync sync-info :inline)) (:state-methods - idle - ) - ) - + idle)) (defstate idle (minecartsteel) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (= (-> proc type) target) - (let ((a2-1 (new 'stack 'collide-overlap-result))) - (if (not (on-platform (-> self root) (-> *target* control) a2-1)) - (send-event proc 'no-look-around (seconds 1.5)) - ) - ) - ) - #f - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (= (-> proc type) target) + (let ((a2-1 (new 'stack 'collide-overlap-result))) + (if (not (on-platform (-> self root) (-> *target* control) a2-1)) (send-event proc 'no-look-around (seconds 1.5))))) + #f))) :trans rider-trans - :code (behavior () - (ja-channel-set! 1) - (ja :group! (-> self anim)) - (loop - (ja :num-func num-func-identity - :frame-num (* (get-current-phase (-> self sync)) (the float (+ (-> (ja-group) data 0 length) -1))) - ) - (let ((a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minecartsteel-lod0-jg cart)))) - (update-trans! (-> self sound) a1-1) - ) - (update! (-> self sound)) - (suspend) - ) - ) - :post rider-post - ) + :code + (behavior () + (ja-channel-set! 1) + (ja :group! (-> self anim)) + (loop (ja :num-func + num-func-identity + :frame-num + (* (get-current-phase (-> self sync)) (the float (+ (-> (ja-group) data 0 length) -1)))) + (let ((a1-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minecartsteel-lod0-jg cart)))) + (update-trans! (-> self sound) a1-1)) + (update! (-> self sound)) + (suspend))) + :post rider-post) (defbehavior minecartsteel-initialize-by-other minecartsteel ((arg0 entity-actor) (arg1 float)) (let ((s4-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -80,68 +63,42 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4915.2 0.0 13107.2) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> self root) s4-0) - ) + (set! (-> self root) s4-0)) (process-drawable-from-entity! self arg0) (logclear! (-> self mask) (process-mask actor-pause)) (quaternion-identity! (-> self root quat)) - (initialize-skeleton self *minecartsteel-sg* '()) + (initialize-skeleton self *minecartsteel-sg* ()) (set! (-> self draw origin-joint-index) (the-as uint 3)) (logior! (-> self skel status) (janim-status inited)) (load-params! (-> self sync) self (the-as uint 9000) arg1 0.15 0.15) - (set! (-> self sound) - (new 'process 'ambient-sound (static-sound-spec "v3-cartride" :fo-max 30) (-> self root trans)) - ) + (set! (-> self sound) (new 'process 'ambient-sound (static-sound-spec "v3-cartride" :fo-max 30) (-> self root trans))) (set! (-> self index) (res-lump-value arg0 'index int)) (let ((v1-33 (-> self index))) (set! (-> self anim) - (the-as - spool-anim - (cond - ((zero? v1-33) - minecartsteel-rail0-ja - ) - ((= v1-33 1) - (let ((a0-17 (-> self sync)) - (t9-12 (method-of-type sync-info setup-params!)) - (a1-11 9000) - (f0-7 (+ 0.8 arg1)) - ) - (t9-12 a0-17 (the-as uint a1-11) (- f0-7 (* (the float (the int (/ f0-7 1.0))) 1.0)) 0.15 0.15) - ) - minecartsteel-rail1-ja - ) - (else - (let ((a0-18 (-> self sync)) - (t9-13 (method-of-type sync-info setup-params!)) - (a1-12 9000) - (f0-10 (+ 0.13 arg1)) - ) - (t9-13 a0-18 (the-as uint a1-12) (- f0-10 (* (the float (the int (/ f0-10 1.0))) 1.0)) 0.15 0.15) - ) - minecartsteel-rail2-ja - ) - ) - ) - ) - ) - (go-virtual idle) - ) + (the-as spool-anim + (cond + ((zero? v1-33) minecartsteel-rail0-ja) + ((= v1-33 1) + (let ((a0-17 (-> self sync)) + (t9-12 (method-of-type sync-info setup-params!)) + (a1-11 9000) + (f0-7 (+ 0.8 arg1))) + (t9-12 a0-17 (the-as uint a1-11) (- f0-7 (* (the float (the int (/ f0-7 1.0))) 1.0)) 0.15 0.15)) + minecartsteel-rail1-ja) + (else + (let ((a0-18 (-> self sync)) + (t9-13 (method-of-type sync-info setup-params!)) + (a1-12 9000) + (f0-10 (+ 0.13 arg1))) + (t9-13 a0-18 (the-as uint a1-12) (- f0-10 (* (the float (the int (/ f0-10 1.0))) 1.0)) 0.15 0.15)) + minecartsteel-rail2-ja))))) + (go-virtual idle)) (defmethod init-from-entity! ((this minecartsteel) (arg0 entity-actor)) (dotimes (s4-0 4) - (process-spawn - minecartsteel - :init minecartsteel-initialize-by-other - arg0 - (* 0.2 (the float (+ s4-0 1))) - :to this - ) - ) + (process-spawn minecartsteel :init minecartsteel-initialize-by-other arg0 (* 0.2 (the float (+ s4-0 1))) :to this)) (minecartsteel-initialize-by-other arg0 0.0) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/miners.gc b/goal_src/jak1/levels/village3/miners.gc index 1442ae3614..3b0dc65dac 100644 --- a/goal_src/jak1/levels/village3/miners.gc +++ b/goal_src/jak1/levels/village3/miners.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: miners.gc @@ -16,332 +15,252 @@ (defbehavior miners-anim-loop process-taskable () (when (!= (ja-group) (get-art-elem self)) (ja-channel-push! 1 (seconds 0.2)) - (ja :group! (get-art-elem self)) - ) - (loop - (suspend) + (ja :group! (get-art-elem self))) + (loop (suspend) (ja :num! (loop! 2.0)) - (if (= (-> self next-state name) 'idle) - (process-taskable-method-43 self) - ) - ) - 0 - ) + (if (= (-> self next-state name) 'idle) (process-taskable-method-43 self))) + 0) -(deftype minertall (process-taskable) - () - ) +(deftype minertall (process-taskable) ()) - -(defskelgroup *minertall-sg* minertall minertall-lod0-jg minertall-idle-ja - ((minertall-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow minertall-shadow-mg - ) +(defskelgroup *minertall-sg* + minertall + minertall-lod0-jg + minertall-idle-ja + ((minertall-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow minertall-shadow-mg) (defmethod process-taskable-method-52 ((this minertall)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this minertall)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defmethod play-anim! ((this minertall) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (current-status (-> this tasks)) (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (the-as basic (-> this draw art-group data 3)) - ) + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (the-as basic (-> this draw art-group data 3))) (defmethod get-art-elem ((this minertall)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defstate idle (minertall) :virtual #t - :trans (behavior () - (set! (-> self will-talk) #f) - ((-> (method-of-type process-taskable idle) trans)) - ) - :code miners-anim-loop - ) + :trans + (behavior () + (set! (-> self will-talk) #f) + ((-> (method-of-type process-taskable idle) trans))) + :code miners-anim-loop) (defmethod init-from-entity! ((this minertall) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *minertall-sg* 32 47 (new 'static 'vector :w 4096.0) 5) (set! (-> this tasks) (get-task-control (game-task village3-miner-money1))) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) (deftype minershort (process-taskable) - ((other-miner minertall) - ) - ) + ((other-miner minertall))) - -(defskelgroup *minershort-sg* minershort minershort-lod0-jg minershort-idle-ja - ((minershort-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 2.5) - :shadow minershort-shadow-mg - ) +(defskelgroup *minershort-sg* + minershort + minershort-lod0-jg + minershort-idle-ja + ((minershort-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 2.5) + :shadow minershort-shadow-mg) (defpartgroup group-minershort-candle :id 566 :bounds (static-bspherem 0 0 0 15) - :parts ((sp-item 2364 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2365 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 2366 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 2364 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2365 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 2366 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 2366 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 2.0) - (:y (meters 0)) - (:scale-x (meters 0.075) (meters 0.075)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 128.0 32.0) - (:b 128.0 16.0) - (:a 32.0 32.0) - (:vel-y (meters 0) (meters 0.00033333333)) - (:scalevel-x (meters 0.0005) (meters 0.001)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.32820514) - (:fade-g -0.32820514) - (:fade-b -0.32820514) - (:fade-a -0.16410257) - (:accel-y (meters 0.000033333334) (meters 0.00006666667)) - (:timer (seconds 1.3)) - (:flags (bit2 bit12 bit14)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.05)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 2.0) + (:y (meters 0)) + (:scale-x (meters 0.075) (meters 0.075)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 128.0 32.0) + (:b 128.0 16.0) + (:a 32.0 32.0) + (:vel-y (meters 0) (meters 0.00033333333)) + (:scalevel-x (meters 0.0005) (meters 0.001)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.32820514) + (:fade-g -0.32820514) + (:fade-b -0.32820514) + (:fade-a -0.16410257) + (:accel-y (meters 0.000033333334) (meters 0.00006666667)) + (:timer (seconds 1.3)) + (:flags (bit2 bit12 bit14)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.05)))) (defpart 2364 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 3.0) - (:y (meters -0.08) (meters 0.02)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 32.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.2) (seconds 0.097)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 3.0) + (:y (meters -0.08) (meters 0.02)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 32.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.2) (seconds 0.097)) + (:flags (bit3)))) (defpart 2365 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.02)) - (:scale-x (meters 0.5) (meters 0.75)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 16.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-a -1.92) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.02)) + (:scale-x (meters 0.5) (meters 0.75)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 16.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-a -1.92) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)))) (defmethod process-taskable-method-52 ((this minershort)) (let ((v1-1 (-> this draw shadow-ctrl))) (when v1-1 (let ((f0-0 (-> this root trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) - ) + (let ((a0-2 v1-1)) (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))) 0 - (let ((a0-4 v1-1)) - (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))) - ) - ) + (let ((a0-4 v1-1)) (set! (-> a0-4 settings top-plane w) (- (+ 4096.0 f0-0))))) 0 - (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) - ) - ) - (none) - ) + (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)))) + (none)) (defmethod draw-npc-shadow ((this minershort)) (-> this draw shadow-ctrl) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) - (let ((v1-9 (-> this draw shadow-ctrl))) - (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) + (let ((v1-9 (-> this draw shadow-ctrl))) (logclear! (-> v1-9 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day (-> this draw shadow-ctrl)) - ) - (else - (let ((v1-14 (-> this draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) (shadow-flags disable-draw)) - ) - 0 - ) - ) - (none) - ) + (update-direction-from-time-of-day (-> this draw shadow-ctrl))) + (else (let ((v1-14 (-> this draw shadow-ctrl))) (logior! (-> v1-14 settings flags) (shadow-flags disable-draw))) 0)) + (none)) (defbehavior minershort-trans-hook minershort () - (spawn - (-> self part) - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minershort-lod0-jg candle)) - ) - (none) - ) + (spawn (-> self part) (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node minershort-lod0-jg candle))) + (none)) (defmethod play-anim! ((this minershort) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) (case (current-status (-> this tasks)) (((task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village3-miner-money1)) (when arg0 (let* ((s5-1 (-> this tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - ) - (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-0 (method-of-object s5-1 save-reminder))) + (s4-0 s5-1 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) (close-specific-task! (game-task village3-miner-money1) (task-status need-introduction)) (close-specific-task! (game-task village3-miner-money2) (task-status need-introduction)) (close-specific-task! (game-task village3-miner-money3) (task-status need-introduction)) - (close-specific-task! (game-task village3-miner-money4) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-orbs" - :index 4 - :parts 16 - :command-list '((171 joint "cameraB") - (206 joint "camera") - (423 joint "cameraB") - (591 joint "camera") - (692 joint "cameraB") - (918 joint "camera") - (1122 joint "cameraB") - (1122 shadow self #f) - (1241 joint "camera") - (1241 shadow self #t) - ) - ) - ) + (close-specific-task! (game-task village3-miner-money4) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-orbs" + :index 4 + :parts 16 + :command-list + '((171 joint "cameraB") + (206 joint "camera") + (423 joint "cameraB") + (591 joint "camera") + (692 joint "cameraB") + (918 joint "camera") + (1122 joint "cameraB") + (1122 shadow self #f) + (1241 joint "camera") + (1241 shadow self #t)))) (((game-task cave-gnawers)) (when arg0 (let* ((s5-2 (-> this tasks)) - (s4-1 (method-of-object s5-2 save-reminder)) - ) - (s4-1 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) + (s4-1 (method-of-object s5-2 save-reminder))) + (s4-1 s5-2 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-gnawers" - :index 9 - :parts 8 - :command-list '((0 want-levels village3 maincave) - (149 joint "cameraB") - (158 display-level maincave movie) - (158 want-force-vis maincave #t) - (435 display-level maincave #f) - (435 joint "camera") - (680 joint "cameraB") - (719 joint "camera") - ) - ) - ) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-gnawers" + :index 9 + :parts 8 + :command-list + '((0 want-levels village3 maincave) + (149 joint "cameraB") + (158 display-level maincave movie) + (158 want-force-vis maincave #t) + (435 display-level maincave #f) + (435 joint "camera") + (680 joint "cameraB") + (719 joint "camera")))) (else - (when arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "minershort-introduction-switch" - :index 11 - :parts 7 - :command-list '((2 shadow "minertall-1" #f) (835 shadow "minertall-1" #t)) - ) - ) - ) - ) + (when arg0 + (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "minershort-introduction-switch" + :index 11 + :parts 7 + :command-list + '((2 shadow "minertall-1" #f) (835 shadow "minertall-1" #t)))))) (((task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-2 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 3) (the-as uint s4-2)) - (set! s4-2 0) - ) + (if (< (the-as uint 3) (the-as uint s4-2)) (set! s4-2 0)) (countdown (s3-0 4) (let ((v1-59 s4-2)) (cond @@ -349,220 +268,108 @@ (if (not (or (= (get-task-status (game-task village3-miner-money1)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money2)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money3)) (task-status need-reminder)) - (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)) - ) - ) - (set! s4-2 1) - ) - ) - ((= v1-59 1) - (if (!= (get-task-status (game-task cave-gnawers)) (task-status need-reminder)) - (set! s4-2 2) - ) - ) + (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)))) + (set! s4-2 1))) + ((= v1-59 1) (if (!= (get-task-status (game-task cave-gnawers)) (task-status need-reminder)) (set! s4-2 2))) ((= v1-59 2) (if (not (or (= (get-task-status (game-task village3-miner-money1)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money2)) (task-status need-reminder)) (= (get-task-status (game-task village3-miner-money3)) (task-status need-reminder)) - (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)) - ) - ) - (set! s4-2 3) - ) - ) - (else - (if (!= (get-task-status (game-task snow-eggtop)) (task-status need-reminder)) - (set! s4-2 0) - ) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-2 0) - ) + (= (get-task-status (game-task village3-miner-money4)) (task-status need-reminder)))) + (set! s4-2 3))) + (else (if (!= (get-task-status (game-task snow-eggtop)) (task-status need-reminder)) (set! s4-2 0)))))) + (if arg0 (save-reminder (-> this tasks) s4-2 0)) (cond - ((zero? s4-2) - (new 'static 'spool-anim :name "minershort-reminder-1-orbs" :index 5 :parts 3 :command-list '()) - ) + ((zero? s4-2) (new 'static 'spool-anim :name "minershort-reminder-1-orbs" :index 5 :parts 3 :command-list ())) ((= s4-2 1) - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim :name "minershort-reminder-1-gnawers" :index 10 :parts 3 :command-list '()) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static 'spool-anim :name "minershort-reminder-1-gnawers" :index 10 :parts 3 :command-list ())) ((= s4-2 2) - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim :name "minershort-reminder-2-orbs" :index 6 :parts 2 :command-list '()) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static 'spool-anim :name "minershort-reminder-2-orbs" :index 6 :parts 2 :command-list ())) (else - (if arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - ) - (new 'static 'spool-anim - :name "minershort-reminder-1-switch" - :index 12 - :parts 5 - :command-list '((2 shadow "minertall-1" #f) (500 shadow "minertall-1" #t)) - ) - ) - ) - ) - ) + (if arg0 (send-event (-> this other-miner ppointer 3) 'clone (process->handle this))) + (new 'static + 'spool-anim + :name "minershort-reminder-1-switch" + :index 12 + :parts 5 + :command-list + '((2 shadow "minertall-1" #f) (500 shadow "minertall-1" #t))))))) (((task-status need-reward-speech)) (let ((s4-3 (get-reminder (-> this tasks) 2))) (cond (arg0 - (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - (save-reminder (-> this tasks) (+ s4-3 1) 2) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money)) - ) - ) + (send-event (-> this other-miner ppointer 3) 'clone (process->handle this)) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) + (save-reminder (-> this tasks) (+ s4-3 1) 2)) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money)))) (if (< (the-as uint s4-3) (the-as uint 3)) - (new 'static 'spool-anim :name "minershort-resolution-1-orbs" :index 7 :parts 2 :command-list '()) - (new 'static 'spool-anim - :name "minershort-resolution-2-orbs" - :index 8 - :parts 6 - :command-list '((154 joint "cameraB") (461 joint "camera")) - ) - ) - ) - ) + (new 'static 'spool-anim :name "minershort-resolution-1-orbs" :index 7 :parts 2 :command-list ()) + (new 'static + 'spool-anim + :name "minershort-resolution-2-orbs" + :index 8 + :parts 6 + :command-list + '((154 joint "cameraB") (461 joint "camera")))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 3) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 3)))) (defstate play-anim (minershort) :virtual #t - :exit (behavior () - (send-event (-> self other-miner ppointer 3) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (send-event (-> self other-miner ppointer 3) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod get-art-elem ((this minershort)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod process-taskable-method-43 ((this minershort)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.9655172 f0-2) - (play-ambient (-> this ambient) "MIN-LO01" #f (-> this root trans)) - ) - ((< 0.9310345 f0-2) - (play-ambient (-> this ambient) "MIN-LO03" #f (-> this root trans)) - ) - ((< 0.8965517 f0-2) - (play-ambient (-> this ambient) "MIN-LO04" #f (-> this root trans)) - ) - ((< 0.86206895 f0-2) - (play-ambient (-> this ambient) "MIN-LO05" #f (-> this root trans)) - ) - ((< 0.82758623 f0-2) - (play-ambient (-> this ambient) "MIN-LO06" #f (-> this root trans)) - ) - ((< 0.79310346 f0-2) - (play-ambient (-> this ambient) "MSH-AM01" #f (-> this root trans)) - ) - ((< 0.7586207 f0-2) - (play-ambient (-> this ambient) "MSH-AM02" #f (-> this root trans)) - ) - ((< 0.7241379 f0-2) - (play-ambient (-> this ambient) "MSH-AM03" #f (-> this root trans)) - ) - ((< 0.6896552 f0-2) - (play-ambient (-> this ambient) "MSH-AM04" #f (-> this root trans)) - ) - ((< 0.6551724 f0-2) - (play-ambient (-> this ambient) "MSH-AM05" #f (-> this root trans)) - ) - ((< 0.62068963 f0-2) - (play-ambient (-> this ambient) "MSH-AM06" #f (-> this root trans)) - ) - ((< 0.5862069 f0-2) - (play-ambient (-> this ambient) "MSH-AM07" #f (-> this root trans)) - ) - ((< 0.55172414 f0-2) - (play-ambient (-> this ambient) "MSH-AM08" #f (-> this root trans)) - ) - ((< 0.51724136 f0-2) - (play-ambient (-> this ambient) "MSH-AM09" #f (-> this root trans)) - ) - ((< 0.4827586 f0-2) - (play-ambient (-> this ambient) "MSH-AM10" #f (-> this root trans)) - ) - ((< 0.44827586 f0-2) - (play-ambient (-> this ambient) "MSH-AM11" #f (-> this root trans)) - ) - ((< 0.41379312 f0-2) - (play-ambient (-> this ambient) "MSH-AM12" #f (-> this root trans)) - ) - ((< 0.37931034 f0-2) - (play-ambient (-> this ambient) "MSH-AM1A" #f (-> this root trans)) - ) - ((< 0.3448276 f0-2) - (play-ambient (-> this ambient) "MSH-AM2A" #f (-> this root trans)) - ) - ((< 0.31034482 f0-2) - (play-ambient (-> this ambient) "MSH-AM3A" #f (-> this root trans)) - ) - ((< 0.27586207 f0-2) - (play-ambient (-> this ambient) "MTA-AM01" #f (-> this root trans)) - ) - ((< 0.2413793 f0-2) - (play-ambient (-> this ambient) "MTA-AM02" #f (-> this root trans)) - ) - ((< 0.20689656 f0-2) - (play-ambient (-> this ambient) "MTA-AM03" #f (-> this root trans)) - ) - ((< 0.1724138 f0-2) - (play-ambient (-> this ambient) "MTA-AM04" #f (-> this root trans)) - ) - ((< 0.13793103 f0-2) - (play-ambient (-> this ambient) "MTA-AM05" #f (-> this root trans)) - ) - ((< 0.10344828 f0-2) - (play-ambient (-> this ambient) "MTA-AM06" #f (-> this root trans)) - ) - ((< 0.06896552 f0-2) - (play-ambient (-> this ambient) "MTA-AM07" #f (-> this root trans)) - ) - ((< 0.03448276 f0-2) - (play-ambient (-> this ambient) "MTA-AM08" #f (-> this root trans)) - ) - (else - (play-ambient (-> this ambient) "MTA-AM09" #f (-> this root trans)) - ) - ) - ) - ) - ) + ((< 0.9655172 f0-2) (play-ambient (-> this ambient) "MIN-LO01" #f (-> this root trans))) + ((< 0.9310345 f0-2) (play-ambient (-> this ambient) "MIN-LO03" #f (-> this root trans))) + ((< 0.8965517 f0-2) (play-ambient (-> this ambient) "MIN-LO04" #f (-> this root trans))) + ((< 0.86206895 f0-2) (play-ambient (-> this ambient) "MIN-LO05" #f (-> this root trans))) + ((< 0.82758623 f0-2) (play-ambient (-> this ambient) "MIN-LO06" #f (-> this root trans))) + ((< 0.79310346 f0-2) (play-ambient (-> this ambient) "MSH-AM01" #f (-> this root trans))) + ((< 0.7586207 f0-2) (play-ambient (-> this ambient) "MSH-AM02" #f (-> this root trans))) + ((< 0.7241379 f0-2) (play-ambient (-> this ambient) "MSH-AM03" #f (-> this root trans))) + ((< 0.6896552 f0-2) (play-ambient (-> this ambient) "MSH-AM04" #f (-> this root trans))) + ((< 0.6551724 f0-2) (play-ambient (-> this ambient) "MSH-AM05" #f (-> this root trans))) + ((< 0.62068963 f0-2) (play-ambient (-> this ambient) "MSH-AM06" #f (-> this root trans))) + ((< 0.5862069 f0-2) (play-ambient (-> this ambient) "MSH-AM07" #f (-> this root trans))) + ((< 0.55172414 f0-2) (play-ambient (-> this ambient) "MSH-AM08" #f (-> this root trans))) + ((< 0.51724136 f0-2) (play-ambient (-> this ambient) "MSH-AM09" #f (-> this root trans))) + ((< 0.4827586 f0-2) (play-ambient (-> this ambient) "MSH-AM10" #f (-> this root trans))) + ((< 0.44827586 f0-2) (play-ambient (-> this ambient) "MSH-AM11" #f (-> this root trans))) + ((< 0.41379312 f0-2) (play-ambient (-> this ambient) "MSH-AM12" #f (-> this root trans))) + ((< 0.37931034 f0-2) (play-ambient (-> this ambient) "MSH-AM1A" #f (-> this root trans))) + ((< 0.3448276 f0-2) (play-ambient (-> this ambient) "MSH-AM2A" #f (-> this root trans))) + ((< 0.31034482 f0-2) (play-ambient (-> this ambient) "MSH-AM3A" #f (-> this root trans))) + ((< 0.27586207 f0-2) (play-ambient (-> this ambient) "MTA-AM01" #f (-> this root trans))) + ((< 0.2413793 f0-2) (play-ambient (-> this ambient) "MTA-AM02" #f (-> this root trans))) + ((< 0.20689656 f0-2) (play-ambient (-> this ambient) "MTA-AM03" #f (-> this root trans))) + ((< 0.1724138 f0-2) (play-ambient (-> this ambient) "MTA-AM04" #f (-> this root trans))) + ((< 0.13793103 f0-2) (play-ambient (-> this ambient) "MTA-AM05" #f (-> this root trans))) + ((< 0.10344828 f0-2) (play-ambient (-> this ambient) "MTA-AM06" #f (-> this root trans))) + ((< 0.06896552 f0-2) (play-ambient (-> this ambient) "MTA-AM07" #f (-> this root trans))) + ((< 0.03448276 f0-2) (play-ambient (-> this ambient) "MTA-AM08" #f (-> this root trans))) + (else (play-ambient (-> this ambient) "MTA-AM09" #f (-> this root trans))))))) (defstate idle (minershort) :virtual #t - :code miners-anim-loop - ) + :code miners-anim-loop) (defmethod init-from-entity! ((this minershort) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *minershort-sg* 34 46 (new 'static 'vector :w 4096.0) 5) @@ -573,40 +380,32 @@ (set! (-> this sound-flava) (music-flava miners)) (set! (-> this draw light-index) (the-as uint 1)) (process-taskable-method-42 this) - (none) - ) + (none)) -(deftype cavegem (process-drawable) - () +(deftype cavegem (process-drawable) () (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *cavegem-sg* cavegem cavegem-lod0-jg cavegem-idle-ja - ((cavegem-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 9) - ) +(defskelgroup *cavegem-sg* + cavegem + cavegem-lod0-jg + cavegem-idle-ja + ((cavegem-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 9)) (defstate idle (cavegem) :virtual #t - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this cavegem) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *cavegem-sg* '()) + (initialize-skeleton this *cavegem-sg* ()) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/sage-village3.gc b/goal_src/jak1/levels/village3/sage-village3.gc index 2720e70690..23fa37a32f 100644 --- a/goal_src/jak1/levels/village3/sage-village3.gc +++ b/goal_src/jak1/levels/village3/sage-village3.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: sage-village3.gc @@ -11,287 +10,200 @@ ;; DECOMP BEGINS (deftype sage-villagec (process-taskable) - ((evilbro handle) - (evilsis handle) - (assistant entity-actor) - ) - ) + ((evilbro handle) + (evilsis handle) + (assistant entity-actor))) +(defskelgroup *sage-village3-sg* + sage-village3 + sage-village3-lod0-jg + sage-village3-idle-ja + ((sage-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow sage-village3-shadow-mg) -(defskelgroup *sage-village3-sg* sage-village3 sage-village3-lod0-jg sage-village3-idle-ja - ((sage-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow sage-village3-shadow-mg - ) +(defskelgroup *evilbro-village3-sg* + evilbro-village3 + evilbro-village3-lod0-jg + evilbro-village3-idle-ja + ((evilbro-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilbro-village3-shadow-mg) -(defskelgroup *evilbro-village3-sg* evilbro-village3 evilbro-village3-lod0-jg evilbro-village3-idle-ja - ((evilbro-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilbro-village3-shadow-mg - ) - -(defskelgroup *evilsis-village3-sg* evilsis-village3 evilsis-village3-lod0-jg evilsis-village3-idle-ja - ((evilsis-village3-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - :shadow evilsis-village3-shadow-mg - ) +(defskelgroup *evilsis-village3-sg* + evilsis-village3 + evilsis-village3-lod0-jg + evilsis-village3-idle-ja + ((evilsis-village3-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :shadow evilsis-village3-shadow-mg) (defmethod play-anim! ((this sage-villagec) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk-to-sage)) (case (current-status (-> this tasks)) (((task-status unknown) (task-status need-hint) (task-status need-introduction)) - (if (not arg0) - (set! (-> this will-talk) #t) - ) + (if (not arg0) (set! (-> this will-talk) #t)) (case (current-task (-> this tasks)) (((game-task village3-button)) (when arg0 (close-status! (-> this tasks) (task-status need-introduction)) (send-event (-> this assistant extra process) 'clone (process->handle this)) (set! (-> this evilbro) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-village3-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilbro-village3-sg* #f :to this))) (send-event (handle->process (-> this evilbro)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilbro)) 'blend-shape #t) (send-event (handle->process (-> this evilbro)) 'center-joint 3) (set! (-> this evilsis) - (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-village3-sg* #f :to this)) - ) + (ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *evilsis-village3-sg* #f :to this))) (send-event (handle->process (-> this evilsis)) 'anim-mode 'clone-anim) (send-event (handle->process (-> this evilsis)) 'blend-shape #t) (send-event (handle->process (-> this evilsis)) 'center-joint 3) - (set! (-> this draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction" - :index 8 - :parts 58 - :command-list '((206 joint "cameraB") - (268 joint "camera") - (321 joint "cameraB") - (415 joint "camera") - (502 joint "cameraB") - (655 joint "camera") - (864 joint "cameraB") - (958 joint "camera") - (1178 joint "cameraB") - (1295 joint "camera") - (1377 joint "cameraB") - (1683 joint "camera") - (2066 joint "cameraB") - (2209 joint "camera") - (2389 joint "cameraB") - (2707 joint "camera") - (2769 joint "cameraB") - (2901 joint "camera") - (3021 joint "cameraB") - (3158 joint "camera") - (3301 joint "cameraB") - (3533 joint "camera") - (3632 joint "cameraB") - (3692 joint "camera") - (3780 joint "cameraB") - (3818 joint "camera") - (4188 joint "cameraB") - (4324 joint "camera") - (4462 joint "cameraB") - (4542 joint "camera") - ) - ) - ) + (set! (-> this draw bounds w) 40960.0)) + (new 'static + 'spool-anim + :name "sage-village3-introduction" + :index 8 + :parts 58 + :command-list + '((206 joint "cameraB") + (268 joint "camera") + (321 joint "cameraB") + (415 joint "camera") + (502 joint "cameraB") + (655 joint "camera") + (864 joint "cameraB") + (958 joint "camera") + (1178 joint "cameraB") + (1295 joint "camera") + (1377 joint "cameraB") + (1683 joint "camera") + (2066 joint "cameraB") + (2209 joint "camera") + (2389 joint "cameraB") + (2707 joint "camera") + (2769 joint "cameraB") + (2901 joint "camera") + (3021 joint "cameraB") + (3158 joint "camera") + (3301 joint "cameraB") + (3533 joint "camera") + (3632 joint "cameraB") + (3692 joint "camera") + (3780 joint "cameraB") + (3818 joint "camera") + (4188 joint "cameraB") + (4324 joint "camera") + (4462 joint "cameraB") + (4542 joint "camera")))) (((game-task cave-dark-crystals)) (when arg0 (let* ((s5-3 (-> this tasks)) - (s4-0 (method-of-object s5-3 save-reminder)) - ) - (s4-0 s5-3 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1) - ) - (close-status! (-> this tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction-dark-eco" - :index 4 - :parts 9 - :command-list '((111 joint "cameraB") (189 joint "camera") (455 joint "cameraB") (638 joint "camera") (753 joint "cameraB")) - ) - ) + (s4-0 (method-of-object s5-3 save-reminder))) + (s4-0 s5-3 (the int (the-as float (send-event *target* 'query 'pickup (pickup-type fuel-cell)))) 1)) + (close-status! (-> this tasks) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-village3-introduction-dark-eco" + :index 4 + :parts 9 + :command-list + '((111 joint "cameraB") (189 joint "camera") (455 joint "cameraB") (638 joint "camera") (753 joint "cameraB")))) (else - (if arg0 - (close-specific-task! (game-task snow-ram) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-village3-introduction-rams" - :index 6 - :parts 6 - :command-list '((155 joint "cameraB") (370 joint "camera")) - ) - ) - ) - ) + (if arg0 (close-specific-task! (game-task snow-ram) (task-status need-introduction))) + (new 'static + 'spool-anim + :name "sage-village3-introduction-rams" + :index 6 + :parts 6 + :command-list + '((155 joint "cameraB") (370 joint "camera")))))) (((task-status need-reminder-a) (task-status need-reminder)) (set! (-> this skippable) #t) (let ((s4-1 (+ (get-reminder (-> this tasks) 0) 1))) - (if (< (the-as uint 1) (the-as uint s4-1)) - (set! s4-1 0) - ) + (if (< (the-as uint 1) (the-as uint s4-1)) (set! s4-1 0)) (countdown (s3-0 2) (cond - ((zero? s4-1) - (if (!= (get-task-status (game-task cave-dark-crystals)) (task-status need-reminder)) - (set! s4-1 1) - ) - ) + ((zero? s4-1) (if (!= (get-task-status (game-task cave-dark-crystals)) (task-status need-reminder)) (set! s4-1 1))) (else - (if (not (or (= (get-task-status (game-task snow-ram)) (task-status need-reminder)) - (= (get-task-status (game-task snow-ram)) (task-status need-reminder-a)) - ) - ) - (set! s4-1 0) - ) - ) - ) - ) - (if arg0 - (save-reminder (-> this tasks) s4-1 0) - ) + (if (not (or (= (get-task-status (game-task snow-ram)) (task-status need-reminder)) + (= (get-task-status (game-task snow-ram)) (task-status need-reminder-a)))) + (set! s4-1 0))))) + (if arg0 (save-reminder (-> this tasks) s4-1 0)) (if (zero? s4-1) - (new 'static 'spool-anim :name "sage-village3-reminder-1-dark-eco" :index 5 :parts 2 :command-list '()) - (new 'static 'spool-anim :name "sage-village3-reminder-1-rams" :index 7 :parts 3 :command-list '()) - ) - ) - ) + (new 'static 'spool-anim :name "sage-village3-reminder-1-dark-eco" :index 5 :parts 2 :command-list ()) + (new 'static 'spool-anim :name "sage-village3-reminder-1-rams" :index 7 :parts 3 :command-list ())))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (get-art-elem this) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (get-art-elem this)))) (defmethod get-art-elem ((this sage-villagec)) - (-> this draw art-group data 3) - ) + (-> this draw art-group data 3)) (defmethod target-above-threshold? ((this sage-villagec)) - (the-as symbol (and *target* (< (-> (target-pos 0) x) 4575232.0) (< -14323302.0 (-> (target-pos 0) z)))) - ) + (the-as symbol (and *target* (< (-> (target-pos 0) x) 4575232.0) (< -14323302.0 (-> (target-pos 0) z))))) (defmethod process-taskable-method-43 ((this sage-villagec)) (when (ambient-control-method-10 (-> this ambient) (new 'stack-no-clear 'vector) (seconds 30) 122880.0 this) (let ((f0-2 (rand-float-gen))) (cond - ((< 0.875 f0-2) - (play-ambient (-> this ambient) "SAGELP31" #f (-> this root trans)) - ) + ((< 0.875 f0-2) (play-ambient (-> this ambient) "SAGELP31" #f (-> this root trans))) ((< 0.75 f0-2) (if (not (closed? (-> this tasks) (game-task cave-dark-crystals) (task-status need-reminder))) - (play-ambient (-> this ambient) "SAGELP32" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "SAGELP32" #f (-> this root trans)))) ((< 0.625 f0-2) (if (nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "SAGELP33" #f (-> this root trans)) - ) - ) - ((< 0.5 f0-2) - (play-ambient (-> this ambient) "SAGELP34" #f (-> this root trans)) - ) - ((< 0.375 f0-2) - (play-ambient (-> this ambient) "SAGELP35" #f (-> this root trans)) - ) - ((< 0.25 f0-2) - (play-ambient (-> this ambient) "SAGELP36" #f (-> this root trans)) - ) + (play-ambient (-> this ambient) "SAGELP33" #f (-> this root trans)))) + ((< 0.5 f0-2) (play-ambient (-> this ambient) "SAGELP34" #f (-> this root trans))) + ((< 0.375 f0-2) (play-ambient (-> this ambient) "SAGELP35" #f (-> this root trans))) + ((< 0.25 f0-2) (play-ambient (-> this ambient) "SAGELP36" #f (-> this root trans))) ((< 0.125 f0-2) (if (nonzero? (get-task-status (game-task citadel-sage-green))) - (play-ambient (-> this ambient) "SAGELP37" #f (-> this root trans)) - ) - ) + (play-ambient (-> this ambient) "SAGELP37" #f (-> this root trans)))) ((!= (get-task-status (game-task citadel-sage-green)) (task-status need-resolution)) - (play-ambient (-> this ambient) "SAGELP38" #f (-> this root trans)) - ) - ) - ) - ) - ) + (play-ambient (-> this ambient) "SAGELP38" #f (-> this root trans))))))) (defstate idle (sage-villagec) :virtual #t - :trans (behavior () - (case (get-task-status (game-task village3-button)) - (((task-status need-introduction)) - (send-event self 'play-anim) - ) - ) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :trans + (behavior () + (case (get-task-status (game-task village3-button)) + (((task-status need-introduction)) (send-event self 'play-anim))) + ((-> (method-of-type process-taskable idle) trans)))) (defstate play-anim (sage-villagec) :virtual #t - :exit (behavior () - (set! (-> self draw bounds w) 10240.0) - (send-event (-> self assistant extra process) 'end-mode) - (let ((a0-2 (handle->process (-> self evilbro)))) - (if a0-2 - (deactivate a0-2) - ) - ) - (let ((a0-6 (handle->process (-> self evilsis)))) - (if a0-6 - (deactivate a0-6) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - ) - ) + :exit + (behavior () + (set! (-> self draw bounds w) 10240.0) + (send-event (-> self assistant extra process) 'end-mode) + (let ((a0-2 (handle->process (-> self evilbro)))) (if a0-2 (deactivate a0-2))) + (let ((a0-6 (handle->process (-> self evilsis)))) (if a0-6 (deactivate a0-6))) + ((-> (method-of-type process-taskable play-anim) exit)))) (defmethod should-display? ((this sage-villagec)) (cond ((not (closed? (-> this tasks) (game-task village3-button) (task-status need-hint))) (process-taskable-method-33 this) - #f - ) - ((sages-kidnapped?) - (process-taskable-method-33 this) - #f - ) - (else - #t - ) - ) - ) + #f) + ((sages-kidnapped?) (process-taskable-method-33 this) #f) + (else #t))) (defmethod draw-npc-shadow ((this sage-villagec)) (let ((v1-1 (-> this draw shadow-ctrl))) (cond - ((and (-> this draw shadow) - (zero? (-> this draw cur-lod)) - (logtest? (-> this draw status) (draw-status was-drawn)) - ) + ((and (-> this draw shadow) (zero? (-> this draw cur-lod)) (logtest? (-> this draw status) (draw-status was-drawn))) (logclear! (-> v1-1 settings flags) (shadow-flags shdf03)) (logclear! (-> v1-1 settings flags) (shadow-flags shdf02)) (set! (-> v1-1 settings bot-plane w) 20480.0) - (let ((a0-8 v1-1)) - (logclear! (-> a0-8 settings flags) (shadow-flags disable-draw)) - ) + (let ((a0-8 v1-1)) (logclear! (-> a0-8 settings flags) (shadow-flags disable-draw))) 0 - (update-direction-from-time-of-day v1-1) - ) - (else - (logior! (-> v1-1 settings flags) (shadow-flags disable-draw)) - 0 - ) - ) - ) - (none) - ) + (update-direction-from-time-of-day v1-1)) + (else (logior! (-> v1-1 settings flags) (shadow-flags disable-draw)) 0))) + (none)) (defmethod init-from-entity! ((this sage-villagec) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *sage-village3-sg* 3 40 (new 'static 'vector :w 8192.0) 5) @@ -301,5 +213,4 @@ (set! (-> this evilsis) (the-as handle #f)) (set! (-> this sound-flava) (music-flava sage)) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/village3-obs.gc b/goal_src/jak1/levels/village3/village3-obs.gc index ea1409d56e..d5c387035f 100644 --- a/goal_src/jak1/levels/village3/village3-obs.gc +++ b/goal_src/jak1/levels/village3/village3-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/gfx/shadow/shadow-cpu.gc") (require "engine/common-obs/generic-obs.gc") (require "engine/entity/ambient.gc") @@ -15,321 +14,259 @@ ;; DECOMP BEGINS -(defskelgroup *med-res-ogre-sg* medres-ogre medres-ogre-lod0-jg medres-ogre-idle-ja - ((medres-ogre-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -450 350) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre-sg* + medres-ogre + medres-ogre-lod0-jg + medres-ogre-idle-ja + ((medres-ogre-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -450 350) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-ogre2-sg* medres-ogre2 medres-ogre2-lod0-jg medres-ogre2-idle-ja - ((medres-ogre2-lod0-mg (meters 999999))) - :bounds (static-spherem -200 0 -950 320) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre2-sg* + medres-ogre2 + medres-ogre2-lod0-jg + medres-ogre2-idle-ja + ((medres-ogre2-lod0-mg (meters 999999))) + :bounds (static-spherem -200 0 -950 320) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-ogre3-sg* medres-ogre3 medres-ogre3-lod0-jg medres-ogre3-idle-ja - ((medres-ogre3-lod0-mg (meters 999999))) - :bounds (static-spherem -100 0 -1370 300) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-ogre3-sg* + medres-ogre3 + medres-ogre3-lod0-jg + medres-ogre3-idle-ja + ((medres-ogre3-lod0-mg (meters 999999))) + :bounds (static-spherem -100 0 -1370 300) + :longest-edge (meters 0.01)) -(defskelgroup *med-res-finalboss-sg* medres-finalboss medres-finalboss-lod0-jg medres-finalboss-idle-ja - ((medres-finalboss-lod0-mg (meters 999999))) - :bounds (static-spherem 80 120 -150 470) - :longest-edge (meters 0.01) - ) +(defskelgroup *med-res-finalboss-sg* + medres-finalboss + medres-finalboss-lod0-jg + medres-finalboss-idle-ja + ((medres-finalboss-lod0-mg (meters 999999))) + :bounds (static-spherem 80 120 -150 470) + :longest-edge (meters 0.01)) -(deftype villagec-lava (water-anim) - () - ) +(deftype villagec-lava (water-anim) ()) - -(define ripple-for-villagec-lava (new 'static 'ripple-wave-set - :count 2 - :converted #f - :wave (new 'static 'inline-array ripple-wave 4 - (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 1.5) - (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 0.9) - (new 'static 'ripple-wave) - (new 'static 'ripple-wave) - ) - ) - ) +(define ripple-for-villagec-lava + (new 'static + 'ripple-wave-set + :count 2 + :converted #f + :wave + (new 'static + 'inline-array + ripple-wave + 4 + (new 'static 'ripple-wave :scale 40.0 :xdiv 2 :speed 1.5) + (new 'static 'ripple-wave :scale 40.0 :xdiv -2 :zdiv 2 :speed 0.9) + (new 'static 'ripple-wave) + (new 'static 'ripple-wave)))) (defmethod water-vol-method-22 ((this villagec-lava)) - (let ((t9-0 (method-of-type water-anim water-vol-method-22))) - (t9-0 this) - ) + (let ((t9-0 (method-of-type water-anim water-vol-method-22))) (t9-0 this)) (let ((v1-2 (new 'process 'ripple-control))) (set! (-> this draw ripple) v1-2) (set! (-> v1-2 global-scale) 3072.0) - (set! (-> v1-2 waveform) ripple-for-villagec-lava) - ) + (set! (-> v1-2 waveform) ripple-for-villagec-lava)) (logclear! (-> this flags) (water-flags wt23)) (logior! (-> this flags) (water-flags wt25)) (set! (-> this attack-event) 'lava) - (none) - ) + (none)) (deftype gondola (process-drawable) - ((root collide-shape-moving :override) - (anim spool-anim) - (old-target-pos transformq :inline) - ) - (:state-methods - (idle symbol) - ride-up - ride-down - ) - ) + ((root collide-shape-moving :override) + (anim spool-anim) + (old-target-pos transformq :inline)) + (:state-methods (idle symbol) + ride-up + ride-down)) - -(defskelgroup *gondola-sg* gondola gondola-lod0-jg gondola-idle-down-ja - ((gondola-lod0-mg (meters 999999))) - :bounds (static-spherem 0 -5.5 0 6.5) - :shadow gondola-shadow-mg - ) +(defskelgroup *gondola-sg* + gondola + gondola-lod0-jg + gondola-idle-down-ja + ((gondola-lod0-mg (meters 999999))) + :bounds (static-spherem 0 -5.5 0 6.5) + :shadow gondola-shadow-mg) (defstate idle (gondola) :virtual #t - :code (behavior ((arg0 symbol)) - (set-time! (-> self state-time)) - (ja-channel-set! 1) - (cond - (arg0 - (set! (-> self anim) (new 'static 'spool-anim - :name "gondola-ride-down" - :index 6 - :parts 3 - :command-list '((0 want-levels village3 snow) - (0 shadow target #f) - (0 shadow sidekick #f) - (1 display-level village3 display) - (175 display-level snow #f) - (300 setting-reset music village3) - (618 save) - (619 blackout 20) - (619 shadow target #t) - ) - ) - ) - (ja :group! gondola-idle-up-ja) - ) - (else - (set! (-> self anim) (new 'static 'spool-anim - :name "gondola-ride-up" - :index 5 - :parts 3 - :command-list '((0 want-levels village3 snow) - (0 shadow target #f) - (400 setting-reset music snow) - (400 display-level snow display) - (678 save) - (679 blackout 20) - (679 shadow target #t) - ) - ) - ) - (ja :group! gondola-idle-down-ja) - ) - ) - (transform-post) - (loop - (when (and *target* - (and (< (vector-vector-distance - (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)) - (target-pos 0) - ) - 81920.0 - ) - (not (movie?)) - (not (level-hint-displayed?)) - (time-elapsed? (-> self state-time) (seconds 3)) - ;; og:preserve-this fix gondola spool not loading because it's "too far away" (technically) - (#if (not PC_PORT) - (file-status *art-control* (-> self anim name) 0) - (begin - (spool-push *art-control* (-> self anim name) 0 self (vector-vector-distance - (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) - (target-pos 0))) - (file-status *art-control* (-> self anim name) 0)) - ) - ) - ) - (let ((s3-0 (get-reminder (get-task-control (game-task village3-button)) 2)) - (s4-1 (and *cheat-mode* (cpad-hold? 0 l3))) - (s5-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main))) - ) - (cond - ((not (or s4-1 (task-closed? (game-task village3-button) (task-status need-hint)))) - ) - ((and (< (the int (-> *game-info* fuel)) (+ s3-0 2)) (< (the int (-> *game-info* fuel)) 71) (not s4-1)) - (level-hint-spawn (text-id gondola-need-cells) "asstvb75" (the-as entity #f) *entity-pool* (game-task none)) - ) - (else - (level-hint-spawn (text-id gondola-enough-cells) "asstvb76" (the-as entity #f) *entity-pool* (game-task none)) - (let ((s4-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-3 from) self) - (set! (-> s4-3 num-params) 0) - (set! (-> s4-3 message) 'update) - (let ((s3-1 send-event-function) - (v1-36 (entity-actor-lookup (-> self entity) 'alt-actor 0)) - ) - (s3-1 - (if v1-36 - (-> v1-36 extra process) - ) - s4-3 - ) - ) - ) - (let ((s4-4 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-4 from) self) - (set! (-> s4-4 num-params) 0) - (set! (-> s4-4 message) 'update) - (let ((s3-2 send-event-function) - (v1-40 (entity-actor-lookup (-> self entity) 'alt-actor 1)) - ) - (s3-2 - (if v1-40 - (-> v1-40 extra process) - ) - s4-4 - ) - ) - ) - (when (and (< (vector-vector-xz-distance s5-1 (-> *target* control trans)) 18432.0) - (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - ) - (and (< (+ -40960.0 (-> s5-1 y)) (-> *target* control trans y)) - (begin - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (hud-hidden?) - ) - (can-grab-display? self) - ) - ) - ) - (let ((s5-2 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-59 s5-2)) - (set! (-> v1-59 width) (the float 440)) - ) - (let ((v1-60 s5-2)) - (set! (-> v1-60 height) (the float 80)) - ) - (set! (-> s5-2 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-2 #f 128 22) - ) - (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) - (if arg0 - (go-virtual ride-down) - (go-virtual ride-up) - ) - ) - ) - ) - ) - ) - ) - (spool-push *art-control* (-> self anim name) 0 self -99.0) - (suspend) - ) - ) - ) + :code + (behavior ((arg0 symbol)) + (set-time! (-> self state-time)) + (ja-channel-set! 1) + (cond + (arg0 + (set! (-> self anim) + (new 'static + 'spool-anim + :name "gondola-ride-down" + :index 6 + :parts 3 + :command-list + '((0 want-levels village3 snow) + (0 shadow target #f) + (0 shadow sidekick #f) + (1 display-level village3 display) + (175 display-level snow #f) + (300 setting-reset music village3) + (618 save) + (619 blackout 20) + (619 shadow target #t)))) + (ja :group! gondola-idle-up-ja)) + (else + (set! (-> self anim) + (new 'static + 'spool-anim + :name "gondola-ride-up" + :index 5 + :parts 3 + :command-list + '((0 want-levels village3 snow) + (0 shadow target #f) + (400 setting-reset music snow) + (400 display-level snow display) + (678 save) + (679 blackout 20) + (679 shadow target #t)))) + (ja :group! gondola-idle-down-ja))) + (transform-post) + (loop (when (and *target* + (and (< (vector-vector-distance (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)) (target-pos 0)) + 81920.0) + (not (movie?)) + (not (level-hint-displayed?)) + (time-elapsed? (-> self state-time) (seconds 3)) + ;; og:preserve-this fix gondola spool not loading because it's "too far away" (technically) + (#if (not PC_PORT) + (file-status *art-control* (-> self anim name) 0) + (begin + (spool-push *art-control* + (-> self anim name) + 0 + self + (vector-vector-distance (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3)) (target-pos 0))) + (file-status *art-control* (-> self anim name) 0))))) + (let ((s3-0 (get-reminder (get-task-control (game-task village3-button)) 2)) + (s4-1 (and *cheat-mode* (cpad-hold? 0 l3))) + (s5-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node gondola-lod0-jg main)))) + (cond + ((not (or s4-1 (task-closed? (game-task village3-button) (task-status need-hint))))) + ((and (< (the int (-> *game-info* fuel)) (+ s3-0 2)) (< (the int (-> *game-info* fuel)) 71) (not s4-1)) + (level-hint-spawn (text-id gondola-need-cells) "asstvb75" (the-as entity #f) *entity-pool* (game-task none))) + (else + (level-hint-spawn (text-id gondola-enough-cells) "asstvb76" (the-as entity #f) *entity-pool* (game-task none)) + (let ((s4-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-3 from) self) + (set! (-> s4-3 num-params) 0) + (set! (-> s4-3 message) 'update) + (let ((s3-1 send-event-function) + (v1-36 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (s3-1 (if v1-36 (-> v1-36 extra process)) s4-3))) + (let ((s4-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-4 from) self) + (set! (-> s4-4 num-params) 0) + (set! (-> s4-4 message) 'update) + (let ((s3-2 send-event-function) + (v1-40 (entity-actor-lookup (-> self entity) 'alt-actor 1))) + (s3-2 (if v1-40 (-> v1-40 extra process)) s4-4))) + (when (and (< (vector-vector-xz-distance s5-1 (-> *target* control trans)) 18432.0) + (and (not (and (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))))) + (and (< (+ -40960.0 (-> s5-1 y)) (-> *target* control trans y)) + (begin + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint () '(sidekick voicebox) 'exit) + (hud-hidden?)) + (can-grab-display? self)))) + (let ((s5-2 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-59 s5-2)) (set! (-> v1-59 width) (the float 440))) + (let ((v1-60 s5-2)) (set! (-> v1-60 height) (the float 80))) + (set! (-> s5-2 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) s5-2 #f 128 22)) + (when (and (cpad-pressed? 0 circle) (process-grab? *target*)) + (if arg0 (go-virtual ride-down) (go-virtual ride-up)))))))) + (spool-push *art-control* (-> self anim name) 0 self -99.0) + (suspend)))) (defstate ride-up (gondola) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (when (send-event *target* 'clone-anim self) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 4 #f #t :to self) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim gondola-idle-down-ja) - (the-as art-joint-anim gondola-idle-up-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'sound-flava) - (send-event *target* 'blend-shape #f) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (load-state-want-vis 'sno) - (set-continue! *game-info* "snow-start") - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle #t) - ) - :post (behavior () - (ja-post) - (update-direction-from-time-of-day (-> self draw shadow-ctrl)) - ) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (when (send-event *target* 'clone-anim self) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 4 #f #t :to self) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim gondola-idle-down-ja) + (the-as art-joint-anim gondola-idle-up-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'sound-flava) + (send-event *target* 'blend-shape #f) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (load-state-want-vis 'sno) + (set-continue! *game-info* "snow-start")) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle #t)) + :post + (behavior () + (ja-post) + (update-direction-from-time-of-day (-> self draw shadow-ctrl)))) (defstate ride-down (gondola) :virtual #t - :code (behavior () - (process-entity-status! self (entity-perm-status bit-3) #t) - (when (send-event *target* 'clone-anim self) - (send-event *target* 'trans 'save (-> self old-target-pos)) - (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) - (send-event *target* 'blend-shape #t) - (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) - (logclear! (-> self mask) (process-mask enemy)) - (process-spawn othercam self 4 #f #t :to self) - (ja-play-spooled-anim - (-> self anim) - (the-as art-joint-anim gondola-idle-up-ja) - (the-as art-joint-anim gondola-idle-down-ja) - (the-as (function process-drawable symbol) false-func) - ) - (remove-setting! 'sound-flava) - (send-event *target* 'blend-shape #f) - (when *target* - (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) - (send-event *target* 'trans 'restore (-> self old-target-pos)) - (send-event *target* 'end-mode) - (update-transforms! (-> self root)) - (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) - (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) - (suspend) - (send-event *camera* 'teleport-to-other-start-string) - ) - (load-state-want-vis 'vi3) - (set-continue! *game-info* "village3-farside") - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (go-virtual idle #f) - ) - :post (-> (method-of-type gondola ride-up) post) - ) + :code + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #t) + (when (send-event *target* 'clone-anim self) + (send-event *target* 'trans 'save (-> self old-target-pos)) + (send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim) + (send-event *target* 'blend-shape #t) + (set-setting! 'sound-flava #f 30.0 (music-flava to-snow)) + (logclear! (-> self mask) (process-mask enemy)) + (process-spawn othercam self 4 #f #t :to self) + (ja-play-spooled-anim (-> self anim) + (the-as art-joint-anim gondola-idle-up-ja) + (the-as art-joint-anim gondola-idle-down-ja) + (the-as (function process-drawable symbol) false-func)) + (remove-setting! 'sound-flava) + (send-event *target* 'blend-shape #f) + (when *target* + (vector<-cspace! (the-as vector (-> self old-target-pos)) (-> *target* node-list data 3)) + (send-event *target* 'trans 'restore (-> self old-target-pos)) + (send-event *target* 'end-mode) + (update-transforms! (-> self root)) + (move-to-ground (-> *target* control) 4096.0 40960.0 #t (-> *target* control root-prim collide-with)) + (logior! (-> *target* control status) (cshape-moving-flags onsurf onground tsurf)) + (suspend) + (send-event *camera* 'teleport-to-other-start-string)) + (load-state-want-vis 'vi3) + (set-continue! *game-info* "village3-farside")) + (process-entity-status! self (entity-perm-status bit-3) #f) + (go-virtual idle #f)) + :post + (-> (method-of-type gondola ride-up) + post)) (defmethod init-from-entity! ((this gondola) (arg0 entity-actor)) (stack-size-set! (-> this main-thread) 512) (let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s4-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) @@ -338,166 +275,114 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 26624.0) - (set-root-prim! s4-0 s3-0) - ) + (set-root-prim! s4-0 s3-0)) (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) (backup-collide-with-as s4-0) - (set! (-> this root) s4-0) - ) + (set! (-> this root) s4-0)) (process-drawable-from-entity! this arg0) (quaternion-identity! (-> this root quat)) - (initialize-skeleton this *gondola-sg* '()) + (initialize-skeleton this *gondola-sg* ()) (set! (-> this draw origin-joint-index) (the-as uint 3)) (logclear! (-> this mask) (process-mask actor-pause)) (set! (-> this draw shadow-joint-index) (the-as uint 3)) (set! (-> this draw shadow-ctrl) (copy *target-shadow-control* 'process)) (let ((a0-16 (-> this draw shadow-ctrl))) (when a0-16 - (let ((v1-32 a0-16)) - (set! (-> v1-32 settings bot-plane w) (- -122880.0)) - ) + (let ((v1-32 a0-16)) (set! (-> v1-32 settings bot-plane w) (- -122880.0))) 0 - (let ((v1-34 a0-16)) - (set! (-> v1-34 settings top-plane w) (- 4096.0)) - ) + (let ((v1-34 a0-16)) (set! (-> v1-34 settings top-plane w) (- 4096.0))) 0 - (update-direction-from-time-of-day a0-16) - ) - ) + (update-direction-from-time-of-day a0-16))) (cond - ((< (-> (target-pos 0) y) (+ 204800.0 (-> this root trans y))) - (go (method-of-object this idle) #f) - ) + ((< (-> (target-pos 0) y) (+ 204800.0 (-> this root trans y))) (go (method-of-object this idle) #f)) (else - (set! (-> this anim) (new 'static 'spool-anim :name "gondola-ride-down" :index 6 :parts 3 :command-list '())) - (go (method-of-object this idle) #t) - ) - ) - (none) - ) + (set! (-> this anim) (new 'static 'spool-anim :name "gondola-ride-down" :index 6 :parts 3 :command-list ())) + (go (method-of-object this idle) #t))) + (none)) -(deftype pistons (process-drawable) - () +(deftype pistons (process-drawable) () (:state-methods - idle - (active handle symbol) - ) - ) + idle + (active handle symbol))) - -(defskelgroup *pistons-sg* pistons pistons-lod0-jg pistons-idle-ja - ((pistons-lod0-mg (meters 999999))) - :bounds (static-spherem 0 6 0 8) - ) +(defskelgroup *pistons-sg* + pistons + pistons-lod0-jg + pistons-idle-ja + ((pistons-lod0-mg (meters 999999))) + :bounds (static-spherem 0 6 0 8)) (defstate idle (pistons) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (go-virtual active (process->handle proc) #f) - ) - ) - ) - :code (behavior () - (ja-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) (go-virtual active (process->handle proc) #f)))) + :code + (behavior () + (ja-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0)) (defstate active (pistons) :virtual #t - :code (behavior ((arg0 handle) (arg1 symbol)) - (process-entity-status! self (entity-perm-status complete) #t) - (if (not arg1) - (sound-play "gdl-start-up") - ) - (let ((f30-0 (if arg1 - 1.0 - 0.0 - ) - ) - ) - (loop - (set! f30-0 (seek f30-0 1.0 (* 0.2 (seconds-per-frame)))) - (ja :num! (loop! f30-0)) - (ja-post) - (update! (-> self sound)) - (suspend) - ) - ) - ;; og:preserve-this decompiler never gets here and fails hard - (go-virtual idle) - ) - ) + :code + (behavior ((arg0 handle) (arg1 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (if (not arg1) (sound-play "gdl-start-up")) + (let ((f30-0 (if arg1 1.0 0.0))) + (loop (set! f30-0 (seek f30-0 1.0 (* 0.2 (seconds-per-frame)))) + (ja :num! (loop! f30-0)) + (ja-post) + (update! (-> self sound)) + (suspend))) + ;; og:preserve-this decompiler never gets here and fails hard + (go-virtual idle))) (defmethod init-from-entity! ((this pistons) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *pistons-sg* '()) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "gdl-gen-loop" :fo-max 100) (-> this root trans)) - ) + (initialize-skeleton this *pistons-sg* ()) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "gdl-gen-loop" :fo-max 100) (-> this root trans))) (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - (go (method-of-object this active) (the-as handle #f) #t) - (go (method-of-object this idle)) - ) - (none) - ) + (go (method-of-object this active) (the-as handle #f) #t) + (go (method-of-object this idle))) + (none)) -(deftype gondolacables (process-drawable) - () +(deftype gondolacables (process-drawable) () (:state-methods - idle - ) - ) + idle)) - -(defskelgroup *gondolacables-sg* gondolacables gondolacables-lod0-jg gondolacables-idle-ja - ((gondolacables-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 120) - ) +(defskelgroup *gondolacables-sg* + gondolacables + gondolacables-lod0-jg + gondolacables-idle-ja + ((gondolacables-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 120)) (defstate idle (gondolacables) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('update) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((v0-0 1)) - (set! (-> self draw mgeo effect 0 effect-bits) (the-as uint v0-0)) - v0-0 - ) - ) - ) - ) - :code (behavior () - (loop - (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - ) - ) - :post ja-post - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('update) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((v0-0 1)) (set! (-> self draw mgeo effect 0 effect-bits) (the-as uint v0-0)) v0-0)))) + :code + (behavior () + (loop (ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))))) + :post ja-post) (defmethod init-from-entity! ((this gondolacables) (arg0 entity-actor)) (set! (-> this root) (new 'process 'trsqv)) (process-drawable-from-entity! this arg0) - (initialize-skeleton this *gondolacables-sg* '()) + (initialize-skeleton this *gondolacables-sg* ()) (set! (-> this draw mgeo effect 0 effect-bits) - (the-as - uint - (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - 1 - 0 - ) - ) - ) + (the-as uint + (if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) 1 0))) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village3/village3-part.gc b/goal_src/jak1/levels/village3/village3-part.gc index 4f1807e94a..cdd4520c55 100644 --- a/goal_src/jak1/levels/village3/village3-part.gc +++ b/goal_src/jak1/levels/village3/village3-part.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "VI3.DGO") - (require "engine/common-obs/generic-obs-h.gc") (require "engine/gfx/sprite/sparticle/sparticle-h.gc") (require "engine/gfx/texture/texture-h.gc") @@ -14,2036 +13,1947 @@ ;; DECOMP BEGINS -(deftype villagec-part (part-spawner) - () - ) - +(deftype villagec-part (part-spawner) ()) (defpartgroup group-village3-candle :id 476 :bounds (static-bspherem 0 10 0 12) - :parts ((sp-item 1797 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1798 :fade-after (meters 60) :falloff-to (meters 60)) - ) - ) + :parts + ((sp-item 1797 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1798 :fade-after (meters 60) :falloff-to (meters 60)))) (defpart 1797 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:y (meters -0.08) (meters 0.02)) - (:scale-x (meters 0.2) (meters 0.2)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 32.0 32.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.2) (seconds 0.097)) - (:flags (bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:y (meters -0.08) (meters 0.02)) + (:scale-x (meters 0.2) (meters 0.2)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 32.0 32.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.2) (seconds 0.097)) + (:flags (bit3)))) (defpart 1798 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.04)) - (:scale-x (meters 0.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 64.0) - (:g 64.0 64.0) - (:b 0.0 32.0) - (:a 8.0 16.0) - (:vel-x (meters 0) (meters 0.00016666666)) - (:vel-z (meters 0) (meters 0.00016666666)) - (:scalevel-x (meters -0.0016666667)) - (:scalevel-y :copy scalevel-x) - (:fade-g -0.7111111) - (:fade-a -0.8) - (:accel-y (meters 0.00026666667) (meters 0.00006666667)) - (:timer (seconds 0.085)) - (:flags (bit2 bit3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.04)) + (:scale-x (meters 0.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 64.0) + (:g 64.0 64.0) + (:b 0.0 32.0) + (:a 8.0 16.0) + (:vel-x (meters 0) (meters 0.00016666666)) + (:vel-z (meters 0) (meters 0.00016666666)) + (:scalevel-x (meters -0.0016666667)) + (:scalevel-y :copy scalevel-x) + (:fade-g -0.7111111) + (:fade-a -0.8) + (:accel-y (meters 0.00026666667) (meters 0.00006666667)) + (:timer (seconds 0.085)) + (:flags (bit2 bit3)))) (defpartgroup group-village3-sulphur-05 :id 477 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1799 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1799 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-06 :id 478 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1801 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1801 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-07 :id 479 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1802 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1802 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-08 :id 480 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1803 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1803 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-09 :id 481 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1804 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1804 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-10 :id 482 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1805 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1805 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-11 :id 483 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1806 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1806 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-12 :id 484 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1807 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1807 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-13 :id 485 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1808 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1808 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-14 :id 486 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1809 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1809 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpartgroup group-village3-sulphur-15 :id 487 :bounds (static-bspherem 0 0 0 12) - :parts ((sp-item 1810 :fade-after (meters 180) :falloff-to (meters 180)) - (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)) - ) - ) + :parts + ((sp-item 1810 :fade-after (meters 180) :falloff-to (meters 180)) + (sp-item 1800 :fade-after (meters 180) :falloff-to (meters 180)))) (defpart 1810 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.21333334) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 150) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.21333334) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 150) (degrees 10)))) (defpart 1808 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 70) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 70) (degrees 10)))) (defpart 1809 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 70) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 70) (degrees 10)))) (defpart 1807 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1812) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 15) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1812) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 15) (degrees 10)))) (defpart 1812 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 2.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 2.5)) + (:next-launcher 1813))) (defpart 1806 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1814) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 90) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1814) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 90) (degrees 10)))) (defpart 1814 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.75)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.75)) + (:next-launcher 1813))) (defpart 1805 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees -10) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees -10) (degrees 10)))) (defpart 1804 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1815) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 0) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1815) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 0) (degrees 10)))) (defpart 1815 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.5)) + (:next-launcher 1813))) (defpart 1803 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1816) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1816) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1816 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 0.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 0.5)) + (:next-launcher 1813))) (defpart 1802 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1817) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1817) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1817 - :init-specs ((:vel-y (meters 0.00033333333)) - (:fade-a -0.023703704) - (:accel-y (meters -0.000006666667)) - (:next-time (seconds 2.5)) - (:next-launcher 1813) - ) - ) + :init-specs + ((:vel-y (meters 0.00033333333)) + (:fade-a -0.023703704) + (:accel-y (meters -0.000006666667)) + (:next-time (seconds 2.5)) + (:next-launcher 1813))) (defpart 1813 - :init-specs ((:fade-a -0.047407407) (:accel-y (meters 0.00033333333))) - ) + :init-specs ((:fade-a -0.047407407) (:accel-y (meters 0.00033333333)))) (defpart 1801 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees 40) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees 40) (degrees 10)))) (defpart 1799 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1 0.15) - (:x (meters -1) (meters 2)) - (:y (meters 0.5)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 70.0) - (:a 0.0) - (:vel-y (meters 0.01) (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a 0.16) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - (:conerot-x (degrees 60)) - (:conerot-y (degrees -20) (degrees 10)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1 0.15) + (:x (meters -1) (meters 2)) + (:y (meters 0.5)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 70.0) + (:a 0.0) + (:vel-y (meters 0.01) (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a 0.16) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811) + (:conerot-x (degrees 60)) + (:conerot-y (degrees -20) (degrees 10)))) (defpart 1811 - :init-specs ((:vel-y (meters 0.00033333333)) (:fade-a -0.017777778) (:accel-y (meters -0.000006666667))) - ) + :init-specs ((:vel-y (meters 0.00033333333)) (:fade-a -0.017777778) (:accel-y (meters -0.000006666667)))) (defpart 1800 - :init-specs ((:texture (new 'static 'texture-id :index #x19 :page #x2)) - (:num 0.1) - (:x (meters -1) (meters 2)) - (:z (meters -1) (meters 2)) - (:scale-x (meters 3) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 100.0) - (:g 100.0) - (:b 50.0) - (:a 0.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-b 0.021333333) - (:fade-a 0.16) - (:friction 0.98) - (:timer (seconds 5)) - (:flags (bit2)) - (:next-time (seconds 0.3) (seconds 0.197)) - (:next-launcher 1811) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x19 :page #x2)) + (:num 0.1) + (:x (meters -1) (meters 2)) + (:z (meters -1) (meters 2)) + (:scale-x (meters 3) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 100.0) + (:g 100.0) + (:b 50.0) + (:a 0.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-b 0.021333333) + (:fade-a 0.16) + (:friction 0.98) + (:timer (seconds 5)) + (:flags (bit2)) + (:next-time (seconds 0.3) (seconds 0.197)) + (:next-launcher 1811))) (defpartgroup group-village3-minor-fire :id 488 :bounds (static-bspherem 0 2.5 0 2.5) - :parts ((sp-item 2358 :fade-after (meters 50) :falloff-to (meters 80)) - (sp-item 2359 :fade-after (meters 40) :falloff-to (meters 40) :binding 2357) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2357 :flags (bit1 start-dead launch-asap)) - (sp-item 2360 :fade-after (meters 60) :falloff-to (meters 80)) - (sp-item 2361 :fade-after (meters 50) :falloff-to (meters 50)) - ) - ) + :parts + ((sp-item 2358 :fade-after (meters 50) :falloff-to (meters 80)) + (sp-item 2359 :fade-after (meters 40) :falloff-to (meters 40) :binding 2357) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2357 :flags (bit1 start-dead launch-asap)) + (sp-item 2360 :fade-after (meters 60) :falloff-to (meters 80)) + (sp-item 2361 :fade-after (meters 50) :falloff-to (meters 50)))) (defpart 2359 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "fire-pop" :volume 100.0)) - (:x (meters -0.25) (meters 0.5)) - (:y (meters 0.5) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0) - (:b 0.0) - (:a 0.0) - (:vel-y (meters 0.013333334) (meters 0.04)) - (:accel-y (meters -0.00006666667) (meters -0.000033333334)) - (:friction 0.96) - (:timer (seconds 1)) - (:flags (bit1 bit3)) - (:conerot-x (degrees -20) (degrees 40)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "fire-pop" :volume 100.0)) + (:x (meters -0.25) (meters 0.5)) + (:y (meters 0.5) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0) + (:b 0.0) + (:a 0.0) + (:vel-y (meters 0.013333334) (meters 0.04)) + (:accel-y (meters -0.00006666667) (meters -0.000033333334)) + (:friction 0.96) + (:timer (seconds 1)) + (:flags (bit1 bit3)) + (:conerot-x (degrees -20) (degrees 40)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 2357 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0) - (:x (meters 0) (meters 16)) - (:y (meters 0) (meters 16)) - (:z (meters 0.25) (meters 1)) - (:scale-x (meters 0.1)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 128.0) - (:b 128.0) - (:a 96.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.026666667) (meters 0.053333335)) - (:vel-y (meters 0)) - (:vel-z (meters -0.00083333335) (meters 0.0016666667)) - (:fade-r 0.0) - (:fade-g -0.7111111) - (:fade-b -0.7111111) - (:fade-a -0.42666668) - (:timer (seconds 1)) - (:flags (bit1 bit2 bit3 bit7)) - (:next-time (seconds 0.6)) - (:next-launcher 2362) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0) + (:x (meters 0) (meters 16)) + (:y (meters 0) (meters 16)) + (:z (meters 0.25) (meters 1)) + (:scale-x (meters 0.1)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 128.0) + (:b 128.0) + (:a 96.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.026666667) (meters 0.053333335)) + (:vel-y (meters 0)) + (:vel-z (meters -0.00083333335) (meters 0.0016666667)) + (:fade-r 0.0) + (:fade-g -0.7111111) + (:fade-b -0.7111111) + (:fade-a -0.42666668) + (:timer (seconds 1)) + (:flags (bit1 bit2 bit3 bit7)) + (:next-time (seconds 0.6)) + (:next-launcher 2362))) (defpart 2362 - :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667)) - ) + :init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667))) (defpart 2358 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 3.0 7.0) - (:x (meters -0.5) (meters 1.1)) - (:y (meters -0.75)) - (:z (meters -0.5) (meters 1.1)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0 128.0) - (:g 32.0 64.0) - (:a 96.0) - (:vel-y (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:fade-a -0.73333335) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.2) (seconds 0.197)) - (:flags (bit2 bit3)) - (:conerot-x (degrees -8) 4 (degrees 4)) - (:conerot-y (degrees -180) (degrees 360)) - (:conerot-radius (meters 0) (meters 0.5)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 3.0 7.0) + (:x (meters -0.5) (meters 1.1)) + (:y (meters -0.75)) + (:z (meters -0.5) (meters 1.1)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0 128.0) + (:g 32.0 64.0) + (:a 96.0) + (:vel-y (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:fade-a -0.73333335) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.2) (seconds 0.197)) + (:flags (bit2 bit3)) + (:conerot-x (degrees -8) 4 (degrees 4)) + (:conerot-y (degrees -180) (degrees 360)) + (:conerot-radius (meters 0) (meters 0.5)))) (defpart 2360 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.5) - (:x (meters -0.5) (meters 1.1)) - (:y (meters -0.75)) - (:z (meters -0.5) (meters 1.1)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 196.0) - (:g 128.0) - (:b 128.0) - (:a 16.0 16.0) - (:vel-y (meters 0.01) (meters 0.01)) - (:scalevel-x (meters 0.006666667)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.18962963) - (:fade-g -0.094814815) - (:fade-b -0.094814815) - (:fade-a -0.047407407) - (:accel-y (meters -0.000006666667)) - (:friction 0.99) - (:timer (seconds 2.25)) - (:flags (bit2)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.5) + (:x (meters -0.5) (meters 1.1)) + (:y (meters -0.75)) + (:z (meters -0.5) (meters 1.1)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 196.0) + (:g 128.0) + (:b 128.0) + (:a 16.0 16.0) + (:vel-y (meters 0.01) (meters 0.01)) + (:scalevel-x (meters 0.006666667)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.18962963) + (:fade-g -0.094814815) + (:fade-b -0.094814815) + (:fade-a -0.047407407) + (:accel-y (meters -0.000006666667)) + (:friction 0.99) + (:timer (seconds 2.25)) + (:flags (bit2)))) (defpart 2361 - :init-specs ((:num 0.4) - (:x (meters 0.2)) - (:y (meters -0.75)) - (:rot-x 8) - (:r 3276.8) - (:g 2662.4) - (:b 2867.2) - (:vel-x (meters 0) (meters 0.006666667)) - (:vel-y (meters 0.02) (meters 0.013333334)) - (:friction 0.99) - (:timer (seconds 1)) - (:flags (aux-list)) - (:next-time (seconds 0.5)) - (:next-launcher 2363) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:num 0.4) + (:x (meters 0.2)) + (:y (meters -0.75)) + (:rot-x 8) + (:r 3276.8) + (:g 2662.4) + (:b 2867.2) + (:vel-x (meters 0) (meters 0.006666667)) + (:vel-y (meters 0.02) (meters 0.013333334)) + (:friction 0.99) + (:timer (seconds 1)) + (:flags (aux-list)) + (:next-time (seconds 0.5)) + (:next-launcher 2363) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 2363 - :init-specs ((:fade-b -1.3653333)) - ) + :init-specs ((:fade-b -1.3653333))) (defpartgroup group-spewing-volcano-36 :id 489 :bounds (static-bspherem 0 3 0 14) - :parts ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 300) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 360) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 420) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 480) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 540) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 1620) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 1590) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 1560) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 1530) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 1500) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 120) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 120) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64036) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 64066) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64096) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64126) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64156) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63916) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63946) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63976) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64006) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64036) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 63316) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63376) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63436) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63496) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 63556) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63616) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63646) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63676) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 63706) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63736) - (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6)) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 60) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 60) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 60) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) - (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) - (sp-item 1834 :falloff-to (meters 300)) - (sp-item 1835 :falloff-to (meters 300)) - (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 60) - ) - ) + :parts + ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 300) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 360) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 420) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 480) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 540) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 1620) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 1590) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 1560) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 1530) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 1500) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 120) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 120) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64036) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 64066) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64096) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64126) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64156) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63916) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63946) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63976) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64006) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64036) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 63316) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63376) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63436) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63496) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 63556) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 63616) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 63646) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 63676) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 63706) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 63736) + (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6)) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 60) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 60) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 60) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) + (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 60) + (sp-item 1834 :falloff-to (meters 300)) + (sp-item 1835 :falloff-to (meters 300)) + (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 60))) (defpartgroup group-spewing-volcano-37 :id 490 :bounds (static-bspherem 0 3 0 14) - :parts ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 1500) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 1560) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 1620) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 1680) - (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 1740) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 2820) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 2790) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 2760) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 2730) - (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 2700) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 1320) - (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 1320) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 65236) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 65266) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65296) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65326) - (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65356) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65116) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65146) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65176) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 65206) - (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 65236) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64516) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64576) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64636) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64696) - (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 64756) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64816) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64846) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64876) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64906) - (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64936) - (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6) :offset 1200) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1260) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 1260) - (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1260) - (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) - (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) - (sp-item 1834 :falloff-to (meters 300) :offset 1200) - (sp-item 1835 :falloff-to (meters 300) :offset 1200) - (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 1260) - ) - ) + :parts + ((sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4) :offset 1500) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.4) :offset 1560) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 4.8) :offset 1620) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 5.2) :offset 1680) + (sp-item 1823 :falloff-to (meters 300) :period (seconds 8) :length (seconds 6.6) :offset 1740) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.7) :offset 2820) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.9) :offset 2790) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.1) :offset 2760) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.3) :offset 2730) + (sp-item 1824 :falloff-to (meters 300) :period (seconds 8) :length (seconds 3.5) :offset 2700) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.5) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.1) :offset 1320) + (sp-item 1825 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 1320) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 65236) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 65266) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65296) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65326) + (sp-item 1826 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65356) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 65116) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 65146) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 65176) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 65206) + (sp-item 1827 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 65236) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 64516) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64576) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64636) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64696) + (sp-item 1828 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.8) :offset 64756) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 64816) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 64846) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 64876) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.2) :offset 64906) + (sp-item 1829 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2.4) :offset 64936) + (sp-item 1830 :falloff-to (meters 300) :period (seconds 8) :length (seconds 0.6) :offset 1200) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.2) :offset 1260) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.4) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.6) :offset 1260) + (sp-item 1831 :falloff-to (meters 300) :period (seconds 8) :length (seconds 1.8) :offset 1260) + (sp-item 1832 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) + (sp-item 1833 :falloff-to (meters 300) :period (seconds 8) :length (seconds 2) :offset 1260) + (sp-item 1834 :falloff-to (meters 300) :offset 1200) + (sp-item 1835 :falloff-to (meters 300) :offset 1200) + (sp-item 1836 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 8) :length (seconds 2) :offset 1260))) (defpart 1836 - :init-specs ((:num 0.2) - (:rot-x 5) - (:r 8192.0) - (:g 6144.0) - (:b 6144.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 4.2)) - (:flags (aux-list)) - (:next-time (seconds 0.05) (seconds 2.097)) - (:next-launcher 1837) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:num 0.2) + (:rot-x 5) + (:r 8192.0) + (:g 6144.0) + (:b 6144.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 4.2)) + (:flags (aux-list)) + (:next-time (seconds 0.05) (seconds 2.097)) + (:next-launcher 1837) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1837 - :init-specs ((:fade-r 40.96) - (:fade-g 34.133335) - (:fade-b 30.72) - (:accel-x (meters 0)) - (:accel-y (meters 0.0016666667)) - (:accel-z (meters 0)) - (:friction 0.9) - (:next-time (seconds 1)) - (:next-launcher 1838) - ) - ) + :init-specs + ((:fade-r 40.96) + (:fade-g 34.133335) + (:fade-b 30.72) + (:accel-x (meters 0)) + (:accel-y (meters 0.0016666667)) + (:accel-z (meters 0)) + (:friction 0.9) + (:next-time (seconds 1)) + (:next-launcher 1838))) (defpart 1838 - :init-specs ((:fade-g 27.306667) (:timer (seconds 1))) - ) + :init-specs ((:fade-g 27.306667) (:timer (seconds 1)))) (defpart 1833 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.6) - (:scale-x (meters 4) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 4.2)) - (:flags (bit2)) - (:next-time (seconds 0.05) (seconds 2.097)) - (:next-launcher 1839) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.6) + (:scale-x (meters 4) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 4.2)) + (:flags (bit2)) + (:next-time (seconds 0.05) (seconds 2.097)) + (:next-launcher 1839) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1839 - :init-specs ((:a 16.0 8.0) - (:scalevel-x (meters 0.013333334)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.42666668) - (:fade-g 0.64) - (:fade-b 0.85) - (:fade-a -0.04) - (:accel-x (meters 0.001)) - (:accel-y (meters 0)) - (:accel-z (meters 0)) - (:friction 0.9) - (:next-time (seconds 0.8) (seconds 0.197)) - (:next-launcher 1840) - ) - ) + :init-specs + ((:a 16.0 8.0) + (:scalevel-x (meters 0.013333334)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.42666668) + (:fade-g 0.64) + (:fade-b 0.85) + (:fade-a -0.04) + (:accel-x (meters 0.001)) + (:accel-y (meters 0)) + (:accel-z (meters 0)) + (:friction 0.9) + (:next-time (seconds 0.8) (seconds 0.197)) + (:next-launcher 1840))) (defpart 1840 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))) (defpart 1834 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 2.0) - (:x (meters 3.5) (meters 0.75)) - (:y (meters -7)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.04444444)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 30) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 2.0) + (:x (meters 3.5) (meters 0.75)) + (:y (meters -7)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.04444444)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 30) 3 (degrees 90)))) (defpart 1835 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.8) - (:x (meters 3.5) (meters 0.75)) - (:y (meters -6.5)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 30) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.8) + (:x (meters 3.5) (meters 0.75)) + (:y (meters -6.5)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 30) 3 (degrees 90)))) (defpart 1829 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters 7) (meters 3)) - (:y (meters -7)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 3) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.10666667) (meters 0.026666667)) - (:scalevel-x (meters 0.06666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters 7) (meters 3)) + (:y (meters -7)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 3) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.10666667) (meters 0.026666667)) + (:scalevel-x (meters 0.06666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 36)))) (defpart 1828 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.09) - (:x (meters 7) (meters 3)) - (:y (meters -6.5)) - (:z (meters -1.5) (meters 3)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21166667) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.09) + (:x (meters 7) (meters 3)) + (:y (meters -6.5)) + (:z (meters -1.5) (meters 3)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21166667) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 36)))) (defpart 1827 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.4) - (:x (meters 5) (meters 2)) - (:y (meters -7)) - (:scale-x (meters 2) (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.04444444)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-a -2.8444443) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 0.14)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.4) + (:x (meters 5) (meters 2)) + (:y (meters -7)) + (:scale-x (meters 2) (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.04444444)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-a -2.8444443) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 0.14)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1826 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters 5) (meters 2)) - (:y (meters -6.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.0033333334) (meters 0.0016666667)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.000033333334)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters 5) (meters 2)) + (:y (meters -6.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.0033333334) (meters 0.0016666667)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.000033333334)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) (defpart 1824 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.09) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.006666667) (meters 0.0033333334)) - (:scalevel-x (meters 0.026666667)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 0.21333334) - (:fade-g 0.31833333) - (:fade-b 0.425) - (:fade-a -0.053333335) - (:accel-x (meters 0.00033333333)) - (:accel-y (meters -0.00006666667)) - (:timer (seconds 2)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.09) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.006666667) (meters 0.0033333334)) + (:scalevel-x (meters 0.026666667)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 0.21333334) + (:fade-g 0.31833333) + (:fade-b 0.425) + (:fade-a -0.053333335) + (:accel-x (meters 0.00033333333)) + (:accel-y (meters -0.00006666667)) + (:timer (seconds 2)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1823 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.3) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 2) (meters 2)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0) - (:b 0.0) - (:a 16.0 16.0) - (:vel-y (meters 0.053333335) (meters 0.026666667)) - (:scalevel-x (meters 0.13333334)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r 1.0666667) - (:fade-g 1.5916667) - (:fade-b 2.125) - (:fade-a -0.26666668) - (:timer (seconds 0.4)) - (:flags (bit2)) - (:conerot-x (degrees 0) (degrees 15)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.3) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 2) (meters 2)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0) + (:b 0.0) + (:a 16.0 16.0) + (:vel-y (meters 0.053333335) (meters 0.026666667)) + (:scalevel-x (meters 0.13333334)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r 1.0666667) + (:fade-g 1.5916667) + (:fade-b 2.125) + (:fade-a -0.26666668) + (:timer (seconds 0.4)) + (:flags (bit2)) + (:conerot-x (degrees 0) (degrees 15)) + (:conerot-y (degrees 0) (degrees 360)))) (defpart 1825 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.7) - (:x (meters -0.25) (meters 0.5)) - (:z (meters -0.25) (meters 0.5)) - (:scale-x (meters 1.5) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 64.0 64.0) - (:vel-x (meters 0.026666667)) - (:vel-y (meters 0.02) (meters 0.04)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:friction 0.98) - (:timer (seconds 2)) - (:flags (bit0 bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0) (degrees 32)) - (:conerot-y (degrees 45) 3 (degrees 90)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.7) + (:x (meters -0.25) (meters 0.5)) + (:z (meters -0.25) (meters 0.5)) + (:scale-x (meters 1.5) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 64.0 64.0) + (:vel-x (meters 0.026666667)) + (:vel-y (meters 0.02) (meters 0.04)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:friction 0.98) + (:timer (seconds 2)) + (:flags (bit0 bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0) (degrees 32)) + (:conerot-y (degrees 45) 3 (degrees 90)))) (defpart 1832 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.4) - (:scale-x (meters 2) (meters 0.5)) - (:rot-x 4) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 96.0 55.0) - (:g 64.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.21333334) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-x 4) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 96.0 55.0) + (:g 64.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.21333334) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1831 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 0.4) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0)) - (:conerot-y (degrees 9) (degrees 18)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 0.4) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0)) + (:conerot-y (degrees 9) (degrees 18)))) (defpart 1841 - :init-specs ((:fade-r -0.08888889) (:fade-g 0.0)) - ) + :init-specs ((:fade-r -0.08888889) (:fade-g 0.0))) (defpart 1830 - :init-specs ((:texture (new 'static 'texture-id :index #xb :page #x2)) - (:num 6.0) - (:x (meters -0.5) (meters 1)) - (:z (meters -0.5) (meters 1)) - (:scale-x (meters 2) (meters 0.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 200.0 55.0) - (:g 64.0 32.0) - (:b 0.0) - (:a 96.0 32.0) - (:vel-x (meters 0.013333334)) - (:vel-y (meters 0.08) (meters 0.013333334)) - (:scalevel-x (meters -0.0025)) - (:rotvel-z (degrees -0.6) (degrees 1.2)) - (:scalevel-y :copy scalevel-x) - (:fade-r -0.53333336) - (:fade-g -0.21333334) - (:accel-y (meters -0.0016666667)) - (:timer (seconds 2.2)) - (:flags (bit2)) - (:next-time (seconds 0.6) (seconds 0.397)) - (:next-launcher 1841) - (:conerot-x (degrees 0) (degrees 3.0000002)) - (:conerot-y (degrees 0) (degrees 36)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xb :page #x2)) + (:num 6.0) + (:x (meters -0.5) (meters 1)) + (:z (meters -0.5) (meters 1)) + (:scale-x (meters 2) (meters 0.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 200.0 55.0) + (:g 64.0 32.0) + (:b 0.0) + (:a 96.0 32.0) + (:vel-x (meters 0.013333334)) + (:vel-y (meters 0.08) (meters 0.013333334)) + (:scalevel-x (meters -0.0025)) + (:rotvel-z (degrees -0.6) (degrees 1.2)) + (:scalevel-y :copy scalevel-x) + (:fade-r -0.53333336) + (:fade-g -0.21333334) + (:accel-y (meters -0.0016666667)) + (:timer (seconds 2.2)) + (:flags (bit2)) + (:next-time (seconds 0.6) (seconds 0.397)) + (:next-launcher 1841) + (:conerot-x (degrees 0) (degrees 3.0000002)) + (:conerot-y (degrees 0) (degrees 36)))) (defpartgroup group-village3-steam-puff-31 :id 491 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.5)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.5)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)))) (defpartgroup group-village3-steam-puff-22 :id 492 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.52)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 7.7) :length (seconds 0.357)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.4)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.5) :length (seconds 0.57)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.1) :length (seconds 0.645)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.52)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 7.7) :length (seconds 0.357)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.4)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.5) :length (seconds 0.57)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.1) :length (seconds 0.645)))) (defpartgroup group-village3-steam-puff-23 :id 493 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1842 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1843 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1844 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1845 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1846 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1842 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 90)) - (:conerot-y (degrees 0)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 90)) + (:conerot-y (degrees 0)) + (:conerot-radius (meters 0.4)))) (defpart 1843 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 110)) - (:conerot-y (degrees 32)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 110)) + (:conerot-y (degrees 32)) + (:conerot-radius (meters 0.4)))) (defpart 1844 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 75)) - (:conerot-y (degrees 120)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 75)) + (:conerot-y (degrees 120)) + (:conerot-radius (meters 0.4)))) (defpart 1845 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 80)) - (:conerot-y (degrees 200.00002)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 80)) + (:conerot-y (degrees 200.00002)) + (:conerot-radius (meters 0.4)))) (defpart 1846 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.93) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 67)) - (:conerot-y (degrees 280)) - (:conerot-radius (meters 0.4)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.93) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 67)) + (:conerot-y (degrees 280)) + (:conerot-radius (meters 0.4)))) (defpartgroup group-village3-bottom-puff-25 :id 494 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.7) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-27 :id 495 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.6) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.3) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.7) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.6) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.3) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.7) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-28 :id 496 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.9) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.43) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.9) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.43) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.2) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-29 :id 497 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.7) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.33) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.7) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.33) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 2.4) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.1) :length (seconds 0.345)))) (defpartgroup group-village3-bottom-puff-30 :id 498 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.557)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.23) :length (seconds 0.5)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.267)) - (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.6) :length (seconds 0.345)) - ) - ) + :parts + ((sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 5) :length (seconds 0.42)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.2) :length (seconds 0.557)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 6.23) :length (seconds 0.5)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 3.5) :length (seconds 0.267)) + (sp-item 1847 :fade-after (meters 100) :falloff-to (meters 100) :period (seconds 4.6) :length (seconds 0.345)))) (defpart 1847 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.5) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:y (meters 0.7)) - (:scale-x (meters 0.4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.08) (meters 0.053333335)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.8) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 120)) - (:conerot-y (degrees 0) (degrees 360)) - (:conerot-radius (meters 1)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.5) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:y (meters 0.7)) + (:scale-x (meters 0.4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.08) (meters 0.053333335)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.8) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 120)) + (:conerot-y (degrees 0) (degrees 360)) + (:conerot-radius (meters 1)))) (defpartgroup group-village3-lava-lava-20x20 :id 499 :bounds (static-bspherem 0 0 0 14) - :parts ((sp-item 1850 :fade-after (meters 40) :falloff-to (meters 40)) - (sp-item 1851 :fade-after (meters 100) :falloff-to (meters 100)) - (sp-item 1852 :fade-after (meters 80) :falloff-to (meters 80) :binding 1848) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1848 :flags (start-dead)) - (sp-item 1853 :fade-after (meters 40) :falloff-to (meters 40) :period (seconds 0.457) :length (seconds 0.017) :binding 1849) - (sp-item 1853 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 0.78) :length (seconds 0.017) :binding 1849) - (sp-item 1853 :fade-after (meters 80) :falloff-to (meters 80) :period (seconds 0.307) :length (seconds 0.017) :binding 1849) - (sp-item 1849 :flags (start-dead)) - ) - ) + :parts + ((sp-item 1850 :fade-after (meters 40) :falloff-to (meters 40)) + (sp-item 1851 :fade-after (meters 100) :falloff-to (meters 100)) + (sp-item 1852 :fade-after (meters 80) :falloff-to (meters 80) :binding 1848) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1848 :flags (start-dead)) + (sp-item 1853 + :fade-after (meters 40) + :falloff-to (meters 40) + :period (seconds 0.457) + :length (seconds 0.017) + :binding 1849) + (sp-item 1853 + :fade-after (meters 60) + :falloff-to (meters 60) + :period (seconds 0.78) + :length (seconds 0.017) + :binding 1849) + (sp-item 1853 + :fade-after (meters 80) + :falloff-to (meters 80) + :period (seconds 0.307) + :length (seconds 0.017) + :binding 1849) + (sp-item 1849 :flags (start-dead)))) (defpart 1851 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 0.2) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 6) (meters 4)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 192.0) - (:b 128.0) - (:a 0.0) - (:vel-y (meters 0.01)) - (:scalevel-x (meters 0.0033333334)) - (:rotvel-z (degrees -0.2) (degrees 0.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a 0.64) - (:timer (seconds 2)) - (:flags (bit2)) - (:next-time (seconds 0.125) (seconds 0.12)) - (:next-launcher 1855) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 0.2) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 6) (meters 4)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 192.0) + (:b 128.0) + (:a 0.0) + (:vel-y (meters 0.01)) + (:scalevel-x (meters 0.0033333334)) + (:rotvel-z (degrees -0.2) (degrees 0.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.64) + (:timer (seconds 2)) + (:flags (bit2)) + (:next-time (seconds 0.125) (seconds 0.12)) + (:next-launcher 1855) + (:rotate-y (degrees 0)))) (defpart 1853 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.5) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 2.5) (meters 1.5)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 0.0 128.0) - (:a 255.0) - (:rotvel-z (degrees -0.8) (degrees 6.8)) - (:fade-a -12.0) - (:timer (seconds 0.067)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.5) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 2.5) (meters 1.5)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 0.0 128.0) + (:a 255.0) + (:rotvel-z (degrees -0.8) (degrees 6.8)) + (:fade-a -12.0) + (:timer (seconds 0.067)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpart 1852 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 0.02 0.02) - (:x (meters -10) (meters 20)) - (:y (meters 0)) - (:z (meters -10) (meters 20)) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 255.0) - (:vel-y (meters 0.04) (meters 0.02)) - (:fade-g -0.30476192) - (:accel-y (meters -0.0026666666)) - (:timer (seconds 0.6)) - (:flags (bit2 bit3)) - (:conerot-x (degrees 0) (degrees 30)) - (:conerot-y (degrees 0) (degrees 360)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 0.02 0.02) + (:x (meters -10) (meters 20)) + (:y (meters 0)) + (:z (meters -10) (meters 20)) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 255.0) + (:vel-y (meters 0.04) (meters 0.02)) + (:fade-g -0.30476192) + (:accel-y (meters -0.0026666666)) + (:timer (seconds 0.6)) + (:flags (bit2 bit3)) + (:conerot-x (degrees 0) (degrees 30)) + (:conerot-y (degrees 0) (degrees 360)) + (:rotate-y (degrees 0)))) (defpart 1850 - :init-specs ((:num 1.0) - (:x (meters -10) (meters 20)) - (:y (meters 0.5)) - (:z (meters -10) (meters 20)) - (:rot-x 5) - (:r 8192.0) - (:g 5324.8) - (:b 5324.8) - (:vel-y (meters 0.006666667) (meters 0.006666667)) - (:fade-r 40.96) - (:fade-g 27.306667) - (:fade-b 38.229332) - (:timer (seconds 0.5)) - (:flags (aux-list)) - (:next-time (seconds 0.25)) - (:next-launcher 1856) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:num 1.0) + (:x (meters -10) (meters 20)) + (:y (meters 0.5)) + (:z (meters -10) (meters 20)) + (:rot-x 5) + (:r 8192.0) + (:g 5324.8) + (:b 5324.8) + (:vel-y (meters 0.006666667) (meters 0.006666667)) + (:fade-r 40.96) + (:fade-g 27.306667) + (:fade-b 38.229332) + (:timer (seconds 0.5)) + (:flags (aux-list)) + (:next-time (seconds 0.25)) + (:next-launcher 1856) + (:rotate-y (degrees 0)))) (defpart 1856 - :init-specs ((:fade-b 16.384)) - ) + :init-specs ((:fade-b 16.384))) (defpart 1855 - :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1857)) - ) + :init-specs ((:fade-a 0.0) (:next-time (seconds 0.25)) (:next-launcher 1857))) (defpart 1857 - :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 1858)) - ) + :init-specs ((:fade-r -0.85333335) (:fade-g -0.42666668) (:next-time (seconds 0.5)) (:next-launcher 1858))) (defpart 1858 - :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667)) - ) + :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-a -0.10666667))) (defpart 1848 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.7) - (:scale-x (meters 0.75) (meters 0.25)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:scalevel-x (meters -0.0029166667)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00033333333)) - (:timer (seconds 0.1) (seconds 0.597)) - (:flags (bit0 bit3)) - (:rotate-y (degrees 45)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.7) + (:scale-x (meters 0.75) (meters 0.25)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:scalevel-x (meters -0.0029166667)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00033333333)) + (:timer (seconds 0.1) (seconds 0.597)) + (:flags (bit0 bit3)) + (:rotate-y (degrees 45)))) (defpart 1849 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 1.0 6.0) - (:scale-x (meters 0.2) (meters 0.5)) - (:scale-y :copy scale-x) - (:r 256.0) - (:g 0.0 128.0) - (:a 128.0 128.0) - (:vel-y (meters 0.006666667) (meters 0.02)) - (:scalevel-x (meters -0.0023333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.00066666666)) - (:timer (seconds 1.2)) - (:flags (bit0 bit3)) - (:conerot-x (degrees 0) (degrees 60)) - (:conerot-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 1.0 6.0) + (:scale-x (meters 0.2) (meters 0.5)) + (:scale-y :copy scale-x) + (:r 256.0) + (:g 0.0 128.0) + (:a 128.0 128.0) + (:vel-y (meters 0.006666667) (meters 0.02)) + (:scalevel-x (meters -0.0023333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.00066666666)) + (:timer (seconds 1.2)) + (:flags (bit0 bit3)) + (:conerot-x (degrees 0) (degrees 60)) + (:conerot-y (degrees 0) (degrees 360)))) (defpartgroup group-village3-sagehut-warpgate :id 500 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1861 :fade-after (meters 60) :falloff-to (meters 60)) - (sp-item 1862 :fade-after (meters 60) :falloff-to (meters 100) :binding 1859) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1859 :flags (bit1 start-dead launch-asap)) - (sp-item 1863 :fade-after (meters 60) :falloff-to (meters 100) :binding 1860) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - (sp-item 1860 :flags (bit1 start-dead launch-asap)) - ) - ) + :parts + ((sp-item 1861 :fade-after (meters 60) :falloff-to (meters 60)) + (sp-item 1862 :fade-after (meters 60) :falloff-to (meters 100) :binding 1859) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1859 :flags (bit1 start-dead launch-asap)) + (sp-item 1863 :fade-after (meters 60) :falloff-to (meters 100) :binding 1860) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)) + (sp-item 1860 :flags (bit1 start-dead launch-asap)))) (defpart 1863 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.25) - (:x (meters -2)) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:vel-x (meters 0.0033333334)) - (:timer (seconds 2)) - (:flags (bit3)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.25) + (:x (meters -2)) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:vel-x (meters 0.0033333334)) + (:timer (seconds 2)) + (:flags (bit3)) + (:rotate-y (degrees -25.000002)))) (defpart 1860 - :init-specs ((:texture (new 'static 'texture-id :index #x4 :page #x2)) - (:num 1.0 0.2) - (:x (meters 3.1111112)) - (:y (meters 4)) - (:z (meters 5.4) (meters 1)) - (:scale-x (meters 0.2) (meters 0.1)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 196.0) - (:a 0.0) - (:omega 0.0 65536.0) - (:vel-x (meters 0)) - (:vel-z (meters 0)) - (:fade-a 0.16) - (:accel-x (meters 0.0002962963)) - (:accel-z (meters -0.00018333334)) - (:timer (seconds 2)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x4 :page #x2)) + (:num 1.0 0.2) + (:x (meters 3.1111112)) + (:y (meters 4)) + (:z (meters 5.4) (meters 1)) + (:scale-x (meters 0.2) (meters 0.1)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 196.0) + (:a 0.0) + (:omega 0.0 65536.0) + (:vel-x (meters 0)) + (:vel-z (meters 0)) + (:fade-a 0.16) + (:accel-x (meters 0.0002962963)) + (:accel-z (meters -0.00018333334)) + (:timer (seconds 2)) + (:flags (bit2 bit3 bit7)))) (defpart 1861 - :init-specs ((:num 5.0 5.0) - (:x (meters -0.5)) - (:rot-x 5) - (:r 4096.0) - (:g 3481.6) - (:b 3481.6) - (:vel-y (meters -0.026666667) (meters -0.02)) - (:fade-b 5.936232) - (:timer (seconds 0.23)) - (:flags (aux-list)) - (:conerot-x (degrees 0) (degrees 360)) - (:conerot-radius (meters 4) (meters 3)) - (:rotate-y (degrees -25.000002)) - ) - ) + :init-specs + ((:num 5.0 5.0) + (:x (meters -0.5)) + (:rot-x 5) + (:r 4096.0) + (:g 3481.6) + (:b 3481.6) + (:vel-y (meters -0.026666667) (meters -0.02)) + (:fade-b 5.936232) + (:timer (seconds 0.23)) + (:flags (aux-list)) + (:conerot-x (degrees 0) (degrees 360)) + (:conerot-radius (meters 4) (meters 3)) + (:rotate-y (degrees -25.000002)))) (defpart 1862 - :init-specs ((:texture (new 'static 'texture-id :index #xf :page #x2)) - (:num 0.4 1.0) - (:scale-x (meters 0.25)) - (:scale-y :copy scale-x) - (:g 128.0) - (:a 0.0) - (:timer (seconds 2.3)) - (:flags (bit3)) - (:rotate-y (degrees -35)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #xf :page #x2)) + (:num 0.4 1.0) + (:scale-x (meters 0.25)) + (:scale-y :copy scale-x) + (:g 128.0) + (:a 0.0) + (:timer (seconds 2.3)) + (:flags (bit3)) + (:rotate-y (degrees -35)))) (defpart 1859 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.4) - (:x (meters 3.1111112)) - (:y (meters 4)) - (:z (meters 2.4)) - (:scale-x (meters 1.1) (meters 0.6)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 0.0 32.0) - (:g 0.0 32.0) - (:b 64.0 64.0) - (:a 8.0 32.0) - (:omega 0.0 65536.0) - (:vel-x (meters -0.0044444446)) - (:vel-z (meters -0.0034999999)) - (:rotvel-z (degrees 0) (degrees 1.2)) - (:fade-a 0.10666667) - (:accel-x (meters 0.0010370371)) - (:timer (seconds 2.3)) - (:flags (bit2 bit3 bit7)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.4) + (:x (meters 3.1111112)) + (:y (meters 4)) + (:z (meters 2.4)) + (:scale-x (meters 1.1) (meters 0.6)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 0.0 32.0) + (:g 0.0 32.0) + (:b 64.0 64.0) + (:a 8.0 32.0) + (:omega 0.0 65536.0) + (:vel-x (meters -0.0044444446)) + (:vel-z (meters -0.0034999999)) + (:rotvel-z (degrees 0) (degrees 1.2)) + (:fade-a 0.10666667) + (:accel-x (meters 0.0010370371)) + (:timer (seconds 2.3)) + (:flags (bit2 bit3 bit7)))) (defpartgroup group-village3-sagehut-boiling :id 501 :bounds (static-bspherem 0 0 0 6) - :parts ((sp-item 1864 :fade-after (meters 60) :flags (is-3d)) (sp-item 1865 :fade-after (meters 60) :flags (is-3d))) - ) + :parts ((sp-item 1864 :fade-after (meters 60) :flags (is-3d)) (sp-item 1865 :fade-after (meters 60) :flags (is-3d)))) (defpart 1864 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0 0.5) - (:x (meters -0.4) (meters 0.8)) - (:y (meters -2)) - (:z (meters -0.3)) - (:scale-x (meters 0.5) (meters 0.2)) - (:rot-x (degrees 90)) - (:rot-y (degrees -50.000004)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 64.0 64.0) - (:b 0.0 1 32.0) - (:a 32.0 64.0) - (:vel-x (meters -0.0016666667) (meters 0.0033333334)) - (:vel-y (meters 0.006666667)) - (:scalevel-x (meters 0.0013333333)) - (:scalevel-y :copy scalevel-x) - (:accel-y (meters -0.000016666667)) - (:timer (seconds 2)) - (:flags (bit2 bit3 left-multiply-quat)) - (:next-time (seconds 0.5)) - (:next-launcher 1866) - (:rotate-y (degrees 132)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0 0.5) + (:x (meters -0.4) (meters 0.8)) + (:y (meters -2)) + (:z (meters -0.3)) + (:scale-x (meters 0.5) (meters 0.2)) + (:rot-x (degrees 90)) + (:rot-y (degrees -50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 64.0 64.0) + (:b 0.0 1 32.0) + (:a 32.0 64.0) + (:vel-x (meters -0.0016666667) (meters 0.0033333334)) + (:vel-y (meters 0.006666667)) + (:scalevel-x (meters 0.0013333333)) + (:scalevel-y :copy scalevel-x) + (:accel-y (meters -0.000016666667)) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 1866) + (:rotate-y (degrees 132)))) (defpart 1866 - :init-specs ((:fade-a -0.2)) - ) + :init-specs ((:fade-a -0.2))) (defpart 1865 - :init-specs ((:texture (new 'static 'texture-id :index #x12 :page #x2)) - (:num 1.0) - (:y (meters -0.5)) - (:z (meters -0.26)) - (:scale-x (meters 12)) - (:rot-x (degrees 82.5)) - (:rot-y (degrees -50.000004)) - (:scale-y :copy scale-x) - (:r 128.0) - (:g 8.0 120.0) - (:a 24.0) - (:fade-a -1.2) - (:timer (seconds 0.05)) - (:flags (bit2 bit3)) - (:rotate-y (degrees 0)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :index #x12 :page #x2)) + (:num 1.0) + (:y (meters -0.5)) + (:z (meters -0.26)) + (:scale-x (meters 12)) + (:rot-x (degrees 82.5)) + (:rot-y (degrees -50.000004)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 8.0 120.0) + (:a 24.0) + (:fade-a -1.2) + (:timer (seconds 0.05)) + (:flags (bit2 bit3)) + (:rotate-y (degrees 0)))) (defpartgroup group-village3-sagehut-steam :id 502 :bounds (static-bspherem 0 0 0 4) - :parts ((sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1867 :fade-after (meters 60) :falloff-to (meters 60) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1867 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 1.0) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:scale-x (meters 0.3)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-y (meters 0.1) (meters 0.026666667)) - (:scalevel-x (meters 0.013333334) (meters 0.006666667)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.00033333333)) - (:friction 0.85) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:conerot-x (degrees 77) (degrees 6.0000005)) - (:conerot-y (degrees 217) (degrees 6.0000005)) - (:conerot-radius (meters -0.3)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 1.0) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:scale-x (meters 0.3)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-y (meters 0.1) (meters 0.026666667)) + (:scalevel-x (meters 0.013333334) (meters 0.006666667)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.00033333333)) + (:friction 0.85) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:conerot-x (degrees 77) (degrees 6.0000005)) + (:conerot-y (degrees 217) (degrees 6.0000005)) + (:conerot-radius (meters -0.3)))) (defpartgroup group-village3-sagehut-understeam :id 503 :bounds (static-bspherem 0 -3 0 8) - :parts ((sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.42)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 5.2) :length (seconds 0.357)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 6.1) :length (seconds 0.4)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 2.3) :length (seconds 0.367)) - (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 3.5) :length (seconds 0.545)) - ) - ) + :parts + ((sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 4) :length (seconds 0.42)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 5.2) :length (seconds 0.357)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 6.1) :length (seconds 0.4)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 2.3) :length (seconds 0.367)) + (sp-item 1868 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 3.5) :length (seconds 0.545)))) (defpart 1868 - :init-specs ((:texture (new 'static 'texture-id :page #x2)) - (:num 4.0 4.0) - (:sound (static-sound-spec "steam-short" :num 0.02)) - (:x (meters 1.5)) - (:y (meters 0.6)) - (:scale-x (meters 1)) - (:rot-z (degrees 0) (degrees 360)) - (:scale-y :copy scale-x) - (:r 255.0) - (:g 255.0) - (:b 255.0) - (:a 32.0 64.0) - (:vel-x (meters 0.13333334)) - (:vel-y (meters -0.1) (meters -0.026666667)) - (:scalevel-x (meters 0.02) (meters 0.013333334)) - (:rotvel-z (degrees -1.2) (degrees 2.4)) - (:scalevel-y :copy scalevel-x) - (:fade-a -0.53333336) - (:accel-y (meters 0.0033333334)) - (:friction 0.9) - (:timer (seconds 0.6)) - (:flags (bit2)) - (:rotate-y (degrees 0) (degrees 360)) - ) - ) + :init-specs + ((:texture (new 'static 'texture-id :page #x2)) + (:num 4.0 4.0) + (:sound (static-sound-spec "steam-short" :num 0.02)) + (:x (meters 1.5)) + (:y (meters 0.6)) + (:scale-x (meters 1)) + (:rot-z (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 255.0) + (:g 255.0) + (:b 255.0) + (:a 32.0 64.0) + (:vel-x (meters 0.13333334)) + (:vel-y (meters -0.1) (meters -0.026666667)) + (:scalevel-x (meters 0.02) (meters 0.013333334)) + (:rotvel-z (degrees -1.2) (degrees 2.4)) + (:scalevel-y :copy scalevel-x) + (:fade-a -0.53333336) + (:accel-y (meters 0.0033333334)) + (:friction 0.9) + (:timer (seconds 0.6)) + (:flags (bit2)) + (:rotate-y (degrees 0) (degrees 360)))) diff --git a/goal_src/jak1/levels/village_common/oracle.gc b/goal_src/jak1/levels/village_common/oracle.gc index 8eac200bb2..d4175042c9 100644 --- a/goal_src/jak1/levels/village_common/oracle.gc +++ b/goal_src/jak1/levels/village_common/oracle.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "VI1.DGO" "VI2.DGO" "VI3.DGO") - (require "engine/common-obs/process-taskable.gc") ;; name: oracle.gc @@ -11,18 +10,17 @@ ;; DECOMP BEGINS (deftype oracle (process-taskable) - ((first-task uint8) - (second-task uint8) - (left-eye-cell handle) - (right-eye-cell handle) - ) - ) + ((first-task uint8) + (second-task uint8) + (left-eye-cell handle) + (right-eye-cell handle))) - -(defskelgroup *oracle-sg* oracle oracle-lod0-jg oracle-idle-ja - ((oracle-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 4) - ) +(defskelgroup *oracle-sg* + oracle + oracle-lod0-jg + oracle-idle-ja + ((oracle-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 4)) (defmethod play-anim! ((this oracle) (arg0 symbol)) (set! (-> this talk-message) (text-id press-to-talk)) @@ -30,213 +28,152 @@ (((task-status need-hint) (task-status need-introduction)) (when arg0 (close-specific-task! (the-as game-task (-> this first-task)) (task-status need-introduction)) - (close-specific-task! (the-as game-task (-> this second-task)) (task-status need-introduction)) - ) + (close-specific-task! (the-as game-task (-> this second-task)) (task-status need-introduction))) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-intro-1" :index 9 :parts 5 :command-list '()) - ) + (('village1) (new 'static 'spool-anim :name "oracle-intro-1" :index 9 :parts 5 :command-list ())) (('village2) - (new 'static 'spool-anim - :name "oracle-intro-2" - :index 11 - :parts 4 - :command-list '((0 kill "pontoonten-20") - (0 kill "pontoonten-19") - (0 kill "pontoonten-18") - (0 kill "pontoonten-15") - (0 kill "pontoonten-14") - (0 kill "pontoonfive-14") - (0 kill "pontoonfive-15") - (0 kill "pontoonfive-19") - (0 kill "pontoonfive-20") - (0 kill "med-res-level-12") - (0 kill "med-res-level-13") - (0 kill "med-res-level-15") - (0 kill "money-2844") - (0 kill "money-2845") - (0 kill "money-2846") - (0 kill "money-2847") - (0 kill "money-2848") - (0 kill "money-2849") - (0 kill "money-2850") - (0 kill "money-2854") - (0 kill "money-2855") - (0 kill "money-2856") - (0 kill "money-2860") - (0 kill "money-2861") - (0 kill "money-2862") - (0 kill "eco-27") - (0 kill "eco-26") - (0 kill "sharkey-25") - (0 kill "barrel-13") - (0 kill "barrel-14") - (0 kill "barrel-15") - (0 kill "barrel-16") - (0 kill "barrel-17") - (0 kill "barrel-18") - (0 kill "barrel-19") - (0 kill "barrel-20") - (0 kill "barrel-21") - (0 kill "barrel-22") - (0 kill "barrel-23") - (0 kill "villageb-part-18") - (0 kill "villageb-part-19") - (0 kill "villageb-part-20") - (0 kill "villageb-part-21") - (0 kill "villageb-part-28") - (0 kill "villageb-part-29") - (0 kill "villageb-part-30") - (0 kill "villageb-part-31") - (0 kill "villageb-part-32") - (0 kill "villageb-part-33") - (0 kill "villageb-part-35") - (0 kill "villageb-part-37") - (0 kill "villageb-part-38") - (0 kill "villageb-part-47") - (0 kill "villageb-part-48") - (0 kill "villageb-part-49") - (0 kill "villageb-part-50") - (0 kill "villageb-part-56") - (0 kill "villageb-part-62") - (0 kill "villageb-part-63") - (0 kill "villageb-ogreboss-1") - (0 kill "crate-3127") - (0 kill "crate-3128") - (0 kill "crate-3129") - (0 kill "crate-3133") - (0 kill "geologist-1") - (0 kill "fireboulder-2") - (0 kill "fireboulder-3") - (0 kill "fireboulder-4") - (0 kill "water-vol-100") - (0 kill "water-vol-101") - (0 kill "water-vol-102") - (0 kill "water-vol-103") - (0 kill "water-vol-284") - (0 kill "water-vol-285") - (0 kill "water-vol-286") - (0 kill "ceilingflag-6") - (0 kill "ceilingflag-7") - (0 kill "ceilingflag-8") - (0 kill "ceilingflag-9") - (0 kill "orb-cache-top-14") - (0 setting-reset ocean-off near) - (399 setting-unset ocean-off) - ) - ) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-intro-3" :index 13 :parts 4 :command-list '()) - ) - ) - ) + (new 'static + 'spool-anim + :name "oracle-intro-2" + :index 11 + :parts 4 + :command-list + '((0 kill "pontoonten-20") + (0 kill "pontoonten-19") + (0 kill "pontoonten-18") + (0 kill "pontoonten-15") + (0 kill "pontoonten-14") + (0 kill "pontoonfive-14") + (0 kill "pontoonfive-15") + (0 kill "pontoonfive-19") + (0 kill "pontoonfive-20") + (0 kill "med-res-level-12") + (0 kill "med-res-level-13") + (0 kill "med-res-level-15") + (0 kill "money-2844") + (0 kill "money-2845") + (0 kill "money-2846") + (0 kill "money-2847") + (0 kill "money-2848") + (0 kill "money-2849") + (0 kill "money-2850") + (0 kill "money-2854") + (0 kill "money-2855") + (0 kill "money-2856") + (0 kill "money-2860") + (0 kill "money-2861") + (0 kill "money-2862") + (0 kill "eco-27") + (0 kill "eco-26") + (0 kill "sharkey-25") + (0 kill "barrel-13") + (0 kill "barrel-14") + (0 kill "barrel-15") + (0 kill "barrel-16") + (0 kill "barrel-17") + (0 kill "barrel-18") + (0 kill "barrel-19") + (0 kill "barrel-20") + (0 kill "barrel-21") + (0 kill "barrel-22") + (0 kill "barrel-23") + (0 kill "villageb-part-18") + (0 kill "villageb-part-19") + (0 kill "villageb-part-20") + (0 kill "villageb-part-21") + (0 kill "villageb-part-28") + (0 kill "villageb-part-29") + (0 kill "villageb-part-30") + (0 kill "villageb-part-31") + (0 kill "villageb-part-32") + (0 kill "villageb-part-33") + (0 kill "villageb-part-35") + (0 kill "villageb-part-37") + (0 kill "villageb-part-38") + (0 kill "villageb-part-47") + (0 kill "villageb-part-48") + (0 kill "villageb-part-49") + (0 kill "villageb-part-50") + (0 kill "villageb-part-56") + (0 kill "villageb-part-62") + (0 kill "villageb-part-63") + (0 kill "villageb-ogreboss-1") + (0 kill "crate-3127") + (0 kill "crate-3128") + (0 kill "crate-3129") + (0 kill "crate-3133") + (0 kill "geologist-1") + (0 kill "fireboulder-2") + (0 kill "fireboulder-3") + (0 kill "fireboulder-4") + (0 kill "water-vol-100") + (0 kill "water-vol-101") + (0 kill "water-vol-102") + (0 kill "water-vol-103") + (0 kill "water-vol-284") + (0 kill "water-vol-285") + (0 kill "water-vol-286") + (0 kill "ceilingflag-6") + (0 kill "ceilingflag-7") + (0 kill "ceilingflag-8") + (0 kill "ceilingflag-9") + (0 kill "orb-cache-top-14") + (0 setting-reset ocean-off near) + (399 setting-unset ocean-off)))) + (('village3) (new 'static 'spool-anim :name "oracle-intro-3" :index 13 :parts 4 :command-list ())))) (((task-status need-reminder)) (set! (-> this skippable) #t) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-reminder-1" :index 10 :parts 4 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-reminder-2" :index 12 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-reminder-3" :index 14 :parts 2 :command-list '()) - ) - ) - ) + (('village1) (new 'static 'spool-anim :name "oracle-reminder-1" :index 10 :parts 4 :command-list ())) + (('village2) (new 'static 'spool-anim :name "oracle-reminder-2" :index 12 :parts 2 :command-list ())) + (('village3) (new 'static 'spool-anim :name "oracle-reminder-3" :index 14 :parts 2 :command-list ())))) (((task-status need-reward-speech)) (cond (arg0 - (set! (-> this cell-for-task) (current-task (-> this tasks))) - (close-current! (-> this tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-oracle-inc))) - (cond - ((= (current-task (-> this tasks)) (-> this first-task)) - (let ((a0-25 (handle->process (-> this right-eye-cell)))) - (if a0-25 - (deactivate a0-25) - ) - ) - ) - (else - (let ((a0-29 (handle->process (-> this left-eye-cell)))) - (if a0-29 - (deactivate a0-29) - ) - ) - ) - ) - ) - (else - (set! (-> this will-talk) #t) - (set! (-> this talk-message) (text-id press-to-trade-money-oracle)) - ) - ) + (set! (-> this cell-for-task) (current-task (-> this tasks))) + (close-current! (-> this tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-oracle-inc))) + (cond + ((= (current-task (-> this tasks)) (-> this first-task)) + (let ((a0-25 (handle->process (-> this right-eye-cell)))) (if a0-25 (deactivate a0-25)))) + (else (let ((a0-29 (handle->process (-> this left-eye-cell)))) (if a0-29 (deactivate a0-29)))))) + (else (set! (-> this will-talk) #t) (set! (-> this talk-message) (text-id press-to-trade-money-oracle)))) (cond ((= (current-task (-> this tasks)) (-> this first-task)) (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-right-eye-1" :index 3 :parts 2 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-right-eye-2" :index 5 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-right-eye-3" :index 7 :parts 2 :command-list '()) - ) - ) - ) + (('village1) (new 'static 'spool-anim :name "oracle-right-eye-1" :index 3 :parts 2 :command-list ())) + (('village2) (new 'static 'spool-anim :name "oracle-right-eye-2" :index 5 :parts 2 :command-list ())) + (('village3) (new 'static 'spool-anim :name "oracle-right-eye-3" :index 7 :parts 2 :command-list ())))) (else - (case (-> (level-get-target-inside *level*) name) - (('village1) - (new 'static 'spool-anim :name "oracle-left-eye-1" :index 4 :parts 2 :command-list '()) - ) - (('village2) - (new 'static 'spool-anim :name "oracle-left-eye-2" :index 6 :parts 2 :command-list '()) - ) - (('village3) - (new 'static 'spool-anim :name "oracle-left-eye-3" :index 8 :parts 2 :command-list '()) - ) - ) - ) - ) - ) + (case (-> (level-get-target-inside *level*) name) + (('village1) (new 'static 'spool-anim :name "oracle-left-eye-1" :index 4 :parts 2 :command-list ())) + (('village2) (new 'static 'spool-anim :name "oracle-left-eye-2" :index 6 :parts 2 :command-list ())) + (('village3) (new 'static 'spool-anim :name "oracle-left-eye-3" :index 8 :parts 2 :command-list ())))))) (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> this name) - (task-status->string (current-status (-> this tasks))) - ) - ) - (-> this draw art-group data 2) - ) - ) - ) + (if arg0 + (format 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> this name) + (task-status->string (current-status (-> this tasks))))) + (-> this draw art-group data 2)))) (defmethod get-art-elem ((this oracle)) - (-> this draw art-group data 2) - ) + (-> this draw art-group data 2)) (defstate idle (oracle) :virtual #t - :exit (behavior () - (stop! (-> self sound)) - ((-> (method-of-type process-taskable idle) exit)) - ) - :trans (behavior () - (update! (-> self sound)) - ((-> (method-of-type process-taskable idle) trans)) - ) - ) + :exit + (behavior () + (stop! (-> self sound)) + ((-> (method-of-type process-taskable idle) exit))) + :trans + (behavior () + (update! (-> self sound)) + ((-> (method-of-type process-taskable idle) trans)))) (defmethod init-from-entity! ((this oracle) (arg0 entity-actor)) (process-taskable-method-40 this arg0 *oracle-sg* 3 4 (new 'static 'vector :y -4096.0 :w 4096.0) -1) - (set! (-> this sound) - (new 'process 'ambient-sound (static-sound-spec "oracle-sleep" :fo-max 50) (-> this root trans)) - ) + (set! (-> this sound) (new 'process 'ambient-sound (static-sound-spec "oracle-sleep" :fo-max 50) (-> this root trans))) (set! (-> this first-task) (the-as uint (-> arg0 extra perm task))) (set! (-> this second-task) (res-lump-value arg0 'alt-task uint)) (set! (-> this tasks) (get-task-control (the-as game-task (-> this first-task)))) @@ -244,64 +181,35 @@ (set! (-> this left-eye-cell) (the-as handle #f)) (logior! (-> this draw status) (draw-status skip-bones)) (let ((s4-0 (new 'stack-no-clear 'vector)) - (s5-1 (lambda :behavior oracle - () + (s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root)) - (v1-1 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) collide-shape)) - gp-0 - ) - ) - (a1-1 (if v1-1 - (-> v1-1 root-prim prim-core) - (-> self root trans) - ) - ) - ) - (spawn (-> self part) (the-as vector a1-1)) - ) + (v1-1 (if (and (nonzero? gp-0) (type-type? (-> gp-0 type) collide-shape)) gp-0)) + (a1-1 (if v1-1 (-> v1-1 root-prim prim-core) (-> self root trans)))) + (spawn (-> self part) (the-as vector a1-1))) 0 - (none) - ) - ) - ) + (none)))) (ja-post) (when (not (task-closed? (the-as game-task (-> this first-task)) (task-status need-resolution))) (vector<-cspace! s4-0 (-> this node-list data 5)) (set! (-> this right-eye-cell) - (ppointer->handle - (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this) - ) - ) - (send-event - (handle->process (-> this right-eye-cell)) - 'eval - (lambda :behavior oracle () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) - ) - (send-event (handle->process (-> this right-eye-cell)) 'trans-hook s5-1) - ) + (ppointer->handle (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this))) + (send-event (handle->process (-> this right-eye-cell)) + 'eval + (lambda :behavior oracle () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) + (set! (-> self part) v0-0) + (the-as sparticle-launch-group v0-0)))) + (send-event (handle->process (-> this right-eye-cell)) 'trans-hook s5-1)) (when (not (task-closed? (the-as game-task (-> this second-task)) (task-status need-resolution))) (vector<-cspace! s4-0 (-> this node-list data 6)) (set! (-> this left-eye-cell) - (ppointer->handle - (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this) - ) - ) - (send-event - (handle->process (-> this left-eye-cell)) - 'eval - (lambda :behavior oracle () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) - (set! (-> self part) v0-0) - (the-as sparticle-launch-group v0-0) - ) - ) - ) - (send-event (handle->process (-> this left-eye-cell)) 'trans-hook s5-1) - ) - ) + (ppointer->handle (manipy-spawn s4-0 (-> this entity) *fuel-cell-sg* (new 'static 'vector :w 4915.2) :to this))) + (send-event (handle->process (-> this left-eye-cell)) + 'eval + (lambda :behavior oracle () + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 63) self))) + (set! (-> self part) v0-0) + (the-as sparticle-launch-group v0-0)))) + (send-event (handle->process (-> this left-eye-cell)) 'trans-hook s5-1))) (process-taskable-method-42 this) - (none) - ) + (none)) diff --git a/goal_src/jak1/levels/village_common/villagep-obs.gc b/goal_src/jak1/levels/village_common/villagep-obs.gc index 0207563fff..55d5788247 100644 --- a/goal_src/jak1/levels/village_common/villagep-obs.gc +++ b/goal_src/jak1/levels/village_common/villagep-obs.gc @@ -1,7 +1,6 @@ ;;-*-Lisp-*- (in-package goal) (bundles "CIT.DGO" "VI1.DGO" "VI2.DGO" "VI3.DGO") - (require "engine/entity/ambient.gc") (require "engine/game/task/task-control.gc") (require "engine/target/target.gc") @@ -12,388 +11,236 @@ ;; name in dgo: villagep-obs ;; dgos: CIT, L1, VI1, VI2, VI3, VILLAGEP - ;; DECOMP BEGINS -(deftype warpgate (process-hidden) - () - ) - +(deftype warpgate (process-hidden) ()) (defstate target-warp-in (target) :event target-generic-event-handler - :enter (-> target-warp-out enter) - :exit (-> target-warp-out exit) - :trans (behavior () - (set! (-> self control transv x) - (- (-> self control unknown-vector103 x) (-> self control unknown-vector102 x)) - ) - (set! (-> self control transv z) - (- (-> self control unknown-vector103 z) (-> self control unknown-vector102 z)) - ) - (vector-xz-normalize! (-> self control transv) 49152.0) - (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) - (go target-hit-ground #f) - ) - ) - :code (behavior ((arg0 vector) (arg1 vector)) - (clear-collide-with-as (-> self control)) - (ja-channel-set! 0) - (vector-reset! (-> self control transv)) - (move-to-point! (-> self control) (-> self control unknown-vector102)) - (let ((gp-0 (current-time))) - (until (time-elapsed? gp-0 (seconds 1)) + :enter + (-> target-warp-out + enter) + :exit + (-> target-warp-out + exit) + :trans + (behavior () + (set! (-> self control transv x) (- (-> self control unknown-vector103 x) (-> self control unknown-vector102 x))) + (set! (-> self control transv z) (- (-> self control unknown-vector103 z) (-> self control unknown-vector102 z))) + (vector-xz-normalize! (-> self control transv) 49152.0) + (if (logtest? (-> self control status) (cshape-moving-flags onsurf)) (go target-hit-ground #f))) + :code + (behavior ((arg0 vector) (arg1 vector)) + (clear-collide-with-as (-> self control)) + (ja-channel-set! 0) + (vector-reset! (-> self control transv)) + (move-to-point! (-> self control) (-> self control unknown-vector102)) + (let ((gp-0 (current-time))) (until (time-elapsed? gp-0 (seconds 1)) (suspend))) + (let ((gp-1 (new-stack-vector0))) + (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-1))) + (let* ((f0-2 (vector-length gp-1)) + (f1-1 f0-2) + (f2-3 (- (sqrtf (* 8192.0 (-> self control dynam gravity-length))) (* 0.008333334 (- (-> self control dynam gravity-length)))))) + (vector+! (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) + (vector-float*! gp-1 gp-1 (/ f0-2 f1-1))))) + (set-heading-vec! (-> self control) (-> self control transv)) + (rot->dir-targ! (-> self control)) + (set-time! (-> self state-time)) + (set! (-> self post-hook) target-no-stick-post) + (ja-channel-set! 1) + (send-event self 'do-effect 'death-warp-in -1.0) + (sound-play "warpgate-tele") + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 50.0 0)) :frame-num (ja-aframe 40.0 0)) + (until (ja-done? 0) (suspend) - ) - ) - (let ((gp-1 (new-stack-vector0))) - (let ((f0-1 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - 0.0 - (vector-! gp-1 (-> self control transv) (vector-float*! gp-1 (-> self control dynam gravity-normal) f0-1)) - ) - (let* ((f0-2 (vector-length gp-1)) - (f1-1 f0-2) - (f2-3 - (- (sqrtf (* 8192.0 (-> self control dynam gravity-length))) - (* 0.008333334 (- (-> self control dynam gravity-length))) - ) - ) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-3) - (vector-float*! gp-1 gp-1 (/ f0-2 f1-1)) - ) - ) - ) - (set-heading-vec! (-> self control) (-> self control transv)) - (rot->dir-targ! (-> self control)) - (set-time! (-> self state-time)) - (set! (-> self post-hook) target-no-stick-post) - (ja-channel-set! 1) - (send-event self 'do-effect 'death-warp-in -1.0) - (sound-play "warpgate-tele") - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek! (ja-aframe 50.0 0)) :frame-num (ja-aframe 40.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek! (ja-aframe 50.0 0))) - ) - (restore-collide-with-as (-> self control)) - (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek!) :frame-num (ja-aframe 50.0 0)) - (until (ja-done? 0) - (suspend) - (ja :num! (seek!)) - ) - (target-falling-anim -1 (seconds 0.33)) - ) - :post target-no-move-post - ) + (ja :num! (seek! (ja-aframe 50.0 0)))) + (restore-collide-with-as (-> self control)) + (ja-no-eval :group! eichar-duck-high-jump-ja :num! (seek!) :frame-num (ja-aframe 50.0 0)) + (until (ja-done? 0) + (suspend) + (ja :num! (seek!))) + (target-falling-anim -1 (seconds 0.33))) + :post target-no-move-post) (defstate idle (warp-gate) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (go-virtual hidden) - ) - ) - ) - :code (behavior () - (remove-setting! 'allow-progress) - (set-time! (-> self state-time)) - (loop - (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and (>= (-> self level-slot) 0) - (not (movie?)) - (not (level-hint-displayed?)) - (not (logtest? (-> *target* control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - ) - (let* ((v1-16 (-> self root)) - (a1-2 (-> *target* control trans)) - (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans)))) - ) - (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1))) - ) - ) - ) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and (hud-hidden?) - (can-grab-display? self) - (cond - ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) - (set-time! (-> self state-time)) - #f - ) - (else - #t - ) - ) - (time-elapsed? (-> self state-time) (seconds 0.1)) - ) - (if (and (cpad-pressed? 0 circle) (process-grab? *target*)) - (go-virtual active) - ) - (if (and *cheat-mode* (cpad-pressed? 0 l3)) - (set! (-> self max-slot) 4) - ) - (let ((gp-0 - (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-53 gp-0)) - (set! (-> v1-53 width) (the float 440)) - ) - (let ((v1-54 gp-0)) - (set! (-> v1-54 height) (the float 80)) - ) - (let ((v1-55 gp-0)) - (set! (-> v1-55 scale) 0.9) - ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22) - ) - ) - ) - (suspend) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (go-virtual hidden)))) + :code + (behavior () + (remove-setting! 'allow-progress) + (set-time! (-> self state-time)) + (loop (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (>= (-> self level-slot) 0) + (not (movie?)) + (not (level-hint-displayed?)) + (not (logtest? (-> *target* control root-prim prim-core action) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut))) + (let* ((v1-16 (-> self root)) + (a1-2 (-> *target* control trans)) + (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans))))) + (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1)))))) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint () '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) + (can-grab-display? self) + (cond + ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) + (set-time! (-> self state-time)) + #f) + (else #t)) + (time-elapsed? (-> self state-time) (seconds 0.1))) + (if (and (cpad-pressed? 0 circle) (process-grab? *target*)) (go-virtual active)) + (if (and *cheat-mode* (cpad-pressed? 0 l3)) (set! (-> self max-slot) 4)) + (let ((gp-0 (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-53 gp-0)) (set! (-> v1-53 width) (the float 440))) + (let ((v1-54 gp-0)) (set! (-> v1-54 height) (the float 80))) + (let ((v1-55 gp-0)) (set! (-> v1-55 scale) 0.9)) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (text-id press-to-use) #f) gp-0 #f 128 22)))) + (suspend)))) (defun get-next-slot-up ((arg0 warp-gate) (arg1 int)) (let ((v0-0 (+ arg1 1))) - (if (< (-> arg0 max-slot) v0-0) - (set! v0-0 (-> arg0 min-slot)) - ) - (if (= v0-0 (-> arg0 level-slot)) - (+! v0-0 1) - ) - (if (< (-> arg0 max-slot) v0-0) - (set! v0-0 (-> arg0 min-slot)) - ) - v0-0 - ) - ) + (if (< (-> arg0 max-slot) v0-0) (set! v0-0 (-> arg0 min-slot))) + (if (= v0-0 (-> arg0 level-slot)) (+! v0-0 1)) + (if (< (-> arg0 max-slot) v0-0) (set! v0-0 (-> arg0 min-slot))) + v0-0)) (defun get-next-slot-down ((arg0 warp-gate) (arg1 int)) (let ((v0-0 (+ arg1 -1))) - (if (< v0-0 (-> arg0 min-slot)) - (set! v0-0 (-> arg0 max-slot)) - ) - (if (= v0-0 (-> arg0 level-slot)) - (+! v0-0 -1) - ) - (if (< v0-0 (-> arg0 min-slot)) - (set! v0-0 (-> arg0 max-slot)) - ) - v0-0 - ) - ) + (if (< v0-0 (-> arg0 min-slot)) (set! v0-0 (-> arg0 max-slot))) + (if (= v0-0 (-> arg0 level-slot)) (+! v0-0 -1)) + (if (< v0-0 (-> arg0 min-slot)) (set! v0-0 (-> arg0 max-slot))) + v0-0)) (defun print-level-name ((arg0 int) (arg1 font-context) (arg2 int) (arg3 int)) - (let ((s5-0 (if arg3 - arg2 - (- arg2) - ) - ) - ) + (let ((s5-0 (if arg3 arg2 (- arg2)))) (+! (-> arg1 origin x) (the float s5-0)) (let ((f30-0 (- 1.0 (* 0.0033333334 (the float arg2))))) - (print-game-text-scaled - (lookup-text! *common-text* (the-as text-id (+ arg0 286)) #f) - f30-0 - arg1 - (the int (* 128.0 f30-0)) - ) - ) - (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0))) - ) + (print-game-text-scaled (lookup-text! *common-text* (the-as text-id (+ arg0 286)) #f) + f30-0 + arg1 + (the int (* 128.0 f30-0)))) + (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0)))) (set! (-> arg1 color) (font-color default)) - arg1 - ) + arg1) (defstate active (warp-gate) :virtual #t - :enter (behavior () - (set-setting! 'allow-progress #f 0.0 0) - (apply-settings *setting-control*) - (sound-play "start-options") - (set-time! (-> self state-time)) - ) - :trans (behavior () - (when (or (and (cpad-pressed? 0 triangle) - (time-elapsed? (-> self state-time) (seconds 0.1)) - (process-release? *target*) - ) - (not *target*) - ) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) - (sound-play "cursor-options") - (go-virtual idle) - ) - (when *target* - (let* ((gp-1 (-> *target* control)) - (s4-0 (-> self root trans)) - (f0-0 - (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))) - ) - ) - (if (!= f0-0 0.0) - (send-event - *target* - 'rotate-y-angle - (fmax (fmin f0-0 (* 65536.0 (seconds-per-frame))) (* -65536.0 (seconds-per-frame))) - ) - ) - ) - ) - ) - :code (behavior () - (local-vars (sv-112 int) (sv-128 int) (sv-144 int)) - (let ((gp-0 (get-next-slot-up self (+ (-> self level-slot) -1)))) - 0 - (let ((s5-0 #f) - (s2-0 0) - (s4-0 #f) - (s3-0 gp-0) - ) - (loop - (when (zero? s2-0) - (cond - ((cpad-pressed? 0 right) - (set! s5-0 #t) - (set! s4-0 #f) - (sound-play "cursor-up-down") - (set! s3-0 (get-next-slot-up self s3-0)) - ) - ((cpad-pressed? 0 left) - (set! s5-0 #t) - (set! s4-0 #t) - (sound-play "cursor-up-down") - (set! s3-0 (get-next-slot-down self s3-0)) - ) - ) - ) - (if s5-0 - (set! s2-0 (seekl s2-0 300 (the int (* 15.0 (-> *display* time-adjust-ratio))))) - ) - (when (>= s2-0 150) - (set! gp-0 s3-0) - (set! s5-0 #f) - (set! s2-0 0) - ) - (can-grab-display? self) - (hide-hud) - (let ((s1-2 (get-continue-by-name *game-info* (-> *warp-info* gp-0)))) - (lookup-level-info (-> s1-2 level)) - (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) (cpad-pressed? 0 circle)) - (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) - (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) - (go-virtual use gp-0 (the-as level s1-2)) - ) - ) - (let ((s1-3 - (new 'stack 'font-context *font-default-matrix* 6 110 0.0 (font-color default) (font-flags shadow kerning)) - ) - ) - (let ((v1-38 s1-3)) - (set! (-> v1-38 scale) 0.7) - ) - (let ((v1-39 s1-3)) - (set! (-> v1-39 width) (the float 500)) - ) - (let ((v1-40 s1-3)) - (set! (-> v1-40 height) (the float 55)) - ) - (set! (-> s1-3 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text (lookup-text! *common-text* (text-id warp-gate-use-dpad) #f) s1-3 #f 128 22) - (+! (-> s1-3 origin y) 35.0) - (let ((v1-43 s1-3)) - (set! (-> v1-43 height) (the float 40)) - ) - (let ((a0-34 s1-3)) - (set! (-> a0-34 color) (font-color progress-blue)) - ) - 0 - (let ((s0-3 (get-next-slot-up self gp-0))) - (set! sv-112 (get-next-slot-down self gp-0)) - (set! sv-144 (get-next-slot-up self s0-3)) - (set! sv-128 (get-next-slot-down self sv-112)) - (cond - (s4-0 - (let ((a2-6 (- 300 (+ s2-0 150))) - (t9-20 print-level-name) - (a1-16 s1-3) - (a3-4 #f) - ) - (t9-20 sv-112 a1-16 a2-6 (the-as int a3-4)) - ) - (let ((a2-7 (+ s2-0 150))) - (cond - ((< a2-7 225) - (print-level-name s0-3 s1-3 a2-7 (the-as int #t)) - ) - (else + :enter + (behavior () + (set-setting! 'allow-progress #f 0.0 0) + (apply-settings *setting-control*) + (sound-play "start-options") + (set-time! (-> self state-time))) + :trans + (behavior () + (when (or (and (cpad-pressed? 0 triangle) (time-elapsed? (-> self state-time) (seconds 0.1)) (process-release? *target*)) + (not *target*)) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) + (sound-play "cursor-options") + (go-virtual idle)) + (when *target* + (let* ((gp-1 (-> *target* control)) + (s4-0 (-> self root trans)) + (f0-0 (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))))) + (if (!= f0-0 0.0) + (send-event *target* 'rotate-y-angle (fmax (fmin f0-0 (* 65536.0 (seconds-per-frame))) (* -65536.0 (seconds-per-frame)))))))) + :code + (behavior () + (local-vars (sv-112 int) (sv-128 int) (sv-144 int)) + (let ((gp-0 (get-next-slot-up self (+ (-> self level-slot) -1)))) + 0 + (let ((s5-0 #f) + (s2-0 0) + (s4-0 #f) + (s3-0 gp-0)) + (loop (when (zero? s2-0) + (cond + ((cpad-pressed? 0 right) + (set! s5-0 #t) + (set! s4-0 #f) + (sound-play "cursor-up-down") + (set! s3-0 (get-next-slot-up self s3-0))) + ((cpad-pressed? 0 left) + (set! s5-0 #t) + (set! s4-0 #t) + (sound-play "cursor-up-down") + (set! s3-0 (get-next-slot-down self s3-0))))) + (if s5-0 (set! s2-0 (seekl s2-0 300 (the int (* 15.0 (-> *display* time-adjust-ratio)))))) + (when (>= s2-0 150) + (set! gp-0 s3-0) + (set! s5-0 #f) + (set! s2-0 0)) + (can-grab-display? self) + (hide-hud) + (let ((s1-2 (get-continue-by-name *game-info* (-> *warp-info* gp-0)))) + (lookup-level-info (-> s1-2 level)) + (when (and (time-elapsed? (-> self state-time) (seconds 0.05)) (cpad-pressed? 0 circle)) + (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons circle)) + (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) + (go-virtual use gp-0 (the-as level s1-2)))) + (let ((s1-3 (new 'stack 'font-context *font-default-matrix* 6 110 0.0 (font-color default) (font-flags shadow kerning)))) + (let ((v1-38 s1-3)) (set! (-> v1-38 scale) 0.7)) + (let ((v1-39 s1-3)) (set! (-> v1-39 width) (the float 500))) + (let ((v1-40 s1-3)) (set! (-> v1-40 height) (the float 55))) + (set! (-> s1-3 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text (lookup-text! *common-text* (text-id warp-gate-use-dpad) #f) s1-3 #f 128 22) + (+! (-> s1-3 origin y) 35.0) + (let ((v1-43 s1-3)) (set! (-> v1-43 height) (the float 40))) + (let ((a0-34 s1-3)) (set! (-> a0-34 color) (font-color progress-blue))) + 0 + (let ((s0-3 (get-next-slot-up self gp-0))) + (set! sv-112 (get-next-slot-down self gp-0)) + (set! sv-144 (get-next-slot-up self s0-3)) + (set! sv-128 (get-next-slot-down self sv-112)) + (cond + (s4-0 + (let ((a2-6 (- 300 (+ s2-0 150))) + (t9-20 print-level-name) + (a1-16 s1-3) + (a3-4 #f)) + (t9-20 sv-112 a1-16 a2-6 (the-as int a3-4))) + (let ((a2-7 (+ s2-0 150))) + (cond + ((< a2-7 225) (print-level-name s0-3 s1-3 a2-7 (the-as int #t))) + (else (let ((a2-8 (- 300 s2-0)) (t9-22 print-level-name) (a1-18 s1-3) - (a3-6 #f) - ) - (t9-22 sv-128 a1-18 a2-8 (the-as int a3-6)) - ) - ) - ) - ) - ) - (else - (let ((a2-9 (+ s2-0 150))) - (cond - ((< a2-9 225) - (print-level-name sv-112 s1-3 a2-9 (the-as int #f)) - ) - (else + (a3-6 #f)) + (t9-22 sv-128 a1-18 a2-8 (the-as int a3-6))))))) + (else + (let ((a2-9 (+ s2-0 150))) + (cond + ((< a2-9 225) (print-level-name sv-112 s1-3 a2-9 (the-as int #f))) + (else (let ((a2-10 (- 300 s2-0)) (t9-24 print-level-name) (a1-20 s1-3) - (a3-8 #t) - ) - (t9-24 sv-144 a1-20 a2-10 (the-as int a3-8)) - ) - ) - ) - ) - (let ((a2-11 (- 300 (+ s2-0 150)))) - (print-level-name s0-3 s1-3 a2-11 (the-as int #t)) - ) - ) - ) - ) - (when (not s5-0) - (let ((a0-47 s1-3)) - (set! (-> a0-47 color) (font-color progress-yellow)) - ) - ) - (print-level-name gp-0 s1-3 s2-0 (the-as int s4-0)) - (+! (-> s1-3 origin y) 20.0) - (print-game-text (lookup-text! *common-text* (text-id press-to-warp) #f) s1-3 #f 128 22) - (+! (-> s1-3 origin y) 15.0) - (print-game-text (lookup-text! *common-text* (text-id press-to-exit) #f) s1-3 #f 128 22) - ) - (suspend) - ) - ) - ) - ) - ) + (a3-8 #t)) + (t9-24 sv-144 a1-20 a2-10 (the-as int a3-8)))))) + (let ((a2-11 (- 300 (+ s2-0 150)))) (print-level-name s0-3 s1-3 a2-11 (the-as int #t)))))) + (when (not s5-0) + (let ((a0-47 s1-3)) (set! (-> a0-47 color) (font-color progress-yellow)))) + (print-level-name gp-0 s1-3 s2-0 (the-as int s4-0)) + (+! (-> s1-3 origin y) 20.0) + (print-game-text (lookup-text! *common-text* (text-id press-to-warp) #f) s1-3 #f 128 22) + (+! (-> s1-3 origin y) 15.0) + (print-game-text (lookup-text! *common-text* (text-id press-to-exit) #f) s1-3 #f 128 22)) + (suspend)))))) (defstate hidden (warp-gate) :virtual #t - :code anim-loop - ) + :code anim-loop) (defbehavior warp-gate-init-by-other warp-gate ((arg0 vector)) (stack-size-set! (-> self main-thread) 512) @@ -403,68 +250,40 @@ (set! (-> self level) (-> self entity extra level name)) (set! (-> self min-slot) 0) (let ((v1-11 (-> self level))) - (set! (-> self level-slot) (cond - ((= v1-11 'training) - 0 - ) - ((= v1-11 'village1) - 1 - ) - ((= v1-11 'village2) - 2 - ) - ((= v1-11 'village3) - 3 - ) - ((or (= v1-11 'citadel) (= v1-11 'lavatube)) - 4 - ) - (else - -1 - ) - ) - ) - ) - (set! (-> self max-slot) (cond - ((task-closed? (game-task village4-button) (task-status need-hint)) - 4 - ) - ((task-closed? (game-task village3-button) (task-status need-hint)) - 3 - ) - ((task-closed? (game-task village2-levitator) (task-status need-hint)) - 2 - ) - (else - 1 - ) - ) - ) + (set! (-> self level-slot) + (cond + ((= v1-11 'training) 0) + ((= v1-11 'village1) 1) + ((= v1-11 'village2) 2) + ((= v1-11 'village3) 3) + ((or (= v1-11 'citadel) (= v1-11 'lavatube)) 4) + (else -1)))) + (set! (-> self max-slot) + (cond + ((task-closed? (game-task village4-button) (task-status need-hint)) 4) + ((task-closed? (game-task village3-button) (task-status need-hint)) 3) + ((task-closed? (game-task village2-levitator) (task-status need-hint)) 2) + (else 1))) (go-virtual idle) - (none) - ) + (none)) (deftype warp-gate-switch (basebutton) - ((warp handle) - ) + ((warp handle)) (:methods - (pressable? (_type_) symbol) - ) - ) + (pressable? (_type_) symbol))) - -(defskelgroup *warp-gate-switch-sg* warp-gate-switch warp-gate-switch-lod0-jg warp-gate-switch-down-ja - ((warp-gate-switch-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 1.5) - ) +(defskelgroup *warp-gate-switch-sg* + warp-gate-switch + warp-gate-switch-lod0-jg + warp-gate-switch-down-ja + ((warp-gate-switch-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 1.5)) (defmethod basebutton-method-27 ((this warp-gate-switch)) (let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player)))) (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) (set! (-> s5-0 reaction) default-collision-reaction) - (set! (-> s5-0 no-reaction) - (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) - ) + (set! (-> s5-0 no-reaction) (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)) (alloc-riders s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) @@ -479,51 +298,29 @@ (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (append-prim s4-0 s3-0) - ) - ) + (append-prim s4-0 s3-0))) (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) (backup-collide-with-as s5-0) (set! (-> this root) s5-0) - s5-0 - ) - ) + s5-0)) (defmethod pressable? ((this warp-gate-switch)) (let ((v1-2 (-> this entity extra perm task))) (cond ((logtest? (-> *target* control root-prim prim-core action) - (collide-action edgegrab-cam swingpole-active racer snowball tube flut) - ) - #f - ) + (collide-action edgegrab-cam swingpole-active racer snowball tube flut)) + #f) ((= v1-2 (game-task training-door)) (cond ((and (task-complete? *game-info* (game-task training-door)) (task-complete? *game-info* (game-task training-gimmie)) (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) - #t - ) + (task-complete? *game-info* (game-task training-buzzer))) + #t) (else - (level-hint-spawn - (text-id training-warp-gate-blocked) - "sagevb38" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - #f - ) - ) - ) - (else - #t - ) - ) - ) - ) + (level-hint-spawn (text-id training-warp-gate-blocked) "sagevb38" (the-as entity #f) *entity-pool* (game-task none)) + #f))) + (else #t)))) (defmethod basebutton-method-26 ((this warp-gate-switch)) (set! (-> this warp) (the-as handle #f)) @@ -531,51 +328,26 @@ (cond ((= v1-2 (game-task training-door)) (set! (-> this down?) - (the-as - symbol - (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete))) - ) - ) - ) + (the-as symbol (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status complete)))))) (else - (if (or (= v1-2 (game-task none)) (task-closed? (-> this entity extra perm task) (task-status need-hint))) - (set! (-> this down?) #t) - ) - ) - ) - ) - (initialize-skeleton this *warp-gate-switch-sg* '()) + (if (or (= v1-2 (game-task none)) (task-closed? (-> this entity extra perm task) (task-status need-hint))) + (set! (-> this down?) #t))))) + (initialize-skeleton this *warp-gate-switch-sg* ()) (logior! (-> this skel status) (janim-status inited)) (ja-channel-set! 1) (cond ((-> this down?) (let ((s5-0 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) - (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1)) - ) - ) - ) + (joint-control-channel-group-eval! s5-0 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-0 frame-num) (the float (+ (-> (the-as art-joint-anim (-> this draw art-group data 2)) data 0 length) -1))))) (else - (let ((s5-1 (-> this skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> this draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-1 frame-num) 0.0) - ) - ) - ) + (let ((s5-1 (-> this skel root-channel 0))) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity) + (set! (-> s5-1 frame-num) 0.0)))) (set! (-> this anim-speed) 2.0) (update-transforms! (-> this root)) (ja-post) - (none) - ) + (none)) (defmethod press! ((this warp-gate-switch) (arg0 symbol)) (with-pp @@ -588,29 +360,14 @@ (when (zero? (get-reminder s4-1 2)) (let ((s3-1 (max 1 (the int (-> *game-info* fuel))))) (format #t "VILLAGE3 button saved ~D tasks~%" s3-1) - (save-reminder s4-1 s3-1 2) - ) - ) - ) - ) - ) - ) + (save-reminder s4-1 s3-1 2))))))) (let ((a1-5 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-5 from) pp) (set! (-> a1-5 num-params) 0) (set! (-> a1-5 message) 'start) (let ((t9-5 send-event-function) - (v1-14 (-> this notify-actor)) - ) - (t9-5 - (if v1-14 - (-> v1-14 extra process) - ) - a1-5 - ) - ) - ) - ) + (v1-14 (-> this notify-actor))) + (t9-5 (if v1-14 (-> v1-14 extra process)) a1-5)))) ;; og:preserve-this ;; note: they appear to be calling this on the wrong object. ;; this doesn't actually cause any problems but corrupts the type of `float` in the symbol @@ -618,502 +375,265 @@ ;; basebutton. The corruption is completely harmless but is annoying because it looks like ;; a more severe memory corruption problem. So we fix it. ;; (call-parent-method (the-as warp-gate-switch arg0) arg0) - (call-parent-method this arg0) - ) - ) + (call-parent-method this arg0))) (defstate basebutton-up-idle (warp-gate-switch) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('touch 'attack) - (when (pressable? self) - (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) - (go-virtual basebutton-going-down) - ) - ) - (('hide) - (send-event (handle->process (-> self warp)) message) - ) - (else - ((-> (method-of-type basebutton basebutton-up-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (let ((t9-0 (-> (method-of-type basebutton basebutton-up-idle) enter))) - (if t9-0 - (t9-0) - ) - ) - ) - :trans (behavior () - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 0) - (set! (-> a1-0 message) 'stop) - (let ((t9-0 send-event-function) - (v1-1 (-> self notify-actor)) - ) - (t9-0 - (if v1-1 - (-> v1-1 extra process) - ) - a1-0 - ) - ) - ) - (when (time-elapsed? (-> self state-time) (seconds 60)) - (case (-> self entity extra perm task) - (((game-task training-door)) - (when (and (task-complete? *game-info* (game-task training-door)) - (task-complete? *game-info* (game-task training-gimmie)) - (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) - (level-hint-spawn - (text-id training-warp-gate-reminder) - "sagevb39" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)) - ) - ) - (((game-task village2-levitator)) - (level-hint-spawn - (text-id village2-button-reminder) - "asstvb28" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village2-button-reminder2) - "asstvb29" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village2-button-reminder3) - "asstvb30" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - (((game-task village3-button)) - (level-hint-spawn - (text-id village3-button-reminder) - "asstv103" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village3-button-reminder2) - "asstv104" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (level-hint-spawn - (text-id village3-button-reminder3) - "asstv105" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('touch 'attack) + (when (pressable? self) + (basebutton-method-29 self (-> self event-going-down) (-> self notify-actor)) + (go-virtual basebutton-going-down))) + (('hide) (send-event (handle->process (-> self warp)) message)) + (else ((-> (method-of-type basebutton basebutton-up-idle) event) proc argc message block)))) + :enter + (behavior () (set-time! (-> self state-time)) - ) - (let ((t9-13 (-> (method-of-type basebutton basebutton-up-idle) trans))) - (if t9-13 - (t9-13) - ) - ) - ) - ) + (let ((t9-0 (-> (method-of-type basebutton basebutton-up-idle) enter))) (if t9-0 (t9-0)))) + :trans + (behavior () + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 0) + (set! (-> a1-0 message) 'stop) + (let ((t9-0 send-event-function) + (v1-1 (-> self notify-actor))) + (t9-0 (if v1-1 (-> v1-1 extra process)) a1-0))) + (when (time-elapsed? (-> self state-time) (seconds 60)) + (case (-> self entity extra perm task) + (((game-task training-door)) + (when (and (task-complete? *game-info* (game-task training-door)) + (task-complete? *game-info* (game-task training-gimmie)) + (task-complete? *game-info* (game-task training-climb)) + (task-complete? *game-info* (game-task training-buzzer))) + (level-hint-spawn (text-id training-warp-gate-reminder) "sagevb39" (the-as entity #f) *entity-pool* (game-task none)) + (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)))) + (((game-task village2-levitator)) + (level-hint-spawn (text-id village2-button-reminder) "asstvb28" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village2-button-reminder2) "asstvb29" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village2-button-reminder3) "asstvb30" (the-as entity #f) *entity-pool* (game-task none))) + (((game-task village3-button)) + (level-hint-spawn (text-id village3-button-reminder) "asstv103" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village3-button-reminder2) "asstv104" (the-as entity #f) *entity-pool* (game-task none)) + (level-hint-spawn (text-id village3-button-reminder3) "asstv105" (the-as entity #f) *entity-pool* (game-task none)))) + (set-time! (-> self state-time))) + (let ((t9-13 (-> (method-of-type basebutton basebutton-up-idle) trans))) (if t9-13 (t9-13))))) (defstate basebutton-down-idle (warp-gate-switch) :virtual #t - :event (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) - (case message - (('hide) - (send-event (handle->process (-> self warp)) message) - ) - (else - ((-> (method-of-type basebutton basebutton-down-idle) event) proc argc message block) - ) - ) - ) - :enter (behavior () - (set-time! (-> self state-time)) - (set! (-> self warp) (ppointer->handle (process-spawn warp-gate (-> self notify-actor extra trans) :to self))) - (process-entity-status! self (entity-perm-status complete) #t) - (let ((t9-4 (-> (method-of-type basebutton basebutton-down-idle) enter))) - (if t9-4 - (t9-4) - ) - ) - ) - :exit (behavior () - (let ((a0-1 (handle->process (-> self warp)))) - (if a0-1 - (deactivate a0-1) - ) - ) - (let ((t9-1 (-> (method-of-type basebutton basebutton-down-idle) exit))) - (if t9-1 - (t9-1) - ) - ) - ) - :trans (behavior () - (when (time-elapsed? (-> self state-time) (seconds 60)) - (case (-> self entity extra perm task) - (((game-task training-door)) - (when (not (task-closed? (game-task beach-ecorocks) (task-status need-introduction))) - (level-hint-spawn - (text-id training-warp-gate-reminder) - "sagevb39" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (clear-text-seen! *game-info* (text-id training-warp-gate-reminder)) - ) - ) - ) + :event + (behavior ((proc process) (argc int) (message symbol) (block event-message-block)) + (case message + (('hide) (send-event (handle->process (-> self warp)) message)) + (else ((-> (method-of-type basebutton basebutton-down-idle) event) proc argc message block)))) + :enter + (behavior () (set-time! (-> self state-time)) - ) - (let ((t9-3 (-> (method-of-type basebutton basebutton-down-idle) trans))) - (if t9-3 - (t9-3) - ) - ) - ) - ) + (set! (-> self warp) (ppointer->handle (process-spawn warp-gate (-> self notify-actor extra trans) :to self))) + (process-entity-status! self (entity-perm-status complete) #t) + (let ((t9-4 (-> (method-of-type basebutton basebutton-down-idle) enter))) (if t9-4 (t9-4)))) + :exit + (behavior () + (let ((a0-1 (handle->process (-> self warp)))) (if a0-1 (deactivate a0-1))) + (let ((t9-1 (-> (method-of-type basebutton basebutton-down-idle) exit))) (if t9-1 (t9-1)))) + :trans + (behavior () + (when (time-elapsed? (-> self state-time) (seconds 60)) + (case (-> self entity extra perm task) + (((game-task training-door)) + (when (not (task-closed? (game-task beach-ecorocks) (task-status need-introduction))) + (level-hint-spawn (text-id training-warp-gate-reminder) "sagevb39" (the-as entity #f) *entity-pool* (game-task none)) + (clear-text-seen! *game-info* (text-id training-warp-gate-reminder))))) + (set-time! (-> self state-time))) + (let ((t9-3 (-> (method-of-type basebutton basebutton-down-idle) trans))) (if t9-3 (t9-3))))) (defstate basebutton-going-down (warp-gate-switch) :virtual #t - :code (behavior () - (sound-play "warpgate-butt") - (sound-play "warpgate-act") - (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) - (dotimes (s5-2 gp-2) - (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-2)) - (a1-4 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-4 from) self) - (set! (-> a1-4 num-params) 0) - (set! (-> a1-4 message) 'trigger) - (let ((t9-6 send-event-function) - (v1-3 s4-0) - ) - (when (not (t9-6 - (if v1-3 - (-> v1-3 extra process) - ) - a1-4 - ) - ) - (entity-birth-no-kill s4-0) - (suspend) - (send-event - (if s4-0 - (-> s4-0 extra process) - ) - 'trigger - ) - ) - ) - ) - ) - ) - (let ((t9-10 (-> (the-as (state basebutton) (find-parent-state)) code))) - (if t9-10 - ((the-as (function none :behavior basebutton) t9-10)) - ) - ) - ) - ) + :code + (behavior () + (sound-play "warpgate-butt") + (sound-play "warpgate-act") + (let ((gp-2 (entity-actor-count (-> self entity) 'trigger-actor))) + (dotimes (s5-2 gp-2) + (let ((s4-0 (entity-actor-lookup (-> self entity) 'trigger-actor s5-2)) + (a1-4 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-4 from) self) + (set! (-> a1-4 num-params) 0) + (set! (-> a1-4 message) 'trigger) + (let ((t9-6 send-event-function) + (v1-3 s4-0)) + (when (not (t9-6 (if v1-3 (-> v1-3 extra process)) a1-4)) + (entity-birth-no-kill s4-0) + (suspend) + (send-event (if s4-0 (-> s4-0 extra process)) 'trigger)))))) + (let ((t9-10 (-> (the-as (state basebutton) (find-parent-state)) code))) + (if t9-10 ((the-as (function none :behavior basebutton) t9-10)))))) -(defskelgroup *village-cam-sg* village-cam village-cam-lod0-jg -1 - ((village-cam-lod0-mg (meters 999999))) - :bounds (static-spherem 0 0 0 80) - ) +(defskelgroup *village-cam-sg* + village-cam + village-cam-lod0-jg + -1 + ((village-cam-lod0-mg (meters 999999))) + :bounds (static-spherem 0 0 0 80)) (deftype village-cam (process) - ((root-override trsq) - (range meters) - (index int32) - (state-time time-frame) - ) + ((root-override trsq) + (range meters) + (index int32) + (state-time time-frame)) (:state-methods - idle - ) - ) - + idle)) (defmethod relocate ((this village-cam) (arg0 int)) - (if (nonzero? (-> this root-override)) - (&+! (-> this root-override) arg0) - ) - (the-as village-cam ((method-of-type process relocate) this arg0)) - ) + (if (nonzero? (-> this root-override)) (&+! (-> this root-override) arg0)) + (the-as village-cam ((method-of-type process relocate) this arg0))) (defstate idle (village-cam) :virtual #t - :code (behavior () - (local-vars (v1-18 symbol)) - (loop - (let ((v1-5 - (and (and *target* - (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (and (-> *setting-control* current play-hints) - (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((v1-10 (-> self index))) - (cond - ((zero? v1-10) - (and (>= (-> *game-info* fuel) 20.0) - (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))) - ) - ) - ((= v1-10 2) - (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - ) - ((= v1-10 3) - (not (task-closed? (game-task village3-button) (task-status need-hint))) - ) - (else - #t - ) - ) - ) - ) - ) - ) - ) - (when v1-5 - (case (-> self index) - ((2 3) - (until v1-18 - (suspend) - (set! v1-18 - (or (not *target*) - (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) - ) - (let* ((v1-23 (-> self index)) - (v1-24 (cond - ((= v1-23 2) - (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - ) - ((= v1-23 3) - (not (task-closed? (game-task village3-button) (task-status need-hint))) - ) - ) - ) - ) - (when (not v1-24) - (process-entity-status! self (entity-perm-status bit-3) #f) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - ) - ) - ) - (while (and *target* - (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) - (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf))) - ) - (suspend) - ) - (set-time! (-> self state-time)) - (process-grab? *target*) - (process-entity-status! self (entity-perm-status bit-3) #t) - (kill-current-level-hint '(ambient) '() 'exit) - (until (not (or (-> *setting-control* current talking) - (or (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - (not *target*) - (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) - ) - ) - ) - (set-setting! 'allow-progress #f 0.0 0) - (let* ((a0-25 *setting-control*) - (t9-14 (method-of-object a0-25 set-setting)) - (a2-5 'movie) - (a3-1 (process->ppointer self)) - ) - (t9-14 a0-25 self a2-5 a3-1 0.0 0) - ) - (apply-settings *setting-control*) - (while (or (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - (not *target*) - (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) - *progress-process* - ) - (suspend) - ) - (while (not (time-elapsed? (-> self state-time) (seconds 1))) - (suspend) - ) - (kill-current-level-hint '() '() 'die) - (suspend) - (kill-current-level-hint '() '() 'die) - (process-release? *target*) - (remove-setting! 'movie) - (apply-settings *setting-control*) - (suspend) - (suspend) - ) - (let ((v1-79 (-> self index))) - (cond - ((zero? v1-79) - (let ((gp-0 (-> self entity extra perm))) - (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) - (let ((v1-84 (-> gp-0 user-uint8 0))) - (cond - ((zero? v1-84) - (level-hint-spawn - (text-id village1cam-enough-cells) - "asstvb04" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - pov-camera - (-> self entity extra trans) - *village-cam-sg* - "firecanyon-cam" - 0 - #f - '((0 want-force-vis village1 #t) - (0 alive "money-2669") - (0 alive "money-2670") - (0 alive "money-2671") - (0 alive "money-2672") - (0 alive "money-2673") - (0 alive "money-2674") - (0 alive "money-2675") - (0 alive "money-2677") - (0 alive "money-2678") - ) - :to self - ) - ) - ((= v1-84 1) - (level-hint-spawn - (text-id village1cam-enough-cells2) - "asstvb08" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn - pov-camera - (-> self entity extra trans) - *village-cam-sg* - "firecanyon-alt-cam" - 0 - #f - '((0 want-force-vis village1 #t) - (0 alive "money-2669") - (0 alive "money-2670") - (0 alive "money-2671") - (0 alive "money-2672") - (0 alive "money-2673") - (0 alive "money-2674") - (0 alive "money-2675") - (0 alive "money-2677") - (0 alive "money-2678") - ) - :to self - ) - ) - ) - ) - (set! (-> gp-0 user-int8 0) (seekl (the-as int (-> gp-0 user-uint8 0)) 255 1)) - ) - ) - ((= v1-79 1) - ) - ((= v1-79 2) - (when (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - (level-hint-spawn - (text-id village2-button-reminder2) - "asstvb29" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi2-button-cam" 0 #f '() :to self) - ) - ) - ((= v1-79 3) - (when (not (task-closed? (game-task village3-button) (task-status need-hint))) - (level-hint-spawn - (text-id village2-button-reminder3) - "asstvb30" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi3-button-cam" 0 #f '() :to self) - ) - ) - ) - ) - (while (-> self child) - (suspend) - ) - (let ((a0-66 (-> self entity))) - (if (when a0-66 - (let ((a0-67 (-> a0-66 extra perm task))) - (if a0-67 - (= a0-67 (game-task none)) - ) - ) - ) - (set! (-> self entity extra perm task) (game-task complete)) - ) - ) - (when (zero? (-> self index)) - (let ((a0-70 (-> self entity extra perm))) - (when (= (-> a0-70 user-uint8 0) 1) - (remove-setting! 'allow-progress) - (let ((gp-3 (current-time))) - (until (time-elapsed? gp-3 (seconds 300)) - (suspend) - ) - ) - (go-virtual idle) - ) - ) - ) - (process-entity-status! self (entity-perm-status bit-3) #f) - (process-entity-status! self (entity-perm-status dead) #t) - (deactivate self) - ) - ) - (suspend) - ) - ) - ) + :code + (behavior () + (local-vars (v1-18 symbol)) + (loop (let ((v1-5 (and (and *target* (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (and (-> *setting-control* current play-hints) + (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((v1-10 (-> self index))) + (cond + ((zero? v1-10) + (and (>= (-> *game-info* fuel) 20.0) + (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))))) + ((= v1-10 2) (not (task-closed? (game-task village2-levitator) (task-status need-hint)))) + ((= v1-10 3) (not (task-closed? (game-task village3-button) (task-status need-hint)))) + (else #t))))))) + (when v1-5 + (case (-> self index) + ((2 3) + (until v1-18 + (suspend) + (set! v1-18 + (or (not *target*) + (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))))) + (let* ((v1-23 (-> self index)) + (v1-24 (cond + ((= v1-23 2) (not (task-closed? (game-task village2-levitator) (task-status need-hint)))) + ((= v1-23 3) (not (task-closed? (game-task village3-button) (task-status need-hint))))))) + (when (not v1-24) + (process-entity-status! self (entity-perm-status bit-3) #f) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self))))) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) (surface-flags jump)) + (not (logtest? (-> *target* control status) (cshape-moving-flags onsurf)))) + (suspend)) + (set-time! (-> self state-time)) + (process-grab? *target*) + (process-entity-status! self (entity-perm-status bit-3) #t) + (kill-current-level-hint '(ambient) () 'exit) + (until (not (or (-> *setting-control* current talking) + (or (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + (not *target*) + (logtest? (-> *target* state-flags) (state-flags being-attacked dying))))) + (set-setting! 'allow-progress #f 0.0 0) + (let* ((a0-25 *setting-control*) + (t9-14 (method-of-object a0-25 set-setting)) + (a2-5 'movie) + (a3-1 (process->ppointer self))) + (t9-14 a0-25 self a2-5 a3-1 0.0 0)) + (apply-settings *setting-control*) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (!= (-> *level* loading-level) (-> *level* level-default)) + (not *target*) + (logtest? (-> *target* state-flags) (state-flags being-attacked dying)) + *progress-process*) + (suspend)) + (while (not (time-elapsed? (-> self state-time) (seconds 1))) + (suspend)) + (kill-current-level-hint () () 'die) + (suspend) + (kill-current-level-hint () () 'die) + (process-release? *target*) + (remove-setting! 'movie) + (apply-settings *setting-control*) + (suspend) + (suspend)) + (let ((v1-79 (-> self index))) + (cond + ((zero? v1-79) + (let ((gp-0 (-> self entity extra perm))) + (logior! (-> gp-0 status) (entity-perm-status user-set-from-cstage)) + (let ((v1-84 (-> gp-0 user-uint8 0))) + (cond + ((zero? v1-84) + (level-hint-spawn (text-id village1cam-enough-cells) "asstvb04" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera + (-> self entity extra trans) + *village-cam-sg* + "firecanyon-cam" + 0 + #f + '((0 want-force-vis village1 #t) + (0 alive "money-2669") + (0 alive "money-2670") + (0 alive "money-2671") + (0 alive "money-2672") + (0 alive "money-2673") + (0 alive "money-2674") + (0 alive "money-2675") + (0 alive "money-2677") + (0 alive "money-2678")) + :to + self)) + ((= v1-84 1) + (level-hint-spawn (text-id village1cam-enough-cells2) "asstvb08" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera + (-> self entity extra trans) + *village-cam-sg* + "firecanyon-alt-cam" + 0 + #f + '((0 want-force-vis village1 #t) + (0 alive "money-2669") + (0 alive "money-2670") + (0 alive "money-2671") + (0 alive "money-2672") + (0 alive "money-2673") + (0 alive "money-2674") + (0 alive "money-2675") + (0 alive "money-2677") + (0 alive "money-2678")) + :to + self)))) + (set! (-> gp-0 user-int8 0) (seekl (the-as int (-> gp-0 user-uint8 0)) 255 1)))) + ((= v1-79 1)) + ((= v1-79 2) + (when (not (task-closed? (game-task village2-levitator) (task-status need-hint))) + (level-hint-spawn (text-id village2-button-reminder2) "asstvb29" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi2-button-cam" 0 #f () :to self))) + ((= v1-79 3) + (when (not (task-closed? (game-task village3-button) (task-status need-hint))) + (level-hint-spawn (text-id village2-button-reminder3) "asstvb30" (the-as entity #f) *entity-pool* (game-task none)) + (process-spawn pov-camera (-> self entity extra trans) *village-cam-sg* "vi3-button-cam" 0 #f () :to self))))) + (while (-> self child) + (suspend)) + (let ((a0-66 (-> self entity))) + (if (when a0-66 + (let ((a0-67 (-> a0-66 extra perm task))) (if a0-67 (= a0-67 (game-task none))))) + (set! (-> self entity extra perm task) (game-task complete)))) + (when (zero? (-> self index)) + (let ((a0-70 (-> self entity extra perm))) + (when (= (-> a0-70 user-uint8 0) 1) + (remove-setting! 'allow-progress) + (let ((gp-3 (current-time))) (until (time-elapsed? gp-3 (seconds 300)) (suspend))) + (go-virtual idle)))) + (process-entity-status! self (entity-perm-status bit-3) #f) + (process-entity-status! self (entity-perm-status dead) #t) + (deactivate self))) + (suspend)))) (defmethod init-from-entity! ((this village-cam) (arg0 entity-actor)) "Copy defaults from the entity." @@ -1125,5 +645,4 @@ (set! (-> this range) (res-lump-float arg0 'cam-notice-dist :default 81920.0)) (set! (-> this index) (res-lump-value arg0 'index int)) (go (method-of-object this idle)) - (none) - ) + (none)) diff --git a/goal_src/jak1/old/cavegeyserrock.gc b/goal_src/jak1/old/cavegeyserrock.gc index cf976326e1..d68aeb45af 100644 --- a/goal_src/jak1/old/cavegeyserrock.gc +++ b/goal_src/jak1/old/cavegeyserrock.gc @@ -1,6 +1,5 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/math/vector-h.gc") (require "engine/sound/gsound-h.gc") (require "kernel/gstate.gc") @@ -11,64 +10,49 @@ ;; dgos: L1 #| - This file is only found in early demos. - |# - ;; decomp begins ;; definition of type cavegeyserrock-control-pt (deftype cavegeyserrock-control-pt (structure) - ((trans vector :inline :offset-assert 0) - (transv vector :inline :offset-assert 16) - ) + ((trans vector :inline :offset-assert 0) + (transv vector :inline :offset-assert 16)) :method-count-assert 9 - :size-assert #x20 - :flag-assert #x900000020 - ) + :size-assert #x20 + :flag-assert #x900000020) ;; definition for method 3 of type cavegeyserrock-control-pt (defmethod inspect ((obj cavegeyserrock-control-pt)) (format #t "[~8x] ~A~%" obj 'cavegeyserrock-control-pt) (format #t "~Ttrans: #~%" (-> obj trans)) (format #t "~Ttransv: #~%" (-> obj transv)) - obj - ) + obj) ;; definition of type cavegeyserrock (deftype cavegeyserrock (process-drawable) - ((root-override collide-shape-moving :offset 112) - (do-burst? symbol :offset-assert 176) - (do-falling-sound? symbol :offset-assert 180) - (do-landing-sound? symbol :offset-assert 184) - (begin-travel-up float :offset-assert 188) - (begin-travel-down float :offset-assert 192) - (sync sync-info :inline :offset-assert 196) - (part2 sparticle-launch-control :offset-assert 204) - (down vector :inline :offset-assert 208) - (up vector :inline :offset-assert 224) - (control-pt cavegeyserrock-control-pt 3 :inline :offset-assert 240) - ) + ((root-override collide-shape-moving :offset 112) + (do-burst? symbol :offset-assert 176) + (do-falling-sound? symbol :offset-assert 180) + (do-landing-sound? symbol :offset-assert 184) + (begin-travel-up float :offset-assert 188) + (begin-travel-down float :offset-assert 192) + (sync sync-info :inline :offset-assert 196) + (part2 sparticle-launch-control :offset-assert 204) + (down vector :inline :offset-assert 208) + (up vector :inline :offset-assert 224) + (control-pt cavegeyserrock-control-pt 3 :inline :offset-assert 240)) :heap-base #xe0 :method-count-assert 22 - :size-assert #x150 - :flag-assert #x1600e00150 - (:methods - (dummy-20 (_type_) none 20) - (dummy-21 (_type_) none 21) - ) - (:states - cavegeyserrock-idle - ) - ) + :size-assert #x150 + :flag-assert #x1600e00150 + (:methods (dummy-20 (_type_) none 20) (dummy-21 (_type_) none 21)) + (:states cavegeyserrock-idle)) ;; definition for method 3 of type cavegeyserrock (defmethod inspect ((obj cavegeyserrock)) - (let ((t9-0 (method-of-type process-drawable inspect))) - (t9-0 obj) - ) + (let ((t9-0 (method-of-type process-drawable inspect))) (t9-0 obj)) (format #t "~T~Tdo-burst?: ~A~%" (-> obj do-burst?)) (format #t "~T~Tdo-falling-sound?: ~A~%" (-> obj do-falling-sound?)) (format #t "~T~Tdo-landing-sound?: ~A~%" (-> obj do-landing-sound?)) @@ -79,628 +63,569 @@ This file is only found in early demos. (format #t "~T~Tdown: #~%" (-> obj down)) (format #t "~T~Tup: #~%" (-> obj up)) (format #t "~T~Tcontrol-pt[3] @ #x~X~%" (-> obj control-pt)) - obj - ) + obj) ;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 504) - (new 'static 'sparticle-launch-group - :length 7 - :duration #x258 - :linger-duration #x12c - :name "group-cavegeyserrock-sides" - :launcher - (new 'static 'inline-array sparticle-group-item 7 - (sp-item 1869 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) - (sp-item 1870 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) - (sp-item 1871 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) - (sp-item 1872 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) - (sp-item 1873 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) - (sp-item 1874 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) - (sp-item 1875 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 36 :length 15 :offset 24) - ) - :bounds (new 'static 'sphere :w 40960.0) - ) - ) +(set! (-> *part-group-id-table* 504) + (new 'static + 'sparticle-launch-group + :length 7 + :duration #x258 + :linger-duration #x12c + :name "group-cavegeyserrock-sides" + :launcher + (new 'static + 'inline-array + sparticle-group-item + 7 + (sp-item 1869 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) + (sp-item 1870 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) + (sp-item 1871 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) + (sp-item 1872 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15) + (sp-item 1873 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 12) + (sp-item 1874 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 36 :length 15 :offset 24) + (sp-item 1875 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 36 :length 15 :offset 24)) + :bounds + (new 'static 'sphere :w 40960.0))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1875) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 4096.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1876) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1875) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 16 + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1876) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1876) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-b -13.653334) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1876) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-b -13.653334) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1869) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1869) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1872) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1872) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1870) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1870) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1873) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1873) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1871) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1871) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1874) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.05)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.53333336) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1877) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1874) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.05)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1877) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1877) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -1.0666667) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1877) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 505) - (new 'static 'sparticle-launch-group - :length 9 - :duration #x258 - :linger-duration #x12c - :name "group-cavegeyserrock-plume" - :launcher - (new 'static 'inline-array sparticle-group-item 9 - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1878) - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1879) - (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1880) - (sp-item 1878 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) - (sp-item 1879 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) - (sp-item 1882 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1883 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1884 :fade-after (meters 60.0) :falloff-to (meters 60.0)) - (sp-item 1880 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead)) - ) - :bounds (new 'static 'sphere :w 131072.0) - ) - ) +(set! (-> *part-group-id-table* 505) + (new 'static + 'sparticle-launch-group + :length 9 + :duration #x258 + :linger-duration #x12c + :name "group-cavegeyserrock-plume" + :launcher + (new 'static + 'inline-array + sparticle-group-item + 9 + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1878) + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1879) + (sp-item 1881 :flags (bit1) :period 240 :length 1 :binding 1880) + (sp-item 1878 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) + (sp-item 1879 :fade-after (meters 120.0) :falloff-to (meters 160.0) :flags (start-dead)) + (sp-item 1882 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1883 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1884 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 1880 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead))) + :bounds + (new 'static 'sphere :w 131072.0))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1880) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 0.4) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.94 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1876) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1880) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 16 + (sp-flt spt-num 0.4) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.083333336) (meters 0.16666667) 1.0) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.94 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1876) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1881) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-flt spt-scale-x (meters 1.5)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 0.0) - (sp-flt spt-a 0.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit3 bit12) - (sp-int spt-next-time 31) - (sp-launcher-by-id spt-next-launcher 1885) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1881) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-flt spt-scale-x (meters 1.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 0.0) + (sp-flt spt-a 0.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit3 bit12) + (sp-int spt-next-time 31) + (sp-launcher-by-id spt-next-launcher 1885) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1885) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 3 - (sp-flt spt-vel-y (meters 0.0)) - (sp-flt spt-accel-y 0.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1885) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 3 (sp-flt spt-vel-y (meters 0.0)) (sp-flt spt-accel-y 0.0) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1879) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.06666667)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1886) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1879) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1886) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1878) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.06666667)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.68266666) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit12) - (sp-int spt-next-time 30) - (sp-launcher-by-id spt-next-launcher 1886) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1878) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.13333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.06666667)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.68266666) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 30) + (sp-launcher-by-id spt-next-launcher 1886) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1886) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -1.6) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1886) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.6) (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1882) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1882) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 19 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1883) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) - (sp-flt spt-accel-y 13.653334) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1883) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 18 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-rnd-flt spt-rotvel-z (degrees -1.0) (degrees 2.0) 1.0) + (sp-flt spt-accel-y 13.653334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(set! - (-> *part-id-table* 1884) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (sp-flt spt-num 0.5) - (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2457.6) - (sp-flt spt-b 3276.8) - (sp-flt spt-vel-y (meters 0.26666668)) - (sp-int spt-timer 30) - (sp-cpuinfo-flags aux-list) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1884) + (new 'static + 'sparticle-launcher + :init-specs + (new 'static + 'inline-array + sp-field-init-spec + 11 + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2457.6) + (sp-flt spt-b 3276.8) + (sp-flt spt-vel-y (meters 0.26666668)) + (sp-int spt-timer 30) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end)))) ;; failed to figure out what this is: -(let - ((v1-22 - (new 'static 'skeleton-group - :art-group-name "cavegeyserrock" - :bounds - (new 'static 'vector :y -4096.0 :w 14745.6) - :max-lod 1 - :version #x6 - ) - ) - ) +(let ((v1-22 (new 'static + 'skeleton-group + :art-group-name "cavegeyserrock" + :bounds + (new 'static 'vector :y -4096.0 :w 14745.6) + :max-lod 1 + :version #x6))) (set! (-> v1-22 jgeo) 0) (set! (-> v1-22 janim) 4) (set! (-> v1-22 mgeo 0) 1) (set! (-> v1-22 lod-dist 0) 81920.0) (set! (-> v1-22 mgeo 1) 3) (set! (-> v1-22 lod-dist 1) 4095996000.0) - (set! *cavegeyserrock-sg* v1-22) - ) + (set! *cavegeyserrock-sg* v1-22)) ;; definition for method 7 of type cavegeyserrock ;; INFO: Return type mismatch process-drawable vs cavegeyserrock. (defmethod relocate ((obj cavegeyserrock) (arg0 int)) - (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) - (the-as - cavegeyserrock - ((the-as - (function process-drawable int process-drawable) - (find-parent-method cavegeyserrock 7) - ) - obj - arg0 - ) - ) - ) + (if (nonzero? (-> obj part2)) (&+! (-> obj part2) arg0)) + (the-as cavegeyserrock + ((the-as (function process-drawable int process-drawable) (find-parent-method cavegeyserrock 7)) obj arg0))) ;; definition for method 20 of type cavegeyserrock ;; INFO: Return type mismatch object vs none. (defmethod dummy-20 ((obj cavegeyserrock)) (with-pp - (when *target* - (let* ((a1-0 (target-pos 0)) - (f0-0 (-> a1-0 y)) - ) - (when - (and - (>= f0-0 (+ -8192.0 (-> obj down y))) - (and - (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) - (zero? (-> obj root-override riders num-riders)) - ) - ) - (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) - (when (>= 77552690.0 f0-1) - (let ((s5-0 (>= 37748736.0 f0-1))) - (when (not s5-0) - (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (set! (-> a1-1 x) (the-as float 1)) - (set! (-> a1-1 y) (the-as float #f)) - (if (dummy-40 (-> obj root-override) a1-1) - (set! s5-0 #t) - ) - ) - ) - ) - (when s5-0 - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) pp) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'shove) - (set! (-> a1-2 param 0) (the-as uint #f)) - (let ((v1-16 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-16 shove-up) 2048.0) - (set! (-> v1-16 shove-back) 6144.0) - (set! (-> a1-2 param 1) (the-as uint v1-16)) - ) - (send-event-function *target* a1-2) - ) - ) - ) - ) - ) - ) - ) - ) - (none) - ) - ) + (when *target* + (let* ((a1-0 (target-pos 0)) + (f0-0 (-> a1-0 y))) + (when (and (>= f0-0 (+ -8192.0 (-> obj down y))) + (and (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) (zero? (-> obj root-override riders num-riders)))) + (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) + (when (>= 77552690.0 f0-1) + (let ((s5-0 (>= 37748736.0 f0-1))) + (when (not s5-0) + (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (set! (-> a1-1 x) (the-as float 1)) + (set! (-> a1-1 y) (the-as float #f)) + (if (dummy-40 (-> obj root-override) a1-1) (set! s5-0 #t))))) + (when s5-0 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) pp) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'shove) + (set! (-> a1-2 param 0) (the-as uint #f)) + (let ((v1-16 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-16 shove-up) 2048.0) + (set! (-> v1-16 shove-back) 6144.0) + (set! (-> a1-2 param 1) (the-as uint v1-16))) + (send-event-function *target* a1-2))))))))) + (none))) ;; definition for method 21 of type cavegeyserrock ;; INFO: Return type mismatch quaternion vs none. @@ -709,283 +634,150 @@ This file is only found in early demos. (local-vars (at-0 int) (at-1 int) (s5-0 symbol)) (rlet ((vf0 :class vf) (vf1 :class vf) - (vf2 :class vf) - ) - (init-vf0-vector) - (let ((f0-0 (get-current-phase (-> obj sync)))) - #t - (cond - ((< f0-0 (-> obj begin-travel-up)) - (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) - (set! s5-0 #t) - (dotimes (s4-0 3) - (let ((s3-0 (-> obj control-pt s4-0))) - (when (= (-> s3-0 trans y) (-> obj down y)) - (set! (-> obj do-burst?) #t) - (let ((a0-2 (+ (the int (* 12.0 (- 1.0 f30-0))) 3))) - (if (zero? (rand-vu-int-count a0-2)) - (+! - (-> s3-0 transv y) - (* (rand-vu-float-range 40960.0 57344.0) f30-0) - ) - ) - ) - ) - ) - ) - (let ((a0-4 (+ (the int (* 12.0 (- 1.0 f30-0))) 1))) - (if (zero? (rand-vu-int-count a0-4)) - (spawn (-> obj part) (-> obj down)) - ) - ) - ) - ) - ((< f0-0 (-> obj begin-travel-down)) - (let - ((f30-1 - (/ - (- f0-0 (-> obj begin-travel-up)) - (- (-> obj begin-travel-down) (-> obj begin-travel-up)) - ) - ) - ) - (set! s5-0 #f) - (set! (-> obj do-falling-sound?) #t) - (when (-> obj do-burst?) - (sound-play-by-name - (static-sound-name "cave-top-rises") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - (set! (-> obj do-burst?) #f) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - ) - (if (< f30-1 0.94) - (spawn (-> obj part2) (-> obj down)) - ) - ) - ) - (else - (set! s5-0 #t) - (when (-> obj do-falling-sound?) - (set! (-> obj do-falling-sound?) #f) - (sound-play-by-name - (static-sound-name "cave-top-falls") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - ) - ) - ) - ) - (dotimes (s4-3 3) - (let ((s2-0 (-> obj control-pt s4-3)) - (s3-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> s3-3 quad) (-> s2-0 trans quad)) - (cond - (s5-0 - (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) - (let ((t9-14 vector+!) - (a0-17 s3-3) - (a1-9 s3-3) - (a2-2 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-15 (-> *display* seconds-per-frame))) - (.mov at-0 f0-15) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a2-2 quad) vf1) - (t9-14 a0-17 a1-9 a2-2) - ) - (when (< (-> s3-3 y) (-> obj down y)) - (when (-> obj do-landing-sound?) - (set! (-> obj do-landing-sound?) #f) - (sound-play-by-name - (static-sound-name "cave-top-lands") - (new-sound-id) - 1024 - 0 - 0 - (the-as uint 1) - (the-as vector #t) - ) - ) - (set! (-> s3-3 y) (-> obj down y)) - (let ((f0-18 (-> s2-0 transv y))) - (if (< f0-18 0.0) - (set! (-> s2-0 transv y) (* 0.3 (- f0-18))) - ) - ) - ) - ) - (else - (set! (-> obj do-landing-sound?) #t) - (let ((f30-2 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + (vf2 :class vf)) + (init-vf0-vector) + (let ((f0-0 (get-current-phase (-> obj sync)))) + #t + (cond + ((< f0-0 (-> obj begin-travel-up)) + (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) + (set! s5-0 #t) + (dotimes (s4-0 3) + (let ((s3-0 (-> obj control-pt s4-0))) + (when (= (-> s3-0 trans y) (-> obj down y)) + (set! (-> obj do-burst?) #t) + (let ((a0-2 (+ (the int (* 12.0 (- 1.0 f30-0))) 3))) + (if (zero? (rand-vu-int-count a0-2)) (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0))))))) + (let ((a0-4 (+ (the int (* 12.0 (- 1.0 f30-0))) 1))) + (if (zero? (rand-vu-int-count a0-4)) (spawn (-> obj part) (-> obj down)))))) + ((< f0-0 (-> obj begin-travel-down)) + (let ((f30-1 (/ (- f0-0 (-> obj begin-travel-up)) (- (-> obj begin-travel-down) (-> obj begin-travel-up))))) + (set! s5-0 #f) + (set! (-> obj do-falling-sound?) #t) + (when (-> obj do-burst?) + (sound-play-by-name (static-sound-name "cave-top-rises") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)) + (set! (-> obj do-burst?) #f) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down))) + (if (< f30-1 0.94) (spawn (-> obj part2) (-> obj down))))) + (else + (set! s5-0 #t) + (when (-> obj do-falling-sound?) + (set! (-> obj do-falling-sound?) #f) + (sound-play-by-name (static-sound-name "cave-top-falls") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t)))))) + (dotimes (s4-3 3) + (let ((s2-0 (-> obj control-pt s4-3)) + (s3-3 (new 'stack-no-clear 'vector))) + (set! (-> s3-3 quad) (-> s2-0 trans quad)) (cond - ((< 1.0 f30-2) - (set! f30-2 1.0) - ) - ((< f30-2 -1.0) - (set! f30-2 -1.0) - ) - ) - (+! - (-> s2-0 transv y) - (* 819200.0 (-> *display* seconds-per-frame) f30-2) - ) - (let ((f0-26 (-> s2-0 transv y))) - (when (< 122880.0 (fabs f0-26)) - (if (>= f0-26 0.0) - (set! (-> s2-0 transv y) 122880.0) - (set! (-> s2-0 transv y) -122880.0) - ) - ) - ) - (let ((t9-17 vector+!) - (a0-20 s3-3) - (a1-11 s3-3) - (a2-4 (new 'stack-no-clear 'vector)) - ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-29 (-> *display* seconds-per-frame))) - (.mov at-1 f0-29) - ) - (.mov vf2 at-1) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a2-4 quad) vf1) - (t9-17 a0-20 a1-11 a2-4) - ) - (let ((f0-31 (- (-> obj up y) (-> s3-3 y))) - (v1-59 (>= f30-2 0.0)) - ) - (when (!= v1-59 (>= f0-31 0.0)) - (let ((f0-32 (-> s2-0 transv y))) - (when (< 40960.0 (fabs f0-32)) - (if (>= f0-32 0.0) - (set! (-> s2-0 transv y) 40960.0) - (set! (-> s2-0 transv y) -40960.0) - ) - ) - ) - (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) - ) - ) - ) - ) - ) - (set! (-> s2-0 trans quad) (-> s3-3 quad)) - ) - ) - (let ((f0-37 0.0)) - (dotimes (v1-68 3) - (+! f0-37 (-> obj control-pt v1-68 trans y)) - ) - (let ((f0-38 (* 0.33333334 f0-37)) - (a1-12 (new 'stack-no-clear 'vector)) - ) - (set! (-> a1-12 quad) (-> obj root-override trans quad)) - (set! (-> a1-12 y) f0-38) - (TODO-RENAME-30 (-> obj root-override) a1-12) - ) - ) - (let ((s4-4 (new 'stack-no-clear 'vector)) - (s3-4 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (vector-! - s4-4 - (the-as vector (&-> obj stack 160)) - (the-as vector (-> obj control-pt)) - ) - (vector-! - s3-4 - (the-as vector (&-> obj stack 192)) - (the-as vector (-> obj control-pt)) - ) - (vector-cross! s5-1 s4-4 s3-4) - (vector-normalize! s5-1 1.0) - (forward-up-nopitch->quaternion - (-> obj root-override quat) - (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) - s5-1 - ) - ) - (none) - ) - ) + (s5-0 + (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) + (let ((t9-14 vector+!) + (a0-17 s3-3) + (a1-9 s3-3) + (a2-2 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-15 (-> *display* seconds-per-frame))) (.mov at-0 f0-15)) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a2-2 quad) vf1) + (t9-14 a0-17 a1-9 a2-2)) + (when (< (-> s3-3 y) (-> obj down y)) + (when (-> obj do-landing-sound?) + (set! (-> obj do-landing-sound?) #f) + (sound-play-by-name (static-sound-name "cave-top-lands") (new-sound-id) 1024 0 0 (the-as uint 1) (the-as vector #t))) + (set! (-> s3-3 y) (-> obj down y)) + (let ((f0-18 (-> s2-0 transv y))) (if (< f0-18 0.0) (set! (-> s2-0 transv y) (* 0.3 (- f0-18))))))) + (else + (set! (-> obj do-landing-sound?) #t) + (let ((f30-2 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + (cond + ((< 1.0 f30-2) (set! f30-2 1.0)) + ((< f30-2 -1.0) (set! f30-2 -1.0))) + (+! (-> s2-0 transv y) (* 819200.0 (-> *display* seconds-per-frame) f30-2)) + (let ((f0-26 (-> s2-0 transv y))) + (when (< 122880.0 (fabs f0-26)) + (if (>= f0-26 0.0) (set! (-> s2-0 transv y) 122880.0) (set! (-> s2-0 transv y) -122880.0)))) + (let ((t9-17 vector+!) + (a0-20 s3-3) + (a1-11 s3-3) + (a2-4 (new 'stack-no-clear 'vector))) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-29 (-> *display* seconds-per-frame))) (.mov at-1 f0-29)) + (.mov vf2 at-1) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a2-4 quad) vf1) + (t9-17 a0-20 a1-11 a2-4)) + (let ((f0-31 (- (-> obj up y) (-> s3-3 y))) + (v1-59 (>= f30-2 0.0))) + (when (!= v1-59 (>= f0-31 0.0)) + (let ((f0-32 (-> s2-0 transv y))) + (when (< 40960.0 (fabs f0-32)) + (if (>= f0-32 0.0) (set! (-> s2-0 transv y) 40960.0) (set! (-> s2-0 transv y) -40960.0)))) + (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y)))))))) + (set! (-> s2-0 trans quad) (-> s3-3 quad)))) + (let ((f0-37 0.0)) + (dotimes (v1-68 3) + (+! f0-37 (-> obj control-pt v1-68 trans y))) + (let ((f0-38 (* 0.33333334 f0-37)) + (a1-12 (new 'stack-no-clear 'vector))) + (set! (-> a1-12 quad) (-> obj root-override trans quad)) + (set! (-> a1-12 y) f0-38) + (TODO-RENAME-30 (-> obj root-override) a1-12))) + (let ((s4-4 (new 'stack-no-clear 'vector)) + (s3-4 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'vector))) + (vector-! s4-4 (the-as vector (&-> obj stack 160)) (the-as vector (-> obj control-pt))) + (vector-! s3-4 (the-as vector (&-> obj stack 192)) (the-as vector (-> obj control-pt))) + (vector-cross! s5-1 s4-4 s3-4) + (vector-normalize! s5-1 1.0) + (forward-up-nopitch->quaternion (-> obj root-override quat) + (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) + s5-1)) + (none))) ;; failed to figure out what this is: (defstate cavegeyserrock-idle (cavegeyserrock) :trans - (the-as (function none :behavior cavegeyserrock) rider-trans) + (the-as (function none :behavior cavegeyserrock) + rider-trans) :code - (behavior () - (while #t - (dummy-20 self) - (dummy-21 self) - (suspend) - ) - (none) - ) + (behavior () + (while #t + (dummy-20 self) + (dummy-21 self) + (suspend)) + (none)) :post - (the-as (function none :behavior cavegeyserrock) rider-post) - ) + (the-as (function none :behavior cavegeyserrock) + rider-post)) ;; definition for method 10 of type cavegeyserrock (defmethod deactivate ((obj cavegeyserrock)) - (if (nonzero? (-> obj part2)) - (kill-and-free-particles (-> obj part2)) - ) + (if (nonzero? (-> obj part2)) (kill-and-free-particles (-> obj part2))) ((method-of-type process-drawable deactivate) obj) - (none) - ) + (none)) ;; definition for function cavecrystal-light-control-cavegeyserrock-callback ;; INFO: Return type mismatch object vs none. ;; Used lq/sq -(defun - cavecrystal-light-control-cavegeyserrock-callback - ((arg0 (pointer process-drawable)) - (arg1 int) - (arg2 float) - (arg3 object) - (arg4 vector) - ) +(defun cavecrystal-light-control-cavegeyserrock-callback ((arg0 (pointer process-drawable)) (arg1 int) (arg2 float) (arg3 object) (arg4 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((v1-1 (-> arg0 0 node-list))) - (if (and (>= arg1 0) (nonzero? v1-1)) - (vector<-cspace! s5-0 (-> v1-1 data arg1)) - (set! (-> s5-0 quad) (-> arg0 0 root trans quad)) - ) - ) - (set! (-> s5-0 w) arg2) - (let ((f30-0 (TODO-RENAME-10 *cavecrystal-light-control* s5-0))) - (let ((a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0)) - ) - (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f30-0) - ) - (set-fade! *palette-fade-controls* 0 f30-0 0.0 arg4) - ) - ) - (none) - ) + (let ((v1-1 (-> arg0 0 node-list))) + (if (and (>= arg1 0) (nonzero? v1-1)) + (vector<-cspace! s5-0 (-> v1-1 data arg1)) + (set! (-> s5-0 quad) (-> arg0 0 root trans quad)))) + (set! (-> s5-0 w) arg2) + (let ((f30-0 (TODO-RENAME-10 *cavecrystal-light-control* s5-0))) + (let ((a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) + (a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0))) + (vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f30-0)) + (set-fade! *palette-fade-controls* 0 f30-0 0.0 arg4))) + (none)) ;; definition for method 11 of type cavegeyserrock ;; INFO: Return type mismatch object vs none. @@ -993,155 +785,76 @@ This file is only found in early demos. (defmethod copy-defaults! ((obj cavegeyserrock) (arg0 res-lump)) (local-vars (sv-16 int) (sv-32 int)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! (-> s4-0 no-reaction) nothing) - (alloc-riders s4-0 1) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) - ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 -4096.0 0.0 14745.6) - ) - (dummy-46 s4-0) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (dummy-50 s4-0) - (set! (-> obj root-override) s4-0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) nothing) + (alloc-riders s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) + (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 -4096.0 0.0 14745.6)) + (dummy-46 s4-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (dummy-50 s4-0) + (set! (-> obj root-override) s4-0)) (set! (-> obj do-burst?) #f) (set! (-> obj do-falling-sound?) #f) (set! (-> obj do-landing-sound?) #f) (process-drawable-from-entity! obj arg0) - (initialize-skeleton obj *cavegeyserrock-sg* '()) + (initialize-skeleton obj *cavegeyserrock-sg* ()) (logior! (-> obj skel status) 1) (ja-channel-set! 1) (let ((s4-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> obj draw art-group data 4)) - num-func-identity - ) - (set! (-> s4-1 frame-num) 0.0) - ) - (set! - (-> obj root-override trans y) - (+ 8192.0 (-> obj root-override trans y)) - ) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim (-> obj draw art-group data 4)) num-func-identity) + (set! (-> s4-1 frame-num) 0.0)) + (set! (-> obj root-override trans y) (+ 8192.0 (-> obj root-override trans y))) (set! sv-16 0) - (let - ((v1-33 - (res-lump-data - arg0 - 'trans-offset - pointer - :tag-ptr - (the-as (pointer res-tag) (& sv-16)) - ) - ) - ) - (when v1-33 - (+! (-> obj root-override trans x) (-> (the-as (pointer float) v1-33))) - (+! (-> obj root-override trans y) (l.f (&+ v1-33 4))) - (+! (-> obj root-override trans z) (l.f (&+ v1-33 8))) - ) - ) + (let ((v1-33 (res-lump-data arg0 'trans-offset pointer :tag-ptr (the-as (pointer res-tag) (& sv-16))))) + (when v1-33 + (+! (-> obj root-override trans x) (-> (the-as (pointer float) v1-33))) + (+! (-> obj root-override trans y) (l.f (&+ v1-33 4))) + (+! (-> obj root-override trans z) (l.f (&+ v1-33 8))))) (dummy-47 (-> obj root-override)) (load-params! (-> obj sync) obj (the-as uint 360.0) 0.0 0.15 0.15) (let ((f30-0 0.4) - (f28-0 0.9) - ) - (set! sv-32 0) - (let - ((v1-40 - (res-lump-data - arg0 - 'percent - pointer - :tag-ptr - (the-as (pointer res-tag) (& sv-32)) - ) - ) - ) - (when v1-40 - (set! f30-0 (-> (the-as (pointer float) v1-40))) - (set! f28-0 (l.f (&+ v1-40 4))) - (if (>= 0.01 f30-0) - (set! f30-0 0.01) - ) - (if (>= 0.01 f28-0) - (set! f28-0 0.01) - ) - (if (>= f30-0 f28-0) - (set! f28-0 (+ 0.01 f30-0)) - ) - (when (>= f30-0 1.0) - (set! f28-0 (* 0.9 (/ f28-0 f30-0))) - (set! f30-0 0.9) - ) - ) - ) - (set! (-> obj begin-travel-up) f30-0) - (set! (-> obj begin-travel-down) f28-0) - ) + (f28-0 0.9)) + (set! sv-32 0) + (let ((v1-40 (res-lump-data arg0 'percent pointer :tag-ptr (the-as (pointer res-tag) (& sv-32))))) + (when v1-40 + (set! f30-0 (-> (the-as (pointer float) v1-40))) + (set! f28-0 (l.f (&+ v1-40 4))) + (if (>= 0.01 f30-0) (set! f30-0 0.01)) + (if (>= 0.01 f28-0) (set! f28-0 0.01)) + (if (>= f30-0 f28-0) (set! f28-0 (+ 0.01 f30-0))) + (when (>= f30-0 1.0) + (set! f28-0 (* 0.9 (/ f28-0 f30-0))) + (set! f30-0 0.9)))) + (set! (-> obj begin-travel-up) f30-0) + (set! (-> obj begin-travel-down) f28-0)) (set! (-> obj down quad) (-> obj root-override trans quad)) (set! (-> obj up quad) (-> obj root-override trans quad)) (set! (-> obj up y) (+ 40960.0 (-> obj up y))) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 504) obj) - ) - (set! - (-> obj part2) - (create-launch-control (-> *part-group-id-table* 505) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 504) obj)) + (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 505) obj)) (vector-reset! (-> obj root-override transv)) - (create-connection! - *cavecrystal-light-control* - (the-as cavecrystal obj) - (-> obj entity) - (the-as - (function object object object object object) - cavecrystal-light-control-cavegeyserrock-callback - ) - -1 - 8192.0 - ) + (create-connection! *cavecrystal-light-control* + (the-as cavecrystal obj) + (-> obj entity) + (the-as (function object object object object object) cavecrystal-light-control-cavegeyserrock-callback) + -1 + 8192.0) (let ((s5-1 (new 'stack-no-clear 'vector)) - (f30-1 0.0) - ) - (dotimes (s4-2 3) - (let ((s3-1 (-> obj control-pt s4-2))) - (set-vector! s5-1 0.0 0.0 10240.0 1.0) - (vector-rotate-around-y! s5-1 s5-1 f30-1) - (set! f30-1 (+ 21845.334 f30-1)) - (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) - (vector-reset! (-> s3-1 transv)) - ) - ) - ) + (f30-1 0.0)) + (dotimes (s4-2 3) + (let ((s3-1 (-> obj control-pt s4-2))) + (set-vector! s5-1 0.0 0.0 10240.0 1.0) + (vector-rotate-around-y! s5-1 s5-1 f30-1) + (set! f30-1 (+ 21845.334 f30-1)) + (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) + (vector-reset! (-> s3-1 transv))))) (go cavegeyserrock-idle) - (none) - ) - - - - - - + (none)) diff --git a/goal_src/jak1/pc/debug/anim-tester-x.gc b/goal_src/jak1/pc/debug/anim-tester-x.gc index b585a4a395..286209f93f 100644 --- a/goal_src/jak1/pc/debug/anim-tester-x.gc +++ b/goal_src/jak1/pc/debug/anim-tester-x.gc @@ -1,17 +1,13 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/nav/navigate.gc") (require "pc/pckernel.gc") (require "engine/anim/aligner.gc") - #| - Code for the PC port anim tester. It's like their original anim tester tool, but actually functional, and with different features. - - |# +|# ;; debug-only file! (declare-file (debug)) @@ -20,118 +16,83 @@ ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;;;------------------------ ;; settings ;;;------------------------ - (deftype atx-item (basic) - ((next atx-item) - (text string) - + ((next atx-item) + (text string) (extra basic) - (group art-group :overlay-at extra) - (jgeo art-joint-geo :overlay-at extra) - (janim art-joint-anim :overlay-at extra) - (mgeo merc-ctrl :overlay-at extra) - ) + (group art-group :overlay-at extra) + (jgeo art-joint-geo :overlay-at extra) + (janim art-joint-anim :overlay-at extra) + (mgeo merc-ctrl :overlay-at extra)) (:methods - (new (symbol type string basic) _type_) - ) - ) + (new (symbol type string basic) _type_))) (defmethod new atx-item ((allocation symbol) (type-to-make type) (text string) (extra basic)) "make a new atx-item" - (let ((obj (object-new allocation type-to-make (the int (-> type-to-make size))))) (set! (-> obj next) #f) (set! (-> obj text) text) (set! (-> obj extra) extra) - - obj) - ) + obj)) (deftype atx-list (structure) - ((head atx-item) - (tail atx-item) + ((head atx-item) + (tail atx-item) (selection int16) - (offset int16) - (func (function atx-item object)) - ) - ) - + (offset int16) + (func (function atx-item object)))) (defenum atx-flags :bitfield #t :type int32 (eye) (blerc) - (show-joints) - ) + (show-joints)) (deftype anim-tester-x-settings (structure) - ( - (speed float) + ((speed float) (frame-num float) - (mode symbol) - (flags atx-flags) - (list-ctrl atx-list :inline) - ) - ) - -(define *ATX-settings* (new 'static 'anim-tester-x-settings :speed 1.0 - :mode 'loop - :flags (atx-flags))) + (mode symbol) + (flags atx-flags) + (list-ctrl atx-list :inline))) +(define *ATX-settings* (new 'static 'anim-tester-x-settings :speed 1.0 :mode 'loop :flags (atx-flags))) (deftype atx-item-art-group (atx-item) ((ja-list atx-list :inline) (jg-list atx-list :inline) - (mg-list atx-list :inline) - ) + (mg-list atx-list :inline)) (:methods - (new (symbol type string art-group) _type_) - ) - ) + (new (symbol type string art-group) _type_))) ;;;---------------------------------- ;; process ;;;---------------------------------- - (defenum atx-edit-mode :type uint8 (none) (art-group) (anim) (mgeo) - (jgeo) - ) - + (jgeo)) (deftype anim-tester-x (process-drawable) - ( - (edit-mode atx-edit-mode) - (cur-list atx-list) - (selected-art-group atx-item-art-group) - - (cur-art-group art-group) - (cur-joint-geo art-joint-geo) - (cur-mesh-geo merc-ctrl) - (cur-joint-anim art-joint-anim) - ) - ) - - + ((edit-mode atx-edit-mode) + (cur-list atx-list) + (selected-art-group atx-item-art-group) + (cur-art-group art-group) + (cur-joint-geo art-joint-geo) + (cur-mesh-geo merc-ctrl) + (cur-joint-anim art-joint-anim))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; list functions and macros @@ -141,17 +102,8 @@ "iterate through an atx-list." (with-gensyms (next) `(let ((,(car bindings) (-> ,(cadr bindings) head))) - (while ,(car bindings) - (let ((,next (-> ,(car bindings) next))) - - ,@body - - (set! ,(car bindings) ,next) - ) - ) - ) - ) - ) + (while ,(car bindings) + (let ((,next (-> ,(car bindings) next))) ,@body (set! ,(car bindings) ,next)))))) (defun atx-list-init! ((lst atx-list)) "initialize an atx-list" @@ -164,14 +116,10 @@ (defun atx-list-size ((lst atx-list)) "return size of an atx-list" - (let ((items 0)) - (do-atx-list (item lst) (1+! items)) - items) - ) + (let ((items 0)) (do-atx-list (item lst) (1+! items)) items)) (defun atx-list-append ((lst atx-list) (item atx-item)) "append an item to a list. returns the added item." - (if (not (-> lst head)) (set! (-> lst head) item)) (if (-> lst tail) (set! (-> lst tail next) item)) (set! (-> lst tail) item) @@ -179,158 +127,90 @@ (defun atx-list-remove ((lst atx-list) (item atx-item)) "remove an item from a list. removes all instances of that item. but it's weird if you have multiple..." - (cond - ((= (-> lst head) item) - (set! (-> lst head) (-> item next)) - (if (= (-> lst tail) item) - (set! (-> lst tail) #f) - ) - ) + ((= (-> lst head) item) (set! (-> lst head) (-> item next)) (if (= (-> lst tail) item) (set! (-> lst tail) #f))) (else - (let ((last (the atx-item #f)) - (i 0)) - (do-atx-list (it lst) - (when (= it item) - (if (>= (-> lst selection) i) - (1-! (-> lst selection))) - (set! (-> last next) (-> it next)) - (set! it last) - ) - (set! last it) - ) - ) - ) - ) + (let ((last (the atx-item #f)) + (i 0)) + (do-atx-list (it lst) + (when (= it item) + (if (>= (-> lst selection) i) (1-! (-> lst selection))) + (set! (-> last next) (-> it next)) + (set! it last)) + (set! last it))))) 0) (defun atx-list-remove-by-object ((lst atx-list) (obj basic)) "remove all items with a specific object from a list." - - (do-atx-list (it lst) - (if (= (-> it extra) obj) - (atx-list-remove lst it) - ) - ) + (do-atx-list (it lst) (if (= (-> it extra) obj) (atx-list-remove lst it))) 0) (defun atx-list-get-by-index ((lst atx-list) (idx int)) "get an item by its index." - - (let ((items 0)) - (do-atx-list (item lst) - (if (= items idx) - (return item)) - (1+! items)) - items) + (let ((items 0)) (do-atx-list (item lst) (if (= items idx) (return item)) (1+! items)) items) (the atx-item #f)) (defun atx-list-get-by-name ((lst atx-list) (name string)) "get an item by its index." - - (do-atx-list (item lst) - (if (string= (-> item text) name) - (return item)) - ) + (do-atx-list (item lst) (if (string= (-> item text) name) (return item))) (the atx-item #f)) - (defmacro atx-interface-square-to-menu () `(when (cpad-pressed? 0 square) - (cpad-clear! 0 square) - (true! *camera-read-buttons*) - (set! (-> self edit-mode) (atx-edit-mode none)) - (set! (-> *debug-menu-context* is-hidden) #f) - ) - ) + (cpad-clear! 0 square) + (true! *camera-read-buttons*) + (set! (-> self edit-mode) (atx-edit-mode none)) + (set! (-> *debug-menu-context* is-hidden) #f))) (defun atx-list-interface ((lst atx-list) (title string) (warning string) (sel-obj basic)) "run interface and draw an atx-list" - (let ((items-drawn (-> lst offset)) (i 0) (color (font-color menu)) (text-len 0.0)) - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - - (when (nonzero? (length title)) - (set! text-len (draw-string-xy title buf 9 (+ 28 4 (* items-drawn 8)) (font-color menu) (font-flags shadow kerning))) - (1+! items-drawn) - ) - - (do-atx-list (item lst) - (let ((selected? (= i (-> lst selection)))) - - (set! color (if (= (-> item extra) sel-obj) (font-color menu-flag-on) (font-color menu))) - - (let ((this-len (draw-string-xy (-> item group name) buf 21 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning)))) - (if (> this-len text-len) - (set! text-len this-len))) - - (if selected? - (draw-string-xy ">" buf 9 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning))) - - (1+! items-drawn) - (1+! i) - - )) - - (when (not (-> lst head)) - (draw-string-xy warning buf 21 (+ 28 4 8) (font-color red) (font-flags shadow kerning)) - (1+! items-drawn)) - - ) - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - - - (draw-sprite2d-xy buf 6 (+ 28 (* (-> lst offset) 8)) - (+ 6 12 12 (the int text-len)) (+ 8 (* 8 (- items-drawn (-> lst offset)))) - (static-rgba 0 0 0 64)) - - ) - ) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (when (nonzero? (length title)) + (set! text-len (draw-string-xy title buf 9 (+ 28 4 (* items-drawn 8)) (font-color menu) (font-flags shadow kerning))) + (1+! items-drawn)) + (do-atx-list (item lst) + (let ((selected? (= i (-> lst selection)))) + (set! color (if (= (-> item extra) sel-obj) (font-color menu-flag-on) (font-color menu))) + (let ((this-len (draw-string-xy (-> item group name) buf 21 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning)))) + (if (> this-len text-len) (set! text-len this-len))) + (if selected? (draw-string-xy ">" buf 9 (+ 28 4 (* items-drawn 8)) color (font-flags shadow kerning))) + (1+! items-drawn) + (1+! i))) + (when (not (-> lst head)) + (draw-string-xy warning buf 21 (+ 28 4 8) (font-color red) (font-flags shadow kerning)) + (1+! items-drawn))) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-sprite2d-xy buf + 6 + (+ 28 (* (-> lst offset) 8)) + (+ 6 12 12 (the int text-len)) + (+ 8 (* 8 (- items-drawn (-> lst offset)))) + (static-rgba 0 0 0 64)))) (when (-> lst head) - (if (cpad-pressed? 0 down) - (+! (-> lst selection) 1)) - (if (cpad-pressed? 0 right) - (+! (-> lst selection) 5)) - (if (cpad-pressed? 0 up) - (-! (-> lst selection) 1)) - (if (cpad-pressed? 0 left) - (-! (-> lst selection) 5)) - (if (< (-> lst selection) 0) - (set! (-> lst selection) (1- (atx-list-size lst)))) - (if (>= (-> lst selection) (atx-list-size lst)) - (set! (-> lst selection) 0)) - (if (cpad-pressed? 0 x) - ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) - ) - - (when (< 16 (+ (-> lst selection) (-> lst offset))) - (set! (-> lst offset) (- 16 (-> lst selection))) - ) - (when (< (+ (-> lst selection) (-> lst offset)) 0) - (set! (-> lst offset) (- 0 (-> lst selection))) - ) - ) + (if (cpad-pressed? 0 down) (+! (-> lst selection) 1)) + (if (cpad-pressed? 0 right) (+! (-> lst selection) 5)) + (if (cpad-pressed? 0 up) (-! (-> lst selection) 1)) + (if (cpad-pressed? 0 left) (-! (-> lst selection) 5)) + (if (< (-> lst selection) 0) (set! (-> lst selection) (1- (atx-list-size lst)))) + (if (>= (-> lst selection) (atx-list-size lst)) (set! (-> lst selection) 0)) + (if (cpad-pressed? 0 x) ((-> lst func) (atx-list-get-by-index lst (-> lst selection)))) + (when (< 16 (+ (-> lst selection) (-> lst offset))) + (set! (-> lst offset) (- 16 (-> lst selection)))) + (when (< (+ (-> lst selection) (-> lst offset)) 0) + (set! (-> lst offset) (- 0 (-> lst selection))))) 0) - (defbehavior atx-list-art-group-func anim-tester-x ((item atx-item-art-group)) - (if (not (and (type-type? (-> item type) atx-item-art-group) (-> item group) (-> item ja-list head) (-> item jg-list head) - (-> item mg-list head) - )) - (return #f)) - + (-> item mg-list head))) + (return #f)) (set! (-> self selected-art-group) item) (set! (-> self edit-mode) (atx-edit-mode anim)) (set! (-> self cur-art-group) (-> item group)) @@ -341,46 +221,34 @@ 0) (defbehavior atx-list-joint-anim-func anim-tester-x ((item atx-item)) - - (if (not (-> item janim)) - (return #f)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-joint-anim) (-> item janim)) (ja-no-eval :frame-num 0.0) 0) -(defbehavior atx-list-joint-geo-func anim-tester-x ((item atx-item)) - (if (not (-> item janim)) - (return #f)) +(defbehavior atx-list-joint-geo-func anim-tester-x ((item atx-item)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-joint-geo) (-> item jgeo)) 0) -(defbehavior atx-list-mesh-geo-func anim-tester-x ((item atx-item)) - (if (not (-> item janim)) - (return #f)) +(defbehavior atx-list-mesh-geo-func anim-tester-x ((item atx-item)) + (if (not (-> item janim)) (return #f)) (set! (-> self cur-mesh-geo) (-> item mgeo)) 0) - - (defmethod new atx-item-art-group ((allocation symbol) (type-to-make type) (text string) (ag art-group)) "make a new atx-item" - (let ((obj (object-new allocation type-to-make (the int (-> type-to-make size))))) (set! (-> obj next) #f) (set! (-> obj text) text) (set! (-> obj group) ag) - (atx-list-init! (-> obj ja-list)) (atx-list-init! (-> obj jg-list)) (atx-list-init! (-> obj mg-list)) (set! (-> obj ja-list func) atx-list-joint-anim-func) (set! (-> obj jg-list func) atx-list-joint-geo-func) (set! (-> obj mg-list func) atx-list-mesh-geo-func) - - obj) - ) - - + obj)) ;;;---------------------------------------------- ;; globals @@ -388,23 +256,18 @@ ;; initialize the lists in the static defs (atx-list-init! (-> *ATX-settings* list-ctrl)) + (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) ;; the actual process. (define-perm *atx* (pointer anim-tester-x) #f) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; states ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - (defbehavior anim-tester-x-reset anim-tester-x () "reset the anim tester to default settings" - (format #t "resetting anim tester~%") (set! (-> self edit-mode) (atx-edit-mode none)) (set! (-> self selected-art-group) #f) @@ -414,182 +277,120 @@ (set! (-> self cur-mesh-geo) #f) 0) - (defbehavior clean-art-groups anim-tester-x () "purge possible invalid art groups automatically." (do-atx-list (it (-> *ATX-settings* list-ctrl)) - (when (!= (-> it group type) art-group) - (when (= it (-> self selected-art-group)) - (anim-tester-x-reset) - ) - (atx-list-remove (-> *ATX-settings* list-ctrl) it) - ) - ) - ) - + (when (!= (-> it group type) art-group) + (when (= it (-> self selected-art-group)) + (anim-tester-x-reset)) + (atx-list-remove (-> *ATX-settings* list-ctrl) it)))) (defbehavior anim-tester-x-interface anim-tester-x () "UI controls for anim tester" - (set! (-> *debug-menu-context* is-hidden) #t) (set! (-> self cur-list) #f) - (case (-> self edit-mode) - (((atx-edit-mode none)) - (set! (-> *debug-menu-context* is-hidden) #f)) + (((atx-edit-mode none)) (set! (-> *debug-menu-context* is-hidden) #f)) (((atx-edit-mode art-group)) - (set! (-> self cur-list) (-> *ATX-settings* list-ctrl)) - (atx-list-interface (-> self cur-list) "---- pick art group ----" "Add an art group with atx-add-group" (-> self cur-art-group)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> *ATX-settings* list-ctrl)) + (atx-list-interface (-> self cur-list) + "---- pick art group ----" + "Add an art group with atx-add-group" + (-> self cur-art-group)) + (atx-interface-square-to-menu)) (((atx-edit-mode anim)) - (set! (-> self cur-list) (-> self selected-art-group ja-list)) - (atx-list-interface (-> self cur-list) "---- pick anim ----" "" (-> self cur-joint-anim)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> self selected-art-group ja-list)) + (atx-list-interface (-> self cur-list) "---- pick anim ----" "" (-> self cur-joint-anim)) + (atx-interface-square-to-menu)) (((atx-edit-mode jgeo)) - (set! (-> self cur-list) (-> self selected-art-group jg-list)) - (atx-list-interface (-> self cur-list) "---- pick skeleton ----" "" (-> self cur-joint-geo)) - (atx-interface-square-to-menu) - ) + (set! (-> self cur-list) (-> self selected-art-group jg-list)) + (atx-list-interface (-> self cur-list) "---- pick skeleton ----" "" (-> self cur-joint-geo)) + (atx-interface-square-to-menu)) (((atx-edit-mode mgeo)) - (set! (-> self cur-list) (-> self selected-art-group mg-list)) - (atx-list-interface (-> self cur-list) "---- pick mesh ----" "" (-> self cur-mesh-geo)) - (atx-interface-square-to-menu) - ) - ) - + (set! (-> self cur-list) (-> self selected-art-group mg-list)) + (atx-list-interface (-> self cur-list) "---- pick mesh ----" "" (-> self cur-mesh-geo)) + (atx-interface-square-to-menu))) 0) - (defstate anim-tester-x-process (anim-tester-x) - - :trans (behavior () - (clean-art-groups) - - (if (= *master-mode* 'menu) - (anim-tester-x-interface) - (set! *camera-read-buttons* #f) - ) - (when (!= *master-mode* 'menu) - (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) *color-white*) - ) - (none)) - - :code (behavior () - (let - ((need-update #f) - (lst (the-as atx-list #f))) - - (loop - - (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) - (process-disconnect self) - (set! (-> self draw art-group) (-> self cur-art-group)) - (set! (-> self draw cur-lod) -1) - (set! (-> self draw jgeo) (-> self cur-joint-geo)) - (set! (-> self draw sink-group) (-> *level* level-default foreground-sink-group 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (set! (-> self draw lod-set lod 0 dist) (meters 999999)) - (set! (-> self draw bounds w) (meters 10)) - (set! (-> self draw data-format) (the-as uint 1)) - (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) - (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) - (set! (-> self draw secondary-interp) 0.0) - (set! (-> self draw shadow) #f) - (set! (-> self draw shadow-ctrl) #f) - (set! (-> self draw ripple) #f) - (set! (-> self draw level-index) (the-as uint 2)) - (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) - (if (not (-> self skel effect)) - (set! (-> self skel effect) (new 'process 'effect-control self))) - (fill-skeleton-cache self) - (lod-set! (-> self draw) 0) - (ja-channel-set! 0) - (set! lst (-> self selected-art-group ja-list)) - ) - - (cond - ((-> self cur-joint-geo) - (if (> 1 (-> self skel active-channels)) - (ja-channel-set! 1)) - (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) - (ja-no-eval :group! (-> self cur-joint-anim)) - (when (!= *master-mode* 'menu) - (case (-> *ATX-settings* mode) - (('loop) - (ja :num! (loop! (-> *ATX-settings* speed))) - ) - (('identity) - (ja :num! (identity (-> *ATX-settings* frame-num))) - ) - (('seek) - (ja :num! (seek! max (-> *ATX-settings* speed))) - ) - ) - ) - (compute-alignment! (-> self align)) - (align! (-> self align) (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) - 1.0 1.0 1.0) - ) - (else - (if (!= *master-mode* 'menu) - (format *stdcon* "~%~%no art selected~%") - ) - ) - ) - - (when (and lst (-> lst head) (!= *master-mode* 'menu)) + :trans + (behavior () + (clean-art-groups) + (if (= *master-mode* 'menu) (anim-tester-x-interface) (set! *camera-read-buttons* #f)) + (when (!= *master-mode* 'menu) + (add-debug-x #t (bucket-id debug-no-zbuf) (-> self root trans) *color-white*)) + (none)) + :code + (behavior () + (let ((need-update #f) + (lst (the-as atx-list #f))) + (loop (when (and (-> self cur-joint-geo) (!= (-> self cur-joint-geo) (-> self draw jgeo))) + (process-disconnect self) + (set! (-> self draw art-group) (-> self cur-art-group)) + (set! (-> self draw cur-lod) -1) + (set! (-> self draw jgeo) (-> self cur-joint-geo)) + (set! (-> self draw sink-group) (-> *level* level-default foreground-sink-group 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (set! (-> self draw lod-set lod 0 dist) (meters 999999)) + (set! (-> self draw bounds w) (meters 10)) + (set! (-> self draw data-format) (the-as uint 1)) + (vector-copy! (-> self draw color-mult) (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)) + (vector-copy! (-> self draw color-emissive) (new 'static 'vector)) + (set! (-> self draw secondary-interp) 0.0) + (set! (-> self draw shadow) #f) + (set! (-> self draw shadow-ctrl) #f) + (set! (-> self draw ripple) #f) + (set! (-> self draw level-index) (the-as uint 2)) + (set! (-> self node-list) (make-nodes-from-jg (-> self draw jgeo) *default-skel-template* 'debug)) + (if (not (-> self skel effect)) (set! (-> self skel effect) (new 'process 'effect-control self))) + (fill-skeleton-cache self) + (lod-set! (-> self draw) 0) + (ja-channel-set! 0) + (set! lst (-> self selected-art-group ja-list))) (cond - ((cpad-pressed? 0 left) - (cpad-clear! 0 left) - (-! (-> lst selection) 1) - (set! need-update #t)) - ((cpad-pressed? 0 right) - (cpad-clear! 0 right) - (+! (-> lst selection) 1) - (set! need-update #t)) - ) - (cond - ((< (-> lst selection) 0) - (set! (-> lst selection) (1- (atx-list-size lst)))) - ((>= (-> lst selection) (atx-list-size lst)) - (set! (-> lst selection) 0)) - ) - (when need-update - ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) - (set! need-update #f)) - ) - - (suspend)) - ) - ) - - :post (behavior () - (when (-> self cur-joint-geo) + ((-> self cur-joint-geo) + (if (> 1 (-> self skel active-channels)) (ja-channel-set! 1)) + (set! (-> self draw lod-set lod 0 geo) (-> self cur-mesh-geo)) + (ja-no-eval :group! (-> self cur-joint-anim)) + (when (!= *master-mode* 'menu) + (case (-> *ATX-settings* mode) + (('loop) (ja :num! (loop! (-> *ATX-settings* speed)))) + (('identity) (ja :num! (identity (-> *ATX-settings* frame-num)))) + (('seek) (ja :num! (seek! max (-> *ATX-settings* speed)))))) + (compute-alignment! (-> self align)) + (align! (-> self align) + (align-opts adjust-x-vel adjust-y-vel adjust-xz-vel keep-other-velocities adjust-quat) + 1.0 + 1.0 + 1.0)) + (else (if (!= *master-mode* 'menu) (format *stdcon* "~%~%no art selected~%")))) + (when (and lst (-> lst head) (!= *master-mode* 'menu)) + (cond + ((cpad-pressed? 0 left) (cpad-clear! 0 left) (-! (-> lst selection) 1) (set! need-update #t)) + ((cpad-pressed? 0 right) (cpad-clear! 0 right) (+! (-> lst selection) 1) (set! need-update #t))) + (cond + ((< (-> lst selection) 0) (set! (-> lst selection) (1- (atx-list-size lst)))) + ((>= (-> lst selection) (atx-list-size lst)) (set! (-> lst selection) 0))) + (when need-update + ((-> lst func) (atx-list-get-by-index lst (-> lst selection))) + (set! need-update #f))) + (suspend)))) + :post + (behavior () + (when (-> self cur-joint-geo) (ja-post) (when (!= *master-mode* 'menu) - (when (logtest? (-> *ATX-settings* flags) (atx-flags show-joints)) - (draw-joint-spheres self) - ) - (format *stdcon* "~%~%") - (debug-print-channels (-> self skel) (the-as symbol *stdcon*)) - ) - ) - ) - - ) - - + (when (logtest? (-> *ATX-settings* flags) (atx-flags show-joints)) + (draw-joint-spheres self)) + (format *stdcon* "~%~%") + (debug-print-channels (-> self skel) (the-as symbol *stdcon*)))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; helper functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defbehavior anim-tester-x-init-by-other anim-tester-x () "external initializer for anim-tester-x process" - (logclear! (-> self mask) (process-mask menu)) (set! (-> self root) (new 'process 'trsqv)) (set! (-> self draw) (new 'process 'draw-control self (the art-joint-geo #f))) @@ -601,122 +402,72 @@ (position-in-front-of-camera! (-> self root trans) (meters 10) (meters 1)) (anim-tester-x-reset) (go anim-tester-x-process) - (none) - ) - + (none)) (defun atx-stop () "kill the anim tester process" - (kill-by-type anim-tester-x *default-pool*) (set! *camera-read-buttons* #t) (set! *atx* (the (pointer anim-tester-x) #f))) (defun atx-start () "start the anim tester process" - (when *atx* - (atx-stop) - ) - - (if *target* - (stop 'play)) + (atx-stop)) + (if *target* (stop 'play)) (set! *atx* (process-spawn anim-tester-x :from *pc-dead-pool*)) (set! *camera-orbit-target* *atx*) - (send-event *camera* 'change-state cam-free-floating 0) - ) - + (send-event *camera* 'change-state cam-free-floating 0)) (defun atx-add-new-art-group ((ag art-group)) - - (let ((ag-item (the atx-item-art-group (atx-list-append (-> *ATX-settings* list-ctrl) - (new 'debug 'atx-item-art-group (-> ag name) ag))))) + (let ((ag-item (the atx-item-art-group (atx-list-append (-> *ATX-settings* list-ctrl) (new 'debug 'atx-item-art-group (-> ag name) ag))))) (dotimes (i (-> ag length)) (when (-> ag data i) (case (-> ag data i type) - ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ) - ) - ) - ag-item) - ) + ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i))))))) + ag-item)) (defun atx-add-group ((name string) (level-name symbol)) - (protect ((-> *level* log-in-level-bsp)) - (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) - (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) - (cond - (ag - (if (not *atx*) (atx-start)) - - (atx-add-new-art-group ag) - ) - (else - (format #t "ERROR: no art-group ~A~%" name) - ) - ) - )) + (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) + (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) + (cond + (ag (if (not *atx*) (atx-start)) (atx-add-new-art-group ag)) + (else (format #t "ERROR: no art-group ~A~%" name))))) 0) (defun atx-append-group ((append-to string) (name string) (level-name symbol)) - (protect ((-> *level* log-in-level-bsp)) - (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) - (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) - (cond - (ag - (if (not *atx*) (atx-start)) - - (let ((ag-item (the atx-item-art-group (atx-list-get-by-name (-> *ATX-settings* list-ctrl) append-to)))) - (when (not ag-item) - (format #t "ERROR: art-group ~A not loaded~%" append-to) - (return #f) - ) - (dotimes (i (-> ag length)) - (when (-> ag data i) - (case (-> ag data i type) - ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) - ) - ) - )) - ) - (else - (format #t "ERROR: no art-group ~A~%" name) - ) - ) - )) + (set! (-> *level* log-in-level-bsp) (aif (level-get *level* level-name) (-> it bsp))) + (let ((ag (load-to-heap-by-name (-> *level* level-default art-group) name #t debug 0))) + (cond + (ag + (if (not *atx*) (atx-start)) + (let ((ag-item (the atx-item-art-group (atx-list-get-by-name (-> *ATX-settings* list-ctrl) append-to)))) + (when (not ag-item) + (format #t "ERROR: art-group ~A not loaded~%" append-to) + (return #f)) + (dotimes (i (-> ag length)) + (when (-> ag data i) + (case (-> ag data i type) + ((art-joint-geo) (atx-list-append (-> ag-item jg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((merc-ctrl) (atx-list-append (-> ag-item mg-list) (new 'debug 'atx-item (-> ag name) (-> ag data i)))) + ((art-joint-anim) (atx-list-append (-> ag-item ja-list) (new 'debug 'atx-item (-> ag name) (-> ag data i))))))))) + (else (format #t "ERROR: no art-group ~A~%" name))))) 0) (defun atx-add-level-group () - (if (not *atx*) (atx-start)) - (do-atx-list (item (-> *ATX-settings* list-ctrl)) - (dotimes (i (-> *level* length)) - (when (and (>= (-> item group) (-> *level* level i heap base)) (< (-> item group) (-> *level* level i heap top))) - (atx-list-remove (-> *ATX-settings* list-ctrl) item) - (set! i (-> *level* length)) - )) - ) + (dotimes (i (-> *level* length)) + (when (and (>= (-> item group) (-> *level* level i heap base)) (< (-> item group) (-> *level* level i heap top))) + (atx-list-remove (-> *ATX-settings* list-ctrl) item) + (set! i (-> *level* length))))) (dotimes (i (-> *level* length)) - (doarray (ag (-> *level* level i art-group data-array)) - (atx-add-new-art-group (the art-group ag)) - ) - ) - ) + (doarray (ag (-> *level* level i art-group data-array)) (atx-add-new-art-group (the art-group ag))))) (defun atx-add-common-group () - (if (not *atx*) (atx-start)) - (doarray (ag (-> *level* level (-> *level* length) art-group data-array)) - (atx-add-new-art-group (the art-group ag)) - ) - ) - - - + (doarray (ag (-> *level* level (-> *level* length) art-group data-array)) (atx-add-new-art-group (the art-group ag)))) diff --git a/goal_src/jak1/pc/debug/default-menu-pc.gc b/goal_src/jak1/pc/debug/default-menu-pc.gc index d92a80bf3a..9c31e0acf9 100644 --- a/goal_src/jak1/pc/debug/default-menu-pc.gc +++ b/goal_src/jak1/pc/debug/default-menu-pc.gc @@ -1,6 +1,5 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/debug/menu.gc") (require "pc/progress-pc.gc") (require "engine/debug/part-tester.gc") @@ -8,190 +7,131 @@ (require "pc/debug/entity-debug.gc") (require "pc/debug/anim-tester-x.gc") - #| - Extra debug menus for PC port. - |# (declare-file (debug)) (defmacro new-dm-func (text var func) - `(new 'debug 'debug-menu-item-function ,text ,var (the-as (function int object) ,func)) - ) + `(new 'debug 'debug-menu-item-function ,text ,var (the-as (function int object) ,func))) + (defmacro new-dm-flag (text var func) - `(new 'debug 'debug-menu-item-flag ,text ,var (the-as (function int debug-menu-msg object) ,func)) - ) + `(new 'debug 'debug-menu-item-flag ,text ,var (the-as (function int debug-menu-msg object) ,func))) + (defmacro new-dm-bool (text sym func) - `(new-dm-flag ,text (quote ,sym) ,func) - ) + `(new-dm-flag ,text (quote ,sym) ,func)) + (defmacro new-dm-submenu (text menu) - `(new 'debug 'debug-menu-item-submenu ,text ,menu) - ) + `(new 'debug 'debug-menu-item-submenu ,text ,menu)) + (defmacro new-dm-var-float (text var func inc min max) `(debug-menu-item-var-make-float (new 'debug 'debug-menu-item-var ,text ,var (* 8 20)) - (the-as (function int debug-menu-msg float float float) ,func) - ,inc #t ,min ,max 1) - ) + (the-as (function int debug-menu-msg float float float) ,func) + ,inc + #t + ,min + ,max + 1)) (defun dm-want-level-toggle-pick-func ((arg0 pair) (arg1 debug-menu-msg)) (let* ((levname (the-as symbol (car arg0))) - (info (the-as level-load-info (-> levname value))) - (idx (the int (cdr arg0))) - (the-level (level-get *level* (-> info name))) - ) - (if (and the-level (!= the-level (-> *level* level idx))) - (return 'invalid) - ) + (info (the-as level-load-info (-> levname value))) + (idx (the int (cdr arg0))) + (the-level (level-get *level* (-> info name)))) + (if (and the-level (!= the-level (-> *level* level idx))) (return 'invalid)) (if (= arg1 (debug-menu-msg press)) - (load-state-want-levels - (if (= idx 0) (-> info name) (-> *level* level 0 name)) - (if (= idx 1) (-> info name) (-> *level* level 1 name)) - ) - ) - (eq? (-> *level* level idx name) (-> info name)) - ) - ) + (load-state-want-levels (if (= idx 0) (-> info name) (-> *level* level 0 name)) + (if (= idx 1) (-> info name) (-> *level* level 1 name)))) + (eq? (-> *level* level idx name) (-> info name)))) (defun dm-display-level-toggle-pick-func ((arg0 symbol) (arg1 debug-menu-msg)) (let ((the-level (level-get *level* arg0))) - (if (not the-level) - (return 'invalid) - ) + (if (not the-level) (return 'invalid)) (if (= arg1 (debug-menu-msg press)) - (when the-level - (load-state-want-display-level arg0 - (if (-> the-level display?) #f 'display) - ) - ) - ) - (and the-level (-> the-level display?)) - ) - ) + (when the-level + (load-state-want-display-level arg0 (if (-> the-level display?) #f 'display)))) + (and the-level (-> the-level display?)))) (defun debug-menu-make-load-want-menu ((ctx debug-menu-context) (lev-idx int)) - (let ((want-menu (new 'debug 'debug-menu ctx "Level want menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item want-menu (new-dm-flag (symbol->string (the-as symbol (car iter))) (dcons (car iter) lev-idx) dm-want-level-toggle-pick-func)) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu (new 'debug 'string 0 (string-format "Want ~D" lev-idx)) want-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item want-menu + (new-dm-flag (symbol->string (the-as symbol (car iter))) (dcons (car iter) lev-idx) dm-want-level-toggle-pick-func)) + (set! iter (cdr iter)))) + (new-dm-submenu (new 'debug 'string 0 (string-format "Want ~D" lev-idx)) want-menu))) (defun debug-menu-make-load-display-menu ((ctx debug-menu-context)) - (let ((display-menu (new 'debug 'debug-menu ctx "Level display menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item display-menu (new-dm-flag (symbol->string (the-as symbol (car iter))) (car iter) dm-display-level-toggle-pick-func)) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu "Display" display-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item display-menu + (new-dm-flag (symbol->string (the-as symbol (car iter))) (car iter) dm-display-level-toggle-pick-func)) + (set! iter (cdr iter)))) + (new-dm-submenu "Display" display-menu))) (defun debug-menu-make-load-teleport-menu ((ctx debug-menu-context)) - (let ((teleport-menu (new 'debug 'debug-menu ctx "Camera teleport menu"))) - - (let ((iter *level-load-list*)) - (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) - (debug-menu-append-item teleport-menu - (new-dm-func (symbol->string (the-as symbol (car iter))) - (-> (the-as symbol (car iter)) value) - (lambda ((info level-load-info)) - (let ((tf (new 'stack-no-clear 'transformq))) - (set! (-> tf trans x) (-> info bsphere x)) - (set! (-> tf trans y) (-> info bsphere y)) - (set! (-> tf trans z) (-> info bsphere z)) - (quaternion-identity! (-> tf quat)) - (vector-identity! (-> tf scale)) - (send-event *camera* 'teleport-to-transformq tf) - ) - ) - )) - - (set! iter (cdr iter)) - ) - ) - - (new-dm-submenu "Camera teleport" teleport-menu) - ) - ) + (let ((iter *level-load-list*)) + (while (not (or (null? iter) (null? (cdr iter)) (null? (cddr iter)))) + (debug-menu-append-item teleport-menu + (new-dm-func (symbol->string (the-as symbol (car iter))) + (-> (the-as symbol (car iter)) value) + (lambda ((info level-load-info)) + (let ((tf (new 'stack-no-clear 'transformq))) + (set! (-> tf trans x) (-> info bsphere x)) + (set! (-> tf trans y) (-> info bsphere y)) + (set! (-> tf trans z) (-> info bsphere z)) + (quaternion-identity! (-> tf quat)) + (vector-identity! (-> tf scale)) + (send-event *camera* 'teleport-to-transformq tf))))) + (set! iter (cdr iter)))) + (new-dm-submenu "Camera teleport" teleport-menu))) (defun debug-menu-make-load-menu ((ctx debug-menu-context)) (let ((load-menu (new 'debug 'debug-menu ctx "Load menu"))) - (debug-menu-append-item load-menu (new-dm-bool "Level Border" *display-level-border* dm-boolean-toggle-pick-func)) - (debug-menu-append-item load-menu (debug-menu-make-from-template ctx '(flag - "border-mode" - #f - ,(lambda ((arg0 int) (arg1 debug-menu-msg)) - (if (= arg1 (debug-menu-msg press)) - (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode))) - ) - (-> *setting-control* default border-mode) - ) - ))) - - (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 0)) ;; Want 0 - (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 1)) ;; Want 1 - (debug-menu-append-item load-menu (debug-menu-make-load-display-menu ctx)) ;; Display - (debug-menu-append-item load-menu (debug-menu-make-load-teleport-menu ctx)) ;; Camera teleport - - (new-dm-submenu "Load" load-menu) - ) - ) + (debug-menu-append-item load-menu (new-dm-bool "Level Border" *display-level-border* dm-boolean-toggle-pick-func)) + (debug-menu-append-item load-menu + (debug-menu-make-from-template ctx + '(flag "border-mode" + #f + ,(lambda ((arg0 int) (arg1 debug-menu-msg)) + (if (= arg1 (debug-menu-msg press)) + (set! (-> *setting-control* default border-mode) (not (-> *setting-control* default border-mode)))) + (-> *setting-control* default border-mode))))) + (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 0)) ;; Want 0 + (debug-menu-append-item load-menu (debug-menu-make-load-want-menu ctx 1)) ;; Want 1 + (debug-menu-append-item load-menu (debug-menu-make-load-display-menu ctx)) ;; Display + (debug-menu-append-item load-menu (debug-menu-make-load-teleport-menu ctx)) ;; Camera teleport + (new-dm-submenu "Load" load-menu))) (define *part-pick-menu* (the-as debug-menu #f)) + (define *spawn-part-test* #t) (defun dm-part-pick-func ((id int) (msg debug-menu-msg)) - (if (zero? (-> *part-group-id-table* id)) - (return 'invalid)) + (if (zero? (-> *part-group-id-table* id)) (return 'invalid)) (when (= msg (debug-menu-msg press)) (set! *part-tester-id* id) - (if *spawn-part-test* - (start-part) - ) - ) - (= *part-tester-id* id) - ) + (if *spawn-part-test* (start-part))) + (= *part-tester-id* id)) (defun build-particles-list () (debug-menu-remove-all-items *part-pick-menu*) (dotimes (i (-> *part-group-id-table* length)) (let ((part (-> *part-group-id-table* i))) (when (and (nonzero? part)) - (debug-menu-append-item *part-pick-menu* (new-dm-flag (-> part name) i dm-part-pick-func)) - ) - ) - ) - (set! (-> *part-pick-menu* items) (sort (-> *part-pick-menu* items) debug-menu-node part name) i dm-part-pick-func))))) + (set! (-> *part-pick-menu* items) (sort (-> *part-pick-menu* items) debug-menu-node *entity-debug-inspect* entity) e) (set-entity! *entity-debug-inspect* (the entity #f)) - (set-entity! *entity-debug-inspect* e)) - ) - (= (-> *entity-debug-inspect* entity) e) - ) + (set-entity! *entity-debug-inspect* e))) + (= (-> *entity-debug-inspect* entity) e)) (defun build-entity-list () "Fill the entity pick menu" @@ -217,113 +155,74 @@ (when (nonzero? s3-0) (dotimes (s2-0 (-> s3-0 length)) (let ((s1-0 (-> s3-0 data s2-0 actor))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-0 'name string) s1-0 dm-entity-pick-func)) - ) - ) - ) - ) + (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-0 'name string) s1-0 dm-entity-pick-func)))))) ;; ambients entities (let ((s3-1 (-> s4-0 bsp ambients))) (when (nonzero? s3-1) (dotimes (s2-1 (-> s3-1 length)) (let ((s1-1 (-> s3-1 data s2-1 ambient))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-1 'name string) s1-1 dm-entity-pick-func)) - ) - ) - ) - ) + (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s1-1 'name string) s1-1 dm-entity-pick-func)))))) ;; camera entities (let ((s4-1 (-> s4-0 bsp cameras))) (when (nonzero? s4-1) (dotimes (s3-2 (-> s4-1 length)) (let ((s2-2 (-> s4-1 s3-2))) - (debug-menu-append-item *entity-pick-menu* (new-dm-flag (res-lump-struct s2-2 'name string) s2-2 dm-entity-pick-func)) - ) - ) - ) - ) - ) - ) - ) - (set! (-> *entity-pick-menu* items) (sort (-> *entity-pick-menu* items) debug-menu-node *entity-pick-menu* items) (sort (-> *entity-pick-menu* items) debug-menu-node *entity-debug-inspect* entity) (return #f)) - (let ((tf (new 'stack 'transformq))) - (vector-copy! (-> tf trans) (-> *entity-debug-inspect* entity trans)) - (quaternion-identity! (-> tf quat)) - (vector-identity! (-> tf scale)) - (send-event *camera* 'teleport-to-transformq tf) - )))) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info" #t dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (ag)" 'art-group dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (meters)" 'entity-meters dm-display-entities-pick-func)) - (debug-menu-append-item entity-menu (new-dm-func "Print entity info (perm)" 'entity-perm dm-display-entities-pick-func)) - - (new-dm-submenu "Entity" entity-menu) - ) - ) + (let ((pick-menu (new 'debug 'debug-menu ctx "Pick entity menu"))) + (set! *entity-pick-menu* pick-menu) + (debug-menu-append-item entity-menu (new-dm-submenu "Pick Entity" pick-menu))) + (debug-menu-append-item entity-menu (new-dm-func "Refresh" #f build-entity-list)) + (debug-menu-append-item entity-menu + (new-dm-func "Go to entity" + #f + (lambda () + (unless (-> *entity-debug-inspect* entity) + (return #f)) + (let ((tf (new 'stack 'transformq))) + (vector-copy! (-> tf trans) (-> *entity-debug-inspect* entity trans)) + (quaternion-identity! (-> tf quat)) + (vector-identity! (-> tf scale)) + (send-event *camera* 'teleport-to-transformq tf))))) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info" #t dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info (ag)" 'art-group dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu + (new-dm-func "Print entity info (meters)" 'entity-meters dm-display-entities-pick-func)) + (debug-menu-append-item entity-menu (new-dm-func "Print entity info (perm)" 'entity-perm dm-display-entities-pick-func)) + (new-dm-submenu "Entity" entity-menu))) (defmacro dm-lambda-boolean-flag (val) "helper macro for making boolean buttons that don't just access symbols directly" - `,(lambda (arg (msg debug-menu-msg)) - (if (= msg (debug-menu-msg press)) - (not! ,val) - ) - ,val) - ) + `(lambda (arg (msg debug-menu-msg)) + (if (= msg (debug-menu-msg press)) (not! ,val)) + ,val)) (defmacro dm-lambda-int-var (val) "helper macro for making int buttons" - `,(lambda (arg (msg debug-menu-msg) (newval int)) + `(lambda (arg (msg debug-menu-msg) (newval int)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val newval) - ) - (else - ,val - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val newval)) + (else ,val)))) (defmacro dm-lambda-float-var (val) "helper macro for making float buttons" `(lambda (arg (msg debug-menu-msg) (newval float)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val newval) - ) - (else - ,val - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val newval)) + (else ,val)))) (defmacro dm-lambda-meters-var (val) "helper macro for making meters buttons" - `,(lambda (arg (msg debug-menu-msg) (newval float)) + `(lambda (arg (msg debug-menu-msg) (newval float)) (cond - ((= msg (debug-menu-msg press)) - (set! ,val (meters newval)) - ) - (else - (* (1/ METER_LENGTH) ,val) - ) - )) - ) + ((= msg (debug-menu-msg press)) (set! ,val (meters newval))) + (else (* (1 / METER_LENGTH) ,val))))) (defun dm-toggle-collision-pick-func ((arg symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) @@ -331,107 +230,88 @@ ((-> arg value) (false! (-> arg value)) (logior! *vu1-enable-user-menu* (vu1-renderer-mask tfrag trans-tfrag tie tie-near)) - (true! *generic-tie*) - ) + (true! *generic-tie*)) (else (true! (-> arg value)) (logclear! *vu1-enable-user-menu* (vu1-renderer-mask tfrag trans-tfrag tie tie-near)) - (false! *generic-tie*) - ) - ) - ) - (-> arg value) - ) + (false! *generic-tie*)))) + (-> arg value)) (defun dm-collision-mode-pick-func ((arg pc-collision-mode) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (set! *collision-mode* arg) - ) - (= *collision-mode* arg) - ) + (set! *collision-mode* arg)) + (= *collision-mode* arg)) (defun dm-collision-filter-mode-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode mode) arg (not (pc-get-collision-mask (pc-collision-mode mode) arg))) - ) - (pc-get-collision-mask (pc-collision-mode mode) arg) - ) + (pc-set-collision-mask (pc-collision-mode mode) arg (not (pc-get-collision-mask (pc-collision-mode mode) arg)))) + (pc-get-collision-mask (pc-collision-mode mode) arg)) (defun dm-collision-filter-event-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode event) arg (not (pc-get-collision-mask (pc-collision-mode event) arg))) - ) - (pc-get-collision-mask (pc-collision-mode event) arg) - ) + (pc-set-collision-mask (pc-collision-mode event) arg (not (pc-get-collision-mask (pc-collision-mode event) arg)))) + (pc-get-collision-mask (pc-collision-mode event) arg)) (defun dm-collision-filter-material-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode material) arg (not (pc-get-collision-mask (pc-collision-mode material) arg))) - ) - (pc-get-collision-mask (pc-collision-mode material) arg) - ) + (pc-set-collision-mask (pc-collision-mode material) arg (not (pc-get-collision-mask (pc-collision-mode material) arg)))) + (pc-get-collision-mask (pc-collision-mode material) arg)) (defun dm-collision-filter-skip-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode skip) arg (not (pc-get-collision-mask (pc-collision-mode skip) arg))) - ) - (pc-get-collision-mask (pc-collision-mode skip) arg) - ) + (pc-set-collision-mask (pc-collision-mode skip) arg (not (pc-get-collision-mask (pc-collision-mode skip) arg)))) + (pc-get-collision-mask (pc-collision-mode skip) arg)) (defun dm-collision-filter-skiphide-pick-func ((arg int) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (pc-set-collision-mask (pc-collision-mode skiphide) arg (not (pc-get-collision-mask (pc-collision-mode skiphide) arg))) - ) - (pc-get-collision-mask (pc-collision-mode skiphide) arg) - ) + (pc-set-collision-mask (pc-collision-mode skiphide) arg (not (pc-get-collision-mask (pc-collision-mode skiphide) arg)))) + (pc-get-collision-mask (pc-collision-mode skiphide) arg)) (defun debug-menu-make-collision-renderer-menu ((ctx debug-menu-context)) (let ((menu (new 'debug 'debug-menu ctx "Collision renderer menu"))) - ;; master toggle - (debug-menu-append-item menu (new-dm-bool "Enable" *collision-renderer* dm-toggle-collision-pick-func)) - (debug-menu-append-item menu (new-dm-bool "Wireframe" *collision-wireframe* dm-boolean-toggle-pick-func)) - (debug-menu-append-item menu (new-dm-submenu "Mode" - (let ((mode-menu (new 'debug 'debug-menu ctx "Collision renderer mode menu"))) - (debug-menu-append-item mode-menu (new-dm-flag "none" (pc-collision-mode none) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "mode" (pc-collision-mode mode) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "event" (pc-collision-mode event) dm-collision-mode-pick-func)) - (debug-menu-append-item mode-menu (new-dm-flag "material" (pc-collision-mode material) dm-collision-mode-pick-func)) - mode-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter mode" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter mode menu"))) - (doenum (name val pat-mode) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-mode-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter event" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter event menu"))) - (doenum (name val pat-event) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-event-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter material" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter material menu"))) - (doenum (name val pat-material) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-material-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Filter skip" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) - (debug-menu-append-item filter-menu (new-dm-flag "(no skip)" -1 dm-collision-filter-skip-pick-func)) - (doenum (name val pc-pat-skip-hack) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skip-pick-func)) - ) - filter-menu))) - (debug-menu-append-item menu (new-dm-submenu "Hide skip" - (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) - (doenum (name val pc-pat-skip-hack) - (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skiphide-pick-func)) - ) - filter-menu))) - - (new-dm-submenu "Collision renderer" menu) - ) - ) + ;; master toggle + (debug-menu-append-item menu (new-dm-bool "Enable" *collision-renderer* dm-toggle-collision-pick-func)) + (debug-menu-append-item menu (new-dm-bool "Wireframe" *collision-wireframe* dm-boolean-toggle-pick-func)) + (debug-menu-append-item menu + (new-dm-submenu "Mode" + (let ((mode-menu (new 'debug 'debug-menu ctx "Collision renderer mode menu"))) + (debug-menu-append-item mode-menu (new-dm-flag "none" (pc-collision-mode none) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "mode" (pc-collision-mode mode) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "event" (pc-collision-mode event) dm-collision-mode-pick-func)) + (debug-menu-append-item mode-menu (new-dm-flag "material" (pc-collision-mode material) dm-collision-mode-pick-func)) + mode-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter mode" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter mode menu"))) + (doenum (name val pat-mode) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-mode-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter event" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter event menu"))) + (doenum (name val pat-event) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-event-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter material" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer filter material menu"))) + (doenum (name val pat-material) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-material-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Filter skip" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) + (debug-menu-append-item filter-menu (new-dm-flag "(no skip)" -1 dm-collision-filter-skip-pick-func)) + (doenum (name val pc-pat-skip-hack) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skip-pick-func))) + filter-menu))) + (debug-menu-append-item menu + (new-dm-submenu "Hide skip" + (let ((filter-menu (new 'debug 'debug-menu ctx "Collision renderer hide skip menu"))) + (doenum (name val pc-pat-skip-hack) + (debug-menu-append-item filter-menu (new-dm-flag name val dm-collision-filter-skiphide-pick-func))) + filter-menu))) + (new-dm-submenu "Collision renderer" menu))) (defun dm-lod-int ((arg0 int) (arg1 debug-menu-msg) (arg2 int) (arg3 int)) (when (= arg1 (debug-menu-msg press)) @@ -439,80 +319,57 @@ ((0) (set! (-> *pc-settings* lod-force-tfrag) arg2)) ((1) (set! (-> *pc-settings* lod-force-tie) arg2)) ((2) (set! (-> *pc-settings* lod-force-ocean) arg2)) - ((3) (set! (-> *pc-settings* lod-force-actor) arg2)) - ) - ) + ((3) (set! (-> *pc-settings* lod-force-actor) arg2)))) (case (/ arg0 8) ((0) (-> *pc-settings* lod-force-tfrag)) ((1) (-> *pc-settings* lod-force-tie)) ((2) (-> *pc-settings* lod-force-ocean)) ((3) (-> *pc-settings* lod-force-actor)) - (else arg3) - ) - ) + (else arg3))) (defun dm-subtitle-language ((blang int) (msg debug-menu-msg)) (let ((lang (the pc-language (/ blang 8)))) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* subtitle-language) lang)) - (= (-> *pc-settings* subtitle-language) lang) - ) - ) + (= (-> *pc-settings* subtitle-language) lang))) (defun dm-text-language ((blang int) (msg debug-menu-msg)) (let ((lang (the pc-language (/ blang 8)))) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* text-language) lang)) - (= (-> *pc-settings* text-language) lang) - ) - ) + (= (-> *pc-settings* text-language) lang))) (defun dm-subtitle-setting ((setting symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* subtitle-speaker?) setting)) - (= (-> *pc-settings* subtitle-speaker?) setting) - ) + (= (-> *pc-settings* subtitle-speaker?) setting)) (defun dm-mood-override-palette-pick-func ((bpal int) (msg debug-menu-msg)) (let* ((pal (/ bpal 8)) (cur-val (-> *mood-override-table* pal))) - - (when (= msg (debug-menu-msg press)) - (set! (-> *mood-override-table* pal) (if (= cur-val 0.0) 1.0 0.0)) - - (when (not (= 'mult *mood-override-debug*)) - (set! *mood-override-debug* #f) - (dotimes (i 8) - (if (!= (-> *mood-override-table* i) 0.0) - (set! *mood-override-debug* 'copy))) - )) - - (= (-> *mood-override-table* pal) 1.0) - ) - ) + (when (= msg (debug-menu-msg press)) + (set! (-> *mood-override-table* pal) (if (= cur-val 0.0) 1.0 0.0)) + (when (not (= 'mult *mood-override-debug*)) + (set! *mood-override-debug* #f) + (dotimes (i 8) + (if (!= (-> *mood-override-table* i) 0.0) (set! *mood-override-debug* 'copy))))) + (= (-> *mood-override-table* pal) 1.0))) (defun dm-mood-override-pick-func ((kind symbol) (msg debug-menu-msg)) (when (= msg (debug-menu-msg press)) - (if (= kind *mood-override-debug*) - (set! *mood-override-debug* #f) - (set! *mood-override-debug* kind))) - (= kind *mood-override-debug*) - ) + (if (= kind *mood-override-debug*) (set! *mood-override-debug* #f) (set! *mood-override-debug* kind))) + (= kind *mood-override-debug*)) (defun dm-mood-palette-float ((pal int) (arg1 debug-menu-msg) (newval float) (val float)) (when (= arg1 (debug-menu-msg press)) (set! (-> *mood-override-table* (/ pal 8)) newval)) - (-> *mood-override-table* (/ pal 8)) - ) + (-> *mood-override-table* (/ pal 8))) (defun dm-anim-tester-x-flag-func ((action symbol) (msg debug-menu-msg)) (case action (('at-show-joint-info) - (if (= msg (debug-menu-msg press)) - (logxor! (-> *ATX-settings* flags) (atx-flags show-joints))) - (return (logtest? (-> *ATX-settings* flags) (atx-flags show-joints))) - ) - ) + (if (= msg (debug-menu-msg press)) (logxor! (-> *ATX-settings* flags) (atx-flags show-joints))) + (return (logtest? (-> *ATX-settings* flags) (atx-flags show-joints))))) #f) (defun dm-anim-tester-x-refresh () @@ -520,475 +377,399 @@ (atx-list-init! (-> *ATX-settings* list-ctrl)) (set! (-> *ATX-settings* list-ctrl func) atx-list-art-group-func) (atx-add-common-group) - (atx-add-level-group) -) + (atx-add-level-group)) (defun dm-anim-tester-x-func ((action symbol)) (unless *atx* - (atx-start)) - + (atx-start)) (case action - (('pick-art-group) - (set! (-> *atx* 0 edit-mode) (atx-edit-mode art-group)) - (false! *camera-read-buttons*) - ) + (('pick-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode art-group)) (false! *camera-read-buttons*)) (('at-pick-joint-anim) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode anim)) - (false! *camera-read-buttons*) - ) - ) + (false! *camera-read-buttons*))) (('pick-mesh-geo) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode mgeo)) - (false! *camera-read-buttons*) - ) - ) + (false! *camera-read-buttons*))) (('pick-joint-geo) (when (-> *atx* 0 cur-art-group) (set! (-> *atx* 0 edit-mode) (atx-edit-mode jgeo)) - (false! *camera-read-buttons*) - ) - ) - (('at-cam-free-floating) - (send-event *camera* 'change-state cam-free-floating 0) - ) - (('at-cam-orbit) - (send-event *camera* 'change-state cam-orbit 0) - ) - ) + (false! *camera-read-buttons*))) + (('at-cam-free-floating) (send-event *camera* 'change-state cam-free-floating 0)) + (('at-cam-orbit) (send-event *camera* 'change-state cam-orbit 0))) 0) (defun debug-menu-make-anim-tester-x-menu ((ctx debug-menu-context)) (let ((menu (new 'debug 'debug-menu ctx "Anim Tester X menu"))) - ;; master toggle - (debug-menu-append-item menu (new-dm-func "Start" #f atx-start)) - (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) - (debug-menu-append-item menu (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) - (debug-menu-append-item menu (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) - (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) - (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Pick Skeleton" 'pick-joint-geo dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-flag "Show Joint Info" 'at-show-joint-info dm-anim-tester-x-flag-func)) - (debug-menu-append-item menu (new-dm-func "Free Floating cam" 'at-cam-free-floating dm-anim-tester-x-func)) - (debug-menu-append-item menu (new-dm-func "Orbit cam" 'at-cam-orbit dm-anim-tester-x-func)) - - (new-dm-submenu "Anim Tester X" menu) - ) - ) + ;; master toggle + (debug-menu-append-item menu (new-dm-func "Start" #f atx-start)) + (debug-menu-append-item menu (new-dm-func "Stop" #f atx-stop)) + (debug-menu-append-item menu + (new-dm-var-float "Speed" (the int #f) (dm-lambda-float-var (-> *ATX-settings* speed)) 0.01 -10.0 10.0)) + (debug-menu-append-item menu + (new-dm-var-float "Frame Num" (the int #f) (dm-lambda-float-var (-> *ATX-settings* frame-num)) 0.1 0.0 99999.0)) + (debug-menu-append-item menu (new-dm-func "Refresh" #f dm-anim-tester-x-refresh)) + (debug-menu-append-item menu (new-dm-func "Pick Art Group" 'pick-art-group dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Anim" 'at-pick-joint-anim dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Mesh" 'pick-mesh-geo dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Pick Skeleton" 'pick-joint-geo dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-flag "Show Joint Info" 'at-show-joint-info dm-anim-tester-x-flag-func)) + (debug-menu-append-item menu (new-dm-func "Free Floating cam" 'at-cam-free-floating dm-anim-tester-x-func)) + (debug-menu-append-item menu (new-dm-func "Orbit cam" 'at-cam-orbit dm-anim-tester-x-func)) + (new-dm-submenu "Anim Tester X" menu))) (defun dm-music-player-func ((lst object)) (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1) - (process-spawn-function process :name 'dm-player + (process-spawn-function process + :name 'dm-player (lambda :behavior process ((lst pair)) - (loop - (suspend) + (loop (suspend) (set-setting! 'music (the-as symbol (car lst)) 0.0 0) - (set! *progress-flava* (the-as int (cdr lst))) - ) - ) - lst - ) - ) + (set! *progress-flava* (the-as int (cdr lst))))) + lst)) (defun debug-menu-make-music-player-menu ((ctx debug-menu-context)) - (let ((music-menu (new 'debug 'debug-menu ctx "Music player menu"))) - (dotimes (i (-> *music-flava-name-list* length)) - (let* ((flava-list (-> *music-flava-name-list* i)) - (level-name (new 'debug 'string 30 (text-id->string (-> flava-list 0)))) - (lvl-menu (new 'debug 'debug-menu ctx (the-as string #f))) - ) - (dotimes (j (-> flava-list length)) - (let ((flava-name (new 'debug 'string 30 (text-id->string (-> flava-list j))))) - (when (and (string= (substring! *temp-string* level-name (- (length level-name) 11) (length level-name)) "-level-name") - (string= (substring! *temp-string* flava-name (- (length flava-name) 11) (length flava-name)) "-level-name")) - (copy-string<-string flava-name (symbol->string (ref *music-list* i))) - ) - (unless (string= flava-name "zero") - (debug-menu-append-item lvl-menu (new-dm-func flava-name (dcons (ref *music-list* i) j) dm-music-player-func)) - ) - ) - ) - (let ((menu-name (new 'debug 'string 30 (symbol->string (ref *music-list* i))))) - (debug-menu-append-item music-menu (new-dm-submenu menu-name lvl-menu)) - ) - ) - ) - (debug-menu-append-item music-menu (new-dm-func "Reset" #f (lambda () (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1)))) - (new-dm-submenu "Music player" music-menu) - ) - ) + (let ((music-menu (new 'debug 'debug-menu ctx "Music player menu"))) + (dotimes (i (-> *music-flava-name-list* length)) + (let* ((flava-list (-> *music-flava-name-list* i)) + (level-name (new 'debug 'string 30 (text-id->string (-> flava-list 0)))) + (lvl-menu (new 'debug 'debug-menu ctx (the-as string #f)))) + (dotimes (j (-> flava-list length)) + (let ((flava-name (new 'debug 'string 30 (text-id->string (-> flava-list j))))) + (when (and (string= (substring! *temp-string* level-name (- (length level-name) 11) (length level-name)) "-level-name") + (string= (substring! *temp-string* flava-name (- (length flava-name) 11) (length flava-name)) "-level-name")) + (copy-string<-string flava-name (symbol->string (ref *music-list* i)))) + (unless (string= flava-name "zero") + (debug-menu-append-item lvl-menu (new-dm-func flava-name (dcons (ref *music-list* i) j) dm-music-player-func))))) + (let ((menu-name (new 'debug 'string 30 (symbol->string (ref *music-list* i))))) + (debug-menu-append-item music-menu (new-dm-submenu menu-name lvl-menu))))) + (debug-menu-append-item music-menu + (new-dm-func "Reset" #f (lambda () (kill-by-name 'dm-player *active-pool*) (set! *progress-flava* -1)))) + (new-dm-submenu "Music player" music-menu))) (defun dm-frame-rate-pick-func ((bfps int) (msg debug-menu-msg)) (let ((fps (/ bfps 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set-frame-rate! *pc-settings* fps #t)) - (= (-> *pc-settings* target-fps) fps))) + (= (-> *pc-settings* target-fps) fps))) (defun dm-msaa-pick-func ((bmsaa int) (msg debug-menu-msg)) (let ((msaa (/ bmsaa 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* gfx-msaa) msaa)) - (= (-> *pc-settings* gfx-msaa) msaa))) + (= (-> *pc-settings* gfx-msaa) msaa))) (defun dm-territory-pick-func ((bterr int) (msg debug-menu-msg)) (let ((terr (/ bterr 8))) - (when (= msg (debug-menu-msg press)) + (when (= msg (debug-menu-msg press)) (set! (-> *pc-settings* territory) terr)) - (= (-> *pc-settings* territory) terr))) + (= (-> *pc-settings* territory) terr))) (defun dm-pc-cheats-pick-func ((bcheat int) (msg debug-menu-msg)) (let ((cheat (the pc-cheats (/ bcheat 8)))) - (when (= msg (debug-menu-msg press)) - (logxor! (-> *pc-settings* cheats) cheat) - (cheats-sound-play (logtest? (-> *pc-settings* cheats) cheat)) - ) - (logtest? (-> *pc-settings* cheats) cheat))) + (when (= msg (debug-menu-msg press)) + (logxor! (-> *pc-settings* cheats) cheat) + (cheats-sound-play (logtest? (-> *pc-settings* cheats) cheat))) + (logtest? (-> *pc-settings* cheats) cheat))) (when (-> *debug-menu-context* root-menu) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-load-menu *debug-menu-context*)) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-part-menu *debug-menu-context*)) (debug-menu-append-item (-> *debug-menu-context* root-menu) (debug-menu-make-entity-menu *debug-menu-context*)) ;; Scene menu TODO - (debug-menu-append-item (-> *debug-menu-context* root-menu) - (debug-menu-make-from-template *debug-menu-context* - '(menu "PC Settings" - (flag "Debug" #f ,(dm-lambda-boolean-flag (-> *pc-settings* debug?))) - (flag "Use native vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* use-vis?))) - (function "Toggle game aspect" #f ,(lambda () - (cond - ((= (-> *setting-control* default aspect-ratio) 'aspect4x3) - (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) - ) - (else - (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) - ) - ) - (set-aspect-ratio (-> *setting-control* default aspect-ratio)) - )) - (flag "Auto aspect" #f ,(dm-lambda-boolean-flag (-> *pc-settings* aspect-ratio-auto?))) - (menu "Aspect test" - (function "4 x 3" #f ,(lambda () (set-aspect! *pc-settings* 4 3))) - (function "16 x 9" #f ,(lambda () (set-aspect! *pc-settings* 16 9))) - (function "64 x 27 (21:9)" #f ,(lambda () (set-aspect! *pc-settings* 64 27))) - (function "16 x 10" #f ,(lambda () (set-aspect! *pc-settings* 16 10))) - (function "2 x 1" #f ,(lambda () (set-aspect! *pc-settings* 2 1))) - (function "37 x 20" #f ,(lambda () (set-aspect! *pc-settings* 37 20))) - (function "21 x 9" #f ,(lambda () (set-aspect! *pc-settings* 21 9))) - (function "64 x 18" #f ,(lambda () (set-aspect! *pc-settings* 64 18))) - (int-var "Custom aspect X" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-x)) 20 1 #t 1 1000) - (int-var "Custom aspect Y" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-y)) 20 1 #t 1 1000) - (function "Custom" #f ,(lambda () (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y)))) - ) - (menu "Fullscreen" - (function "Windowed" #f ,(lambda () (set-display-mode! *pc-settings* 'windowed #t))) - (function "Fullscreen" #f ,(lambda () (set-display-mode! *pc-settings* 'fullscreen #t))) - (function "Borderless" #f ,(lambda () (set-display-mode! *pc-settings* 'borderless #t))) - ) - (menu "Sizes" - (function "640 x 480" #f ,(lambda () (set-size! *pc-settings* 640 480 #t))) - (function "640 x 360" #f ,(lambda () (set-size! *pc-settings* 640 360 #t))) - (function "720 x 540" #f ,(lambda () (set-size! *pc-settings* 720 540 #t))) - (function "960 x 540" #f ,(lambda () (set-size! *pc-settings* 960 540 #t))) - (function "800 x 600" #f ,(lambda () (set-size! *pc-settings* 800 600 #t))) - (function "960 x 720" #f ,(lambda () (set-size! *pc-settings* 960 720 #t))) - (function "1280 x 720" #f ,(lambda () (set-size! *pc-settings* 1280 720 #t))) - (function "1024 x 768" #f ,(lambda () (set-size! *pc-settings* 1024 768 #t))) - (function "1366 x 768" #f ,(lambda () (set-size! *pc-settings* 1366 768 #t))) - (function "1280 x 960" #f ,(lambda () (set-size! *pc-settings* 1280 960 #t))) - (function "1440 x 1080" #f ,(lambda () (set-size! *pc-settings* 1440 1080 #t))) - (function "1920 x 1080" #f ,(lambda () (set-size! *pc-settings* 1920 1080 #t))) - (function "1920 x 1440" #f ,(lambda () (set-size! *pc-settings* 1920 1440 #t))) - (function "2560 x 1440" #f ,(lambda () (set-size! *pc-settings* 2560 1440 #t))) - (function "2880 x 2160" #f ,(lambda () (set-size! *pc-settings* 2880 2160 #t))) - (function "3840 x 2160" #f ,(lambda () (set-size! *pc-settings* 3840 2160 #t))) - (function "512 x 224" #f ,(lambda () (set-size! *pc-settings* 512 224 #t))) - (function "512 x 256" #f ,(lambda () (set-size! *pc-settings* 512 256 #t))) - (function "512 x 448" #f ,(lambda () (set-size! *pc-settings* 512 448 #t))) - (function "512 x 512" #f ,(lambda () (set-size! *pc-settings* 512 512 #t))) - ) - (menu "Secrets" - (menu "PC cheats" - (flag "Big head jak" (the binteger (pc-cheats big-head)) dm-pc-cheats-pick-func) - (flag "Small head jak" (the binteger (pc-cheats small-head)) dm-pc-cheats-pick-func) - (flag "Big fist jak" (the binteger (pc-cheats big-fist)) dm-pc-cheats-pick-func) - (flag "Big head npcs" (the binteger (pc-cheats big-head-npc)) dm-pc-cheats-pick-func) - (flag "Huge head jak" (the binteger (pc-cheats huge-head)) dm-pc-cheats-pick-func) - (flag "Mirrored mode" (the binteger (pc-cheats mirror)) dm-pc-cheats-pick-func) - (flag "Blue eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-blue) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-blue))) - (flag "Red eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-blue eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-red) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-red))) - (flag "Green eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-blue)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-green) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-green))) - (flag "Yellow eco" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-blue eco-green)) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-yellow) - ) - (pc-cheats? (-> *pc-settings* cheats) eco-yellow))) - (flag "Invincibility" #f ,(lambda (arg (msg debug-menu-msg)) - (when (= msg (debug-menu-msg press)) - (logclear! (-> *target* state-flags) 16) - (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) invinc) - ) - (pc-cheats? (-> *pc-settings* cheats) invinc))) - (flag "Blue sidekick" (the binteger (pc-cheats sidekick-blue)) dm-pc-cheats-pick-func) - (flag "All flavas" (the binteger (pc-cheats tunes)) dm-pc-cheats-pick-func) - (flag "Real time tod" (the binteger (pc-cheats sky)) dm-pc-cheats-pick-func) - (flag "No textures" (the binteger (pc-cheats no-tex)) dm-pc-cheats-pick-func) - ;(flag "Hero mode" (the binteger (pc-cheats hero-mode)) dm-pc-cheats-pick-func) - ;(flag "Hard rats" (the binteger (pc-cheats hard-rats)) dm-pc-cheats-pick-func) - ) - ) - (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) - (flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) - (flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?))) - (flag "Subtitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* subtitles?))) - (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) - (menu "Subtitle speaker" - (flag "Off" #f dm-subtitle-setting) - (flag "On" #t dm-subtitle-setting) - (flag "Auto" auto dm-subtitle-setting) - ) - (menu "Subtitle language" - (flag "english" 0 dm-subtitle-language) - (flag "french" 1 dm-subtitle-language) - (flag "german" 2 dm-subtitle-language) - (flag "spanish" 3 dm-subtitle-language) - (flag "italian" 4 dm-subtitle-language) - (flag "uk-english" 6 dm-subtitle-language) - (flag "finnish" 8 dm-subtitle-language) - (flag "br-portuguese" 13 dm-subtitle-language) - ) - (menu "Text language" - (flag "english" 0 dm-text-language) - (flag "french" 1 dm-text-language) - (flag "german" 2 dm-text-language) - (flag "spanish" 3 dm-text-language) - (flag "italian" 4 dm-text-language) - (flag "japanese" 5 dm-text-language) - (flag "uk-english" 6 dm-text-language) - (flag "finnish" 8 dm-text-language) - (flag "br-portuguese" 13 dm-text-language) - (flag "hungarian" 14 dm-text-language) - (flag "polish" 19 dm-text-language) - (flag "lithuanian" 20 dm-text-language) - ) - (flag "Fallback Text Search" #f ,(dm-lambda-boolean-flag *fallback-text-lookup?*)) - (flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?))) - (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?))) - (menu "PS2 settings" - ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?))) - (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?))) - ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?))) - ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?))) - ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?))) - ) - (menu "Level of detail" - (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) - (flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?))) - (int-var "LOD Tfrag" 0 dm-lod-int 0 1 #t 0 2) - (int-var "LOD Tie" 1 dm-lod-int 0 1 #t 0 3) - ;(int-var "LOD Ocean" 2 dm-lod-int 0 1 #t 0 3) - (int-var "LOD Actor" 3 dm-lod-int 0 1 #t 0 3) - (function "Best quality" #f ,(lambda () (set! (-> *pc-settings* lod-force-tfrag) 0) - (set! (-> *pc-settings* lod-force-tie) 0) - ;(set! (-> *pc-settings* lod-force-ocean) 0) - (set! (-> *pc-settings* lod-force-actor) 0) - )) - (function "Worst quality" #f ,(lambda () (set! (-> *pc-settings* lod-force-tfrag) 2) - (set! (-> *pc-settings* lod-force-tie) 3) - ;(set! (-> *pc-settings* lod-force-ocean) 2) - (set! (-> *pc-settings* lod-force-actor) 3) - )) - ) - (menu "Framerate" - (flag "60" 60 dm-frame-rate-pick-func) - (flag "100" 100 dm-frame-rate-pick-func) - (flag "150" 150 dm-frame-rate-pick-func) - ) - (menu "MSAA" - (flag "Off" 1 dm-msaa-pick-func) - (flag "x2" 2 dm-msaa-pick-func) - (flag "x4" 4 dm-msaa-pick-func) - (flag "x8" 8 dm-msaa-pick-func) - (flag "x16" 16 dm-msaa-pick-func) - ) - (menu "LED" - (flag "hp" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-hp?))) - (flag "eco" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-eco?))) - (flag "heat" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-heat?))) - ) - (menu "Territory" - (flag "Automatic" -1 dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEA" (the binteger GAME_TERRITORY_SCEA) dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEE" (the binteger GAME_TERRITORY_SCEE) dm-territory-pick-func) - (flag "GAME_TERRITORY_SCEI" (the binteger GAME_TERRITORY_SCEI) dm-territory-pick-func) - ) - (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) - (flag "PS2 Actor vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-actor-vis?))) - (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) - (flag "Display git commit" *display-sha* dm-boolean-toggle-pick-func) - (flag "Extra hud elements" #f ,(dm-lambda-boolean-flag (-> *pc-settings* extra-hud?))) - (flag "Music fadein" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadein?))) - (flag "Music fadeout" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadeout?))) - (function "Reset" #f ,(lambda () (reset *pc-settings* #t))) - (function "Save" #f ,(lambda () (commit-to-file *pc-settings*))) - (function "Load" #f ,(lambda () (load-settings *pc-settings*))) - ) - ) - ) + (debug-menu-make-from-template *debug-menu-context* + '(menu "PC Settings" + (flag "Debug" #f ,(dm-lambda-boolean-flag (-> *pc-settings* debug?))) + (flag "Use native vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* use-vis?))) + (function "Toggle game aspect" + #f + ,(lambda () + (cond + ((= (-> *setting-control* default aspect-ratio) 'aspect4x3) + (set! (-> *setting-control* default aspect-ratio) 'aspect16x9)) + (else (set! (-> *setting-control* default aspect-ratio) 'aspect4x3))) + (set-aspect-ratio (-> *setting-control* default aspect-ratio)))) + (flag "Auto aspect" #f ,(dm-lambda-boolean-flag (-> *pc-settings* aspect-ratio-auto?))) + (menu "Aspect test" + (function "4 x 3" #f ,(lambda () (set-aspect! *pc-settings* 4 3))) + (function "16 x 9" #f ,(lambda () (set-aspect! *pc-settings* 16 9))) + (function "64 x 27 (21:9)" #f ,(lambda () (set-aspect! *pc-settings* 64 27))) + (function "16 x 10" #f ,(lambda () (set-aspect! *pc-settings* 16 10))) + (function "2 x 1" #f ,(lambda () (set-aspect! *pc-settings* 2 1))) + (function "37 x 20" #f ,(lambda () (set-aspect! *pc-settings* 37 20))) + (function "21 x 9" #f ,(lambda () (set-aspect! *pc-settings* 21 9))) + (function "64 x 18" #f ,(lambda () (set-aspect! *pc-settings* 64 18))) + (int-var "Custom aspect X" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-x)) 20 1 #t 1 1000) + (int-var "Custom aspect Y" #f ,(dm-lambda-int-var (-> *pc-settings* aspect-custom-y)) 20 1 #t 1 1000) + (function "Custom" + #f + ,(lambda () + (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y))))) + (menu "Fullscreen" + (function "Windowed" #f ,(lambda () (set-display-mode! *pc-settings* 'windowed #t))) + (function "Fullscreen" #f ,(lambda () (set-display-mode! *pc-settings* 'fullscreen #t))) + (function "Borderless" #f ,(lambda () (set-display-mode! *pc-settings* 'borderless #t)))) + (menu "Sizes" + (function "640 x 480" #f ,(lambda () (set-size! *pc-settings* 640 480 #t))) + (function "640 x 360" #f ,(lambda () (set-size! *pc-settings* 640 360 #t))) + (function "720 x 540" #f ,(lambda () (set-size! *pc-settings* 720 540 #t))) + (function "960 x 540" #f ,(lambda () (set-size! *pc-settings* 960 540 #t))) + (function "800 x 600" #f ,(lambda () (set-size! *pc-settings* 800 600 #t))) + (function "960 x 720" #f ,(lambda () (set-size! *pc-settings* 960 720 #t))) + (function "1280 x 720" #f ,(lambda () (set-size! *pc-settings* 1280 720 #t))) + (function "1024 x 768" #f ,(lambda () (set-size! *pc-settings* 1024 768 #t))) + (function "1366 x 768" #f ,(lambda () (set-size! *pc-settings* 1366 768 #t))) + (function "1280 x 960" #f ,(lambda () (set-size! *pc-settings* 1280 960 #t))) + (function "1440 x 1080" #f ,(lambda () (set-size! *pc-settings* 1440 1080 #t))) + (function "1920 x 1080" #f ,(lambda () (set-size! *pc-settings* 1920 1080 #t))) + (function "1920 x 1440" #f ,(lambda () (set-size! *pc-settings* 1920 1440 #t))) + (function "2560 x 1440" #f ,(lambda () (set-size! *pc-settings* 2560 1440 #t))) + (function "2880 x 2160" #f ,(lambda () (set-size! *pc-settings* 2880 2160 #t))) + (function "3840 x 2160" #f ,(lambda () (set-size! *pc-settings* 3840 2160 #t))) + (function "512 x 224" #f ,(lambda () (set-size! *pc-settings* 512 224 #t))) + (function "512 x 256" #f ,(lambda () (set-size! *pc-settings* 512 256 #t))) + (function "512 x 448" #f ,(lambda () (set-size! *pc-settings* 512 448 #t))) + (function "512 x 512" #f ,(lambda () (set-size! *pc-settings* 512 512 #t)))) + (menu "Secrets" + (menu "PC cheats" + (flag "Big head jak" (the binteger (pc-cheats big-head)) dm-pc-cheats-pick-func) + (flag "Small head jak" (the binteger (pc-cheats small-head)) dm-pc-cheats-pick-func) + (flag "Big fist jak" (the binteger (pc-cheats big-fist)) dm-pc-cheats-pick-func) + (flag "Big head npcs" (the binteger (pc-cheats big-head-npc)) dm-pc-cheats-pick-func) + (flag "Huge head jak" (the binteger (pc-cheats huge-head)) dm-pc-cheats-pick-func) + (flag "Mirrored mode" (the binteger (pc-cheats mirror)) dm-pc-cheats-pick-func) + (flag "Blue eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-blue)) + (pc-cheats? (-> *pc-settings* cheats) eco-blue))) + (flag "Red eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-blue eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-red)) + (pc-cheats? (-> *pc-settings* cheats) eco-red))) + (flag "Green eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-yellow eco-blue)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-green)) + (pc-cheats? (-> *pc-settings* cheats) eco-green))) + (flag "Yellow eco" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *pc-settings* cheats) (pc-cheats eco-red eco-blue eco-green)) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) eco-yellow)) + (pc-cheats? (-> *pc-settings* cheats) eco-yellow))) + (flag "Invincibility" + #f + ,(lambda (arg (msg debug-menu-msg)) + (when (= msg (debug-menu-msg press)) + (logclear! (-> *target* state-flags) 16) + (pc-cheat-toggle-and-tune (-> *pc-settings* cheats) invinc)) + (pc-cheats? (-> *pc-settings* cheats) invinc))) + (flag "Blue sidekick" (the binteger (pc-cheats sidekick-blue)) dm-pc-cheats-pick-func) + (flag "All flavas" (the binteger (pc-cheats tunes)) dm-pc-cheats-pick-func) + (flag "Real time tod" (the binteger (pc-cheats sky)) dm-pc-cheats-pick-func) + (flag "No textures" (the binteger (pc-cheats no-tex)) dm-pc-cheats-pick-func) + ;(flag "Hero mode" (the binteger (pc-cheats hero-mode)) dm-pc-cheats-pick-func) + ;(flag "Hard rats" (the binteger (pc-cheats hard-rats)) dm-pc-cheats-pick-func) + )) + (flag "Letterbox" #f ,(dm-lambda-boolean-flag (-> *pc-settings* letterbox?))) + (flag "Skip movies" #f ,(dm-lambda-boolean-flag (-> *pc-settings* skip-movies?))) + (flag "Money starburst" #f ,(dm-lambda-boolean-flag (-> *pc-settings* money-starburst?))) + (flag "Subtitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* subtitles?))) + (flag "Hinttitles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* hinttitles?))) + (menu "Subtitle speaker" + (flag "Off" #f dm-subtitle-setting) + (flag "On" #t dm-subtitle-setting) + (flag "Auto" auto dm-subtitle-setting)) + (menu "Subtitle language" + (flag "english" 0 dm-subtitle-language) + (flag "french" 1 dm-subtitle-language) + (flag "german" 2 dm-subtitle-language) + (flag "spanish" 3 dm-subtitle-language) + (flag "italian" 4 dm-subtitle-language) + (flag "uk-english" 6 dm-subtitle-language) + (flag "finnish" 8 dm-subtitle-language) + (flag "br-portuguese" 13 dm-subtitle-language)) + (menu "Text language" + (flag "english" 0 dm-text-language) + (flag "french" 1 dm-text-language) + (flag "german" 2 dm-text-language) + (flag "spanish" 3 dm-text-language) + (flag "italian" 4 dm-text-language) + (flag "japanese" 5 dm-text-language) + (flag "uk-english" 6 dm-text-language) + (flag "finnish" 8 dm-text-language) + (flag "br-portuguese" 13 dm-text-language) + (flag "hungarian" 14 dm-text-language) + (flag "polish" 19 dm-text-language) + (flag "lithuanian" 20 dm-text-language)) + (flag "Fallback Text Search" #f ,(dm-lambda-boolean-flag *fallback-text-lookup?*)) + (flag "Discord RPC" #t ,(dm-lambda-boolean-flag (-> *pc-settings* discord-rpc?))) + (flag "Speedrunner Mode" #t ,(dm-lambda-boolean-flag (-> *pc-settings* speedrunner-mode?))) + (menu "PS2 settings" + ;(flag "PS2 Load speed" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-read-speed?))) + (flag "PS2 Particles" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-parts?))) + ;(flag "PS2 Music" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-music?))) + ;(flag "PS2 Sound effects" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-se?))) + ;(flag "PS2 Hints" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-hints?))) + ) + (menu "Level of detail" + (flag "PS2 LOD " #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-lod-dist?))) + (flag "Force Envmap" #f ,(dm-lambda-boolean-flag (-> *pc-settings* force-envmap?))) + (int-var "LOD Tfrag" 0 dm-lod-int 0 1 #t 0 2) + (int-var "LOD Tie" 1 dm-lod-int 0 1 #t 0 3) + ;(int-var "LOD Ocean" 2 dm-lod-int 0 1 #t 0 3) + (int-var "LOD Actor" 3 dm-lod-int 0 1 #t 0 3) + (function "Best quality" + #f + ,(lambda () + (set! (-> *pc-settings* lod-force-tfrag) 0) + (set! (-> *pc-settings* lod-force-tie) 0) + ;(set! (-> *pc-settings* lod-force-ocean) 0) + (set! (-> *pc-settings* lod-force-actor) 0))) + (function "Worst quality" + #f + ,(lambda () + (set! (-> *pc-settings* lod-force-tfrag) 2) + (set! (-> *pc-settings* lod-force-tie) 3) + ;(set! (-> *pc-settings* lod-force-ocean) 2) + (set! (-> *pc-settings* lod-force-actor) 3)))) + (menu "Framerate" + (flag "60" 60 dm-frame-rate-pick-func) + (flag "100" 100 dm-frame-rate-pick-func) + (flag "150" 150 dm-frame-rate-pick-func)) + (menu "MSAA" + (flag "Off" 1 dm-msaa-pick-func) + (flag "x2" 2 dm-msaa-pick-func) + (flag "x4" 4 dm-msaa-pick-func) + (flag "x8" 8 dm-msaa-pick-func) + (flag "x16" 16 dm-msaa-pick-func)) + (menu "LED" + (flag "hp" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-hp?))) + (flag "eco" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-eco?))) + (flag "heat" #f ,(dm-lambda-boolean-flag (-> *pc-settings* controller-led-heat?)))) + (menu "Territory" + (flag "Automatic" -1 dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEA" (the binteger GAME_TERRITORY_SCEA) dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEE" (the binteger GAME_TERRITORY_SCEE) dm-territory-pick-func) + (flag "GAME_TERRITORY_SCEI" (the binteger GAME_TERRITORY_SCEI) dm-territory-pick-func)) + (flag "V-sync" #f ,(dm-lambda-boolean-flag (-> *pc-settings* vsync?))) + (flag "PS2 Actor vis" #f ,(dm-lambda-boolean-flag (-> *pc-settings* ps2-actor-vis?))) + (flag "Display actor counts" *display-actor-counts* dm-boolean-toggle-pick-func) + (flag "Display git commit" *display-sha* dm-boolean-toggle-pick-func) + (flag "Extra hud elements" #f ,(dm-lambda-boolean-flag (-> *pc-settings* extra-hud?))) + (flag "Music fadein" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadein?))) + (flag "Music fadeout" #f ,(dm-lambda-boolean-flag (-> *pc-settings* music-fadeout?))) + (function "Reset" #f ,(lambda () (reset *pc-settings* #t))) + (function "Save" #f ,(lambda () (commit-to-file *pc-settings*))) + (function "Load" #f ,(lambda () (load-settings *pc-settings*)))))) (let* ((prog-menu (new 'debug 'debug-menu *debug-menu-context* "Progress menu")) (prog-menu-node (new-dm-submenu "Progress" prog-menu)) - (other-menu-node - (debug-menu-make-from-template *debug-menu-context* - '(menu "Other" - (flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func) - ;(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func) - (flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func) - (flag "Pad display" *display-pad-debug* dm-boolean-toggle-pick-func) - (flag "Display actor bank" *display-actor-bank* dm-boolean-toggle-pick-func) - (flag "Heap status" *display-heap-status* dm-boolean-toggle-pick-func) - (flag "Bug report" *display-bug-report* dm-boolean-toggle-pick-func) - (flag "Text boxes" *display-text-box* dm-boolean-toggle-pick-func) - (flag "Sidekick stats" *display-sidekick-stats* dm-boolean-toggle-pick-func) - (float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1) - (float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1) - (menu "Mood override" - (function "-- SIMPLE OVERRIDE" #f nothing) - (flag "Palette 0" 0 dm-mood-override-palette-pick-func) - (flag "Palette 1" 1 dm-mood-override-palette-pick-func) - (flag "Palette 2" 2 dm-mood-override-palette-pick-func) - (flag "Palette 3" 3 dm-mood-override-palette-pick-func) - (flag "Palette 4" 4 dm-mood-override-palette-pick-func) - (flag "Palette 5" 5 dm-mood-override-palette-pick-func) - (flag "Palette 6" 6 dm-mood-override-palette-pick-func) - (flag "Palette 7" 7 dm-mood-override-palette-pick-func) - (menu "Advanced" - (flag "Overwrite" copy dm-mood-override-pick-func) - (flag "Multiply" mult dm-mood-override-pick-func) - (float-fixed-var "Palette 0 Amt" 0 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 1 Amt" 1 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 2 Amt" 2 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 3 Amt" 3 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 4 Amt" 4 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 5 Amt" 5 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 6 Amt" 6 dm-mood-palette-float 0 10 #t 0 1000 3) - (float-fixed-var "Palette 7 Amt" 7 dm-mood-palette-float 0 10 #t 0 1000 3) - ) - ) - (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) - (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func) - ) - )) - (other-menu (-> (the-as debug-menu-item-submenu other-menu-node) submenu)) - ) + (other-menu-node (debug-menu-make-from-template *debug-menu-context* + '(menu "Other" + (flag "DECI Count" *display-deci-count* dm-boolean-toggle-pick-func) + ;(flag "Actor graph" *display-actor-graph* dm-boolean-toggle-pick-func) + (flag "Update vis outside bsp" *update-leaf-when-outside-bsp* dm-boolean-toggle-pick-func) + (flag "Pad display" *display-pad-debug* dm-boolean-toggle-pick-func) + (flag "Display actor bank" *display-actor-bank* dm-boolean-toggle-pick-func) + (flag "Heap status" *display-heap-status* dm-boolean-toggle-pick-func) + (flag "Bug report" *display-bug-report* dm-boolean-toggle-pick-func) + (flag "Text boxes" *display-text-box* dm-boolean-toggle-pick-func) + (flag "Sidekick stats" *display-sidekick-stats* dm-boolean-toggle-pick-func) + (float-var "Actor birth dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* birth-dist)) 20 1 #t 0 10000 1) + (float-var "Actor pause dist" #f ,(dm-lambda-meters-var (-> *ACTOR-bank* pause-dist)) 20 1 #t 0 10000 1) + (menu "Mood override" + (function "-- SIMPLE OVERRIDE" #f nothing) + (flag "Palette 0" 0 dm-mood-override-palette-pick-func) + (flag "Palette 1" 1 dm-mood-override-palette-pick-func) + (flag "Palette 2" 2 dm-mood-override-palette-pick-func) + (flag "Palette 3" 3 dm-mood-override-palette-pick-func) + (flag "Palette 4" 4 dm-mood-override-palette-pick-func) + (flag "Palette 5" 5 dm-mood-override-palette-pick-func) + (flag "Palette 6" 6 dm-mood-override-palette-pick-func) + (flag "Palette 7" 7 dm-mood-override-palette-pick-func) + (menu "Advanced" + (flag "Overwrite" copy dm-mood-override-pick-func) + (flag "Multiply" mult dm-mood-override-pick-func) + (float-fixed-var "Palette 0 Amt" 0 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 1 Amt" 1 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 2 Amt" 2 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 3 Amt" 3 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 4 Amt" 4 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 5 Amt" 5 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 6 Amt" 6 dm-mood-palette-float 0 10 #t 0 1000 3) + (float-fixed-var "Palette 7 Amt" 7 dm-mood-palette-float 0 10 #t 0 1000 3))) + (flag "Joint names" *display-joint-names* dm-boolean-toggle-pick-func) + (flag "Bone lines" *display-bones* dm-boolean-toggle-pick-func)))) + (other-menu (-> (the-as debug-menu-item-submenu other-menu-node) submenu))) (dotimes (i (progress-screen max)) (debug-menu-append-item prog-menu - (new-dm-func (new 'debug 'string 0 (enum->string progress-screen i)) i - (lambda ((val progress-screen)) - (activate-progress *dproc* val) - (set-master-mode 'progress) - ) - )) - ) + (new-dm-func (new 'debug 'string 0 (enum->string progress-screen i)) + i + (lambda ((val progress-screen)) + (activate-progress *dproc* val) + (set-master-mode 'progress))))) (debug-menu-append-item other-menu prog-menu-node) - - (debug-menu-append-item (-> *debug-menu-context* root-menu) other-menu-node) - ) - + (debug-menu-append-item (-> *debug-menu-context* root-menu) other-menu-node)) (debug-menu-append-item (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 4)) submenu) (debug-menu-make-collision-renderer-menu *debug-menu-context*)) - (debug-menu-append-item (-> (the debug-menu-item-submenu (car (-> *debug-menu-context* root-menu items))) submenu) (debug-menu-make-anim-tester-x-menu *debug-menu-context*)) - - (debug-menu-append-item (-> (the debug-menu-item-submenu (ref (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 19)) submenu items) 7)) submenu) - (debug-menu-make-music-player-menu *debug-menu-context*)) - - ) + (debug-menu-append-item (-> (the debug-menu-item-submenu + (ref (-> (the debug-menu-item-submenu (ref (-> *debug-menu-context* root-menu items) 19)) submenu items) 7)) + submenu) + (debug-menu-make-music-player-menu *debug-menu-context*))) (defun bg-custom ((level-name symbol)) "Modified version of bg for the PC Port custom levels." - ;; lookup info (format 0 "(bg-custom ~A)%" level-name) (let ((lev-info (lookup-level-info level-name))) (when (= lev-info default-level) (format 0 "Unable to (bg-custom ~A), the level was not found in *level-load-list*~%" level-name) - (return #f) - ) - + (return #f)) ;; kill jak (rip) (format 0 "doing stop~%") (stop 'play) - ;; kill levels (dotimes (i 2) - (unload! (-> *level* data i)) - ) - + (unload! (-> *level* data i))) ;; enable visiblity. the custom level won't use it, but we want it on so other levels can be loaded. (set! (-> *level* vis?) #t) - ;; disable border and play mode to prevent loading levels (set! (-> *level* border?) #f) (set! (-> *setting-control* default border-mode) #f) (set! (-> *level* play?) #f) - ;; disable actor vis (set! *vis-actors* #f) - (format 0 "doing level load~%") ;; allocate level. This may start the loading process, but won't finish it. (let ((lev (level-get-for-use *level* level-name 'active))) (when (not lev) (format 0 "Unable to load level, could not level-get-for-use~%") - (return #f) - ) + (return #f)) (format 0 "about to start load loop, game will freeze and hopefully come back soon~%") - ;; spin in a loop and load it. This will cause the game to freeze during the load, ;; but this is good enough for now. - (while (or (= (-> lev status) 'loading) - (= (-> lev status) 'loading-bt) - (= (-> lev status) 'login) - ) - (load-continue lev) - ) - + (while (or (= (-> lev status) 'loading) (= (-> lev status) 'loading-bt) (= (-> lev status) 'login)) + (load-continue lev)) (when (not (-> lev info continues)) - (format 0 "level info has no continues, can't load it.~%") - ) - - (let ((cont (car (-> lev info continues)))) - (start 'play (the continue-point cont)) - ) - + (format 0 "level info has no continues, can't load it.~%")) + (let ((cont (car (-> lev info continues)))) (start 'play (the continue-point cont))) (vis-load lev) (set! (-> lev all-visible?) #f) (set! (-> lev force-all-visible?) #t) - ;; reset things ;(initialize! *game-info* 'game (the-as game-save #f) (the-as string #f)) - ) - ) - ) - + ))) diff --git a/goal_src/jak1/pc/debug/entity-debug.gc b/goal_src/jak1/pc/debug/entity-debug.gc index 2d887d4701..63aa770afa 100644 --- a/goal_src/jak1/pc/debug/entity-debug.gc +++ b/goal_src/jak1/pc/debug/entity-debug.gc @@ -1,17 +1,13 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/text-h.gc") (require "pc/pckernel-common.gc") (require "engine/game/fact-h.gc") (require "engine/debug/debug.gc") (require "engine/game/game-info-h.gc") - #| - Entity debugging utilities. - |# (declare-file (debug)) @@ -20,231 +16,217 @@ (defmethod set-entity! ((obj entity-debug-inspect) (e entity)) "set the entity to inspect" - (set! (-> obj entity) e) (unless e (set! *display-actor-anim* (the string #f))) (set! (-> obj scroll-y) 0) - - e - ) + e) ;; custom entity functions for pc port (defun-debug entity-inspect-draw ((inspect-info entity-debug-inspect)) "draw text about an entity on screen" - (update-pad inspect-info 0) - (let* ((e (-> inspect-info entity)) (name (res-lump-struct e 'name string))) - (set! *display-actor-anim* (the string (and (-> inspect-info show-actor-info) name))) - ;; draw trans - (add-debug-x #t (bucket-id debug-no-zbuf) (-> e trans) (static-rgba 255 255 0 128)) - (if (or (not (-> inspect-info show-actor-info)) (!= (-> e type) entity-actor) (and (= (-> e type) entity-actor) (not (-> (the entity-actor e) extra process)))) + (let* ((e (-> inspect-info entity)) + (name (res-lump-struct e 'name string))) + (set! *display-actor-anim* (the string (and (-> inspect-info show-actor-info) name))) + ;; draw trans + (add-debug-x #t (bucket-id debug-no-zbuf) (-> e trans) (static-rgba 255 255 0 128)) + (if (or (not (-> inspect-info show-actor-info)) + (!= (-> e type) entity-actor) + (and (= (-> e type) entity-actor) (not (-> (the entity-actor e) extra process)))) (add-debug-text-3d #t (bucket-id debug-no-zbuf) name (-> e trans) (font-color red) (new 'static 'vector2h :y 8))) - - ;; start writing text - (let* ((begin-y (- 16 (* (-> inspect-info scroll-y) 8))) (cur-y begin-y) (y-adv 8)) - (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - ;; basic info, actor id, etc - (draw-string-xy - (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x~%R1/L1 scroll L3 toggle display-actor-info~%UP toggle display-long-info~%--------------------" (-> e type) name (length e) (asize-of e) (-> e aid)) - debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y (* 8 5)) - (cond - ((type-type? (-> e type) entity-actor) - (let ((actor (the entity-actor e))) - ;; print info for entity-actors - (draw-string-xy - (string-format "etype: ~A~%nav: ~A vis: ~D task: ~S" (-> actor etype) (!= #f (-> actor nav-mesh)) (-> actor vis-id) (game-task->string (-> actor task))) - debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y (* 8 2)) - ) - ) - ) - - ;; draw each tag in entity - (dotimes (i (length e)) - (let ((data (get-tag-index-data e i))) - - ;; tag info - (format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L:" i (-> e tag i name) (-> e tag i elt-type)) - - ;; tag data - special cases first - (cond - ;; some water-height info - ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) - (+! y-adv (* 8 1)) - (format *debug-temp-string* " ~mm ~mm ~mm~%(~S)" - (-> (the (pointer float) data) 0) - (-> (the (pointer float) data) 1) - (-> (the (pointer float) data) 2) - (begin (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) *temp-string*) - ) - ) - ;; some water-height info but with 5 elts - ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) - (+! y-adv (* 8 2)) - (format *debug-temp-string* " ~mm ~mm ~mm~%(~S)~%~mm" - (-> (the (pointer float) data) 0) - (-> (the (pointer float) data) 1) - (-> (the (pointer float) data) 2) - (begin (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) *temp-string*) - (-> (the (pointer float) data) 4) - ) - ) - ;; music flava (music ambients) - ((and (= (-> e tag i name) 'flava) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " (music-flava ~S)" (music-flava->string (-> (the (pointer music-flava) data) 0))) - ) - ;; text id (can be hint ambient) - ((and (= (-> e tag i name) 'text-id) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " (text-id ~S)" (text-id->string (-> (the (pointer text-id) data) 0))) - ) - ;; eco-info, like in vents, crates, or collectables in general - ((and (= (-> e tag i name) 'eco-info) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) int32)) - (format *debug-temp-string* " ~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0)))) - (if (= (pickup-type fuel-cell) (-> (the (pointer int32) data) 0)) - (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) 1)))) - (format *debug-temp-string* "~D" (-> (the (pointer int32) data) 1)) - ) - (if (= (pickup-type buzzer) (-> (the (pointer int32) data) 0)) - (format *debug-temp-string* " ~S" (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1))))) - ) - ) - ;; fact options, usually enemies or crates - ((and (= (-> e tag i name) 'options) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) uint32)) - (format *debug-temp-string* " (fact-options ") - (bit-enum->string fact-options (-> (the (pointer uint32) data) 0) *debug-temp-string*) - (format *debug-temp-string* ")") - ) - ;; these can be displayed visually with other tools. - ((and (= (-> e tag i name) 'visvol) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display actor-vis!") - ) - ((and (= (-> e tag i name) 'path) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display path marks!") - ) - ((and (= (-> e tag i name) 'vol) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) - (format *debug-temp-string* " display vol marks!") - ) - (else - ;; more generic tag info - (dotimes (ii (-> e tag i elt-count)) - (format *debug-temp-string* " ") - (case (-> e tag i elt-type) - ((string symbol type) - (format *debug-temp-string* "~A" (-> (the (pointer basic) data) ii))) - ((float) - (case (-> e tag i name) - ;; meters are better here - (('spring-height 'vis-dist 'height-info 'distance 'cam-notice-dist 'cam-vert 'cam-horz 'idle-distance - 'nearest-y-threshold 'center-point 'center-radius 'notice-dist 'trigger-height 'notice-top) - (format *debug-temp-string* "~mm" (-> (the (pointer float) data) ii)) - ) - ;; degrees are better for these - (('rotoffset 'fov 'rotmin 'rotmax 'tiltmin 'tiltmax 'rotspeed) - (format *debug-temp-string* "~rdeg" (-> (the (pointer float) data) ii)) - ) - (else - (format *debug-temp-string* "~f" (-> (the (pointer float) data) ii)) - ) - ) - ) - ((int8) (format *debug-temp-string* "~D" (-> (the (pointer int8) data) ii))) - ((int16) (format *debug-temp-string* "~D" (-> (the (pointer int16) data) ii))) - ((int32) - (case (-> e tag i name) - (('final-pickup 'pickup-type) - (format *debug-temp-string* "~S" (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) ii)))) - ) - (('alt-task) - (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) ii)))) - ) - (else - (format *debug-temp-string* "~D" (-> (the (pointer int32) data) ii)) - ) - ) - ) - ((uint8) - (case (-> e tag i name) - ;; not sure - (('shadow-mask) - (format *debug-temp-string* "#b~b" (-> (the (pointer uint8) data) ii)) - ) - (else - (format *debug-temp-string* "#x~x" (-> (the (pointer uint8) data) ii)) - ) - ) - ) - ((uint16) (format *debug-temp-string* "#x~x" (-> (the (pointer uint16) data) ii))) - ((uint32) - (case (-> e tag i name) - ;; actually actor-id - (('nav-mesh-actor 'open-actor 'trigger-actor 'path-actor 'state-actor 'alt-actor 'next-actor 'prev-actor - 'spawner-blocker-actor 'spawner-trigger-actor 'kill-actor 'fade-actor 'water-actor 'target-actor) - (format *debug-temp-string* "~%#x~x (~S)" (-> (the (pointer uint32) data) ii) - (res-lump-struct (entity-by-aid (-> (the (pointer uint32) data) ii)) 'name string)) - (+! y-adv 8) - ) - ;; used for fuel-cell - (('movie-mask) - (format *debug-temp-string* "#b~b" (-> (the (pointer uint32) data) ii)) - ) - (else - (format *debug-temp-string* "#x~x" (-> (the (pointer uint32) data) ii)) - ) - ) - ) - ((vector) - (case (-> e tag i name) - ;; guess - (('movie-pos) - (format *debug-temp-string* "~%(~mm ~mm ~mm ~rdeg)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - ;; not super useful - (('nav-mesh-sphere) - (format *debug-temp-string* "~%(~mm ~mm ~mm ~mm)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - (else - (format *debug-temp-string* "~%(~f ~f ~f ~f)" - (-> (the (inline-array vector) data) ii x) - (-> (the (inline-array vector) data) ii y) - (-> (the (inline-array vector) data) ii z) - (-> (the (inline-array vector) data) ii w) - ) - ) - ) - (+! y-adv 8)) - ;; no clue! please report this. + ;; start writing text + (let* ((begin-y (- 16 (* (-> inspect-info scroll-y) 8))) + (cur-y begin-y) + (y-adv 8)) + (with-dma-buffer-add-bucket ((debug-buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + ;; basic info, actor id, etc + (draw-string-xy (string-format "~3L~A~0L ~A~%tags: ~D size: ~D aid: #x~x~%R1/L1 scroll L3 toggle display-actor-info~%UP toggle display-long-info~%--------------------" + (-> e type) + name + (length e) + (asize-of e) + (-> e aid)) + debug-buf + 352 + cur-y + (font-color default) + (font-flags shadow kerning middle)) + (+! cur-y (* 8 5)) + (cond + ((type-type? (-> e type) entity-actor) + (let ((actor (the entity-actor e))) + ;; print info for entity-actors + (draw-string-xy (string-format "etype: ~A~%nav: ~A vis: ~D task: ~S" + (-> actor etype) + (!= #f (-> actor nav-mesh)) + (-> actor vis-id) + (game-task->string (-> actor task))) + debug-buf + 352 + cur-y + (font-color default) + (font-flags shadow kerning middle)) + (+! cur-y (* 8 2))))) + ;; draw each tag in entity + (dotimes (i (length e)) + (let ((data (get-tag-index-data e i))) + ;; tag info + (format (clear *debug-temp-string*) "~3L~2D)~0L ~20L~A~0L:" i (-> e tag i name) (-> e tag i elt-type)) + ;; tag data - special cases first + (cond + ;; some water-height info + ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) + (+! y-adv (* 8 1)) + (format *debug-temp-string* + " ~mm ~mm ~mm~%(~S)" + (-> (the (pointer float) data) 0) + (-> (the (pointer float) data) 1) + (-> (the (pointer float) data) 2) + (begin + (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) + *temp-string*))) + ;; some water-height info but with 5 elts + ((and (= (-> e tag i name) 'water-height) (= (-> e tag i elt-count) 4) (= (-> e tag i elt-type) float)) + (+! y-adv (* 8 2)) + (format *debug-temp-string* + " ~mm ~mm ~mm~%(~S)~%~mm" + (-> (the (pointer float) data) 0) + (-> (the (pointer float) data) 1) + (-> (the (pointer float) data) 2) + (begin + (bit-enum->string water-flags (the int (-> (the (pointer float) data) 3)) (clear *temp-string*)) + *temp-string*) + (-> (the (pointer float) data) 4))) + ;; music flava (music ambients) + ((and (= (-> e tag i name) 'flava) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " (music-flava ~S)" (music-flava->string (-> (the (pointer music-flava) data) 0)))) + ;; text id (can be hint ambient) + ((and (= (-> e tag i name) 'text-id) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " (text-id ~S)" (text-id->string (-> (the (pointer text-id) data) 0)))) + ;; eco-info, like in vents, crates, or collectables in general + ((and (= (-> e tag i name) 'eco-info) (= (-> e tag i elt-count) 2) (= (-> e tag i elt-type) int32)) + (format *debug-temp-string* " ~S " (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) 0)))) + (if (= (pickup-type fuel-cell) (-> (the (pointer int32) data) 0)) + (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) 1)))) + (format *debug-temp-string* "~D" (-> (the (pointer int32) data) 1))) + (if (= (pickup-type buzzer) (-> (the (pointer int32) data) 0)) + (format *debug-temp-string* + " ~S" + (game-task->string (the-as game-task (logand #xffff (-> (the (pointer int32) data) 1))))))) + ;; fact options, usually enemies or crates + ((and (= (-> e tag i name) 'options) (= (-> e tag i elt-count) 1) (= (-> e tag i elt-type) uint32)) + (format *debug-temp-string* " (fact-options ") + (bit-enum->string fact-options (-> (the (pointer uint32) data) 0) *debug-temp-string*) + (format *debug-temp-string* ")")) + ;; these can be displayed visually with other tools. + ((and (= (-> e tag i name) 'visvol) + (= (-> e tag i elt-count) 2) + (= (-> e tag i elt-type) vector) + (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display actor-vis!")) + ((and (= (-> e tag i name) 'path) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display path marks!")) + ((and (= (-> e tag i name) 'vol) (= (-> e tag i elt-type) vector) (not (-> inspect-info show-long-info))) + (format *debug-temp-string* " display vol marks!")) (else - (format *debug-temp-string* "" (-> e tag i elt-type)) - (set! ii (the int (-> e tag i elt-count))) - ) - ) - ) - ) - ) - - ;; draw a string for each tag instead of all at once. allows using smaller strings. - (draw-string-xy *debug-temp-string* debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) - (+! cur-y y-adv) - (set! y-adv 8) - - )) - ;; set max scroll based on how large the whole text was, ignore first 20 lines. - (set! (-> inspect-info scroll-y-max) (max 0 (+ -20 (/ (- cur-y begin-y) 8)))) - - ) - ))) - - + ;; more generic tag info + (dotimes (ii (-> e tag i elt-count)) + (format *debug-temp-string* " ") + (case (-> e tag i elt-type) + ((string symbol type) (format *debug-temp-string* "~A" (-> (the (pointer basic) data) ii))) + ((float) + (case (-> e tag i name) + ;; meters are better here + (('spring-height 'vis-dist + 'height-info + 'distance + 'cam-notice-dist + 'cam-vert + 'cam-horz + 'idle-distance + 'nearest-y-threshold + 'center-point + 'center-radius + 'notice-dist + 'trigger-height + 'notice-top) + (format *debug-temp-string* "~mm" (-> (the (pointer float) data) ii))) + ;; degrees are better for these + (('rotoffset 'fov 'rotmin 'rotmax 'tiltmin 'tiltmax 'rotspeed) + (format *debug-temp-string* "~rdeg" (-> (the (pointer float) data) ii))) + (else (format *debug-temp-string* "~f" (-> (the (pointer float) data) ii))))) + ((int8) (format *debug-temp-string* "~D" (-> (the (pointer int8) data) ii))) + ((int16) (format *debug-temp-string* "~D" (-> (the (pointer int16) data) ii))) + ((int32) + (case (-> e tag i name) + (('final-pickup 'pickup-type) + (format *debug-temp-string* "~S" (pickup-type->string (the-as pickup-type (-> (the (pointer int32) data) ii))))) + (('alt-task) (format *debug-temp-string* "~S" (game-task->string (the-as game-task (-> (the (pointer int32) data) ii))))) + (else (format *debug-temp-string* "~D" (-> (the (pointer int32) data) ii))))) + ((uint8) + (case (-> e tag i name) + ;; not sure + (('shadow-mask) (format *debug-temp-string* "#b~b" (-> (the (pointer uint8) data) ii))) + (else (format *debug-temp-string* "#x~x" (-> (the (pointer uint8) data) ii))))) + ((uint16) (format *debug-temp-string* "#x~x" (-> (the (pointer uint16) data) ii))) + ((uint32) + (case (-> e tag i name) + ;; actually actor-id + (('nav-mesh-actor 'open-actor + 'trigger-actor + 'path-actor + 'state-actor + 'alt-actor + 'next-actor + 'prev-actor + 'spawner-blocker-actor + 'spawner-trigger-actor + 'kill-actor + 'fade-actor + 'water-actor + 'target-actor) + (format *debug-temp-string* + "~%#x~x (~S)" + (-> (the (pointer uint32) data) ii) + (res-lump-struct (entity-by-aid (-> (the (pointer uint32) data) ii)) 'name string)) + (+! y-adv 8)) + ;; used for fuel-cell + (('movie-mask) (format *debug-temp-string* "#b~b" (-> (the (pointer uint32) data) ii))) + (else (format *debug-temp-string* "#x~x" (-> (the (pointer uint32) data) ii))))) + ((vector) + (case (-> e tag i name) + ;; guess + (('movie-pos) + (format *debug-temp-string* + "~%(~mm ~mm ~mm ~rdeg)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w))) + ;; not super useful + (('nav-mesh-sphere) + (format *debug-temp-string* + "~%(~mm ~mm ~mm ~mm)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w))) + (else + (format *debug-temp-string* + "~%(~f ~f ~f ~f)" + (-> (the (inline-array vector) data) ii x) + (-> (the (inline-array vector) data) ii y) + (-> (the (inline-array vector) data) ii z) + (-> (the (inline-array vector) data) ii w)))) + (+! y-adv 8)) + ;; no clue! please report this. + (else + (format *debug-temp-string* "" (-> e tag i elt-type)) + (set! ii (the int (-> e tag i elt-count)))))))) + ;; draw a string for each tag instead of all at once. allows using smaller strings. + (draw-string-xy *debug-temp-string* debug-buf 352 cur-y (font-color default) (font-flags shadow kerning middle)) + (+! cur-y y-adv) + (set! y-adv 8))) + ;; set max scroll based on how large the whole text was, ignore first 20 lines. + (set! (-> inspect-info scroll-y-max) (max 0 (+ -20 (/ (- cur-y begin-y) 8)))))))) diff --git a/goal_src/jak1/pc/debug/pc-debug-common.gc b/goal_src/jak1/pc/debug/pc-debug-common.gc index 0a374e4107..edd4a4a0b9 100644 --- a/goal_src/jak1/pc/debug/pc-debug-common.gc +++ b/goal_src/jak1/pc/debug/pc-debug-common.gc @@ -1,13 +1,11 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel/gstring.gc") (require "engine/math/math.gc") - #| Various debugging displays made for the pc port. This file is shared for all games. - |# +|# ;; debug-only file! (declare-file (debug)) @@ -17,54 +15,70 @@ ;; ---------------------- (defconstant MEM_BAR_WIDTH 104) ;; total width of the bar + (defconstant MEM_BAR_HEIGHT 8) ;; total height of the bar + (defconstant MEM_BAR_HORZ_PAD 8) ;; horizontal padding for the bar text + (defconstant MEM_BAR_NUM 7) ;; amount of bars (override later if wanted) + (defconstant MEM_BAR_BG_COL (static-rgba 64 64 64 64)) ;; color for the empty part of the bar + (defconstant MEM_BAR_RIGHT 480) ;; x coord for the right side of the bar list + (defconstant MEM_BAR_BOTTOM 224) ;; x coord for the bottom side of the bar list (defconstant MEM_BAR_Y (- MEM_BAR_BOTTOM 4 (* MEM_BAR_HEIGHT MEM_BAR_NUM))) ;; y coord for top side of the bar list (defmacro draw-memory-bar-generic (buf &key remain &key total &key name &key idx &key color) - "draw a memory usage bar" - `(let* ( - (total (the float ,total)) - (remain (the float ,remain)) - (bar-width (the int (/ (the float MEM_BAR_WIDTH) (-> *pc-settings* aspect-ratio-scale)))) - (bar-x (- MEM_BAR_RIGHT bar-width MEM_BAR_HORZ_PAD)) ;; x coord for left side of the bar list - (used-p (if (zero? total) 0.0 (/ (- total remain) total))) - (used-x (the int (* used-p bar-width))) - (used-y (+ MEM_BAR_Y (* ,idx MEM_BAR_HEIGHT))) - ) - (draw-sprite2d-xy ,buf bar-x used-y used-x MEM_BAR_HEIGHT ,color) - (draw-sprite2d-xy ,buf (+ bar-x used-x) used-y (- bar-width used-x) MEM_BAR_HEIGHT MEM_BAR_BG_COL) - (if (zero? total) (set! used-x (the int (* 0.5 bar-width)))) - (draw-string-xy ,name ,buf (- bar-x MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning right)) - (draw-string-xy (if (zero? total) "NO HEAP" (string-format "~,,2f%" (* used-p 100))) ,buf (+ bar-x used-x) used-y (font-color default) (font-flags shadow kerning middle)) - (draw-string-xy (string-format "~,,1fM" (/ total (* 1024 1024))) ,buf (+ bar-x bar-width MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning middle-vert)) - ) - ) + "draw a memory usage bar" + `(let* ((total (the float ,total)) + (remain (the float ,remain)) + (bar-width (the int (/ (the float MEM_BAR_WIDTH) (-> *pc-settings* aspect-ratio-scale)))) + (bar-x (- MEM_BAR_RIGHT bar-width MEM_BAR_HORZ_PAD)) ;; x coord for left side of the bar list + (used-p (if (zero? total) 0.0 (/ (- total remain) total))) + (used-x (the int (* used-p bar-width))) + (used-y (+ MEM_BAR_Y (* ,idx MEM_BAR_HEIGHT)))) + (draw-sprite2d-xy ,buf bar-x used-y used-x MEM_BAR_HEIGHT ,color) + (draw-sprite2d-xy ,buf (+ bar-x used-x) used-y (- bar-width used-x) MEM_BAR_HEIGHT MEM_BAR_BG_COL) + (if (zero? total) (set! used-x (the int (* 0.5 bar-width)))) + (draw-string-xy ,name ,buf (- bar-x MEM_BAR_HORZ_PAD) used-y (font-color red) (font-flags shadow kerning right)) + (draw-string-xy (if (zero? total) "NO HEAP" (string-format "~,,2f%" (* used-p 100))) + ,buf + (+ bar-x used-x) + used-y + (font-color default) + (font-flags shadow kerning middle)) + (draw-string-xy (string-format "~,,1fM" (/ total (* 1024 1024))) + ,buf + (+ bar-x bar-width MEM_BAR_HORZ_PAD) + used-y + (font-color red) + (font-flags shadow kerning middle-vert)))) (defmacro draw-memory-bar-kheap (buf heap &key (name #f) &key idx &key color) - "draw a memory usage bar for a kheap" + "draw a memory usage bar for a kheap" `(let ((heap ,heap)) - (draw-memory-bar-generic ,buf - :remain (&- (-> heap top) (-> heap current)) - :total (&- (-> heap top-base) (-> heap base)) - :name ,(if name name (symbol->string heap)) - :idx ,idx - :color ,color) - ) - ) + (draw-memory-bar-generic ,buf + :remain + (&- (-> heap top) (-> heap current)) + :total + (&- (-> heap top-base) (-> heap base)) + :name + ,(if name name (symbol->string heap)) + :idx ,idx + :color ,color))) + (defmacro draw-memory-bar-dead-pool-heap (buf heap &key (name #f) &key idx &key color) - "draw a memory usage bar for a dead-pool-heap (actor heap)" - `(let* ((heap ,heap) (pool-total (memory-total heap))) - (draw-memory-bar-generic ,buf - :remain (- pool-total (memory-used heap)) - :total pool-total - :name ,(if name name (symbol->string heap)) - :idx ,idx - :color ,color) - ) - ) + "draw a memory usage bar for a dead-pool-heap (actor heap)" + `(let* ((heap ,heap) + (pool-total (memory-total heap))) + (draw-memory-bar-generic ,buf + :remain + (- pool-total (memory-used heap)) + :total + pool-total + :name + ,(if name name (symbol->string heap)) + :idx ,idx + :color ,color))) diff --git a/goal_src/jak1/pc/debug/pc-debug-methods.gc b/goal_src/jak1/pc/debug/pc-debug-methods.gc index be7392d5b7..9454ba84ae 100644 --- a/goal_src/jak1/pc/debug/pc-debug-methods.gc +++ b/goal_src/jak1/pc/debug/pc-debug-methods.gc @@ -1,65 +1,63 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/hw/display.gc") (require "pc/debug/pc-debug-common.gc") (require "engine/math/quaternion-h.gc") (require "engine/game/game-info-h.gc") - #| Various debugging displays made for the pc port. This file includes overrides or game-specific implementations. - |# +|# ;; debug-only file! (declare-file (debug)) - (defmethod print-debug-misc ((obj pc-settings-jak1)) - "prints various miscellaneous debug text to the game console, according to what's enabled in this object." - + "prints various miscellaneous debug text to the game console, according to what's enabled in this object." (when *display-bug-report* (format *stdcon* "~0kbug-report ~A~%" *user*) - (format *stdcon* "nick ~A continue ~S~%" (-> *load-state* vis-nick) (-> *game-info* current-continue name)) - (dotimes (i (-> *level* length)) - (format *stdcon* "level ~D ~12A ~A~%" i (-> *level* level i name) (-> *level* level i display?)) - ) - (format *stdcon* "music ~A (f: ~D/~S)~%" (-> *setting-control* current music) (-> *setting-control* current sound-flava) (music-flava->string (the-as music-flava (-> *setting-control* default sound-flava)))) - (format *stdcon* "sound ~A ~A~%" *sound-bank-1* *sound-bank-2*) - (let ((pos (target-pos 0))) - (format *stdcon* "target ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z)) - ) - (let ((pos (camera-pos))) - (format *stdcon* "cam-trans ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z)) - ) - (let ((rot (new 'stack 'quaternion))) - (matrix->quaternion rot (-> *math-camera* camera-rot)) - (format *stdcon* "cam-rot ~f ~f ~f ~f~%" (-> rot x) (-> rot y) (-> rot z) (-> rot w)) - ) - (format *stdcon* "~1k") - ) - ) - + (format *stdcon* "nick ~A continue ~S~%" (-> *load-state* vis-nick) (-> *game-info* current-continue name)) + (dotimes (i (-> *level* length)) + (format *stdcon* "level ~D ~12A ~A~%" i (-> *level* level i name) (-> *level* level i display?))) + (format *stdcon* + "music ~A (f: ~D/~S)~%" + (-> *setting-control* current music) + (-> *setting-control* current sound-flava) + (music-flava->string (the-as music-flava (-> *setting-control* default sound-flava)))) + (format *stdcon* "sound ~A ~A~%" *sound-bank-1* *sound-bank-2*) + (let ((pos (target-pos 0))) (format *stdcon* "target ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z))) + (let ((pos (camera-pos))) (format *stdcon* "cam-trans ~m ~m ~m~%" (-> pos x) (-> pos y) (-> pos z))) + (let ((rot (new 'stack 'quaternion))) + (matrix->quaternion rot (-> *math-camera* camera-rot)) + (format *stdcon* "cam-rot ~f ~f ~f ~f~%" (-> rot x) (-> rot y) (-> rot z) (-> rot w))) + (format *stdcon* "~1k"))) (defconstant MEM_BAR_NUM 7) ;; amount of memory usage bars (override later if wanted) + (defmethod draw-memory ((obj pc-settings) (buf dma-buffer)) - "draw the memory heap status in the bottom right corner" - - (when *display-heap-status* - (draw-memory-bar-kheap buf global :idx 0 :color (static-rgba 32 32 255 64)) - (draw-memory-bar-kheap buf debug :idx 1 :color (static-rgba 255 32 32 64)) - (draw-memory-bar-kheap buf (-> *level* level 0 heap) :name "l0" :idx 2 :color (static-rgba 32 255 255 64)) - (draw-memory-bar-kheap buf (-> *level* level 1 heap) :name "l1" :idx 3 :color (static-rgba 255 32 255 64)) - (draw-memory-bar-dead-pool-heap buf *nk-dead-pool* :name "actor" :idx 4 :color (static-rgba 32 255 32 64)) - (draw-memory-bar-generic buf - :remain (* 16 (dma-buffer-free (-> (current-frame) global-buf))) - :total (length (-> (current-frame) global-buf)) - :name "dma-global" :idx 5 :color (static-rgba 32 32 255 64)) - (draw-memory-bar-generic buf - :remain (* 16 (dma-buffer-free (-> (current-frame) debug-buf))) - :total (length (-> (current-frame) debug-buf)) - :name "dma-debug" :idx 6 :color (static-rgba 255 32 32 64)) - #t) - ) - - + "draw the memory heap status in the bottom right corner" + (when *display-heap-status* + (draw-memory-bar-kheap buf global :idx 0 :color (static-rgba 32 32 255 64)) + (draw-memory-bar-kheap buf debug :idx 1 :color (static-rgba 255 32 32 64)) + (draw-memory-bar-kheap buf (-> *level* level 0 heap) :name "l0" :idx 2 :color (static-rgba 32 255 255 64)) + (draw-memory-bar-kheap buf (-> *level* level 1 heap) :name "l1" :idx 3 :color (static-rgba 255 32 255 64)) + (draw-memory-bar-dead-pool-heap buf *nk-dead-pool* :name "actor" :idx 4 :color (static-rgba 32 255 32 64)) + (draw-memory-bar-generic buf + :remain + (* 16 (dma-buffer-free (-> (current-frame) global-buf))) + :total + (length (-> (current-frame) global-buf)) + :name "dma-global" + :idx 5 + :color + (static-rgba 32 32 255 64)) + (draw-memory-bar-generic buf + :remain + (* 16 (dma-buffer-free (-> (current-frame) debug-buf))) + :total + (length (-> (current-frame) debug-buf)) + :name "dma-debug" + :idx 6 + :color + (static-rgba 255 32 32 64)) + #t)) diff --git a/goal_src/jak1/pc/features/autosplit-h.gc b/goal_src/jak1/pc/features/autosplit-h.gc index aab3489091..fa7ce0303d 100644 --- a/goal_src/jak1/pc/features/autosplit-h.gc +++ b/goal_src/jak1/pc/features/autosplit-h.gc @@ -1,9 +1,7 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel-defs.gc") - ;; LiveSplit ASL requires all settings to initalized _before_ you connect the process ;; Therefore everything has to be laid out in a predictable fashion before hand ;; So this is a lot of hard-coding, but not too bad when just copied from the debug menu code @@ -11,165 +9,167 @@ ;; DO NOT change the order, appending to the end is safe! (deftype autosplit-info-jak1 (structure) (;; General stats - (num-power-cells uint32) - (num-orbs uint32) - (num-scout-flies uint32) + (num-power-cells uint32) + (num-orbs uint32) + (num-scout-flies uint32) ;; orbs per-level - (training-num-orbs uint8) - (village1-num-orbs uint8) - (beach-num-orbs uint8) - (jungle-num-orbs uint8) - (misty-num-orbs uint8) - (firecanyon-num-orbs uint8) - (village2-num-orbs uint8) - (sunken-num-orbs uint8) - (swamp-num-orbs uint8) - (rolling-num-orbs uint8) - (ogre-num-orbs uint8) - (village3-num-orbs uint8) - (snow-num-orbs uint8) - (cave-num-orbs uint8) - (lavatube-num-orbs uint8) - (citadel-num-orbs uint8) + (training-num-orbs uint8) + (village1-num-orbs uint8) + (beach-num-orbs uint8) + (jungle-num-orbs uint8) + (misty-num-orbs uint8) + (firecanyon-num-orbs uint8) + (village2-num-orbs uint8) + (sunken-num-orbs uint8) + (swamp-num-orbs uint8) + (rolling-num-orbs uint8) + (ogre-num-orbs uint8) + (village3-num-orbs uint8) + (snow-num-orbs uint8) + (cave-num-orbs uint8) + (lavatube-num-orbs uint8) + (citadel-num-orbs uint8) ;; scout flies per-level - (training-num-scout-flies uint8) - (village1-num-scout-flies uint8) - (beach-num-scout-flies uint8) - (jungle-num-scout-flies uint8) - (misty-num-scout-flies uint8) - (firecanyon-num-scout-flies uint8) - (village2-num-scout-flies uint8) - (sunken-num-scout-flies uint8) - (swamp-num-scout-flies uint8) - (rolling-num-scout-flies uint8) - (ogre-num-scout-flies uint8) - (village3-num-scout-flies uint8) - (snow-num-scout-flies uint8) - (cave-num-scout-flies uint8) - (lavatube-num-scout-flies uint8) - (citadel-num-scout-flies uint8) + (training-num-scout-flies uint8) + (village1-num-scout-flies uint8) + (beach-num-scout-flies uint8) + (jungle-num-scout-flies uint8) + (misty-num-scout-flies uint8) + (firecanyon-num-scout-flies uint8) + (village2-num-scout-flies uint8) + (sunken-num-scout-flies uint8) + (swamp-num-scout-flies uint8) + (rolling-num-scout-flies uint8) + (ogre-num-scout-flies uint8) + (village3-num-scout-flies uint8) + (snow-num-scout-flies uint8) + (cave-num-scout-flies uint8) + (lavatube-num-scout-flies uint8) + (citadel-num-scout-flies uint8) ;; Version Info (it's so far down because it was an after thought!) - (version-major uint16) - (version-minor uint16) - (padding-stats uint8 164) ;; padding for future growth + (version-major uint16) + (version-minor uint16) + (padding-stats uint8 164) ;; padding for future growth ;; loading/cutscene/control related info - (game-hash uint32) - (in-cutscene? symbol) - (is-loading? symbol) - (padding-controls uint8 200) ;; padding for future growth + (game-hash uint32) + (in-cutscene? symbol) + (is-loading? symbol) + (padding-controls uint8 200) ;; padding for future growth ;; need-resolution tasks - (res-training-gimmie uint8) - (res-training-door uint8) - (res-training-climb uint8) - (res-training-buzzer uint8) - (res-jungle-eggtop uint8) - (res-jungle-lurkerm uint8) - (res-jungle-tower uint8) - (res-jungle-fishgame uint8) - (res-jungle-plant uint8) - (res-jungle-buzzer uint8) - (res-jungle-canyon-end uint8) - (res-jungle-temple-door uint8) - (res-village1-yakow uint8) - (res-village1-mayor-money uint8) - (res-village1-uncle-money uint8) - (res-village1-oracle-money1 uint8) - (res-village1-oracle-money2 uint8) - (res-village1-buzzer uint8) - (res-beach-ecorocks uint8) - (res-beach-pelican uint8) - (res-beach-flutflut uint8) - (res-beach-seagull uint8) - (res-beach-cannon uint8) - (res-beach-buzzer uint8) - (res-beach-gimmie uint8) - (res-beach-sentinel uint8) - (res-misty-muse uint8) - (res-misty-boat uint8) - (res-misty-warehouse uint8) - (res-misty-cannon uint8) - (res-misty-bike uint8) - (res-misty-buzzer uint8) - (res-misty-bike-jump uint8) - (res-misty-eco-challenge uint8) - (res-village2-gambler-money uint8) + (res-training-gimmie uint8) + (res-training-door uint8) + (res-training-climb uint8) + (res-training-buzzer uint8) + (res-jungle-eggtop uint8) + (res-jungle-lurkerm uint8) + (res-jungle-tower uint8) + (res-jungle-fishgame uint8) + (res-jungle-plant uint8) + (res-jungle-buzzer uint8) + (res-jungle-canyon-end uint8) + (res-jungle-temple-door uint8) + (res-village1-yakow uint8) + (res-village1-mayor-money uint8) + (res-village1-uncle-money uint8) + (res-village1-oracle-money1 uint8) + (res-village1-oracle-money2 uint8) + (res-village1-buzzer uint8) + (res-beach-ecorocks uint8) + (res-beach-pelican uint8) + (res-beach-flutflut uint8) + (res-beach-seagull uint8) + (res-beach-cannon uint8) + (res-beach-buzzer uint8) + (res-beach-gimmie uint8) + (res-beach-sentinel uint8) + (res-misty-muse uint8) + (res-misty-boat uint8) + (res-misty-warehouse uint8) + (res-misty-cannon uint8) + (res-misty-bike uint8) + (res-misty-buzzer uint8) + (res-misty-bike-jump uint8) + (res-misty-eco-challenge uint8) + (res-village2-gambler-money uint8) (res-village2-geologist-money uint8) - (res-village2-warrior-money uint8) - (res-village2-oracle-money1 uint8) - (res-village2-oracle-money2 uint8) - (res-village2-buzzer uint8) - (res-swamp-billy uint8) - (res-swamp-flutflut uint8) - (res-swamp-battle uint8) - (res-swamp-tether-1 uint8) - (res-swamp-tether-2 uint8) - (res-swamp-tether-3 uint8) - (res-swamp-tether-4 uint8) - (res-swamp-buzzer uint8) - (res-swamp-arm uint8) - (res-sunken-platforms uint8) - (res-sunken-pipe uint8) - (res-sunken-slide uint8) - (res-sunken-room uint8) - (res-sunken-sharks uint8) - (res-sunken-buzzer uint8) - (res-sunken-top-of-helix uint8) - (res-sunken-spinning-room uint8) - (res-rolling-race uint8) - (res-rolling-robbers uint8) - (res-rolling-moles uint8) - (res-rolling-plants uint8) - (res-rolling-lake uint8) - (res-rolling-buzzer uint8) - (res-rolling-ring-chase-1 uint8) - (res-rolling-ring-chase-2 uint8) - (res-snow-eggtop uint8) - (res-snow-ram uint8) - (res-snow-fort uint8) - (res-snow-ball uint8) - (res-snow-bunnies uint8) - (res-snow-buzzer uint8) - (res-snow-bumpers uint8) - (res-snow-cage uint8) - (res-red-eggtop uint8) - (res-firecanyon-buzzer uint8) - (res-firecanyon-end uint8) - (res-citadel-sage-green uint8) - (res-citadel-sage-blue uint8) - (res-citadel-sage-red uint8) - (res-citadel-sage-yellow uint8) - (res-citadel-buzzer uint8) - (res-village3-extra1 uint8) - (res-village3-buzzer uint8) - (res-village3-miner-money1 uint8) - (res-village3-miner-money2 uint8) - (res-village3-miner-money3 uint8) - (res-village3-miner-money4 uint8) - (res-village3-oracle-money1 uint8) - (res-village3-oracle-money2 uint8) - (res-cave-gnawers uint8) - (res-cave-dark-crystals uint8) - (res-cave-dark-climb uint8) - (res-cave-robot-climb uint8) - (res-cave-swing-poles uint8) - (res-cave-spider-tunnel uint8) - (res-cave-platforms uint8) - (res-cave-buzzer uint8) - (res-ogre-boss uint8) - (res-ogre-end uint8) - (res-ogre-buzzer uint8) - (res-ogre-secret uint8) - (res-lavatube-end uint8) - (res-lavatube-buzzer uint8) - (res-lavatube-balls uint8) - (res-intro uint8) + (res-village2-warrior-money uint8) + (res-village2-oracle-money1 uint8) + (res-village2-oracle-money2 uint8) + (res-village2-buzzer uint8) + (res-swamp-billy uint8) + (res-swamp-flutflut uint8) + (res-swamp-battle uint8) + (res-swamp-tether-1 uint8) + (res-swamp-tether-2 uint8) + (res-swamp-tether-3 uint8) + (res-swamp-tether-4 uint8) + (res-swamp-buzzer uint8) + (res-swamp-arm uint8) + (res-sunken-platforms uint8) + (res-sunken-pipe uint8) + (res-sunken-slide uint8) + (res-sunken-room uint8) + (res-sunken-sharks uint8) + (res-sunken-buzzer uint8) + (res-sunken-top-of-helix uint8) + (res-sunken-spinning-room uint8) + (res-rolling-race uint8) + (res-rolling-robbers uint8) + (res-rolling-moles uint8) + (res-rolling-plants uint8) + (res-rolling-lake uint8) + (res-rolling-buzzer uint8) + (res-rolling-ring-chase-1 uint8) + (res-rolling-ring-chase-2 uint8) + (res-snow-eggtop uint8) + (res-snow-ram uint8) + (res-snow-fort uint8) + (res-snow-ball uint8) + (res-snow-bunnies uint8) + (res-snow-buzzer uint8) + (res-snow-bumpers uint8) + (res-snow-cage uint8) + (res-red-eggtop uint8) + (res-firecanyon-buzzer uint8) + (res-firecanyon-end uint8) + (res-citadel-sage-green uint8) + (res-citadel-sage-blue uint8) + (res-citadel-sage-red uint8) + (res-citadel-sage-yellow uint8) + (res-citadel-buzzer uint8) + (res-village3-extra1 uint8) + (res-village3-buzzer uint8) + (res-village3-miner-money1 uint8) + (res-village3-miner-money2 uint8) + (res-village3-miner-money3 uint8) + (res-village3-miner-money4 uint8) + (res-village3-oracle-money1 uint8) + (res-village3-oracle-money2 uint8) + (res-cave-gnawers uint8) + (res-cave-dark-crystals uint8) + (res-cave-dark-climb uint8) + (res-cave-robot-climb uint8) + (res-cave-swing-poles uint8) + (res-cave-spider-tunnel uint8) + (res-cave-platforms uint8) + (res-cave-buzzer uint8) + (res-ogre-boss uint8) + (res-ogre-end uint8) + (res-ogre-buzzer uint8) + (res-ogre-secret uint8) + (res-lavatube-end uint8) + (res-lavatube-buzzer uint8) + (res-lavatube-balls uint8) + (res-intro uint8) ;; misc other tasks - (int-finalboss-movies uint8) - (unk-finalboss-movies uint8) - (int-jungle-fishgame uint8) + (int-finalboss-movies uint8) + (unk-finalboss-movies uint8) + (int-jungle-fishgame uint8) ;; end marker just to make things look nice in a memory view - (end-marker uint8 4))) + (end-marker uint8 4))) (define-extern *autosplit-info-jak1* autosplit-info-jak1) + (define-extern update-autosplit-info-jak1 (function none)) + (define-extern update-autosplit-jak1-new-game (function none)) diff --git a/goal_src/jak1/pc/features/autosplit.gc b/goal_src/jak1/pc/features/autosplit.gc index 9b57e91a24..bbf33f7010 100644 --- a/goal_src/jak1/pc/features/autosplit.gc +++ b/goal_src/jak1/pc/features/autosplit.gc @@ -1,15 +1,15 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/game-info.gc") (require "pc/features/autosplit-h.gc") - - (define *autosplit-info-jak1* (new 'static 'autosplit-info-jak1)) + ;; Setup markers (charp<-string (-> *autosplit-info-jak1* end-marker) "end") + ;; Setup Padding (charp<-string (-> *autosplit-info-jak1* padding-stats) "padding-stats!") + (charp<-string (-> *autosplit-info-jak1* padding-controls) "padding-controls!") (defmacro autosplit-flag-task-complete! (field-name task-name) @@ -21,9 +21,8 @@ (set! (-> *autosplit-info-jak1* num-power-cells) (the int (-> *game-info* fuel))) (set! (-> *autosplit-info-jak1* num-orbs) (the int (-> *game-info* money-total))) (set! (-> *autosplit-info-jak1* num-scout-flies) (the int (-> *game-info* buzzer-total))) - ;; per-level orb/fly counts - ;; when we are blacked out in loads the value of these are temporarily 0, and that messes with the auto splitter. + ;; when we are blacked out in loads the value of these are temporarily 0, and that messes with the auto splitter. (let ((in-blackout? (>= (-> *game-info* blackout-time) (current-time)))) (when (not in-blackout?) (set! (-> *autosplit-info-jak1* training-num-orbs) (-> *game-info* money-per-level (level-task-data-index training))) @@ -31,7 +30,8 @@ (set! (-> *autosplit-info-jak1* beach-num-orbs) (-> *game-info* money-per-level (level-task-data-index beach))) (set! (-> *autosplit-info-jak1* jungle-num-orbs) (-> *game-info* money-per-level (level-task-data-index jungle))) (set! (-> *autosplit-info-jak1* misty-num-orbs) (-> *game-info* money-per-level (level-task-data-index misty))) - (set! (-> *autosplit-info-jak1* firecanyon-num-orbs) (-> *game-info* money-per-level (level-task-data-index firecanyon))) + (set! (-> *autosplit-info-jak1* firecanyon-num-orbs) + (-> *game-info* money-per-level (level-task-data-index firecanyon))) (set! (-> *autosplit-info-jak1* village2-num-orbs) (-> *game-info* money-per-level (level-task-data-index village2))) (set! (-> *autosplit-info-jak1* sunken-num-orbs) (-> *game-info* money-per-level (level-task-data-index sunken))) (set! (-> *autosplit-info-jak1* swamp-num-orbs) (-> *game-info* money-per-level (level-task-data-index swamp))) @@ -42,27 +42,120 @@ (set! (-> *autosplit-info-jak1* cave-num-orbs) (-> *game-info* money-per-level (level-task-data-index cave))) (set! (-> *autosplit-info-jak1* lavatube-num-orbs) (-> *game-info* money-per-level (level-task-data-index lavatube))) (set! (-> *autosplit-info-jak1* citadel-num-orbs) (-> *game-info* money-per-level (level-task-data-index citadel))) - - (set! (-> *autosplit-info-jak1* training-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index training) task-info (-> *level-task-data* (level-task-data-index training) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village1-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village1) task-info (-> *level-task-data* (level-task-data-index village1) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* beach-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index beach) task-info (-> *level-task-data* (level-task-data-index beach) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* jungle-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index jungle) task-info (-> *level-task-data* (level-task-data-index jungle) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* misty-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index misty) task-info (-> *level-task-data* (level-task-data-index misty) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* firecanyon-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index firecanyon) task-info (-> *level-task-data* (level-task-data-index firecanyon) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village2-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village2) task-info (-> *level-task-data* (level-task-data-index village2) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* sunken-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index sunken) task-info (-> *level-task-data* (level-task-data-index sunken) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* swamp-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index swamp) task-info (-> *level-task-data* (level-task-data-index swamp) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* rolling-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index rolling) task-info (-> *level-task-data* (level-task-data-index rolling) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* ogre-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index ogre) task-info (-> *level-task-data* (level-task-data-index ogre) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* village3-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index village3) task-info (-> *level-task-data* (level-task-data-index village3) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* snow-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index snow) task-info (-> *level-task-data* (level-task-data-index snow) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* cave-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index cave) task-info (-> *level-task-data* (level-task-data-index cave) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* lavatube-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index lavatube) task-info (-> *level-task-data* (level-task-data-index lavatube) buzzer-task-index) task-id))) - (set! (-> *autosplit-info-jak1* citadel-num-scout-flies) (buzzer-count *game-info* (-> *level-task-data* (level-task-data-index citadel) task-info (-> *level-task-data* (level-task-data-index citadel) buzzer-task-index) task-id)))) - ) + (set! (-> *autosplit-info-jak1* training-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index training) + task-info + (-> *level-task-data* (level-task-data-index training) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village1-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village1) + task-info + (-> *level-task-data* (level-task-data-index village1) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* beach-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index beach) + task-info + (-> *level-task-data* (level-task-data-index beach) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* jungle-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index jungle) + task-info + (-> *level-task-data* (level-task-data-index jungle) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* misty-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index misty) + task-info + (-> *level-task-data* (level-task-data-index misty) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* firecanyon-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index firecanyon) + task-info + (-> *level-task-data* (level-task-data-index firecanyon) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village2-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village2) + task-info + (-> *level-task-data* (level-task-data-index village2) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* sunken-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index sunken) + task-info + (-> *level-task-data* (level-task-data-index sunken) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* swamp-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index swamp) + task-info + (-> *level-task-data* (level-task-data-index swamp) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* rolling-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index rolling) + task-info + (-> *level-task-data* (level-task-data-index rolling) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* ogre-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index ogre) + task-info + (-> *level-task-data* (level-task-data-index ogre) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* village3-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index village3) + task-info + (-> *level-task-data* (level-task-data-index village3) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* snow-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index snow) + task-info + (-> *level-task-data* (level-task-data-index snow) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* cave-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index cave) + task-info + (-> *level-task-data* (level-task-data-index cave) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* lavatube-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index lavatube) + task-info + (-> *level-task-data* (level-task-data-index lavatube) buzzer-task-index) + task-id))) + (set! (-> *autosplit-info-jak1* citadel-num-scout-flies) + (buzzer-count *game-info* + (-> *level-task-data* + (level-task-data-index citadel) + task-info + (-> *level-task-data* (level-task-data-index citadel) buzzer-task-index) + task-id))))) ;; loading/cutscene related flags (set! (-> *autosplit-info-jak1* in-cutscene?) (real-movie?)) - ;; need resolution flags (autosplit-flag-task-complete! res-training-gimmie training-gimmie) (autosplit-flag-task-complete! res-training-door training-door) @@ -169,16 +262,16 @@ (autosplit-flag-task-complete! res-lavatube-buzzer lavatube-buzzer) (autosplit-flag-task-complete! res-lavatube-balls lavatube-balls) (autosplit-flag-task-complete! res-intro intro) - ;; other misc tasks - (set! (-> *autosplit-info-jak1* int-finalboss-movies) (if (task-closed? (game-task finalboss-movies) (task-status need-introduction)) 1 0)) - (set! (-> *autosplit-info-jak1* unk-finalboss-movies) (if (task-closed? (game-task finalboss-movies) (task-status unknown)) 1 0)) - (set! (-> *autosplit-info-jak1* int-jungle-fishgame) (if (task-closed? (game-task jungle-fishgame) (task-status need-introduction)) 1 0)) - + (set! (-> *autosplit-info-jak1* int-finalboss-movies) + (if (task-closed? (game-task finalboss-movies) (task-status need-introduction)) 1 0)) + (set! (-> *autosplit-info-jak1* unk-finalboss-movies) + (if (task-closed? (game-task finalboss-movies) (task-status unknown)) 1 0)) + (set! (-> *autosplit-info-jak1* int-jungle-fishgame) + (if (task-closed? (game-task jungle-fishgame) (task-status need-introduction)) 1 0)) ;; end (none)) - (defun update-autosplit-jak1-new-game () (set! (-> *autosplit-info-jak1* game-hash) (pc-get-unix-timestamp)) (none)) diff --git a/goal_src/jak1/pc/features/speedruns-h.gc b/goal_src/jak1/pc/features/speedruns-h.gc index d58a74496a..7377b3bfed 100644 --- a/goal_src/jak1/pc/features/speedruns-h.gc +++ b/goal_src/jak1/pc/features/speedruns-h.gc @@ -1,58 +1,57 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel-defs.gc") - (defenum speedrun-category :type uint32 ;; Main Categories - (full-game 0) ;; Full game run (any category for now, can repurpose as Any% if we split them out later) + (full-game 0) ;; Full game run (any category for now, can repurpose as Any% if we split them out later) ;; (full-game-100 1) ;; 100% ;; (full-game-noLTS 2) ;; No Lava Tube skip ;; (full-game-noFCS 3) ;; No Fire Canyon skip ;; (full-game-orbless 4) ;; Orbless ;; (full-game-all-flies 5) ;; All Flies ;; (full-game-all-orbs 6) ;; All Orbs - ;; Individual Levels - (il-training 100) ;; Geyser Rock IL - (il-village1 101) ;; Sandover Village IL - (il-beach 102) ;; Sentinel Beach IL - (il-jungle 103) ;; Forbidden Jungle IL - (il-misty 104) ;; Misty Island IL - (il-firecanyon 105) ;; Fire Canyon IL - (il-village2 106) ;; Rock Village IL - (il-sunken 107) ;; Lost Precursor City IL - (il-swamp 108) ;; Boggy Swamp IL - (il-rolling 109) ;; Precursor Basin IL - (il-ogre 110) ;; Mountain Pass IL - (il-village3 111) ;; Volcanic Crater IL - (il-snow 112) ;; Snowy Mountain IL - (il-cave 113) ;; Spider Cave IL - (il-lavatube 114) ;; Lava Tube IL - (il-citadel 115) ;; Gol and Maia's Citadel IL - + (il-training 100) ;; Geyser Rock IL + (il-village1 101) ;; Sandover Village IL + (il-beach 102) ;; Sentinel Beach IL + (il-jungle 103) ;; Forbidden Jungle IL + (il-misty 104) ;; Misty Island IL + (il-firecanyon 105) ;; Fire Canyon IL + (il-village2 106) ;; Rock Village IL + (il-sunken 107) ;; Lost Precursor City IL + (il-swamp 108) ;; Boggy Swamp IL + (il-rolling 109) ;; Precursor Basin IL + (il-ogre 110) ;; Mountain Pass IL + (il-village3 111) ;; Volcanic Crater IL + (il-snow 112) ;; Snowy Mountain IL + (il-cave 113) ;; Spider Cave IL + (il-lavatube 114) ;; Lava Tube IL + (il-citadel 115) ;; Gol and Maia's Citadel IL ;; Category Extensions - (new-game-plus 116) ;; NG+ - (hub1-100 117) ;; Hub 1 100% (same as full game) - (hub2-100 118) ;; Hub 2 100% (all of Hub 1 completed) - (hub3-100 119) ;; Hub 3 100% (all of Hub 1+2 completed) - (all-cutscenes 120) ;; All Cutscenes + (new-game-plus 116) ;; NG+ + (hub1-100 117) ;; Hub 1 100% (same as full game) + (hub2-100 118) ;; Hub 2 100% (all of Hub 1 completed) + (hub3-100 119) ;; Hub 3 100% (all of Hub 1+2 completed) + (all-cutscenes 120) ;; All Cutscenes ) (deftype speedrun-info-jak1 (structure) - ( - (category speedrun-category) + ((category speedrun-category) (needs-post-blackout-setup? symbol) - (should-display? symbol) - ) - ) + (should-display? symbol))) (define-extern start-speedrun (function speedrun-category none)) + (define-extern is-speedrun-category? (function symbol symbol)) + (define-extern hide-speedrun-display (function none)) + (define-extern speedrun-start-full-game-run (function none)) + (define-extern setup-speedrun-post-blackout (function none)) + (define-extern speedrun-mode-update (function none)) + (define-extern speedrun-draw-settings (function none)) diff --git a/goal_src/jak1/pc/features/speedruns.gc b/goal_src/jak1/pc/features/speedruns.gc index 6c0d4fdc82..77af3f9577 100644 --- a/goal_src/jak1/pc/features/speedruns.gc +++ b/goal_src/jak1/pc/features/speedruns.gc @@ -1,118 +1,125 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/game-save.gc") (require "engine/game/task/game-task-h.gc") (require "pc/pckernel-common.gc") (require "pc/features/autosplit-h.gc") - (define *speedrun-info* (new 'static 'speedrun-info-jak1 :should-display? #t :needs-post-blackout-setup? #f)) -(define *hub1-cell-list* (new 'static 'boxed-array :type game-task - (game-task training-gimmie) - (game-task training-door) - (game-task training-climb) - (game-task training-buzzer) - (game-task village1-mayor-money) - (game-task village1-uncle-money) - (game-task village1-yakow) - (game-task village1-oracle-money1) - (game-task village1-oracle-money2) - (game-task village1-buzzer) - (game-task beach-ecorocks) - (game-task beach-flutflut) - (game-task beach-pelican) - (game-task beach-seagull) - (game-task beach-cannon) - (game-task beach-gimmie) - (game-task beach-sentinel) - (game-task beach-buzzer) - (game-task jungle-lurkerm) - (game-task jungle-tower) - (game-task jungle-eggtop) - (game-task jungle-plant) - (game-task jungle-fishgame) - (game-task jungle-canyon-end) - (game-task jungle-temple-door) - (game-task jungle-buzzer) - (game-task misty-muse) - (game-task misty-boat) - (game-task misty-cannon) - (game-task misty-warehouse) - (game-task misty-bike) - (game-task misty-bike-jump) - (game-task misty-eco-challenge) - (game-task misty-buzzer) - (game-task firecanyon-end) - (game-task firecanyon-buzzer) - )) +(define *hub1-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task training-gimmie) + (game-task training-door) + (game-task training-climb) + (game-task training-buzzer) + (game-task village1-mayor-money) + (game-task village1-uncle-money) + (game-task village1-yakow) + (game-task village1-oracle-money1) + (game-task village1-oracle-money2) + (game-task village1-buzzer) + (game-task beach-ecorocks) + (game-task beach-flutflut) + (game-task beach-pelican) + (game-task beach-seagull) + (game-task beach-cannon) + (game-task beach-gimmie) + (game-task beach-sentinel) + (game-task beach-buzzer) + (game-task jungle-lurkerm) + (game-task jungle-tower) + (game-task jungle-eggtop) + (game-task jungle-plant) + (game-task jungle-fishgame) + (game-task jungle-canyon-end) + (game-task jungle-temple-door) + (game-task jungle-buzzer) + (game-task misty-muse) + (game-task misty-boat) + (game-task misty-cannon) + (game-task misty-warehouse) + (game-task misty-bike) + (game-task misty-bike-jump) + (game-task misty-eco-challenge) + (game-task misty-buzzer) + (game-task firecanyon-end) + (game-task firecanyon-buzzer))) -(define *hub2-cell-list* (new 'static 'boxed-array :type game-task - (game-task village2-gambler-money) - (game-task village2-geologist-money) - (game-task village2-warrior-money) - (game-task village2-oracle-money1) - (game-task village2-oracle-money2) - (game-task village2-buzzer) - (game-task sunken-room) - (game-task sunken-pipe) - (game-task sunken-slide) - (game-task sunken-sharks) - (game-task sunken-platforms) - (game-task sunken-top-of-helix) - (game-task sunken-spinning-room) - (game-task sunken-buzzer) - (game-task swamp-flutflut) - (game-task swamp-billy) - (game-task swamp-battle) - (game-task swamp-tether-4) - (game-task swamp-tether-1) - (game-task swamp-tether-2) - (game-task swamp-tether-3) - (game-task swamp-buzzer) - (game-task rolling-moles) - (game-task rolling-robbers) - (game-task rolling-race) - (game-task rolling-lake) - (game-task rolling-plants) - (game-task rolling-ring-chase-1) - (game-task rolling-ring-chase-2) - (game-task rolling-buzzer) - (game-task ogre-boss) - (game-task ogre-end) - (game-task ogre-secret) - (game-task ogre-buzzer) - )) +(define *hub2-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task village2-gambler-money) + (game-task village2-geologist-money) + (game-task village2-warrior-money) + (game-task village2-oracle-money1) + (game-task village2-oracle-money2) + (game-task village2-buzzer) + (game-task sunken-room) + (game-task sunken-pipe) + (game-task sunken-slide) + (game-task sunken-sharks) + (game-task sunken-platforms) + (game-task sunken-top-of-helix) + (game-task sunken-spinning-room) + (game-task sunken-buzzer) + (game-task swamp-flutflut) + (game-task swamp-billy) + (game-task swamp-battle) + (game-task swamp-tether-4) + (game-task swamp-tether-1) + (game-task swamp-tether-2) + (game-task swamp-tether-3) + (game-task swamp-buzzer) + (game-task rolling-moles) + (game-task rolling-robbers) + (game-task rolling-race) + (game-task rolling-lake) + (game-task rolling-plants) + (game-task rolling-ring-chase-1) + (game-task rolling-ring-chase-2) + (game-task rolling-buzzer) + (game-task ogre-boss) + (game-task ogre-end) + (game-task ogre-secret) + (game-task ogre-buzzer))) -(define *hub3-cell-list* (new 'static 'boxed-array :type game-task - (game-task village3-miner-money1) - (game-task village3-miner-money2) - (game-task village3-miner-money3) - (game-task village3-miner-money4) - (game-task village3-oracle-money1) - (game-task village3-oracle-money2) - (game-task village3-extra1) - (game-task village3-buzzer) - (game-task snow-eggtop) - (game-task snow-ram) - (game-task snow-bumpers) - (game-task snow-cage) - (game-task snow-fort) - (game-task snow-ball) - (game-task snow-bunnies) - (game-task snow-buzzer) - (game-task cave-gnawers) - (game-task cave-dark-crystals) - (game-task cave-dark-climb) - (game-task cave-robot-climb) - (game-task cave-swing-poles) - (game-task cave-spider-tunnel) - (game-task cave-platforms) - (game-task cave-buzzer) - (game-task lavatube-end) - (game-task lavatube-buzzer) - )) +(define *hub3-cell-list* + (new 'static + 'boxed-array + :type + game-task + (game-task village3-miner-money1) + (game-task village3-miner-money2) + (game-task village3-miner-money3) + (game-task village3-miner-money4) + (game-task village3-oracle-money1) + (game-task village3-oracle-money2) + (game-task village3-extra1) + (game-task village3-buzzer) + (game-task snow-eggtop) + (game-task snow-ram) + (game-task snow-bumpers) + (game-task snow-cage) + (game-task snow-fort) + (game-task snow-ball) + (game-task snow-bunnies) + (game-task snow-buzzer) + (game-task cave-gnawers) + (game-task cave-dark-crystals) + (game-task cave-dark-climb) + (game-task cave-robot-climb) + (game-task cave-swing-poles) + (game-task cave-spider-tunnel) + (game-task cave-platforms) + (game-task cave-buzzer) + (game-task lavatube-end) + (game-task lavatube-buzzer))) ;; unused ;; (define *citadel-cell-list* (new 'static 'boxed-array :type game-task @@ -125,9 +132,7 @@ (defun is-speedrun-category? ((category symbol)) (and (-> *pc-settings* speedrunner-mode?) - (name= category (enum->string speedrun-category (-> *speedrun-info* category))) - ) - ) + (name= category (enum->string speedrun-category (-> *speedrun-info* category))))) (defun start-speedrun ((category speedrun-category)) ;; randomize game id so the autosplitter knows to restart @@ -138,296 +143,240 @@ (set! (-> *speedrun-info* should-display?) #t) (set! (-> *speedrun-info* needs-post-blackout-setup?) #t) ;; start new game with specified checkpoint, if any (otherwise we're resetting current category) - (if category - (set! (-> *speedrun-info* category) category) - ) + (if category (set! (-> *speedrun-info* category) category)) (case (-> *speedrun-info* category) (((speedrun-category full-game)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category il-training)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category il-village1)) - ;; spawn at the green sage hut warp gate - (initialize! *game-info* 'game (the-as game-save #f) "village1-warp") - ) + ;; spawn at the green sage hut warp gate + (initialize! *game-info* 'game (the-as game-save #f) "village1-warp")) (((speedrun-category il-beach)) - ;; spawn at beach - (initialize! *game-info* 'game (the-as game-save #f) "beach-start") - ) + ;; spawn at beach + (initialize! *game-info* 'game (the-as game-save #f) "beach-start")) (((speedrun-category il-jungle)) - ;; spawn at start of FJ - (initialize! *game-info* 'game (the-as game-save #f) "jungle-start") - ) + ;; spawn at start of FJ + (initialize! *game-info* 'game (the-as game-save #f) "jungle-start")) (((speedrun-category il-misty)) - ;; spawn at start of misty - (initialize! *game-info* 'game (the-as game-save #f) "misty-start") - ) + ;; spawn at start of misty + (initialize! *game-info* 'game (the-as game-save #f) "misty-start")) (((speedrun-category il-firecanyon)) - ;; spawn at start of fire canyon - (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-start") - ) + ;; spawn at start of fire canyon + (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-start")) (((speedrun-category il-village2)) - ;; spawn at rock village start - (initialize! *game-info* 'game (the-as game-save #f) "village2-start") - ) + ;; spawn at rock village start + (initialize! *game-info* 'game (the-as game-save #f) "village2-start")) (((speedrun-category il-sunken)) - ;; spawn at start of LPC - (initialize! *game-info* 'game (the-as game-save #f) "sunken-start") - ) + ;; spawn at start of LPC + (initialize! *game-info* 'game (the-as game-save #f) "sunken-start")) (((speedrun-category il-swamp)) - ;; spawn at start of boggy - (initialize! *game-info* 'game (the-as game-save #f) "swamp-start") - ) + ;; spawn at start of boggy + (initialize! *game-info* 'game (the-as game-save #f) "swamp-start")) (((speedrun-category il-rolling)) - ;; spawn at start of basin - (initialize! *game-info* 'game (the-as game-save #f) "rolling-start") - ) + ;; spawn at start of basin + (initialize! *game-info* 'game (the-as game-save #f) "rolling-start")) (((speedrun-category il-ogre)) - ;; spawn before klaww - (initialize! *game-info* 'game (the-as game-save #f) "ogre-start") - ) + ;; spawn before klaww + (initialize! *game-info* 'game (the-as game-save #f) "ogre-start")) (((speedrun-category il-village3)) - ;; spawn at start of volcanic crater - (initialize! *game-info* 'game (the-as game-save #f) "village3-start") - ) + ;; spawn at start of volcanic crater + (initialize! *game-info* 'game (the-as game-save #f) "village3-start")) (((speedrun-category il-snow)) - ;; spawn at start of snowy - (initialize! *game-info* 'game (the-as game-save #f) "snow-start") - ) + ;; spawn at start of snowy + (initialize! *game-info* 'game (the-as game-save #f) "snow-start")) (((speedrun-category il-cave)) - ;; spawn at start of spider cave - (initialize! *game-info* 'game (the-as game-save #f) "maincave-start") - ) + ;; spawn at start of spider cave + (initialize! *game-info* 'game (the-as game-save #f) "maincave-start")) (((speedrun-category il-lavatube)) - ;; spawn at start of lava tube - (initialize! *game-info* 'game (the-as game-save #f) "lavatube-start") - ) + ;; spawn at start of lava tube + (initialize! *game-info* 'game (the-as game-save #f) "lavatube-start")) (((speedrun-category il-citadel)) - ;; spawn outside first citadel door - (initialize! *game-info* 'game (the-as game-save #f) "citadel-entrance") - ) + ;; spawn outside first citadel door + (initialize! *game-info* 'game (the-as game-save #f) "citadel-entrance")) (((speedrun-category new-game-plus)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category hub1-100)) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "game-start") - ) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "game-start")) (((speedrun-category hub2-100)) - ;; spawn at end of fire canyon - (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-end") - ) + ;; spawn at end of fire canyon + (initialize! *game-info* 'game (the-as game-save #f) "firecanyon-end")) (((speedrun-category hub3-100)) - ;; spawn at end of mountain pass - (initialize! *game-info* 'game (the-as game-save #f) "ogre-end") - ) + ;; spawn at end of mountain pass + (initialize! *game-info* 'game (the-as game-save #f) "ogre-end")) (((speedrun-category all-cutscenes)) - ;; turn play hints back on - (set! (-> *setting-control* default play-hints) #t) - ;; don't allow cutscene skips - (set! (-> *pc-settings* skip-movies?) #f) - ;; spawn at the geyser warp gate checkpoint - (initialize! *game-info* 'game (the-as game-save #f) "intro-start") - ) + ;; turn play hints back on + (set! (-> *setting-control* default play-hints) #t) + ;; don't allow cutscene skips + (set! (-> *pc-settings* skip-movies?) #f) + ;; spawn at the geyser warp gate checkpoint + (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) (else - (format 0 "start-speedrun: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))) - ) - ) + (format 0 "start-speedrun: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))))) ;; ensure actor vis is enabled (set! (-> *pc-settings* ps2-actor-vis?) #t) ;; force FPS to `60` (set-frame-rate! *pc-settings* 60 #t) ;; enable auto saving by default (set! (-> *setting-control* default auto-save) #t) - (none) - ) + (none)) (defun setup-speedrun-post-blackout () - (when (and (-> *speedrun-info* needs-post-blackout-setup?) (>= (-> *display* base-frame-counter) (-> *game-info* blackout-time))) + (when (and (-> *speedrun-info* needs-post-blackout-setup?) + (>= (-> *display* base-frame-counter) (-> *game-info* blackout-time))) (set! (-> *speedrun-info* needs-post-blackout-setup?) #f) (case (-> *speedrun-info* category) (((speedrun-category full-game)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution))) (((speedrun-category il-training)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - (mark-text-as-seen *game-info* (text-id training-level-name)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + (mark-text-as-seen *game-info* (text-id training-level-name))) (((speedrun-category il-village1)) - ;; give enough orbs to buy all cells 120+120+90+90=420 - (set! (-> *game-info* money-total) 420.0) - (set! (-> *game-info* money) 420.0) - (mark-text-as-seen *game-info* (text-id village1-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90=420 + (set! (-> *game-info* money-total) 420.0) + (set! (-> *game-info* money) 420.0) + (mark-text-as-seen *game-info* (text-id village1-level-name))) (((speedrun-category il-beach)) - ;; unlock blue eco vent - (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) - (mark-text-as-seen *game-info* (text-id beach-level-name)) - ) - (((speedrun-category il-jungle)) - (mark-text-as-seen *game-info* (text-id jungle-level-name)) - ) + ;; unlock blue eco vent + (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) + (mark-text-as-seen *game-info* (text-id beach-level-name))) + (((speedrun-category il-jungle)) (mark-text-as-seen *game-info* (text-id jungle-level-name))) (((speedrun-category il-misty)) - ;; unlock fisherman's boat - (close-specific-task! (game-task jungle-fishgame) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-fishgame))) - (mark-text-as-seen *game-info* (text-id misty-level-name)) - ) + ;; unlock fisherman's boat + (close-specific-task! (game-task jungle-fishgame) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-fishgame))) + (mark-text-as-seen *game-info* (text-id misty-level-name))) (((speedrun-category il-firecanyon)) - ;; skip keira intro cutscene - (close-specific-task! (game-task firecanyon-assistant) (task-status need-reward-speech)) - ;; unlock blue eco vent - (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) - (mark-text-as-seen *game-info* (text-id firecanyon-level-name)) - ) + ;; skip keira intro cutscene + (close-specific-task! (game-task firecanyon-assistant) (task-status need-reward-speech)) + ;; unlock blue eco vent + (close-specific-task! (game-task jungle-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task jungle-eggtop))) + (mark-text-as-seen *game-info* (text-id firecanyon-level-name))) (((speedrun-category il-village2)) - ;; give enough orbs to buy all cells 120+120+90+90+90=510 - (set! (-> *game-info* money-total) 510.0) - (set! (-> *game-info* money) 510.0) - (mark-text-as-seen *game-info* (text-id village2-level-name)) - ) - (((speedrun-category il-sunken)) - (mark-text-as-seen *game-info* (text-id sunken-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90+90=510 + (set! (-> *game-info* money-total) 510.0) + (set! (-> *game-info* money) 510.0) + (mark-text-as-seen *game-info* (text-id village2-level-name))) + (((speedrun-category il-sunken)) (mark-text-as-seen *game-info* (text-id sunken-level-name))) (((speedrun-category il-swamp)) - ;; unlock flutflut - (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) - (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) - (mark-text-as-seen *game-info* (text-id swamp-level-name)) - ) + ;; unlock flutflut + (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) + (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) + (mark-text-as-seen *game-info* (text-id swamp-level-name))) (((speedrun-category il-rolling)) - ;; unlock zoomer - (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) - ;; unlock DMG - (close-specific-task! (game-task rolling-race) (task-status need-introduction)) - ;; unlock moles - (close-specific-task! (game-task rolling-moles) (task-status need-introduction)) - (mark-text-as-seen *game-info* (text-id rolling-level-name)) - ) + ;; unlock zoomer + (close-specific-task! (game-task village2-levitator) (task-status need-introduction)) + ;; unlock DMG + (close-specific-task! (game-task rolling-race) (task-status need-introduction)) + ;; unlock moles + (close-specific-task! (game-task rolling-moles) (task-status need-introduction)) + (mark-text-as-seen *game-info* (text-id rolling-level-name))) (((speedrun-category il-ogre)) - ;; skip klaww intro cutscene - (close-specific-task! (game-task ogre-boss) (task-status need-hint)) - ;; unlock yellow eco vent - (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) - (mark-text-as-seen *game-info* (text-id ogre-level-name)) - ) + ;; skip klaww intro cutscene + (close-specific-task! (game-task ogre-boss) (task-status need-hint)) + ;; unlock yellow eco vent + (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) + (mark-text-as-seen *game-info* (text-id ogre-level-name))) (((speedrun-category il-village3)) - ;; give enough orbs to buy all cells 120+120+90+90+90+90=600 - (set! (-> *game-info* money-total) 600.0) - (set! (-> *game-info* money) 600.0) - (mark-text-as-seen *game-info* (text-id village3-level-name)) - ) + ;; give enough orbs to buy all cells 120+120+90+90+90+90=600 + (set! (-> *game-info* money-total) 600.0) + (set! (-> *game-info* money) 600.0) + (mark-text-as-seen *game-info* (text-id village3-level-name))) (((speedrun-category il-snow)) - ;; unlock flutflut - (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) - ;; unlock gondola - (close-specific-task! (game-task village3-button) (task-status need-introduction)) - (mark-text-as-seen *game-info* (text-id snow-level-name)) - ) + ;; unlock flutflut + (close-specific-task! (game-task beach-flutflut) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task beach-flutflut))) + ;; unlock gondola + (close-specific-task! (game-task village3-button) (task-status need-introduction)) + (mark-text-as-seen *game-info* (text-id snow-level-name))) (((speedrun-category il-cave)) - ;; unlock yellow eco vent - (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) - (mark-text-as-seen *game-info* (text-id cave-level-name)) - ) + ;; unlock yellow eco vent + (close-specific-task! (game-task snow-eggtop) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task snow-eggtop))) + (mark-text-as-seen *game-info* (text-id cave-level-name))) (((speedrun-category il-lavatube)) - ;; skip keira intro cutscene - (close-specific-task! (game-task lavatube-start) (task-status need-reward-speech)) - (mark-text-as-seen *game-info* (text-id lavatube-level-name)) - ) + ;; skip keira intro cutscene + (close-specific-task! (game-task lavatube-start) (task-status need-reward-speech)) + (mark-text-as-seen *game-info* (text-id lavatube-level-name))) (((speedrun-category il-citadel)) - ;; remove invisible wall - (close-specific-task! (game-task lavatube-end) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task lavatube-end))) - ;; unlock door - (close-specific-task! (game-task village4-button) (task-status need-reward-speech)) - (mark-text-as-seen *game-info* (text-id citadel-level-name)) - ) + ;; remove invisible wall + (close-specific-task! (game-task lavatube-end) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (game-task lavatube-end))) + ;; unlock door + (close-specific-task! (game-task village4-button) (task-status need-reward-speech)) + (mark-text-as-seen *game-info* (text-id citadel-level-name))) (((speedrun-category new-game-plus)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; unlock hub2 cells - (dotimes (idx (length *hub2-cell-list*)) - (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx))) - ) - ;; unlock hub3 cells - (dotimes (idx (length *hub3-cell-list*)) - (close-specific-task! (-> *hub3-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub3-cell-list* idx))) - ) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; unlock hub2 cells + (dotimes (idx (length *hub2-cell-list*)) + (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx)))) + ;; unlock hub3 cells + (dotimes (idx (length *hub3-cell-list*)) + (close-specific-task! (-> *hub3-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub3-cell-list* idx))))) (((speedrun-category hub1-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution))) (((speedrun-category hub2-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; give all orbs from hub1 - (set! (-> *game-info* money-total) 600.0) ;; 50+50+150+150+150+50 - (set! (-> *game-info* money) 180.0) ;; 50+50+150+150+150+50 - (90+90+120+120) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; give all orbs from hub1 + (set! (-> *game-info* money-total) 600.0) ;; 50+50+150+150+150+50 + (set! (-> *game-info* money) 180.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + ) (((speedrun-category hub3-100)) - ;; skip intro cutscene - (close-specific-task! (game-task intro) (task-status need-resolution)) - ;; unlock hub1 cells - (dotimes (idx (length *hub1-cell-list*)) - (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx))) - ) - ;; unlock hub2 cells - (dotimes (idx (length *hub2-cell-list*)) - (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx))) - ) - ;; give all orbs from hub1+2 - (set! (-> *game-info* money-total) 1300.0) ;; 50+50+150+150+150+50 + 50+200+200+200+50 - (set! (-> *game-info* money) 370.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + 50+200+200+200+50 - (90+90+90+120+120) - ) + ;; skip intro cutscene + (close-specific-task! (game-task intro) (task-status need-resolution)) + ;; unlock hub1 cells + (dotimes (idx (length *hub1-cell-list*)) + (close-specific-task! (-> *hub1-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub1-cell-list* idx)))) + ;; unlock hub2 cells + (dotimes (idx (length *hub2-cell-list*)) + (close-specific-task! (-> *hub2-cell-list* idx) (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float (-> *hub2-cell-list* idx)))) + ;; give all orbs from hub1+2 + (set! (-> *game-info* money-total) 1300.0) ;; 50+50+150+150+150+50 + 50+200+200+200+50 + (set! (-> *game-info* money) 370.0) ;; 50+50+150+150+150+50 - (90+90+120+120) + 50+200+200+200+50 - (90+90+90+120+120) + ) (((speedrun-category all-cutscenes)) - ;; no post-blackout actions needed - ) + ;; no post-blackout actions needed + ) (else - (format 0 "setup-speedrun-post-blackout: unrecognized category ~S~%" (enum->string speedrun-category (-> *speedrun-info* category))) - ) - ) - ;; reset speedrun display (gets hidden on first collectable pickup) - (set! (-> *speedrun-info* should-display?) #t) - ;; reset actors to ensure any above changes take effect - (reset-actors 'life) - ;; autosave any changes back to file - (auto-save-command 'auto-save 0 0 *default-pool*) - ) - (none) - ) + (format 0 + "setup-speedrun-post-blackout: unrecognized category ~S~%" + (enum->string speedrun-category (-> *speedrun-info* category))))) + ;; reset speedrun display (gets hidden on first collectable pickup) + (set! (-> *speedrun-info* should-display?) #t) + ;; reset actors to ensure any above changes take effect + (reset-actors 'life) + ;; autosave any changes back to file + (auto-save-command 'auto-save 0 0 *default-pool*)) + (none)) (defun hide-speedrun-display () (set! (-> *speedrun-info* should-display?) #f) - (none) - ) + (none)) (defun speedrun-mode-update () "A per frame update for speedrunning related stuff" @@ -439,8 +388,7 @@ ;;Disable any active cheats (set! (-> *pc-settings* cheats) (the-as pc-cheats #x0)) ;; Run after-blackout speedrun setup (if needed) - (setup-speedrun-post-blackout) - ) + (setup-speedrun-post-blackout)) (none)) (defun speedrun-start-full-game-run () @@ -450,14 +398,15 @@ (defun speedrun-draw-settings () "Draw speedrun related settings in the bottom left corner" - (when (and (-> *pc-settings* speedrunner-mode?) - (not (paused?)) - (-> *speedrun-info* should-display?)) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id subtitle)) + (when (and (-> *pc-settings* speedrunner-mode?) (not (paused?)) (-> *speedrun-info* should-display?)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id subtitle)) (draw-string-xy (string-format "Speedrunner Mode ~%OpenGOAL Version: ~S ~%Category: ~S ~%Cutscene Skips ~A" *pc-settings-built-sha* (enum->string speedrun-category (-> *speedrun-info* category)) (-> *pc-settings* skip-movies?)) - buf 0 (- 220 (* 8 4)) (font-color flat-yellow) (font-flags shadow kerning)))) + buf + 0 + (- 220 (* 8 4)) + (font-color flat-yellow) + (font-flags shadow kerning)))) (none)) diff --git a/goal_src/jak1/pc/hud-classes-pc.gc b/goal_src/jak1/pc/hud-classes-pc.gc index 3b70c3a9d4..d93cbbe1c4 100644 --- a/goal_src/jak1/pc/hud-classes-pc.gc +++ b/goal_src/jak1/pc/hud-classes-pc.gc @@ -1,102 +1,69 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/hud.gc") (require "levels/common/battlecontroller.gc") - #| - Code for extra HUD elements in the PC port. - - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defconstant HUD_ICON_COUNT 6) -(defconstant HUD_PART_PC_AMOUNT 1) +(defconstant HUD_PART_PC_AMOUNT 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud processes and parts ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; a pc hud element -(deftype hud-pc (hud) - () - ) +(deftype hud-pc (hud) ()) ;; hud element for battles (deftype hud-battle-enemy (hud) - ((want-skel symbol) - (want-skel2 symbol) - - (last-battle handle) - (battle-entity entity-actor) - (battle-max int32) - (battle-alive int32) - (battle-mode symbol) + ((want-skel symbol) + (want-skel2 symbol) + (last-battle handle) + (battle-entity entity-actor) + (battle-max int32) + (battle-alive int32) + (battle-mode symbol) (last-task entity-actor) (task-entity entity-actor) (task-track int32) (task2-entity entity-actor) (task2-time time-frame) (task2-track int32) - - (last-level symbol) - (ready? symbol) - (kicked symbol) - (display-mode? symbol) - ) + (last-level symbol) + (ready? symbol) + (kicked symbol) + (display-mode? symbol)) (:methods - (make-enemy-icon (_type_ int symbol entity) int) - (kill-icon (_type_ int) int) - (kill-all-icons (_type_) int) - (update-display-status (_type_ symbol entity int symbol) int) - ) - ) - + (make-enemy-icon (_type_ int symbol entity) int) + (kill-icon (_type_ int) int) + (kill-all-icons (_type_) int) + (update-display-status (_type_ symbol entity int symbol) int))) ;; all pc hud elements (deftype hud-parts-pc (structure) - ((battle-enemy (pointer hud-battle-enemy)) - - (parts (pointer hud-pc) HUD_PART_PC_AMOUNT :offset 0) - ) - ) - - + ((battle-enemy (pointer hud-battle-enemy)) + (parts (pointer hud-pc) HUD_PART_PC_AMOUNT :offset 0))) ;;;---------------------------------------------- ;; globals ;;;---------------------------------------------- - ;; all of the pc hud elements -(define *hud-parts-pc* (new 'static 'hud-parts-pc - :battle-enemy #f - )) - - +(define *hud-parts-pc* (new 'static 'hud-parts-pc :battle-enemy #f)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud macros ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defmacro hud-pc-make-icon (obj max &key skel - &key x - &key y - &key z - &key scale-x - &key scale-y - &key (entity #f) - ) +(defmacro hud-pc-make-icon (obj max &key skel &key x &key y &key z &key scale-x &key scale-y &key (entity #f)) `(when (< (-> ,obj nb-of-icons) ,max) (let ((icon-idx (-> ,obj nb-of-icons))) (set! (-> ,obj icons icon-idx) (new 'static 'hud-icon)) @@ -106,9 +73,7 @@ (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) (set-vector! (-> (-> new-manipy) root scale) ,scale-x ,scale-y ,scale-x 1.0) (when #f - (send-event (ppointer->process new-manipy) 'trans-hook #f) - ) - ) + (send-event (ppointer->process new-manipy) 'trans-hook #f))) (set! (-> ,obj icons icon-idx icon) new-manipy) (when new-manipy (logior! (-> new-manipy 0 mask) (process-mask pause)) @@ -118,49 +83,45 @@ (set! (-> ,obj icons icon-idx icon-y) ,y) (set! (-> ,obj icons icon-idx icon-z) 0) (set! (-> ,obj icons icon-idx scale-x) ,scale-x) - (set! (-> ,obj icons icon-idx scale-y) ,scale-y) - ) - ) - ) - (+! (-> ,obj nb-of-icons) 1) - ) - ) + (set! (-> ,obj icons icon-idx scale-y) ,scale-y)))) + (+! (-> ,obj nb-of-icons) 1))) -(defmacro hud-pc-replace-icon (obj idx &key skel - &key z - &key (entity #f) - ) +(defmacro hud-pc-replace-icon (obj idx &key skel &key z &key (entity #f)) `(let ((new-manipy (manipy-spawn (new 'static 'vector :w 1.0) ,entity ,skel #f :to ,obj))) - (when new-manipy - (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud-with-hud-lights) - (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) - (set-vector! (-> (-> new-manipy) root scale) (-> ,obj icons ,idx scale-x) (-> ,obj icons ,idx scale-y) (-> ,obj icons ,idx scale-x) 1.0) - (when #f - (send-event (ppointer->process new-manipy) 'trans-hook #f) - ) - ) - (set! (-> ,obj icons ,idx icon) new-manipy) - (when new-manipy - (logior! (-> new-manipy 0 mask) (process-mask pause)) - (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) - (set! (-> (-> new-manipy) root trans z) ,z) - ) - ) - ) - + (when new-manipy + (set! (-> (-> new-manipy) draw dma-add-func) dma-add-process-drawable-hud-with-hud-lights) + (set-vector! (-> (-> new-manipy) root trans) 0.0 0.0 0.0 1.0) + (set-vector! (-> (-> new-manipy) root scale) + (-> ,obj icons ,idx scale-x) + (-> ,obj icons ,idx scale-y) + (-> ,obj icons ,idx scale-x) + 1.0) + (when #f + (send-event (ppointer->process new-manipy) 'trans-hook #f))) + (set! (-> ,obj icons ,idx icon) new-manipy) + (when new-manipy + (logior! (-> new-manipy 0 mask) (process-mask pause)) + (logclear! (-> new-manipy 0 mask) (process-mask menu progress)) + (set! (-> (-> new-manipy) root trans z) ,z)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud rendering with level lights ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (define *hud-pc-lights* (new 'global 'vu-lights)) + (set-vector! (-> *hud-pc-lights* direction 0) 1.0 0.0 0.0 1.0) + (set-vector! (-> *hud-pc-lights* direction 1) 0.0 1.0 0.0 1.0) + (set-vector! (-> *hud-pc-lights* direction 2) 0.0 0.0 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 0) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 1) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* color 2) 0.75 0.75 1.0 1.0) + (set-vector! (-> *hud-pc-lights* ambient) 0.2 0.2 0.2 1.0) (defun dma-add-process-drawable-hud-with-lights ((proc process-drawable) (draw draw-control) (arg2 symbol) (buf dma-buffer)) @@ -168,462 +129,338 @@ (when (zero? (logand (-> draw status) (draw-status hidden no-anim no-skeleton-update))) (let ((vu-lgt (the-as vu-lights (+ 64 (scratchpad-object int)))) (lgt (if (= (-> draw level-index) 2) - (-> *time-of-day-context* light-group (-> draw light-index)) - (-> *time-of-day-context* moods (-> draw level-index) light-group (-> draw light-index)) - )) - ) - (vu-lights<-light-group! vu-lgt lgt) - ) + (-> *time-of-day-context* light-group (-> draw light-index)) + (-> *time-of-day-context* moods (-> draw level-index) light-group (-> draw light-index))))) + (vu-lights<-light-group! vu-lgt lgt)) (lod-set! draw 0) (logior! (-> draw status) (draw-status was-drawn)) - (draw-bones-hud draw buf) - ) + (draw-bones-hud draw buf)) 0 - (none) - ) + (none)) (defun dma-add-process-drawable-hud-with-hud-lights ((proc process-drawable) (draw draw-control) (arg2 symbol) (buf dma-buffer)) (logclear! (-> draw status) (draw-status was-drawn)) (when (zero? (logand (-> draw status) (draw-status hidden no-anim no-skeleton-update))) (let ((vu-lgt (the-as vu-lights (+ 64 (scratchpad-object int)))) - (lgt *hud-pc-lights*) - ) + (lgt *hud-pc-lights*)) (set! (-> vu-lgt direction 0 quad) (-> lgt direction 0 quad)) (set! (-> vu-lgt direction 1 quad) (-> lgt direction 1 quad)) (set! (-> vu-lgt direction 2 quad) (-> lgt direction 2 quad)) (set! (-> vu-lgt color 0 quad) (-> lgt color 0 quad)) (set! (-> vu-lgt color 1 quad) (-> lgt color 1 quad)) (set! (-> vu-lgt color 2 quad) (-> lgt color 2 quad)) - (set! (-> vu-lgt ambient quad) (-> lgt ambient quad)) - ) + (set! (-> vu-lgt ambient quad) (-> lgt ambient quad))) (lod-set! draw 0) (logior! (-> draw status) (draw-status was-drawn)) - (draw-bones-hud draw buf) - ) + (draw-bones-hud draw buf)) 0 - (none) - ) + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defmethod deactivate ((obj hud-pc)) (dotimes (i HUD_PART_PC_AMOUNT) (if (and (-> *hud-parts-pc* parts i) (= (ppointer->process (-> *hud-parts-pc* parts i)) obj)) - (set! (-> *hud-parts-pc* parts i) (the (pointer hud-pc) #f)) - ) - ) + (set! (-> *hud-parts-pc* parts i) (the (pointer hud-pc) #f)))) ((method-of-type hud deactivate) obj) - (none) - ) - + (none)) (defmethod kill-icon ((obj hud-battle-enemy) (idx int)) "kill a hud icon" - (when (and (nonzero? (-> obj icons idx)) (nonzero? (-> obj icons idx icon)) (-> obj icons idx icon)) - (deactivate (ppointer->process (-> obj icons idx icon))) - (set! (-> obj icons idx icon) #f) - ) + (deactivate (ppointer->process (-> obj icons idx icon))) + (set! (-> obj icons idx icon) #f)) 0) (defmethod kill-all-icons ((obj hud-battle-enemy)) "kill all hud icons" - (dotimes (i (-> obj nb-of-icons)) - (kill-icon obj i) - ) + (kill-icon obj i)) 0) (defmethod make-enemy-icon ((obj hud-battle-enemy) (idx int) (skel-sym symbol) (enemy-ent entity)) "make a new icon for the hud" - ;; make new manipy (kill-icon obj 0) (hud-pc-replace-icon obj 0 :skel (-> skel-sym value) :entity enemy-ent :z (meters 0.5)) - 0) (defmethod update-display-status ((obj hud-battle-enemy) (skel symbol) (ent entity) (icon-idx int) (trigger-force symbol)) "logic for displaying or hiding the hud, and drawing the icons." - - ;; do stuff depending on our current state (cond ((hidden? obj) ;; we're hidden, so let's make our new icons and see if we are allowed to show - ;; if we have icons made then show! (when (-> obj ready?) (set! (-> obj kicked) #f) - (send-event obj 'show) - ) - + (send-event obj 'show)) ;; no icons, make new ones but keep them hidden for now (when (and (not (-> obj ready?)) skel (not *progress-process*)) (case skel (('*swamp-rat-sg* '*citb-bunny-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.84 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.51 448))) - (set! (-> obj icons icon-idx scale-x) 0.006) - ) + (set! (-> obj icons icon-idx scale-x) 0.006)) (('*gnawer-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.78 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.54 448))) - (set! (-> obj icons icon-idx scale-x) 0.003) - ) + (set! (-> obj icons icon-idx scale-x) 0.003)) (('*flying-lurker-sg*) (set! (-> obj icons icon-idx icon-x) (the int (* 0.80 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.40 448))) - (set! (-> obj icons icon-idx scale-x) 0.003) - ) + (set! (-> obj icons icon-idx scale-x) 0.003)) (else (set! (-> obj icons icon-idx icon-x) (the int (* 0.84 512))) (set! (-> obj icons icon-idx icon-y) (the int (* 0.51 448))) - (set! (-> obj icons icon-idx scale-x) 0.004) - ) - ) + (set! (-> obj icons icon-idx scale-x) 0.004))) (set! (-> obj icons icon-idx scale-y) (* (-> obj icons icon-idx scale-x) (/ -512.0 448.0))) (make-enemy-icon obj icon-idx skel ent) (let ((icon0 (the manipy (ppointer->process (-> obj icons icon-idx icon))))) (case skel (('*babak-sg*) (send-event icon0 'art-joint-anim "babak-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*citb-bunny-sg*) (send-event icon0 'art-joint-anim "citb-bunny-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*bonelurker-sg*) (send-event icon0 'art-joint-anim "bonelurker-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*swamp-rat-sg*) (send-event icon0 'art-joint-anim "swamp-rat-celebrate" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*gnawer-sg*) (send-event icon0 'art-joint-anim "gnawer-idle" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210)))) (('*flying-lurker-sg*) (send-event icon0 'art-joint-anim "flying-lurker-fly" 0) - (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))) - ) - ) - (send-event icon0 'draw #f) - ) - (true! (-> obj ready?)) - ) - ) + (send-event icon0 'rot-quat (quaternion-axis-angle! (new-stack-quaternion0) 0.0 1.0 0.15 (degrees 210))))) + (send-event icon0 'draw #f)) + (true! (-> obj ready?)))) (else ;; we want to be shown! (false! (-> obj ready?)) - ;; progress is open, let's leave. (when (and (not (-> obj kicked)) (= *master-mode* 'progress)) - (true! (-> obj kicked)) - (send-event obj 'hide-quick) - ) - + (true! (-> obj kicked)) + (send-event obj 'hide-quick)) ;; set the trigger time so we don't automatically go away - (if (and trigger-force (!= (-> obj next-state name) 'hud-leaving)) - (set! (-> obj trigger-time) (current-time))) - ) - ) + (if (and trigger-force (!= (-> obj next-state name) 'hud-leaving)) (set! (-> obj trigger-time) (current-time))))) 0) - (defmacro actor-by-name (name) "get an entity by name and cast it to an actor. not super safe!" `(the entity-actor (entity-by-name ,name))) (defmacro actor-by-name-safe (name) "safe, slower version of actor-by-name" - `(aif (entity-by-name ,name) - (if (type-type? it entity-actor) - (the entity-actor it)) - ) - ) + `(aif (entity-by-name ,name) (if (type-type? it entity-actor) (the entity-actor it)))) (defmethod hud-update ((obj hud-battle-enemy)) "hud logic." - (when (not (-> *pc-settings* extra-hud?)) - (kill-all-icons obj) - (return #f)) - + (kill-all-icons obj) + (return #f)) (when (and (not (-> obj ready?)) (hidden? obj)) - (kill-all-icons obj) - ) - + (kill-all-icons obj)) (let ((battle (the process #f)) (cur-lev (aif (level-get-target-inside *level*) (-> it name))) - (actor-list-task? #f) - ) - ;; default params - (set! (-> obj task-entity) #f) - (set! (-> obj battle-entity) #f) - (set! (-> obj battle-mode) 'remain) - - ;; find an entity for a battlecontroller, check current level - (case cur-lev - (('swamp) - (set! (-> obj battle-entity) (actor-by-name "swamp-battlecontroller-1")) - (set! (-> obj want-skel) '*swamp-rat-sg*) - ) - (('misty) - (set! (-> obj battle-entity) (actor-by-name "misty-battlecontroller-1")) - (set! (-> obj want-skel) '*bonelurker-sg*) - ) - (('citadel) - (set! (-> obj battle-entity) (actor-by-name "citb-battlecontroller-1")) - (set! (-> obj want-skel) '*citb-bunny-sg*) - (set! (-> obj battle-mode) 'alive) - ) - (('maincave) - (set! (-> obj task-entity) (the entity-actor (or (actor-by-name "gnawer-11") - (actor-by-name "gnawer-12") - (actor-by-name "gnawer-13") - (actor-by-name "gnawer-14") - (actor-by-name "gnawer-15") - (actor-by-name "gnawer-16") - (actor-by-name "gnawer-17") - (actor-by-name "gnawer-18") - (actor-by-name "gnawer-19") - ))) - (true! actor-list-task?) - (set! (-> obj want-skel) '*gnawer-sg*) - ) - (('ogre) - (when (= 'debug *cheat-mode*) - (set! (-> obj battle-entity) (actor-by-name "flying-lurker-1")) - (set! (-> obj want-skel) '*flying-lurker-sg*) - (set! (-> obj battle-mode) 'alive) - ) - ) - ) - - ;; have an entity, grab its process - (if (-> obj battle-entity) - (set! battle (-> obj battle-entity extra process))) - - (cond - ;; check level statuses FIRST - ((not (aif (level-get *level* (-> obj last-level)) (-> it display?))) - ;; the old level died. kill everything. - (unless (hidden? obj) - (set! (-> obj last-battle) INVALID_HANDLE) - (set! (-> obj last-task) #f) - (false! (-> obj ready?)) - (kill-all-icons obj) - (go hud-hidden) - ) - ) - ;; check if we have anything - ((-> obj task-entity) - ;; we have a task to track. - - ;; see if we've changed tracking now - (when (or (!= (-> obj display-mode?) 'task) - (!= (-> obj task-entity) (-> obj last-task))) - (set! (-> obj last-task) (-> obj task-entity)) - (set! (-> obj display-mode?) 'task) - (false! (-> obj ready?)) - (send-event obj 'hide) - ) - - ;; logic for each kind of task - (cond - (actor-list-task? - ;; simple: check a list of actors and count how many have completed their task. - (set! (-> obj battle-max) 0) - (set! (-> obj value) 0) - (let ((actor (-> obj task-entity))) - - ;; get the first actor - (while (prev-actor actor) - (set! actor (prev-actor actor))) - - ;; now count forwards. - (while actor - - ;; stuff. - (1+! (-> obj battle-max)) - (when (logtest? (-> actor extra perm status) (entity-perm-status complete)) - (1+! (-> obj value)) - ) - - (set! actor (next-actor actor)) - ) - ) - - (when (and (!= (-> obj value) (-> obj battle-max)) - (or (> (-> obj value) 0) (task-closed? (-> obj task-entity task) (task-status need-hint))) - ) - (update-display-status obj (-> obj want-skel) (-> obj task-entity) 0 #t) - ) - ) - ) - ) - (battle - ;; if its a different process, panic and restart the whole sequence. it's OK - (when (or (!= (-> obj display-mode?) 'battle) - (!= (handle->process (-> obj last-battle)) battle)) - (set! (-> obj last-battle) (process->handle battle)) - (set! (-> obj display-mode?) 'battle) - (false! (-> obj ready?)) - (send-event obj 'hide) - ) - - ;; logic for each kind of process. - (cond - ((type-type? (-> battle type) battlecontroller) - (let ((battle (the battlecontroller battle)) - ) - ;; wait until battle is active - (when (= 'battlecontroller-active (-> battle next-state name)) - ;; get battle stats - (let ((alive-count 0)) - (with-children (child battle) - (1+! alive-count)) - (set! (-> obj value) (- (-> battle spawn-count) alive-count)) - (set! (-> obj battle-max) (-> battle max-spawn-count)) - (set! (-> obj battle-alive) alive-count) - ) - - (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t) - ) - )) - ((and (= 'debug *cheat-mode*) (= (-> obj battle-entity) (actor-by-name "flying-lurker-1"))) - (let ((battle (the process-drawable battle))) - - (if *target* - (set! (-> obj battle-alive) (the int (/ (vector-vector-distance (-> battle root trans) (target-pos 0)) METER_LENGTH)))) - - (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t) - )) - ) - ) - (else - ;; we have nothing. kill everything. - (unless (and (= (-> obj last-battle) INVALID_HANDLE) (hidden? obj)) - (set! (-> obj last-battle) INVALID_HANDLE) - (set! (-> obj last-task) #f) - (false! (-> obj ready?)) - (cond - ((and (!= (-> obj next-state name) 'hud-leaving) - (aif (level-get *level* (-> obj last-level)) (-> it display?)) - ) - (send-event obj 'hide) - ) - (else - (kill-all-icons obj) - (go hud-hidden) - ) - ) - ) - ) - ) - - ;; save the current level - (set! (-> obj last-level) cur-lev) - ) + (actor-list-task? #f)) + ;; default params + (set! (-> obj task-entity) #f) + (set! (-> obj battle-entity) #f) + (set! (-> obj battle-mode) 'remain) + ;; find an entity for a battlecontroller, check current level + (case cur-lev + (('swamp) + (set! (-> obj battle-entity) (actor-by-name "swamp-battlecontroller-1")) + (set! (-> obj want-skel) '*swamp-rat-sg*)) + (('misty) + (set! (-> obj battle-entity) (actor-by-name "misty-battlecontroller-1")) + (set! (-> obj want-skel) '*bonelurker-sg*)) + (('citadel) + (set! (-> obj battle-entity) (actor-by-name "citb-battlecontroller-1")) + (set! (-> obj want-skel) '*citb-bunny-sg*) + (set! (-> obj battle-mode) 'alive)) + (('maincave) + (set! (-> obj task-entity) + (the entity-actor + (or (actor-by-name "gnawer-11") + (actor-by-name "gnawer-12") + (actor-by-name "gnawer-13") + (actor-by-name "gnawer-14") + (actor-by-name "gnawer-15") + (actor-by-name "gnawer-16") + (actor-by-name "gnawer-17") + (actor-by-name "gnawer-18") + (actor-by-name "gnawer-19")))) + (true! actor-list-task?) + (set! (-> obj want-skel) '*gnawer-sg*)) + (('ogre) + (when (= 'debug *cheat-mode*) + (set! (-> obj battle-entity) (actor-by-name "flying-lurker-1")) + (set! (-> obj want-skel) '*flying-lurker-sg*) + (set! (-> obj battle-mode) 'alive)))) + ;; have an entity, grab its process + (if (-> obj battle-entity) (set! battle (-> obj battle-entity extra process))) + (cond + ;; check level statuses FIRST + ((not (aif (level-get *level* (-> obj last-level)) (-> it display?))) + ;; the old level died. kill everything. + (unless (hidden? obj) + (set! (-> obj last-battle) INVALID_HANDLE) + (set! (-> obj last-task) #f) + (false! (-> obj ready?)) + (kill-all-icons obj) + (go hud-hidden))) + ;; check if we have anything + ((-> obj task-entity) + ;; we have a task to track. + ;; see if we've changed tracking now + (when (or (!= (-> obj display-mode?) 'task) (!= (-> obj task-entity) (-> obj last-task))) + (set! (-> obj last-task) (-> obj task-entity)) + (set! (-> obj display-mode?) 'task) + (false! (-> obj ready?)) + (send-event obj 'hide)) + ;; logic for each kind of task + (cond + (actor-list-task? + ;; simple: check a list of actors and count how many have completed their task. + (set! (-> obj battle-max) 0) + (set! (-> obj value) 0) + (let ((actor (-> obj task-entity))) + ;; get the first actor + (while (prev-actor actor) + (set! actor (prev-actor actor))) + ;; now count forwards. + (while actor + ;; stuff. + (1+! (-> obj battle-max)) + (when (logtest? (-> actor extra perm status) (entity-perm-status complete)) + (1+! (-> obj value))) + (set! actor (next-actor actor)))) + (when (and (!= (-> obj value) (-> obj battle-max)) + (or (> (-> obj value) 0) (task-closed? (-> obj task-entity task) (task-status need-hint)))) + (update-display-status obj (-> obj want-skel) (-> obj task-entity) 0 #t))))) + (battle + ;; if its a different process, panic and restart the whole sequence. it's OK + (when (or (!= (-> obj display-mode?) 'battle) (!= (handle->process (-> obj last-battle)) battle)) + (set! (-> obj last-battle) (process->handle battle)) + (set! (-> obj display-mode?) 'battle) + (false! (-> obj ready?)) + (send-event obj 'hide)) + ;; logic for each kind of process. + (cond + ((type-type? (-> battle type) battlecontroller) + (let ((battle (the battlecontroller battle))) + ;; wait until battle is active + (when (= 'battlecontroller-active (-> battle next-state name)) + ;; get battle stats + (let ((alive-count 0)) + (with-children (child battle) (1+! alive-count)) + (set! (-> obj value) (- (-> battle spawn-count) alive-count)) + (set! (-> obj battle-max) (-> battle max-spawn-count)) + (set! (-> obj battle-alive) alive-count)) + (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t)))) + ((and (= 'debug *cheat-mode*) (= (-> obj battle-entity) (actor-by-name "flying-lurker-1"))) + (let ((battle (the process-drawable battle))) + (if *target* + (set! (-> obj battle-alive) (the int (/ (vector-vector-distance (-> battle root trans) (target-pos 0)) METER_LENGTH)))) + (update-display-status obj (-> obj want-skel) (-> obj battle-entity) 0 #t))))) + (else + ;; we have nothing. kill everything. + (unless (and (= (-> obj last-battle) INVALID_HANDLE) (hidden? obj)) + (set! (-> obj last-battle) INVALID_HANDLE) + (set! (-> obj last-task) #f) + (false! (-> obj ready?)) + (cond + ((and (!= (-> obj next-state name) 'hud-leaving) (aif (level-get *level* (-> obj last-level)) (-> it display?))) + (send-event obj 'hide)) + (else (kill-all-icons obj) (go hud-hidden)))))) + ;; save the current level + (set! (-> obj last-level) cur-lev)) 0 - (none) - ) - + (none)) (defmethod draw-hud ((obj hud-battle-enemy)) - (let ((t9-0 (method-of-type hud draw-hud))) - (t9-0 obj) - ) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug)) + (let ((t9-0 (method-of-type hud draw-hud))) (t9-0 obj)) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug)) (let ((str-x (+ (-> obj text-x) (* (-> obj x-sgn) (-> obj offset)))) (str-y (/ (* (+ (-> obj text-y) (* (-> obj y-sgn) (-> obj offset)) (-> obj y-offset)) (the int (-> *video-parms* relative-y-scale))) - 2)) - ) - - (case (-> obj battle-mode) - (('dead) - (draw-string-xy (string-format "~D/~D" (-> obj value) (-> obj battle-max)) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - (('alive) - (draw-string-xy (string-format "~D" (-> obj battle-alive)) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - (('remain) - (draw-string-xy (string-format "~D" (- (-> obj battle-max) (-> obj value))) - buf str-x str-y (font-color white) (font-flags shadow kerning large middle)) - ) - ) - ) - ) + 2))) + (case (-> obj battle-mode) + (('dead) + (draw-string-xy (string-format "~D/~D" (-> obj value) (-> obj battle-max)) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle))) + (('alive) + (draw-string-xy (string-format "~D" (-> obj battle-alive)) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle))) + (('remain) + (draw-string-xy (string-format "~D" (- (-> obj battle-max) (-> obj value))) + buf + str-x + str-y + (font-color white) + (font-flags shadow kerning large middle)))))) 0 - (none) - ) - + (none)) (defmethod init-particles! ((obj hud-battle-enemy) (arg0 int)) - (hud-pc-make-icon obj HUD_ICON_COUNT :skel *fuelcell-naked-sg* - :x (the int (* 0.84 512)) :y (the int (* 0.51 448)) :z (meters 0.5) - :scale-x 0.004 :scale-y (* -0.004 (/ 512.0 448.0))) + (hud-pc-make-icon obj + HUD_ICON_COUNT + :skel + *fuelcell-naked-sg* + :x + (the int (* 0.84 512)) + :y + (the int (* 0.51 448)) + :z (meters 0.5) + :scale-x 0.004 + :scale-y + (* -0.004 (/ 512.0 448.0))) (set! (-> obj text-x) (the int (* 0.84 512))) (set! (-> obj text-y) (the int (* 0.5 448))) (set! (-> obj x-sgn) 1) (set! (-> obj y-sgn) 0) (set! (-> obj increment-on-event) #t) (set-pos-and-scale obj (= (get-aspect-ratio) 'aspect16x9) (= (get-video-mode) 'pal)) - (set! (-> obj last-battle) INVALID_HANDLE) (set! (-> obj last-task) #f) (set! (-> obj want-skel) #f) (set! (-> obj battle-max) 0) - (set! (-> obj last-level) #f) (set! (-> obj kicked) #f) (set! (-> obj ready?) #f) 0 - (none) - ) - - - + (none)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; hud helper funcs ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun deactivate-hud-pc () "kill the pc hud" - (dotimes (i HUD_PART_PC_AMOUNT) - (if (-> *hud-parts-pc* parts i) - (deactivate (ppointer->process (-> *hud-parts-pc* parts i)))) - ) + (if (-> *hud-parts-pc* parts i) (deactivate (ppointer->process (-> *hud-parts-pc* parts i))))) 0) (defun activate-hud-pc ((tree process-tree)) "make the pc hud" - (deactivate-hud-pc) - - (set! (-> *hud-parts-pc* battle-enemy) (process-spawn hud-battle-enemy :init hud-init-by-other 0 - :from *pc-dead-pool* :to tree)) + (set! (-> *hud-parts-pc* battle-enemy) + (process-spawn hud-battle-enemy :init hud-init-by-other 0 :from *pc-dead-pool* :to tree)) 0) - (activate-hud-pc *display-pool*) - - - - - diff --git a/goal_src/jak1/pc/pc-cheats.gc b/goal_src/jak1/pc/pc-cheats.gc index e6db66c8d7..99fd00c0ee 100644 --- a/goal_src/jak1/pc/pc-cheats.gc +++ b/goal_src/jak1/pc/pc-cheats.gc @@ -1,7 +1,7 @@ ;;-*-Lisp-*- (in-package goal) - (defconstant PC_CHEAT_MAX 18) ;; number of cheats + (defenum pc-cheats :bitfield #t :type uint64 @@ -22,8 +22,7 @@ (hero-mode) (huge-head) (big-head-npc) - (oh-my-goodness) - ) + (oh-my-goodness)) (defmacro pc-cheats? (obj &rest cheats) `(logtest? ,obj (pc-cheats ,@cheats))) diff --git a/goal_src/jak1/pc/pckernel-common.gc b/goal_src/jak1/pc/pckernel-common.gc index 61e6b09f06..48d466aadc 100644 --- a/goal_src/jak1/pc/pckernel-common.gc +++ b/goal_src/jak1/pc/pckernel-common.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/sprite/sparticle/sparticle-launcher.gc") - #| - This file contains new code that we need for the PC port of the game specifically. It should be included as part of the game engine package (engine.cgo). @@ -22,9 +19,7 @@ - whatever else. If you do not want to include these PC things, you should exclude it from the build system. - - |# - +|# (format 0 "pckernel version: ~D.~D~%" PC_KERNEL_VER_MAJOR PC_KERNEL_VER_MINOR) @@ -32,7 +27,6 @@ "return the current pckernel version" PC_KERNEL_VERSION) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; updates ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -43,7 +37,6 @@ (when (!= mode (-> obj display-mode)) ;; change the display mode. (set! (-> obj display-mode) mode) - (when call-handlers ;; set fullscreen to what we want (pc-set-display-mode (-> obj display-mode)) @@ -58,16 +51,10 @@ (format 0 "Setting ~A size to ~D x ~D~%" (-> obj display-mode) width height) (cond ((= 'windowed (-> obj display-mode)) - (set! (-> obj window-width) width) - (set! (-> obj window-height) height) - (if call-handlers - (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height)))) - ) - (else - (set! (-> obj width) width) - (set! (-> obj height) height) - ) - ) + (set! (-> obj window-width) width) + (set! (-> obj window-height) height) + (if call-handlers (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height))))) + (else (set! (-> obj width) width) (set! (-> obj height) height))) (none)) (defmethod set-aspect! ((obj pc-settings) (aw int) (ah int)) @@ -77,8 +64,7 @@ (set! (-> obj aspect-custom-x) aw) (set! (-> obj aspect-custom-y) ah) (set! (-> obj aspect-ratio-auto?) #f) - (set! (-> obj use-vis?) #f) - ) + (set! (-> obj use-vis?) #f)) (none)) (defmethod set-aspect-ratio! ((obj pc-settings) (aspect float)) @@ -90,24 +76,13 @@ (defmethod set-frame-rate! ((obj pc-settings) (rate int) (call-handlers symbol)) "set the target framerate." - (if call-handlers - (pc-set-frame-rate rate)) - (if (and (!= 'fullscreen (-> obj display-mode)) - (!= (pc-get-active-display-refresh-rate) rate)) - (set! (-> obj vsync?) #f)) + (if call-handlers (pc-set-frame-rate rate)) + (if (and (!= 'fullscreen (-> obj display-mode)) (!= (pc-get-active-display-refresh-rate) rate)) (set! (-> obj vsync?) #f)) (set! (-> obj target-fps) rate) (case rate - ((50) - (set-game-setting! obj 'video-mode 'pal) - ) - ((60) - (set-game-setting! obj 'video-mode 'ntsc) - ) - (else - (set-game-setting! obj 'video-mode 'custom) - ) - ) - + ((50) (set-game-setting! obj 'video-mode 'pal)) + ((60) (set-game-setting! obj 'video-mode 'ntsc)) + (else (set-game-setting! obj 'video-mode 'custom))) rate) (defmethod set-monitor! ((obj pc-settings) (monitor int)) @@ -118,8 +93,7 @@ ((>= (-> obj monitor) (pc-get-display-count)) (format 0 "Monitor selection out of bounds, defaulting to primary monitor.~%") (set! (-> obj monitor) 0)) - (else - (set! (-> obj monitor) monitor))) + (else (set! (-> obj monitor) monitor))) (pc-set-fullscreen-display (-> obj monitor)) (none)) @@ -132,104 +106,70 @@ (defmethod update-from-os ((obj pc-settings)) "Update settings from the C kernel to GOAL." - (pc-get-window-size (&-> obj framebuffer-width) (&-> obj framebuffer-height)) (pc-get-window-scale (&-> obj dpi-x) (&-> obj dpi-y)) - (when (-> obj use-vis?) (if (= (get-game-setting obj 'aspect-ratio) 'aspect4x3) - (set-aspect-ratio! obj ASPECT_4X3) - (set-aspect-ratio! obj ASPECT_16X9) - ) - ) - + (set-aspect-ratio! obj ASPECT_4X3) + (set-aspect-ratio! obj ASPECT_16X9))) (unless (or (zero? (-> obj framebuffer-width)) (zero? (-> obj framebuffer-height))) - (let ((win-aspect (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))))) - (cond - ((and (not (-> obj use-vis?)) (-> obj aspect-ratio-auto?)) - ;; the window determines the resolution - (set-aspect-ratio! obj win-aspect) - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ((> win-aspect (-> obj aspect-ratio)) - ;; too wide - (set! (-> obj framebuffer-scissor-width) (the int (* (the float (-> obj framebuffer-height)) (-> obj aspect-ratio)))) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ((< win-aspect (-> obj aspect-ratio)) - ;; too tall - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (the int (/ (the float (-> obj framebuffer-width)) (-> obj aspect-ratio)))) - ) - (else - ;; just right - (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) - (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)) - ) - ) - )) - - + (let ((win-aspect (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))))) + (cond + ((and (not (-> obj use-vis?)) (-> obj aspect-ratio-auto?)) + ;; the window determines the resolution + (set-aspect-ratio! obj win-aspect) + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + ((> win-aspect (-> obj aspect-ratio)) + ;; too wide + (set! (-> obj framebuffer-scissor-width) (the int (* (the float (-> obj framebuffer-height)) (-> obj aspect-ratio)))) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + ((< win-aspect (-> obj aspect-ratio)) + ;; too tall + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (the int (/ (the float (-> obj framebuffer-width)) (-> obj aspect-ratio))))) + (else + ;; just right + (set! (-> obj framebuffer-scissor-width) (-> obj framebuffer-width)) + (set! (-> obj framebuffer-scissor-height) (-> obj framebuffer-height)))))) (none)) (defmethod update-to-os ((obj pc-settings)) "Update settings from GOAL to the C kernel." - ;; TODO - move the below out of this function that runs every frame (cond - ((-> obj letterbox?) - (pc-set-letterbox (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - ) - (else - (pc-set-letterbox (-> obj framebuffer-width) (-> obj framebuffer-height)) - ) - ) - + ((-> obj letterbox?) (pc-set-letterbox (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height))) + (else (pc-set-letterbox (-> obj framebuffer-width) (-> obj framebuffer-height)))) (pc-set-vsync (and (-> obj vsync?) - (or (= 'fullscreen (-> obj display-mode)) - (>= (pc-get-active-display-refresh-rate) (-> obj target-fps))))) - + (or (= 'fullscreen (-> obj display-mode)) (>= (pc-get-active-display-refresh-rate) (-> obj target-fps))))) (when (!= 'fullscreen (-> obj display-mode)) (pc-set-frame-rate (-> obj target-fps))) - ;; do game resolution (if (= (-> obj display-mode) 'windowed) - (pc-set-game-resolution (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - (pc-set-game-resolution (-> obj width) (-> obj height))) - + (pc-set-game-resolution (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) + (pc-set-game-resolution (-> obj width) (-> obj height))) ;; set msaa sample rate. if invalid, just reset to 2. (let ((valid? #f)) - (dotimes (i 31) - (if (= (-> obj gfx-msaa) (ash 1 i)) - (true! valid?)) - ) - - (if (not valid?) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA)) - (pc-set-msaa (-> obj gfx-msaa)) - ) + (dotimes (i 31) + (if (= (-> obj gfx-msaa) (ash 1 i)) (true! valid?))) + (if (not valid?) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA)) + (pc-set-msaa (-> obj gfx-msaa))) ;; -- end TODO - (pc-discord-rpc-set (if (-> obj discord-rpc?) 1 0)) - (when #t ;; (not (-> obj ps2-lod-dist?)) (pc-renderer-tree-set-lod (pc-renderer-tree-type tfrag3) (-> obj lod-force-tfrag)) - (pc-renderer-tree-set-lod (pc-renderer-tree-type tie3) (-> obj lod-force-tie)) - ) - + (pc-renderer-tree-set-lod (pc-renderer-tree-type tie3) (-> obj lod-force-tie))) (when *debug-segment* (pc-set-collision *collision-renderer*) (pc-set-collision-wireframe *collision-wireframe*) - (pc-set-collision-mode *collision-mode*) - ) - + (pc-set-collision-mode *collision-mode*)) (pc-sound-set-flava-hack (-> obj flava-hack)) (let ((fade-hack 0)) - (unless (-> obj music-fadein?) (logior! fade-hack 1)) - (unless (-> obj music-fadeout?) (logior! fade-hack 2)) - (pc-sound-set-fade-hack fade-hack) - ) - + (unless (-> obj music-fadein?) + (logior! fade-hack 1)) + (unless (-> obj music-fadeout?) + (logior! fade-hack 2)) + (pc-sound-set-fade-hack fade-hack)) (when (led-enabled? obj) (update-led obj) ;(format *stdcon* "led: ~,,2f ~,,2f ~,,2f (~,,2f%)~%" (-> obj controller-led-color r) (-> obj controller-led-color g) (-> obj controller-led-color b) (* 100.0 (-> obj controller-led-color a))) @@ -238,14 +178,17 @@ ;; now multiply by the brightness setting (vector-float*! (-> obj controller-led-color) (-> obj controller-led-color) (-> obj controller-led-brightness)) ;; now use it as the controller led color - (let ((led-rgba (new 'static 'rgba :r (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color r) 0.0 1.0)) - :g (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color g) 0.0 1.0)) - :b (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color b) 0.0 1.0)) - :a #x80))) - (set! *display-led-rgba* led-rgba) - (pc-set-controller-led! 0 (the-as int (-> led-rgba r)) (the-as int (-> led-rgba g)) (the-as int (-> led-rgba b)))) - ) - + (let ((led-rgba (new 'static + 'rgba + :r + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color r) 0.0 1.0)) + :g + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color g) 0.0 1.0)) + :b + (the int (lerp-scale 0.0 255.0 (-> obj controller-led-color b) 0.0 1.0)) + :a #x80))) + (set! *display-led-rgba* led-rgba) + (pc-set-controller-led! 0 (the-as int (-> led-rgba r)) (the-as int (-> led-rgba g)) (the-as int (-> led-rgba b))))) (none)) (defmacro pc-cheat-toggle-and-tune (cheats-var cheat) @@ -253,9 +196,7 @@ `(begin (cpad-clear! 0 r1) (logxor! ,cheats-var (pc-cheats ,cheat)) - (cheats-sound-play (logtest? ,cheats-var (pc-cheats ,cheat))) - ) - ) + (cheats-sound-play (logtest? ,cheats-var (pc-cheats ,cheat))))) (defun real-movie? () "are we in an actual cutscene and should letterbox the view?" @@ -264,35 +205,26 @@ (defmethod update ((obj pc-settings)) "Update settings to/from PC kernel. Call this at the start of every frame. This will update things like the aspect-ratio, which will be used for graphics code later." - (update-from-os obj) (update-to-os obj) - (update-discord-rpc obj) - ;; update auto-splitter info (update-speedrun obj) - (when (not (-> obj use-vis?)) - (update-video-hacks obj) - ) + (update-video-hacks obj)) (cond ((not (-> obj ps2-actor-vis?)) - ;; kinda overkill. - (set! (-> *ACTOR-bank* birth-dist) (meters 10000)) - (set! (-> *ACTOR-bank* pause-dist) (meters 10000)) - (set! (-> *ACTOR-bank* birth-max) 1000) - ) + ;; kinda overkill. + (set! (-> *ACTOR-bank* birth-dist) (meters 10000)) + (set! (-> *ACTOR-bank* pause-dist) (meters 10000)) + (set! (-> *ACTOR-bank* birth-max) 1000)) ((> (-> *ACTOR-bank* birth-dist) (meters 220)) ;; the original caps at 220m, exceeding that means it was using our hacks - (set! (-> *ACTOR-bank* birth-dist) (meters 220)) - (set! (-> *ACTOR-bank* pause-dist) (meters 220)) - )) - + (set! (-> *ACTOR-bank* birth-dist) (meters 220)) + (set! (-> *ACTOR-bank* pause-dist) (meters 220)))) ;; cheats. (update-cheats obj) ;; music. (update-music-log obj) - (none)) (defmethod update-cheats ((obj pc-settings)) @@ -314,58 +246,60 @@ "should the controller led be set?" #f) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod get-current-game-width ((obj pc-settings)) "return the current width in pixels of the visible portion of the game" - (cond ((= (-> obj display-mode) 'windowed) - (if (-> obj letterbox?) - (-> obj framebuffer-scissor-width) - (-> obj framebuffer-width))) - (else - (-> obj width)) - ) - ) + (if (-> obj letterbox?) (-> obj framebuffer-scissor-width) (-> obj framebuffer-width))) + (else (-> obj width)))) + (defmethod get-current-game-height ((obj pc-settings)) "return the current height in pixels of the visible portion of the game" - (cond ((= (-> obj display-mode) 'windowed) - (if (-> obj letterbox?) - (-> obj framebuffer-scissor-height) - (-> obj framebuffer-height))) - (else - (-> obj height)) - ) - ) + (if (-> obj letterbox?) (-> obj framebuffer-scissor-height) (-> obj framebuffer-height))) + (else (-> obj height)))) (when *debug-segment* - -(defmethod draw ((obj pc-settings) (buf dma-buffer)) - "debug draw some things on-screen" - - (when (-> obj debug?) - (format *stdcon* "fullscreen resolution: ~D x ~D~%" (-> obj width) (-> obj height)) - (format *stdcon* "window size: ~D x ~D @ ~,,1f x ~,,1f~%" (-> obj window-width) (-> obj window-height) (-> obj dpi-x) (-> obj dpi-y)) - (format *stdcon* "fb size: ~D x ~D (scissor: ~D x ~D)~%" (-> obj framebuffer-width) (-> obj framebuffer-height) (-> obj framebuffer-scissor-width) (-> obj framebuffer-scissor-height)) - (format *stdcon* "aspect: ~,,3f/~,,3f auto? ~A vis? ~A lbox? ~A~%" (-> obj aspect-ratio) (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))) (-> obj aspect-ratio-auto?) (-> obj use-vis?) (-> obj letterbox?)) - (format *stdcon* "display-mode: ~A vsync? ~A~%" (-> obj display-mode) (-> obj vsync?)) - (clear *pc-temp-string*) - ) - (when *display-actor-bank* - (draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" (-> *ACTOR-bank* pause-dist) (-> *ACTOR-bank* birth-dist) (-> *ACTOR-bank* birth-max)) buf 512 0 (font-color default) (font-flags shadow kerning right)) - ) - ) - -) - + (defmethod draw ((obj pc-settings) (buf dma-buffer)) + "debug draw some things on-screen" + (when (-> obj debug?) + (format *stdcon* "fullscreen resolution: ~D x ~D~%" (-> obj width) (-> obj height)) + (format *stdcon* + "window size: ~D x ~D @ ~,,1f x ~,,1f~%" + (-> obj window-width) + (-> obj window-height) + (-> obj dpi-x) + (-> obj dpi-y)) + (format *stdcon* + "fb size: ~D x ~D (scissor: ~D x ~D)~%" + (-> obj framebuffer-width) + (-> obj framebuffer-height) + (-> obj framebuffer-scissor-width) + (-> obj framebuffer-scissor-height)) + (format *stdcon* + "aspect: ~,,3f/~,,3f auto? ~A vis? ~A lbox? ~A~%" + (-> obj aspect-ratio) + (/ (the float (-> obj framebuffer-width)) (the float (-> obj framebuffer-height))) + (-> obj aspect-ratio-auto?) + (-> obj use-vis?) + (-> obj letterbox?)) + (format *stdcon* "display-mode: ~A vsync? ~A~%" (-> obj display-mode) (-> obj vsync?)) + (clear *pc-temp-string*)) + (when *display-actor-bank* + (draw-string-xy (string-format "Actor Bank: ~,,1m/~,,1m (~D)" + (-> *ACTOR-bank* pause-dist) + (-> *ACTOR-bank* birth-dist) + (-> *ACTOR-bank* birth-max)) + buf + 512 + 0 + (font-color default) + (font-flags shadow kerning right))))) (defmethod set-ignore-controller-in-bg! ((obj pc-settings) (val symbol)) "sets whether or not to ignore controller inputs if the window is in the background" @@ -380,54 +314,31 @@ (pc-set-auto-hide-cursor! (-> obj auto-hide-cursor?)) (none)) - (defmethod debug-font-scale-factor ((this pc-settings)) "return the debug font scale factor to be used." (declare (inline)) (if (-> this debug-font-scale-auto?) - (/ (-> this debug-font-scale) (fmax 1.0 (/ (the float (get-current-game-height this)) PC_BASE_HEIGHT))) - (-> this debug-font-scale))) - + (/ (-> this debug-font-scale) (fmax 1.0 (/ (the float (get-current-game-height this)) PC_BASE_HEIGHT))) + (-> this debug-font-scale))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; file IO ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defmacro file-stream-seek-until (fs func-name) `(let ((done? #f) (tell -1)) - (until done? - (let ((read (file-stream-read ,fs (-> *pc-temp-string* data) PC_TEMP_STRING_LEN))) (cond - ((zero? read) - (set! (-> *pc-temp-string* data read) 0) - (true! done?) - ) + ((zero? read) (set! (-> *pc-temp-string* data read) 0) (true! done?)) (else (dotimes (i read) (when (,func-name (-> *pc-temp-string* data i)) (true! done?) (set! tell (+ i (- (file-stream-tell ,fs) read))) - (set! i read) - ) - ) - ) - ) - - - ) - - ) - (if (!= tell -1) - (file-stream-seek ,fs tell SCE_SEEK_SET) - tell - ) - ) - ) + (set! i read))))))) + (if (!= tell -1) (file-stream-seek ,fs tell SCE_SEEK_SET) tell))) (defmacro file-stream-read-until (fs func-name) `(let ((read (file-stream-read ,fs (-> *pc-temp-string* data) PC_TEMP_STRING_LEN))) @@ -435,20 +346,14 @@ (when (,func-name (-> *pc-temp-string* data i)) (set! (-> *pc-temp-string* data i) 0) (file-stream-seek ,fs (+ i (- (file-stream-tell ,fs) read)) SCE_SEEK_SET) - (set! i read) - ) - ) - *pc-temp-string* - ) - ) + (set! i read))) + *pc-temp-string*)) (defmacro is-whitespace-or-bracket? (c) - `(or (is-whitespace-char? ,c) (= #x28 ,c) (= #x29 ,c)) - ) + `(or (is-whitespace-char? ,c) (= #x28 ,c) (= #x29 ,c))) (defun file-stream-seek-past-whitespace ((file file-stream)) - (file-stream-seek-until file not-whitespace-char?) - ) + (file-stream-seek-until file not-whitespace-char?)) (defun file-stream-read-word ((file file-stream)) (file-stream-read-until file is-whitespace-or-bracket?) @@ -459,262 +364,206 @@ `(let ((buf 255)) (file-stream-read ,fs (& buf) 1) ;(format 0 "getc got #x~X~%" buf) - buf - ) - ) + buf)) (defun file-stream-read-int ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->int *pc-temp-string*) - ) + (string->int *pc-temp-string*)) (defun file-stream-read-float ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->float *pc-temp-string*) - ) + (string->float *pc-temp-string*)) (defun file-stream-read-symbol ((file file-stream)) (file-stream-seek-past-whitespace file) (file-stream-read-word file) - (string->symbol *pc-temp-string*) - ) + (string->symbol *pc-temp-string*)) (defmacro pc-settings-read-throw-error (fs msg) "not an actual throw..." `(begin (format 0 "pc settings read error: ~S~%" ,msg) (file-stream-close ,fs) - (return #f) - ) - ) + (return #f))) (defmacro with-settings-scope (bindings &rest body) (let ((fs (first bindings))) `(begin (file-stream-seek-past-whitespace ,fs) (when (!= #x28 (file-stream-getc ,fs)) - (pc-settings-read-throw-error ,fs "invalid char, ( not found") - ) - + (pc-settings-read-throw-error ,fs "invalid char, ( not found")) ,@body - (file-stream-seek-past-whitespace ,fs) (when (!= #x29 (file-stream-getc ,fs)) ;; NOTE - if you have a setting in the file that isn't handled (even if its valid lisp) ;; this error will be thrown. - (pc-settings-read-throw-error ,fs "invalid char, ) not found") - ) - ) - ) - ) + (pc-settings-read-throw-error ,fs "invalid char, ) not found"))))) (defmacro file-stream-get-next-char-ret (fs) `(begin (file-stream-seek-past-whitespace ,fs) - (let ((c (file-stream-getc ,fs))) - (file-stream-seek ,fs -1 SCE_SEEK_CUR) - c)) - ) + (let ((c (file-stream-getc ,fs))) (file-stream-seek ,fs -1 SCE_SEEK_CUR) c))) (defmacro file-stream-get-next-char (fs) `(begin (file-stream-seek-past-whitespace ,fs) - (file-stream-getc ,fs) - ) - ) + (file-stream-getc ,fs))) (defmacro dosettings (bindings &rest body) "iterate over a list of key-value pairs like so: ( ) ( ) ... the name of key is stored in *pc-temp-string*" (let ((fs (first bindings))) `(let ((c -1)) - (while (begin (file-stream-seek-past-whitespace ,fs) (set! c (file-stream-getc ,fs)) (= #x28 c)) - (file-stream-read-word ,fs) - - ,@body - - (set! c (file-stream-get-next-char ,fs)) - (when (!= #x29 c) - (pc-settings-read-throw-error ,fs (string-format "invalid char, ) not found, got #x~X ~A" c *pc-temp-string*)) - ) - ) - (file-stream-seek ,fs -1 SCE_SEEK_CUR) - ) - ) - ) + (while (begin + (file-stream-seek-past-whitespace ,fs) + (set! c (file-stream-getc ,fs)) + (= #x28 c)) + (file-stream-read-word ,fs) + ,@body + (set! c (file-stream-get-next-char ,fs)) + (when (!= #x29 c) + (pc-settings-read-throw-error ,fs (string-format "invalid char, ) not found, got #x~X ~A" c *pc-temp-string*)))) + (file-stream-seek ,fs -1 SCE_SEEK_CUR)))) (defmethod read-from-file ((obj pc-settings) (filename string)) "read settings from a file" - - (if (not filename) - (return #f)) - + (if (not filename) (return #f)) (let ((file (new 'stack 'file-stream filename 'read))) (when (not (file-stream-valid? file)) (return #f)) - (let ((version PC_KERNEL_VERSION)) (with-settings-scope (file) - (case-str (file-stream-read-word file) - (("settings") - (set! version (the pckernel-version (file-stream-read-int file))) - (cond - ((and (= (-> version major) PC_KERNEL_VER_MAJOR) - (= (-> version minor) PC_KERNEL_VER_MINOR)) - ;; minor or no difference - ) - (else - ;; major difference - (format 0 "PC kernel version mismatch! Got ~D.~D vs ~D.~D~%" PC_KERNEL_VER_MAJOR PC_KERNEL_VER_MINOR (-> version major) (-> version minor)) - (file-stream-close file) - (return #f) - ) - ) - (dosettings (file) - (handle-input-settings obj file) - ) - ;; upgrade settings if minor changes - ;; remember to delete this when major changes to the version number are made - (when (and (= PC_KERNEL_VER_MAJOR 1) - (= PC_KERNEL_VER_MINOR 10) - (or (> 3 (-> version build)) - (and (= 3 (-> version build)) (> 1 (-> version revision))))) - ;; 1.10 upgrade: turn envmap on - (set! (-> obj force-envmap?) #t) - ) - ) - ) - ) - - ) - - (file-stream-close file) - ) - + (case-str (file-stream-read-word file) + (("settings") + (set! version (the pckernel-version (file-stream-read-int file))) + (cond + ((and (= (-> version major) PC_KERNEL_VER_MAJOR) (= (-> version minor) PC_KERNEL_VER_MINOR)) + ;; minor or no difference + ) + (else + ;; major difference + (format 0 + "PC kernel version mismatch! Got ~D.~D vs ~D.~D~%" + PC_KERNEL_VER_MAJOR + PC_KERNEL_VER_MINOR + (-> version major) + (-> version minor)) + (file-stream-close file) + (return #f))) + (dosettings (file) (handle-input-settings obj file)) + ;; upgrade settings if minor changes + ;; remember to delete this when major changes to the version number are made + (when (and (= PC_KERNEL_VER_MAJOR 1) + (= PC_KERNEL_VER_MINOR 10) + (or (> 3 (-> version build)) (and (= 3 (-> version build)) (> 1 (-> version revision))))) + ;; 1.10 upgrade: turn envmap on + (set! (-> obj force-envmap?) #t)))))) + (file-stream-close file)) (format 0 "pc settings file read: ~A~%" filename) - ;; restore the windowed mode resolution properly (when (= (-> obj display-mode) 'windowed) (pc-set-window-size (max PC_MIN_WIDTH (-> obj window-width)) (max PC_MIN_HEIGHT (-> obj window-height)))) - - #t - ) + #t) (defmethod handle-input-settings ((obj pc-settings) (file file-stream)) "handle the text parsing input for the 'settings' group" - (case-str *pc-temp-string* - (("fps") (set-frame-rate! obj (file-stream-read-int file) #t)) - (("window-size") - (set! (-> obj window-width) (file-stream-read-int file)) - (set! (-> obj window-height) (file-stream-read-int file)) - ) - (("game-size") - (set! (-> obj width) (file-stream-read-int file)) - (set! (-> obj height) (file-stream-read-int file)) - ) - (("msaa") (set! (-> obj gfx-msaa) (file-stream-read-int file))) - (("aspect-state") - ;; game aspect - (set-game-setting! obj 'aspect-ratio (file-stream-read-symbol file)) - ;; aspect ratio - (set! (-> obj aspect-custom-x) (file-stream-read-int file)) - (set! (-> obj aspect-custom-y) (file-stream-read-int file)) - ;; aspect auto - (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)) - - (unless (-> obj aspect-ratio-auto?) - (set-aspect! obj (-> obj aspect-custom-x) (-> obj aspect-custom-y)) - ) - ) - (("display-mode") - ;; force a display mode update - (set! (-> obj display-mode) #f) - (set-display-mode! obj (file-stream-read-symbol file) #t) - ) - (("monitor") (set-monitor! obj (file-stream-read-int file))) - (("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file))) - (("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file))) - (("font-scale") (set! (-> obj font-scale) (file-stream-read-float file))) - (("audio-latency-ms") (set! (-> obj audio-latency-ms) (file-stream-read-int file))) - (("audio-pan-override") (set! (-> obj audio-pan-override) (file-stream-read-float file))) - (("audio-volume-override") (set! (-> obj audio-volume-override) (file-stream-read-float file))) - (("audio-channel-nb") (set! (-> obj audio-channel-nb) (file-stream-read-int file))) - (("gfx-renderer") (set! (-> obj gfx-renderer) (the-as pc-gfx-renderer (file-stream-read-int file)))) - (("gfx-resolution") (set! (-> obj gfx-resolution) (file-stream-read-float file))) - (("gfx-anisotropy") (set! (-> obj gfx-anisotropy) (file-stream-read-float file))) - (("shrub-dist-mod") (set! (-> obj shrub-dist-mod) (file-stream-read-float file))) - (("lod-dist-mod") (set! (-> obj lod-dist-mod) (file-stream-read-float file))) - (("lod-force-tfrag") (set! (-> obj lod-force-tfrag) (file-stream-read-int file))) - (("lod-force-tie") (set! (-> obj lod-force-tie) (file-stream-read-int file))) - (("lod-force-ocean") (set! (-> obj lod-force-ocean) (file-stream-read-int file))) - (("lod-force-actor") (set! (-> obj lod-force-actor) (file-stream-read-int file))) - (("game-language") (set-game-language! obj (the-as language-enum (file-stream-read-int file)))) - (("subtitle-speaker") (set! (-> obj subtitle-speaker?) (file-stream-read-symbol file))) - (("territory") (set! (-> obj territory) (file-stream-read-int file))) - - (("ignore-controller-win-unfocused?") (set-ignore-controller-in-bg! obj (file-stream-read-symbol file))) - (("controller-hp-led?") (set! (-> obj controller-led-hp?) (file-stream-read-symbol file))) - (("controller-eco-led?") (set! (-> obj controller-led-eco?) (file-stream-read-symbol file))) - (("controller-heat-led?") (set! (-> obj controller-led-heat?) (file-stream-read-symbol file))) - (("stick-deadzone") (set! (-> obj stick-deadzone) (file-stream-read-float file))) - ;; TODO - remove this eventually, setting moved into json input-settings - ;; has to stay here or the settings parsing code explodes - (("keyboard-enabled?") (file-stream-read-symbol file)) - (("mouse-enabled?") (set! (-> obj mouse-enabled?) (file-stream-read-symbol file))) - (("mouse-camera?") (set! (-> obj mouse-camera?) (file-stream-read-symbol file))) - (("mouse-xsens") (set! (-> obj mouse-xsens) (file-stream-read-float file))) - (("mouse-ysens") (set! (-> obj mouse-ysens) (file-stream-read-float file))) - (("mouse-movement?") (set! (-> obj mouse-movement?) (file-stream-read-symbol file))) - (("auto-hide-cursor?") (set! (-> obj auto-hide-cursor?) (file-stream-read-symbol file))) - - (("ps2-read-speed?") (set! (-> obj ps2-read-speed?) (file-stream-read-symbol file))) - (("ps2-parts?") (set! (-> obj ps2-parts?) (file-stream-read-symbol file))) - (("ps2-music?") (set! (-> obj ps2-music?) (file-stream-read-symbol file))) - (("ps2-se?") (set! (-> obj ps2-se?) (file-stream-read-symbol file))) - (("ps2-hints?") (set! (-> obj ps2-hints?) (file-stream-read-symbol file))) - (("ps2-shadow?") (set! (-> obj ps2-shadow?) (file-stream-read-symbol file))) - (("ps2-lod-dist?") (set! (-> obj ps2-lod-dist?) (file-stream-read-symbol file))) - (("force-envmap?") (set! (-> obj force-envmap?) (file-stream-read-symbol file))) - (("force-actors?") (set! (-> obj ps2-actor-vis?) (not (file-stream-read-symbol file)))) - (("music-fade?") (file-stream-read-symbol file)) ;; TODO remove - (("use-vis?") (set! (-> obj use-vis?) (file-stream-read-symbol file))) - (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) - (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) - (("speedrunner-mode?") (set! (-> obj speedrunner-mode?) (file-stream-read-symbol file))) - (("cutscene-skips?") (file-stream-read-symbol file)) ;; TODO remove - (("first-camera-h-inverted?") (set! (-> obj first-camera-h-inverted?) (file-stream-read-symbol file))) - (("first-camera-v-inverted?") (set! (-> obj first-camera-v-inverted?) (file-stream-read-symbol file))) - (("third-camera-h-inverted?") (set! (-> obj third-camera-h-inverted?) (file-stream-read-symbol file))) - (("third-camera-v-inverted?") (set! (-> obj third-camera-v-inverted?) (file-stream-read-symbol file))) - (("music-fadein?") (set! (-> obj music-fadein?) (file-stream-read-symbol file))) - (("music-fadeout?") (set! (-> obj music-fadeout?) (file-stream-read-symbol file))) - (("controller-led-brightness") (set! (-> obj controller-led-brightness) (file-stream-read-float file))) - (("controller-led-min-brightness") (set! (-> obj controller-led-min-brightness) (file-stream-read-float file))) - (("controller-led-max-brightness") (set! (-> obj controller-led-max-brightness) (file-stream-read-float file))) - - ;; debug - (("debug-font-scale") (set! (-> obj debug-font-scale) (file-stream-read-float file))) - (("debug-font-scale-auto?") (set! (-> obj debug-font-scale-auto?) (file-stream-read-symbol file))) - (("panic") - (when (file-stream-read-symbol file) - (reset obj #t) - (return #f) - ) - ) - ) + (("fps") (set-frame-rate! obj (file-stream-read-int file) #t)) + (("window-size") + (set! (-> obj window-width) (file-stream-read-int file)) + (set! (-> obj window-height) (file-stream-read-int file))) + (("game-size") (set! (-> obj width) (file-stream-read-int file)) (set! (-> obj height) (file-stream-read-int file))) + (("msaa") (set! (-> obj gfx-msaa) (file-stream-read-int file))) + (("aspect-state") + ;; game aspect + (set-game-setting! obj 'aspect-ratio (file-stream-read-symbol file)) + ;; aspect ratio + (set! (-> obj aspect-custom-x) (file-stream-read-int file)) + (set! (-> obj aspect-custom-y) (file-stream-read-int file)) + ;; aspect auto + (set! (-> obj aspect-ratio-auto?) (file-stream-read-symbol file)) + (unless (-> obj aspect-ratio-auto?) + (set-aspect! obj (-> obj aspect-custom-x) (-> obj aspect-custom-y)))) + (("display-mode") + ;; force a display mode update + (set! (-> obj display-mode) #f) + (set-display-mode! obj (file-stream-read-symbol file) #t)) + (("monitor") (set-monitor! obj (file-stream-read-int file))) + (("letterbox") (set! (-> obj letterbox?) (file-stream-read-symbol file))) + (("vsync") (set! (-> obj vsync?) (file-stream-read-symbol file))) + (("font-scale") (set! (-> obj font-scale) (file-stream-read-float file))) + (("audio-latency-ms") (set! (-> obj audio-latency-ms) (file-stream-read-int file))) + (("audio-pan-override") (set! (-> obj audio-pan-override) (file-stream-read-float file))) + (("audio-volume-override") (set! (-> obj audio-volume-override) (file-stream-read-float file))) + (("audio-channel-nb") (set! (-> obj audio-channel-nb) (file-stream-read-int file))) + (("gfx-renderer") (set! (-> obj gfx-renderer) (the-as pc-gfx-renderer (file-stream-read-int file)))) + (("gfx-resolution") (set! (-> obj gfx-resolution) (file-stream-read-float file))) + (("gfx-anisotropy") (set! (-> obj gfx-anisotropy) (file-stream-read-float file))) + (("shrub-dist-mod") (set! (-> obj shrub-dist-mod) (file-stream-read-float file))) + (("lod-dist-mod") (set! (-> obj lod-dist-mod) (file-stream-read-float file))) + (("lod-force-tfrag") (set! (-> obj lod-force-tfrag) (file-stream-read-int file))) + (("lod-force-tie") (set! (-> obj lod-force-tie) (file-stream-read-int file))) + (("lod-force-ocean") (set! (-> obj lod-force-ocean) (file-stream-read-int file))) + (("lod-force-actor") (set! (-> obj lod-force-actor) (file-stream-read-int file))) + (("game-language") (set-game-language! obj (the-as language-enum (file-stream-read-int file)))) + (("subtitle-speaker") (set! (-> obj subtitle-speaker?) (file-stream-read-symbol file))) + (("territory") (set! (-> obj territory) (file-stream-read-int file))) + (("ignore-controller-win-unfocused?") (set-ignore-controller-in-bg! obj (file-stream-read-symbol file))) + (("controller-hp-led?") (set! (-> obj controller-led-hp?) (file-stream-read-symbol file))) + (("controller-eco-led?") (set! (-> obj controller-led-eco?) (file-stream-read-symbol file))) + (("controller-heat-led?") (set! (-> obj controller-led-heat?) (file-stream-read-symbol file))) + (("stick-deadzone") (set! (-> obj stick-deadzone) (file-stream-read-float file))) + ;; TODO - remove this eventually, setting moved into json input-settings + ;; has to stay here or the settings parsing code explodes + (("keyboard-enabled?") (file-stream-read-symbol file)) + (("mouse-enabled?") (set! (-> obj mouse-enabled?) (file-stream-read-symbol file))) + (("mouse-camera?") (set! (-> obj mouse-camera?) (file-stream-read-symbol file))) + (("mouse-xsens") (set! (-> obj mouse-xsens) (file-stream-read-float file))) + (("mouse-ysens") (set! (-> obj mouse-ysens) (file-stream-read-float file))) + (("mouse-movement?") (set! (-> obj mouse-movement?) (file-stream-read-symbol file))) + (("auto-hide-cursor?") (set! (-> obj auto-hide-cursor?) (file-stream-read-symbol file))) + (("ps2-read-speed?") (set! (-> obj ps2-read-speed?) (file-stream-read-symbol file))) + (("ps2-parts?") (set! (-> obj ps2-parts?) (file-stream-read-symbol file))) + (("ps2-music?") (set! (-> obj ps2-music?) (file-stream-read-symbol file))) + (("ps2-se?") (set! (-> obj ps2-se?) (file-stream-read-symbol file))) + (("ps2-hints?") (set! (-> obj ps2-hints?) (file-stream-read-symbol file))) + (("ps2-shadow?") (set! (-> obj ps2-shadow?) (file-stream-read-symbol file))) + (("ps2-lod-dist?") (set! (-> obj ps2-lod-dist?) (file-stream-read-symbol file))) + (("force-envmap?") (set! (-> obj force-envmap?) (file-stream-read-symbol file))) + (("force-actors?") (set! (-> obj ps2-actor-vis?) (not (file-stream-read-symbol file)))) + (("music-fade?") (file-stream-read-symbol file)) ;; TODO remove + (("use-vis?") (set! (-> obj use-vis?) (file-stream-read-symbol file))) + (("hinttitles?") (set! (-> obj hinttitles?) (file-stream-read-symbol file))) + (("discord-rpc?") (set! (-> obj discord-rpc?) (file-stream-read-symbol file))) + (("speedrunner-mode?") (set! (-> obj speedrunner-mode?) (file-stream-read-symbol file))) + (("cutscene-skips?") (file-stream-read-symbol file)) ;; TODO remove + (("first-camera-h-inverted?") (set! (-> obj first-camera-h-inverted?) (file-stream-read-symbol file))) + (("first-camera-v-inverted?") (set! (-> obj first-camera-v-inverted?) (file-stream-read-symbol file))) + (("third-camera-h-inverted?") (set! (-> obj third-camera-h-inverted?) (file-stream-read-symbol file))) + (("third-camera-v-inverted?") (set! (-> obj third-camera-v-inverted?) (file-stream-read-symbol file))) + (("music-fadein?") (set! (-> obj music-fadein?) (file-stream-read-symbol file))) + (("music-fadeout?") (set! (-> obj music-fadeout?) (file-stream-read-symbol file))) + (("controller-led-brightness") (set! (-> obj controller-led-brightness) (file-stream-read-float file))) + (("controller-led-min-brightness") (set! (-> obj controller-led-min-brightness) (file-stream-read-float file))) + (("controller-led-max-brightness") (set! (-> obj controller-led-max-brightness) (file-stream-read-float file))) + ;; debug + (("debug-font-scale") (set! (-> obj debug-font-scale) (file-stream-read-float file))) + (("debug-font-scale-auto?") (set! (-> obj debug-font-scale-auto?) (file-stream-read-symbol file))) + (("panic") (when (file-stream-read-symbol file) (reset obj #t) (return #f)))) 0) (defmethod handle-output-settings ((obj pc-settings) (file file-stream)) "handle the text writing output for the 'settings' group" - (format file " (fps ~D)~%" (-> obj target-fps)) (format file " (msaa ~D)~%" (-> obj gfx-msaa)) - (format file " (aspect-state ~A ~D ~D ~A)~%" (get-game-setting obj 'aspect-ratio) - (-> obj aspect-custom-x) (-> obj aspect-custom-y) - (-> obj aspect-ratio-auto?)) + (format file + " (aspect-state ~A ~D ~D ~A)~%" + (get-game-setting obj 'aspect-ratio) + (-> obj aspect-custom-x) + (-> obj aspect-custom-y) + (-> obj aspect-ratio-auto?)) (format file " (display-mode ~A)~%" (-> obj display-mode)) (format file " (window-size ~D ~D)~%" (-> obj window-width) (-> obj window-height)) (format file " (game-size ~D ~D)~%" (-> obj width) (-> obj height)) @@ -724,12 +573,10 @@ ;(format file " (font-scale ~f)~%" (-> obj font-scale)) (format file " (debug-font-scale ~f)~%" (-> obj debug-font-scale)) (format file " (debug-font-scale-auto? ~A)~%" (-> obj debug-font-scale-auto?)) - ;(format file " (audio-latency-ms ~D)~%" (-> obj audio-latency-ms)) ;(format file " (audio-pan-override ~f)~%" (-> obj audio-pan-override)) ;(format file " (audio-volume-override ~f)~%" (-> obj audio-volume-override)) ;(format file " (audio-channel-nb ~D)~%" (-> obj audio-channel-nb)) - ;(format file " (gfx-renderer ~D)~%" (-> obj gfx-renderer)) ;(format file " (gfx-resolution ~f)~%" (-> obj gfx-resolution)) ;(format file " (gfx-anisotropy ~f)~%" (-> obj gfx-anisotropy)) @@ -739,7 +586,6 @@ (format file " (lod-force-tie ~D)~%" (-> obj lod-force-tie)) (format file " (lod-force-ocean ~D)~%" (-> obj lod-force-ocean)) (format file " (lod-force-actor ~D)~%" (-> obj lod-force-actor)) - (format file " (ignore-controller-win-unfocused? ~A)~%" (-> obj ignore-controller-win-unfocused?)) (format file " (controller-hp-led? ~A)~%" (-> obj controller-led-hp?)) (format file " (controller-eco-led? ~A)~%" (-> obj controller-led-eco?)) @@ -754,7 +600,6 @@ (format file " (mouse-ysens ~f)~%" (-> obj mouse-ysens)) (format file " (mouse-movement? ~A)~%" (-> obj mouse-movement?)) (format file " (auto-hide-cursor? ~A)~%" (-> obj auto-hide-cursor?)) - (format file " (ps2-read-speed? ~A)~%" (-> obj ps2-read-speed?)) (format file " (ps2-parts? ~A)~%" (-> obj ps2-parts?)) (format file " (ps2-music? ~A)~%" (-> obj ps2-music?)) @@ -781,43 +626,26 @@ (defmethod write-to-file ((obj pc-settings) (filename string)) "write settings to a file" - - (if (not filename) - (return #f)) - + (if (not filename) (return #f)) (let ((file (new 'stack 'file-stream filename 'write))) - (if (not (file-stream-valid? file)) - (return #f)) - + (if (not (file-stream-valid? file)) (return #f)) (format file "(settings #x~X~%" PC_KERNEL_VERSION) - (handle-output-settings obj file) - (format file " )~%") - (file-stream-close file) - ) - + (file-stream-close file)) (format 0 "pc settings file write: ~A~%" filename) - - #t - ) + #t) (defmethod load-settings ((obj pc-settings)) "load" (format (clear *pc-temp-string-1*) "~S/pc-settings.gc" *pc-settings-folder*) (cond ((pc-filepath-exists? *pc-temp-string-1*) - (format 0 "[PC] PC Settings found at '~S'...loading!~%" *pc-temp-string-1*) - (unless (read-from-file obj *pc-temp-string-1*) - (format 0 "[PC] PC Settings found at '~S' but could not be loaded, using defaults!~%" *pc-temp-string-1*) - (reset obj #t) - ) - ) - (else - (format 0 "[PC] PC Settings not found at '~S'...initializing with defaults!~%" *pc-temp-string-1*) - (reset obj #t) - ) - ) + (format 0 "[PC] PC Settings found at '~S'...loading!~%" *pc-temp-string-1*) + (unless (read-from-file obj *pc-temp-string-1*) + (format 0 "[PC] PC Settings found at '~S' but could not be loaded, using defaults!~%" *pc-temp-string-1*) + (reset obj #t))) + (else (format 0 "[PC] PC Settings not found at '~S'...initializing with defaults!~%" *pc-temp-string-1*) (reset obj #t))) 0) (defmethod initialize ((obj pc-settings)) @@ -833,40 +661,22 @@ (defmethod new pc-settings ((allocation symbol) (type-to-make type)) "make a new pc-settings" - (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - (initialize obj) - obj)) - + (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) (initialize obj) obj)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; entity debugging ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (when *debug-segment* - -(defmethod update-pad ((obj entity-debug-inspect) (pad-idx int)) - "respond to pad inputs" - - ;; scroll up - (if (cpad-pressed? pad-idx l1) - (1-! (-> obj scroll-y))) - ;; scroll down - (if (cpad-pressed? pad-idx r1) - (1+! (-> obj scroll-y))) - ;; toggle actor info - (if (cpad-pressed? pad-idx l3) - (not! (-> obj show-actor-info))) - ;; toggle long info - (if (cpad-pressed? pad-idx up) - (not! (-> obj show-long-info))) - - (minmax! (-> obj scroll-y) 0 (-> obj scroll-y-max)) - - (none)) - -) ;; when debug_segment - - - - - + (defmethod update-pad ((obj entity-debug-inspect) (pad-idx int)) + "respond to pad inputs" + ;; scroll up + (if (cpad-pressed? pad-idx l1) (1-! (-> obj scroll-y))) + ;; scroll down + (if (cpad-pressed? pad-idx r1) (1+! (-> obj scroll-y))) + ;; toggle actor info + (if (cpad-pressed? pad-idx l3) (not! (-> obj show-actor-info))) + ;; toggle long info + (if (cpad-pressed? pad-idx up) (not! (-> obj show-long-info))) + (minmax! (-> obj scroll-y) 0 (-> obj scroll-y-max)) + (none))) ;; when debug_segment diff --git a/goal_src/jak1/pc/pckernel-h.gc b/goal_src/jak1/pc/pckernel-h.gc index 505a14355c..389755fa0f 100644 --- a/goal_src/jak1/pc/pckernel-h.gc +++ b/goal_src/jak1/pc/pckernel-h.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ps2/pad.gc") - #| - This file contains code that we need for the PC port of the game specifically. It should be included as part of the game engine package (engine.cgo). @@ -22,276 +19,266 @@ - whatever else. If you do not want to include these PC things, you should exclude it from the build system. - - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (deftype pckernel-version (int64) - ((build int16 :offset 0) - (revision int16 :offset 16) - (minor int16 :offset 32) - (major int16 :offset 48) - ) - ) + ((build int16 :offset 0) + (revision int16 :offset 16) + (minor int16 :offset 32) + (major int16 :offset 48))) (defmacro static-pckernel-version (major minor rev build) `(new 'static 'pckernel-version :major ,major :minor ,minor :revision ,rev :build ,build)) + (defconstant PC_KERNEL_INVALID_VERSION (static-pckernel-version #xffff #xffff #xffff #xffff)) - ;; version: invalid + +;; version: invalid (defconstant PC_KERNEL_VERSION PC_KERNEL_INVALID_VERSION) + (defconstant PC_KERNEL_VER_MAJOR (-> PC_KERNEL_VERSION major)) + (defconstant PC_KERNEL_VER_MINOR (-> PC_KERNEL_VERSION minor)) + (defconstant PC_KERNEL_VER_REVISION (-> PC_KERNEL_VERSION revision)) + (defconstant PC_KERNEL_VER_BUILD (-> PC_KERNEL_VERSION build)) (defun-extern get-pckernel-version pckernel-version) - (defconstant PS2_VOICE_AMOUNT 48) + (defconstant PC_VOICE_AMOUNT 256) (defconstant ASPECT_4X3 (/ 4.0 3.0)) -(defconstant ASPECT_16X9 (/ 16.0 9.0)) -(defconstant ASPECT_16X9_SCALE (/ ASPECT_16X9 ASPECT_4X3)) -(defconstant PC_BASE_WIDTH 640) -(defconstant PC_BASE_HEIGHT 480) -(defconstant PC_MIN_WIDTH 320) -(defconstant PC_MIN_HEIGHT 240) -(defconstant PC_DEFAULT_MSAA 2) +(defconstant ASPECT_16X9 (/ 16.0 9.0)) + +(defconstant ASPECT_16X9_SCALE (/ ASPECT_16X9 ASPECT_4X3)) + +(defconstant PC_BASE_WIDTH 640) + +(defconstant PC_BASE_HEIGHT 480) + +(defconstant PC_MIN_WIDTH 320) + +(defconstant PC_MIN_HEIGHT 240) + +(defconstant PC_DEFAULT_MSAA 2) ;; how many entries the music log has. the game only has 21 tracks but let's have more space for no reason. (defconstant PC_MUSIC_LOG_LENGTH 30) + ;; how many entries the spool anim log has. only 164 are used in-game. (defconstant PC_SPOOL_LOG_LENGTH 170) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; graphics renderers (defenum pc-gfx-renderer :type uint8 (software) (opengl) (vulkan) - (direct3d) - ) + (direct3d)) ;; music log info (deftype pc-music-log-entry (structure) - ((name symbol) - (flava-mask int32) - ) - :pack-me - ) + ((name symbol) + (flava-mask int32)) + :pack-me) ;; bingo integration. placeholder for now. -(deftype pc-bingo-info (structure) - () - :pack-me - ) - +(deftype pc-bingo-info (structure) () + :pack-me) ;; All of the configuration for the PC port in GOAL. Access things from here! ;; Includes some methods to change parameters. (deftype pc-settings (basic) - ((version pckernel-version) ;; version of this settings - + ((version pckernel-version) ;; version of this settings ;; "generic" graphics settings - (target-fps int16) ;; the target framerate of the game + (target-fps int16) ;; the target framerate of the game ;; game resolution? - (width int64) - (height int64) + (width int64) + (height int64) ;; window size. resolution = window size in windowed mode. - (window-width int64) - (window-height int64) + (window-width int64) + (window-height int64) ;; reported window framebuffer size from OS - (framebuffer-width int64) - (framebuffer-height int64) + (framebuffer-width int64) + (framebuffer-height int64) ;; the region to draw in that framebuffer. rest is cleared to black. - (framebuffer-scissor-width int64) - (framebuffer-scissor-height int64) - (dpi-x float) ;; DPI width scale - (dpi-y float) ;; DPI height scale - (aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically based on game display size. - (aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect. - (aspect-ratio-scale float) ;; aspect ratio compared to 4x3 - (aspect-ratio-reciprocal float) ;; reciprocal of that - (aspect-custom-x int) - (aspect-custom-y int) - (display-mode symbol) ;; display mode. can be windowed, fullscreen or borderless - (letterbox? symbol) ;; letterbox. #f = stretched - (vsync? symbol) ;; vsync. - (font-scale float) ;; font scaling. - (monitor int32) ;; index of which monitor to use when fullscreen or borderless - + (framebuffer-scissor-width int64) + (framebuffer-scissor-height int64) + (dpi-x float) ;; DPI width scale + (dpi-y float) ;; DPI height scale + (aspect-ratio-auto? symbol) ;; if on, aspect ratio is calculated automatically based on game display size. + (aspect-ratio float) ;; the desired aspect ratio. set auto to off and then this to 4/3 to force 4x3 aspect. + (aspect-ratio-scale float) ;; aspect ratio compared to 4x3 + (aspect-ratio-reciprocal float) ;; reciprocal of that + (aspect-custom-x int) + (aspect-custom-y int) + (display-mode symbol) ;; display mode. can be windowed, fullscreen or borderless + (letterbox? symbol) ;; letterbox. #f = stretched + (vsync? symbol) ;; vsync. + (font-scale float) ;; font scaling. + (monitor int32) ;; index of which monitor to use when fullscreen or borderless ;; debug settings - (os symbol) ;; windows, linux, macos - (user symbol) ;; username. not system username, just debug thing. - (debug? symbol) ;; more debug stuff just in case. - (debug-font-scale float) ;; debug font scaling factor. - (debug-font-scale-auto? symbol) ;; auto-scale debug font by screen height. - + (os symbol) ;; windows, linux, macos + (user symbol) ;; username. not system username, just debug thing. + (debug? symbol) ;; more debug stuff just in case. + (debug-font-scale float) ;; debug font scaling factor. + (debug-font-scale-auto? symbol) ;; auto-scale debug font by screen height. ;; device settings (ignore-controller-win-unfocused? symbol) - (controller-led-hp? symbol) - (controller-led-eco? symbol) - (controller-led-heat? symbol) - (controller-led-brightness float) - (controller-led-min-brightness float) - (controller-led-max-brightness float) - (controller-led-color rgbaf :inline) - (stick-deadzone float) ;; analog stick deadzone. 0-1 - (keyboard-enabled? symbol) ;; NOTE - this is here solely to satisfy jak 1's menu design, the setting has been moved into `input-settings.json` - (mouse-enabled? symbol) - (mouse-camera? symbol) - (mouse-xsens float) - (mouse-ysens float) - (mouse-movement? symbol) - (auto-hide-cursor? symbol) - + (controller-led-hp? symbol) + (controller-led-eco? symbol) + (controller-led-heat? symbol) + (controller-led-brightness float) + (controller-led-min-brightness float) + (controller-led-max-brightness float) + (controller-led-color rgbaf :inline) + (stick-deadzone float) ;; analog stick deadzone. 0-1 + (keyboard-enabled? symbol) ;; NOTE - this is here solely to satisfy jak 1's menu design, the setting has been moved into `input-settings.json` + (mouse-enabled? symbol) + (mouse-camera? symbol) + (mouse-xsens float) + (mouse-ysens float) + (mouse-movement? symbol) + (auto-hide-cursor? symbol) ;; audio settings - (audio-latency-ms int16) ;; audio latency in milliseconds - (audio-pan-override float) ;; audio pan modifier - (audio-volume-override float) ;; audio volume modifier - (audio-channel-nb int16) ;; audio channel amount. will be 48 on PS2 mode. - + (audio-latency-ms int16) ;; audio latency in milliseconds + (audio-pan-override float) ;; audio pan modifier + (audio-volume-override float) ;; audio volume modifier + (audio-channel-nb int16) ;; audio channel amount. will be 48 on PS2 mode. ;; graphics settings - (gfx-renderer pc-gfx-renderer) ;; the renderer to use - (gfx-resolution float) ;; for supersampling - (gfx-anisotropy float) ;; for anisotropy - (gfx-msaa int32) ;; for MSAA - + (gfx-renderer pc-gfx-renderer) ;; the renderer to use + (gfx-resolution float) ;; for supersampling + (gfx-anisotropy float) ;; for anisotropy + (gfx-msaa int32) ;; for MSAA ;; ps2 settings - (ps2-read-speed? symbol) ;; emulate DVD loads - (ps2-parts? symbol) ;; if off, increase particle cap - (ps2-music? symbol) ;; if off, use .wav files stored somewhere - (ps2-se? symbol) ;; if off, use adjusted sound effects - (ps2-hints? symbol) ;; if off, enables extra game hints - + (ps2-read-speed? symbol) ;; emulate DVD loads + (ps2-parts? symbol) ;; if off, increase particle cap + (ps2-music? symbol) ;; if off, use .wav files stored somewhere + (ps2-se? symbol) ;; if off, use adjusted sound effects + (ps2-hints? symbol) ;; if off, enables extra game hints ;; lod settings - (ps2-shadow? symbol) ;; if off, enables extended object shadows - (ps2-lod-dist? symbol) ;; use original lod distances - (force-envmap? symbol) ;; dont use envmap fading (force max). - (shrub-dist-mod float) ;; shrub render distance modifier - (lod-dist-mod float) ;; non-shrub lod distance modifier - (lod-force-tfrag int8) ;; tfrag lod tier override. 0 = highest detail - (lod-force-tie int8) ;; tie lod tier override - (lod-force-ocean int8) ;; ocean lod tier override - (lod-force-actor int8) ;; merc lod tier override - + (ps2-shadow? symbol) ;; if off, enables extended object shadows + (ps2-lod-dist? symbol) ;; use original lod distances + (force-envmap? symbol) ;; dont use envmap fading (force max). + (shrub-dist-mod float) ;; shrub render distance modifier + (lod-dist-mod float) ;; non-shrub lod distance modifier + (lod-force-tfrag int8) ;; tfrag lod tier override. 0 = highest detail + (lod-force-tie int8) ;; tie lod tier override + (lod-force-ocean int8) ;; ocean lod tier override + (lod-force-actor int8) ;; merc lod tier override ;; misc settings - (ps2-actor-vis? symbol) ;; skips vis check for actor entity if disabled - (use-vis? symbol) ;; if off, don't use vis trees. this MUST be off for custom (non-cropping) aspect ratios. - (hinttitles? symbol) ;; if on, non-cutscene subtitles will show up - (subtitle-speaker? symbol) ;; #f (force off), #t (force on), auto (on for offscreen) - (first-camera-h-inverted? symbol) ;; first-person horizontal camera inverted - (first-camera-v-inverted? symbol) ;; first-person vertical camera inverted - (third-camera-h-inverted? symbol) ;; third-person horizontal camera inverted - (third-camera-v-inverted? symbol) ;; third-person vertical camera inverted - (music-fadeout? symbol) ;; music fadeout toggle. - (music-fadein? symbol) ;; music fadein toggle. - - (territory int16) - - (bingo pc-bingo-info :inline) ;; bingo integration. does nothing for now. - - (discord-rpc? symbol) ;; enable discord rich presence integration - (speedrunner-mode? symbol) ;; enable speedrunner mode - - (flava-hack int64) - + (ps2-actor-vis? symbol) ;; skips vis check for actor entity if disabled + (use-vis? symbol) ;; if off, don't use vis trees. this MUST be off for custom (non-cropping) aspect ratios. + (hinttitles? symbol) ;; if on, non-cutscene subtitles will show up + (subtitle-speaker? symbol) ;; #f (force off), #t (force on), auto (on for offscreen) + (first-camera-h-inverted? symbol) ;; first-person horizontal camera inverted + (first-camera-v-inverted? symbol) ;; first-person vertical camera inverted + (third-camera-h-inverted? symbol) ;; third-person horizontal camera inverted + (third-camera-v-inverted? symbol) ;; third-person vertical camera inverted + (music-fadeout? symbol) ;; music fadeout toggle. + (music-fadein? symbol) ;; music fadein toggle. + (territory int16) + (bingo pc-bingo-info :inline) ;; bingo integration. does nothing for now. + (discord-rpc? symbol) ;; enable discord rich presence integration + (speedrunner-mode? symbol) ;; enable speedrunner mode + (flava-hack int64) ;; TODO - save/restore original settings (language/sound/etc) ) - (:methods - (new (symbol type) _type_) - (initialize (_type_) _type_) - (update (_type_) none) - (update-from-os (_type_) none) - (update-to-os (_type_) none) - (update-discord-rpc (_type_) none) - (update-speedrun (_type_) none) - (update-video-hacks (_type_) object) - (reset (_type_ symbol) int) - (reset-audio (_type_ symbol) int) - (reset-input (_type_ symbol symbol) int) - (reset-gfx (_type_ symbol) int) - (reset-ps2 (_type_ symbol) int) - (reset-misc (_type_ symbol) int) - (reset-camera (_type_ symbol) int) - (reset-extra (_type_ symbol) int) - (print-debug-misc (_type_) object) - (draw (_type_ dma-buffer) object) - (draw-memory (_type_ dma-buffer) symbol) - (set-display-mode! (_type_ symbol symbol) int) - (set-size! (_type_ int int symbol) none) - (set-aspect! (_type_ int int) none) - (set-aspect-ratio! (_type_ float) none) - (set-frame-rate! (_type_ int symbol) int) - (set-monitor! (_type_ int) none) - (set-game-setting! (_type_ symbol symbol) object) - (get-game-setting (_type_ symbol) symbol) - (set-game-language! (_type_ language-enum) language-enum) - (get-game-language (_type_) language-enum) - (get-current-game-width (_type_) int) - (get-current-game-height (_type_) int) - (read-from-file (_type_ string) symbol) - (write-to-file (_type_ string) symbol) - (handle-input-settings (_type_ file-stream) object) - (handle-output-settings (_type_ file-stream) object) - (led-enabled? (_type_) symbol) - (update-led (_type_) symbol) - (update-cheats (_type_) int) - (update-music-log (_type_) int) - (add-to-music-log (_type_ symbol int) int) - (commit-to-file (_type_) none) - (load-settings (_type_) int) - (set-ignore-controller-in-bg! (_type_ symbol) none) - (update-mouse-controls! (_type_) none) - (debug-font-scale-factor (_type_) float) - ) - ) + (new (symbol type) _type_) + (initialize (_type_) _type_) + (update (_type_) none) + (update-from-os (_type_) none) + (update-to-os (_type_) none) + (update-discord-rpc (_type_) none) + (update-speedrun (_type_) none) + (update-video-hacks (_type_) object) + (reset (_type_ symbol) int) + (reset-audio (_type_ symbol) int) + (reset-input (_type_ symbol symbol) int) + (reset-gfx (_type_ symbol) int) + (reset-ps2 (_type_ symbol) int) + (reset-misc (_type_ symbol) int) + (reset-camera (_type_ symbol) int) + (reset-extra (_type_ symbol) int) + (print-debug-misc (_type_) object) + (draw (_type_ dma-buffer) object) + (draw-memory (_type_ dma-buffer) symbol) + (set-display-mode! (_type_ symbol symbol) int) + (set-size! (_type_ int int symbol) none) + (set-aspect! (_type_ int int) none) + (set-aspect-ratio! (_type_ float) none) + (set-frame-rate! (_type_ int symbol) int) + (set-monitor! (_type_ int) none) + (set-game-setting! (_type_ symbol symbol) object) + (get-game-setting (_type_ symbol) symbol) + (set-game-language! (_type_ language-enum) language-enum) + (get-game-language (_type_) language-enum) + (get-current-game-width (_type_) int) + (get-current-game-height (_type_) int) + (read-from-file (_type_ string) symbol) + (write-to-file (_type_ string) symbol) + (handle-input-settings (_type_ file-stream) object) + (handle-output-settings (_type_ file-stream) object) + (led-enabled? (_type_) symbol) + (update-led (_type_) symbol) + (update-cheats (_type_) int) + (update-music-log (_type_) int) + (add-to-music-log (_type_ symbol int) int) + (commit-to-file (_type_) none) + (load-settings (_type_) int) + (set-ignore-controller-in-bg! (_type_ symbol) none) + (update-mouse-controls! (_type_) none) + (debug-font-scale-factor (_type_) float))) (defconstant PC_TEMP_STRING_LEN 1024) + (define *pc-temp-string* (new 'global 'string PC_TEMP_STRING_LEN (the string #f))) (define *pc-temp-string-1* (new 'global 'string 2048 (the string #f))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; debug settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define *display-actor-bank* #f) + (define *display-pad-debug* #f) + (define *display-led* #f) + (define *display-led-rgba* (new 'static 'rgba)) + (define *display-heap-status* #f) + (define *display-actor-counts* #f) + (define *display-text-box* #f) + (define *display-sha* *debug-segment*) ;; collision renderer things. debug only. (define *collision-renderer* #f) -(define *collision-wireframe* #f) -(define *collision-mode* (pc-collision-mode mode)) +(define *collision-wireframe* #f) + +(define *collision-mode* (pc-collision-mode mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; resets ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod reset ((obj pc-settings) (call-handlers symbol)) "Reset everything back to default settings @@ -299,11 +286,8 @@ such as window size, etc. If you just want to set the settings and handle the fields yourself later, set call-handlers to #f such as if you're setting the initial values right before reading the settings file that changes them." - (format 0 "pc settings reset~%") - (set! (-> obj version) (get-pckernel-version)) - (set! (-> obj os) (pc-get-os)) (set! (-> obj user) #f) (set! (-> obj debug?) #f) @@ -314,69 +298,54 @@ (set! (-> obj speedrunner-mode?) #f) (set! (-> obj debug-font-scale) 1.0) (set! (-> obj debug-font-scale-auto?) #t) - (reset-gfx obj call-handlers) (reset-audio obj call-handlers) (reset-input obj 'all call-handlers) (reset-ps2 obj call-handlers) (reset-misc obj call-handlers) (reset-extra obj call-handlers) - 0) - (defmethod reset-gfx ((obj pc-settings) (call-handlers symbol)) "Set the default graphics settings" - ;; temporarily "set" to windowed so we can change window size ;; we set our actual target display mode later. (set! (-> obj display-mode) 'windowed) (set-size! obj PC_BASE_WIDTH PC_BASE_HEIGHT #f) - (set-aspect! obj 4 3) (set-frame-rate! obj 60 call-handlers) - (set! (-> obj use-vis?) #f) (set! (-> obj aspect-ratio-auto?) #t) (set! (-> obj vsync?) #t) (set! (-> obj letterbox?) #t) - ;; get screen size and set to borderless at screen res (if retail) (cond ((> (pc-get-num-resolutions) 0) ;; pick first available resolution by default - (pc-get-resolution 0 (&-> obj width) (&-> obj height)) - ) + (pc-get-resolution 0 (&-> obj width) (&-> obj height))) (else ;; somehow didn't get a single resolution. this is pretty bad. (pc-get-active-display-size (&-> obj width) (&-> obj height)) (max! (-> obj width) PC_MIN_WIDTH) (max! (-> obj height) PC_MIN_HEIGHT) - (format 0 "!!!! failed to get any screen resolutions !!!!") - ) - ) + (format 0 "!!!! failed to get any screen resolutions !!!!"))) (format 0 "fullscreen resolution defaulted to ~D x ~D~%" (-> obj width) (-> obj height)) - (if (not *debug-segment*) - (set-display-mode! obj 'borderless call-handlers) - (set-display-mode! obj 'windowed call-handlers)) + (if (not *debug-segment*) (set-display-mode! obj 'borderless call-handlers) (set-display-mode! obj 'windowed call-handlers)) (set! (-> obj gfx-msaa) PC_DEFAULT_MSAA) ;; default msaa 0) (defmethod reset-audio ((obj pc-settings) (call-handlers symbol)) "Set the default audio settings" - (set! (-> obj audio-latency-ms) 80) (set! (-> obj audio-pan-override) 0.0) (set! (-> obj audio-volume-override) 1.0) (set! (-> obj audio-channel-nb) PS2_VOICE_AMOUNT) - (set! (-> obj music-fadeout?) #t) (set! (-> obj music-fadein?) #t) 0) (defmethod reset-input ((obj pc-settings) (device symbol) (call-handlers symbol)) "Set the default input settings" - (when (or (= device 'all) (= device 'controller)) (set! (-> obj ignore-controller-win-unfocused?) #f) (set! (-> obj controller-led-hp?) #t) @@ -385,32 +354,25 @@ (set! (-> obj stick-deadzone) 0.3) (set! (-> obj controller-led-brightness) 1.0) (set! (-> obj controller-led-min-brightness) 0.25) - (set! (-> obj controller-led-max-brightness) 1.0) - ) - + (set! (-> obj controller-led-max-brightness) 1.0)) (when (or (= device 'all) (= device 'input)) (set! (-> obj keyboard-enabled?) #f) (set! (-> obj mouse-enabled?) #f) - (set! (-> obj auto-hide-cursor?) #t) - ) - + (set! (-> obj auto-hide-cursor?) #t)) (when (or (= device 'all) (= device 'mouse)) (set! (-> obj mouse-camera?) #f) (set! (-> obj mouse-xsens) -15.0) (set! (-> obj mouse-ysens) 10.0) - (set! (-> obj mouse-movement?) #f) - ) + (set! (-> obj mouse-movement?) #f)) 0) (defmethod reset-ps2 ((obj pc-settings) (call-handlers symbol)) "Set the default ps2 settings" - (set! (-> obj ps2-read-speed?) #f) (set! (-> obj ps2-parts?) #f) (set! (-> obj ps2-music?) #t) (set! (-> obj ps2-se?) #t) (set! (-> obj ps2-hints?) #t) - (set! (-> obj ps2-shadow?) #f) (set! (-> obj ps2-lod-dist?) #f) (set! (-> obj force-envmap?) #t) @@ -424,18 +386,15 @@ (defmethod reset-misc ((obj pc-settings) (call-handlers symbol)) "Set the default misc settings" - (set! (-> obj ps2-actor-vis?) #t) (set! (-> obj hinttitles?) #t) (set! (-> obj subtitle-speaker?) 'auto) (reset-camera obj call-handlers) - (set! (-> obj territory) -1) ;; auto 0) (defmethod reset-camera ((obj pc-settings) (call-handlers symbol)) "Set the original game's camera controls" - (set! (-> obj first-camera-h-inverted?) #f) ;; first-person horizontal is NOT inverted in original game (set! (-> obj first-camera-v-inverted?) #t) ;; first-person vertical IS inverted in original game (set! (-> obj third-camera-h-inverted?) #t) ;; third person horizontal IS inverted in original game @@ -444,166 +403,119 @@ (defmethod reset-extra ((obj pc-settings) (call-handlers symbol)) "Set the default goodies settings" - 0) (defmacro with-pc (&rest body) "encapsulates the code around PC-specific checks" - `(#when PC_PORT (when (and *pc-settings*) - ,@body - )) - ) - + `(#when PC_PORT + (when (and *pc-settings*) + ,@body))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; quick helpers ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmacro get-debug-font-scale-factor () "return the debug font scale factor to be used." `(debug-font-scale-factor *pc-settings*)) - (defmacro fullscreen? () `(symbol-member? (-> *pc-settings* display-mode) '(fullscreen borderless))) - (defun bcd->dec ((bcd uint)) "Convert a number encoded in BCD to its decimal equivalent" (+ (* (shr (logand bcd #xf0) 4) 10) (logand bcd #x0f))) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; cheats ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(seval (define *pc-cheat-map* - '((#\a (circle triangle)) - (#\b (square x)) - (#\c (circle)) - (#\d (down)) - (#\e (right right)) - ;; #\f - ;; #\g - ;; #\h - (#\i (up)) - ;; #\j - (#\k (circle)) - (#\l (left)) - (#\m (triangle)) - (#\n (up up)) - (#\o (square)) - (#\p (square circle)) - ;; #\q - (#\r (right)) - (#\s (down down)) - (#\t (triangle)) - (#\u (up)) - (#\v (down)) - (#\w (left left)) - (#\x (x)) - (#\y (triangle)) - (#\z (x x)) - )) - ) +(seval + (define *pc-cheat-map* + '((#\a (circle triangle)) + (#\b (square x)) + (#\c (circle)) + (#\d (down)) + (#\e (right right)) + ;; #\f + ;; #\g + ;; #\h + (#\i (up)) + ;; #\j + (#\k (circle)) + (#\l (left)) + (#\m (triangle)) + (#\n (up up)) + (#\o (square)) + (#\p (square circle)) + ;; #\q + (#\r (right)) + (#\s (down down)) + (#\t (triangle)) + (#\u (up)) + (#\v (down)) + (#\w (left left)) + (#\x (x)) + (#\y (triangle)) + (#\z (x x))))) (desfun pc-cheat-encode (word extra) "turn a cheat word into input names." - (let ((out '()) + (let ((out ()) (word-str (symbol->string word))) - - (dotimes (i (string-length word-str)) - (let ((char-to-inputs (assoc (string-ref word-str i) *pc-cheat-map*))) - (if (not char-to-inputs) - (ferror "bad input for pc cheat name: {}" (string-ref word-str i)) - (dolist (button (cadr char-to-inputs)) - (set! out (cons (car button) out)) - )) - )) - - (dolist (ex extra) - (set! out (cons (car ex) out))) - - out) - ) + (dotimes (i (string-length word-str)) + (let ((char-to-inputs (assoc (string-ref word-str i) *pc-cheat-map*))) + (if (not char-to-inputs) + (ferror "bad input for pc cheat name: {}" (string-ref word-str i)) + (dolist (button (cadr char-to-inputs)) + (set! out (cons (car button) out)))))) + (dolist (ex extra) + (set! out (cons (car ex) out))) + out)) (defmacro pc-check-cheat-code (cheat-var pad-idx input &key (extra ()) &rest body) "execute body when a cheat code made up of sequential inputs has been inputted" - (let ((buttons (pc-cheat-encode input extra))) - `(when (nonzero? (cpad-pressed ,pad-idx)) ;; only check when some button has been pressed - (case ,cheat-var - ,@(apply-i - (lambda (x i) - `((,i) - (if (cpad-pressed? ,pad-idx ,x) - ,(if (< i (- (length buttons) 1)) - `(1+! ,cheat-var) - - `(begin - (cond - ((-> *pc-settings* speedrunner-mode?) - (sound-play "cursor-options")) - (else - ,@body) - ) - (set! ,cheat-var 0) - ) - ) - - (set! ,cheat-var 0) - ) - ) - ) - buttons) - ) - ) - )) - - + `(when (nonzero? (cpad-pressed ,pad-idx)) ;; only check when some button has been pressed + (case ,cheat-var + ,@(apply-i + (lambda (x i) + `((,i) + (if (cpad-pressed? ,pad-idx ,x) + ,(if (< i (- (length buttons) 1)) + `(1+! ,cheat-var) + `(begin + (cond + ((-> *pc-settings* speedrunner-mode?) (sound-play "cursor-options")) + (else ,@body)) + (set! ,cheat-var 0))) + (set! ,cheat-var 0)))) + buttons))))) (defun-extern real-movie? symbol) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; entity debugging ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (when *debug-segment* - -(deftype entity-debug-inspect (basic) - ( - (scroll-y int16) - (scroll-y-max int16) - (entity entity) - (show-actor-info symbol) - (show-long-info symbol) - ) - (:methods - (new (symbol type) _type_) - (set-entity! (_type_ entity) entity) - (update-pad (_type_ int) none) - ) - ) - -(defmethod new entity-debug-inspect ((allocation symbol) (type-to-make type)) - "make a new entity-debug-inspect object" - - (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) - - (set! (-> obj scroll-y) 0) - (set! (-> obj scroll-y-max) 0) - (set! (-> obj entity) (the entity #f)) - (set! (-> obj show-actor-info) #f) - (set! (-> obj show-long-info) #f) - obj - ) - ) - - -(define *entity-debug-inspect* (new 'debug 'entity-debug-inspect)) - - -) ;; when debug_segment + (deftype entity-debug-inspect (basic) + ((scroll-y int16) + (scroll-y-max int16) + (entity entity) + (show-actor-info symbol) + (show-long-info symbol)) + (:methods + (new (symbol type) _type_) + (set-entity! (_type_ entity) entity) + (update-pad (_type_ int) none))) + (defmethod new entity-debug-inspect ((allocation symbol) (type-to-make type)) + "make a new entity-debug-inspect object" + (let ((obj (object-new allocation type-to-make (the-as int (-> type-to-make size))))) + (set! (-> obj scroll-y) 0) + (set! (-> obj scroll-y-max) 0) + (set! (-> obj entity) (the entity #f)) + (set! (-> obj show-actor-info) #f) + (set! (-> obj show-long-info) #f) + obj)) + (define *entity-debug-inspect* (new 'debug 'entity-debug-inspect))) ;; when debug_segment diff --git a/goal_src/jak1/pc/pckernel-impl.gc b/goal_src/jak1/pc/pckernel-impl.gc index 15d9c0a0f7..b105401ec7 100644 --- a/goal_src/jak1/pc/pckernel-impl.gc +++ b/goal_src/jak1/pc/pckernel-impl.gc @@ -1,20 +1,16 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/pckernel-h.gc") - #| This file has the game-specific implementation of the pckernel (see pckernel-h.gc and pckernel.gc). - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; version: 1.10.4.0 +;; version: 1.10.4.0 (defconstant PC_KERNEL_VERSION (static-pckernel-version 1 10 4 0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -46,7 +42,6 @@ (russian 18) (polish 19) (lithuanian 20) - (custom 999) ;; temp ) @@ -54,65 +49,54 @@ (defenum pc-jak1-concept-art :bitfield #t :type uint64 - (test) - ) + (test)) ;; secrets and goodies (deftype pc-game-secrets (structure) - ((art pc-jak1-concept-art) ;; concept art unlocked - (music pc-music-log-entry PC_MUSIC_LOG_LENGTH :inline) + ((art pc-jak1-concept-art) ;; concept art unlocked + (music pc-music-log-entry PC_MUSIC_LOG_LENGTH :inline) (hard-fish-hiscore int32) - (hard-rats? symbol) ;; enable this crap + (hard-rats? symbol) ;; enable this crap (hard-rats-hiscore int32) - (hard-rats-hiwave int32) - (hero-mode? symbol) ;; unsure how this should work - (hud-map? symbol) ;; enable map in HUD/progress? - (hud-counters? symbol) ;; enable level orb counter/global buzzer counter? - (hud-watch? symbol) ;; a watch that tells the time of day! - (watch-12hr? symbol) ;; 12-hour clock toggle + (hard-rats-hiwave int32) + (hero-mode? symbol) ;; unsure how this should work + (hud-map? symbol) ;; enable map in HUD/progress? + (hud-counters? symbol) ;; enable level orb counter/global buzzer counter? + (hud-watch? symbol) ;; a watch that tells the time of day! + (watch-12hr? symbol) ;; 12-hour clock toggle ) - :pack-me - ) + :pack-me) ;; The Jak 1 version of the pc-settings object. (deftype pc-settings-jak1 (pc-settings) - ( - (cheats pc-cheats) - (cheats-known pc-cheats) - - (skip-movies? symbol) ;; if on, enable cutscene skipping - (subtitles? symbol) ;; if on, cutscene subtitles will show up - (text-language pc-language) ;; language for game text + ((cheats pc-cheats) + (cheats-known pc-cheats) + (skip-movies? symbol) ;; if on, enable cutscene skipping + (subtitles? symbol) ;; if on, cutscene subtitles will show up + (text-language pc-language) ;; language for game text (subtitle-language pc-language) ;; language for subtitles - (money-starburst? symbol) ;; add a starburst to the money - (extra-hud? symbol) ;; extra hud elements. - - (secrets pc-game-secrets :inline) ;; hidden goodies and additional secrets! - - (scenes-seen uint8 PC_SPOOL_LOG_LENGTH) ;; cutscenes that have been seen, by spool-anim (maybe use 8-char name or bits instead?) - ) - ) + (money-starburst? symbol) ;; add a starburst to the money + (extra-hud? symbol) ;; extra hud elements. + (secrets pc-game-secrets :inline) ;; hidden goodies and additional secrets! + (scenes-seen uint8 PC_SPOOL_LOG_LENGTH) ;; cutscenes that have been seen, by spool-anim (maybe use 8-char name or bits instead?) + )) (define *pc-settings* (the pc-settings-jak1 #f)) - ;; jak 1 discord rpc structure (deftype discord-info (structure) - ((fuel (pointer float)) - (money-total (pointer float)) + ((fuel (pointer float)) + (money-total (pointer float)) (buzzer-total (pointer float)) - (deaths (pointer int32)) - (status string) - (level string) - (cutscene? symbol) - (ogreboss? symbol) - (plant-boss? symbol) - (racer? symbol) - (flutflut? symbol) - (time-of-day (pointer float)) - ) - ) - + (deaths (pointer int32)) + (status string) + (level string) + (cutscene? symbol) + (ogreboss? symbol) + (plant-boss? symbol) + (racer? symbol) + (flutflut? symbol) + (time-of-day (pointer float)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; debug settings @@ -123,17 +107,15 @@ (define *display-bug-report* #f) (define *mood-override-debug* #f) -(define *mood-override-table* (new 'global 'inline-array 'float 8)) +(define *mood-override-table* (new 'global 'inline-array 'float 8)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; resets ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod reset-misc ((obj pc-settings-jak1) (call-handlers symbol)) "Set the default misc settings" - ((method-of-type pc-settings reset-misc) obj call-handlers) (set! (-> obj text-language) (the pc-language (scf-get-language))) (set! (-> obj subtitle-language) (the pc-language (scf-get-language))) @@ -141,35 +123,28 @@ (set! (-> obj subtitles?) *debug-segment*) (cond ((and (= *default-territory* GAME_TERRITORY_SCEE) (= (-> obj text-language) (pc-language english))) - (set! (-> obj text-language) (pc-language uk-english)) - ;(set! (-> obj subtitle-language) (pc-language uk-english)) - ) + (set! (-> obj text-language) (pc-language uk-english)) + ;(set! (-> obj subtitle-language) (pc-language uk-english)) + ) ((= *default-territory* GAME_TERRITORY_SCEI) - (set! (-> obj text-language) (pc-language japanese)) - ;(set! (-> obj subtitle-language) (pc-language japanese)) - ) - (else - )) + (set! (-> obj text-language) (pc-language japanese)) + ;(set! (-> obj subtitle-language) (pc-language japanese)) + ) + (else)) (set! (-> obj money-starburst?) #f) (set! (-> obj extra-hud?) #f) 0) (defmethod reset-extra ((obj pc-settings-jak1) (call-handlers symbol)) "Set the default goodies settings" - ((method-of-type pc-settings reset-extra) obj call-handlers) - (set! (-> obj cheats) (pc-cheats)) (set! (-> obj cheats-known) (pc-cheats)) - (dotimes (i PC_SPOOL_LOG_LENGTH) - (set! (-> obj scenes-seen i) 0) - ) + (set! (-> obj scenes-seen i) 0)) (dotimes (i PC_MUSIC_LOG_LENGTH) (set! (-> obj secrets music i name) #f) - (set! (-> obj secrets music i flava-mask) 0) - ) - + (set! (-> obj secrets music i flava-mask) 0)) (set! (-> obj secrets art) (pc-jak1-concept-art)) (set! (-> obj secrets hard-fish-hiscore) 0) (set! (-> obj secrets hard-rats-hiscore) 0) @@ -186,17 +161,14 @@ ;;;; other ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defun get-video-params () *video-parms*) - +(defun get-video-params () + *video-parms*) ;; for debugging (defenum pc-pat-skip-hack :bitfield #t (noentity 0) (nocamera 1) - (noedge 2) + (noedge 2) (nolineofsight 12) - (unknowncamera 13) - ) - + (unknowncamera 13)) diff --git a/goal_src/jak1/pc/pckernel.gc b/goal_src/jak1/pc/pckernel.gc index e0c12ff610..253c95902a 100644 --- a/goal_src/jak1/pc/pckernel.gc +++ b/goal_src/jak1/pc/pckernel.gc @@ -1,90 +1,75 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/util/pc-anim-util.gc") (require "engine/gfx/mood/time-of-day.gc") (require "engine/level/level.gc") (require "pc/pckernel-common.gc") - #| - This file runs the game-specific version of the pckernel. See pckernel-common.gc for the bulk of the pckernel. - - |# - - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod set-game-setting! ((obj pc-settings-jak1) (setting symbol) (value symbol)) (case setting (('video-mode) - (set! (-> *setting-control* current video-mode) #f) - (set! (-> *setting-control* default video-mode) value) - ) - (('aspect-ratio) - (set! (-> *setting-control* default aspect-ratio) value) - ) - (else - (format #t "unknown setting ~A (~A) to set-game-setting!" setting value)) - ) - ) + (set! (-> *setting-control* current video-mode) #f) + (set! (-> *setting-control* default video-mode) value)) + (('aspect-ratio) (set! (-> *setting-control* default aspect-ratio) value)) + (else (format #t "unknown setting ~A (~A) to set-game-setting!" setting value)))) (defmethod get-game-setting ((obj pc-settings-jak1) (setting symbol)) (case setting - (('video-mode) - (-> *setting-control* default video-mode) - ) - (('aspect-ratio) - (-> *setting-control* default aspect-ratio) - ) - (else - (format #t "unknown setting ~A to get-game-setting" setting) - #f) - ) - ) + (('video-mode) (-> *setting-control* default video-mode)) + (('aspect-ratio) (-> *setting-control* default aspect-ratio)) + (else (format #t "unknown setting ~A to get-game-setting" setting) #f))) (defmethod set-game-language! ((obj pc-settings-jak1) (lang language-enum)) - (set! (-> *setting-control* default language) lang) - ) + (set! (-> *setting-control* default language) lang)) (defmethod get-game-language ((obj pc-settings-jak1)) - (-> *setting-control* default language) - ) + (-> *setting-control* default language)) ;; where we store the input progress for the cheat codes. make sure there's enough space for all cheats. (define *pc-cheat-temp* (new 'global 'inline-array 'uint8 PC_CHEAT_MAX)) (defmethod update-cheats ((obj pc-settings-jak1)) "run cheats." - ;; first check for cheat inputs. (when (and (cpad-hold? 0 l2) (cpad-hold? 0 l1) (cpad-hold? 0 r2) (cpad-hold? 0 r1)) - (pc-check-cheat-code (-> *pc-cheat-temp* 0) 0 spirit :extra (x) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-blue)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 1) 0 spirit :extra (circle) - (logclear! (-> obj cheats) (pc-cheats eco-blue eco-yellow eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-red)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 2) 0 spirit :extra (triangle) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-blue)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-green)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 3) 0 spirit :extra (square) - (logclear! (-> obj cheats) (pc-cheats eco-red eco-blue eco-green)) - (pc-cheat-toggle-and-tune (-> obj cheats) eco-yellow)) - - (pc-check-cheat-code (-> *pc-cheat-temp* 4) 0 undead - (logclear! (-> *target* state-flags) 16) - (pc-cheat-toggle-and-tune (-> obj cheats) invinc)) - + (pc-check-cheat-code (-> *pc-cheat-temp* 0) + 0 + spirit + :extra (x) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-blue)) + (pc-check-cheat-code (-> *pc-cheat-temp* 1) + 0 + spirit + :extra (circle) + (logclear! (-> obj cheats) (pc-cheats eco-blue eco-yellow eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-red)) + (pc-check-cheat-code (-> *pc-cheat-temp* 2) + 0 + spirit + :extra (triangle) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-yellow eco-blue)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-green)) + (pc-check-cheat-code (-> *pc-cheat-temp* 3) + 0 + spirit + :extra (square) + (logclear! (-> obj cheats) (pc-cheats eco-red eco-blue eco-green)) + (pc-cheat-toggle-and-tune (-> obj cheats) eco-yellow)) + (pc-check-cheat-code (-> *pc-cheat-temp* 4) + 0 + undead + (logclear! (-> *target* state-flags) 16) + (pc-cheat-toggle-and-tune (-> obj cheats) invinc)) (pc-check-cheat-code (-> *pc-cheat-temp* 5) 0 bluemoon (pc-cheat-toggle-and-tune (-> obj cheats) sidekick-blue)) (pc-check-cheat-code (-> *pc-cheat-temp* 6) 0 boombox (pc-cheat-toggle-and-tune (-> obj cheats) tunes)) (pc-check-cheat-code (-> *pc-cheat-temp* 7) 0 skies (pc-cheat-toggle-and-tune (-> obj cheats) sky)) @@ -97,152 +82,110 @@ ;(pc-check-cheat-code (-> *pc-cheat-temp* 14) 0 lunatic (pc-cheat-toggle-and-tune (-> obj cheats) hero-mode)) (pc-check-cheat-code (-> *pc-cheat-temp* 15) 0 plzstop (pc-cheat-toggle-and-tune (-> obj cheats) huge-head)) (pc-check-cheat-code (-> *pc-cheat-temp* 16) 0 evilbabe (pc-cheat-toggle-and-tune (-> obj cheats) oh-my-goodness)) - (pc-check-cheat-code (-> *pc-cheat-temp* 17) 0 smart (pc-cheat-toggle-and-tune (-> obj cheats) big-head-npc)) - ) - + (pc-check-cheat-code (-> *pc-cheat-temp* 17) 0 smart (pc-cheat-toggle-and-tune (-> obj cheats) big-head-npc))) ;; run cheats here. ;;;;;;;;;;;;;;;;;;; (when *target* - ;; hook custom animation callback - (if (nonzero? (-> *target* skel)) - (set! (-> *target* skel postbind-function) target-joint-callback-pc)) - - (with-pp (protect ((-> *target* fact eco-source) *sound-player-enable*) - ;; act as if this isnt a new source of eco to prevent spamming sounds. then restore the old source! - (when (< 0 (-> *target* fact eco-level)) + ;; hook custom animation callback + (if (nonzero? (-> *target* skel)) (set! (-> *target* skel postbind-function) target-joint-callback-pc)) + (with-pp + (protect ((-> *target* fact eco-source) + *sound-player-enable*) + ;; act as if this isnt a new source of eco to prevent spamming sounds. then restore the old source! + (when (< 0 (-> *target* fact eco-level)) (set! (-> *target* fact eco-source) (process->handle pp)) - (false! *sound-player-enable*) - ) - - (cond - ;; green eco! - ((pc-cheats? (-> obj cheats) eco-green) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-green)) - (<= (-> *target* fact eco-level) 0.0)) - (define-extern vent type) - (protect ((-> pp type) (-> *target* control root-prim prim-core action)) - (set! (-> pp type) vent) - (logior! (-> *target* control root-prim prim-core action) (collide-action racer)) - (send-event *target* 'get-pickup (pickup-type eco-green) (-> *FACT-bank* eco-full-inc))) - ) - ) - ;; red eco! - ((pc-cheats? (-> obj cheats) eco-red) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-red)) - (<= (-> *target* fact eco-level) 0.0)) - (send-event *target* 'get-pickup (pickup-type eco-red) (-> *FACT-bank* eco-full-inc)) - ) - ) - ;; blue eco! - ((pc-cheats? (-> obj cheats) eco-blue) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-blue)) - (<= (-> *target* fact eco-level) 0.0)) - (protect ((-> *target* event-hook)) - (set! (-> *target* event-hook) target-generic-event-handler) - (send-event *target* 'get-pickup (pickup-type eco-blue) (-> *FACT-bank* eco-full-inc)) - ) - (send-event *target* 'boost (-> *FACT-bank* eco-single-inc)) - ) - ) - ;; yellow eco! - ((pc-cheats? (-> obj cheats) eco-yellow) - (when (or (= (-> *target* fact eco-type) (pickup-type eco-yellow)) - (<= (-> *target* fact eco-level) 0.0)) - (send-event *target* 'get-pickup (pickup-type eco-yellow) (-> *FACT-bank* eco-full-inc)) - ) - ) - ) - )) - - (when (pc-cheats? (-> obj cheats) invinc) - (logior! (-> *target* state-flags) (state-flags invulnerable)) - ) - - ) - - (if (pc-cheats? (-> obj cheats) tunes) - (set! (-> obj flava-hack) -1) - (set! (-> obj flava-hack) 0) - ) - + (false! *sound-player-enable*)) + (cond + ;; green eco! + ((pc-cheats? (-> obj cheats) eco-green) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-green)) (<= (-> *target* fact eco-level) 0.0)) + (define-extern vent type) + (protect ((-> pp type) + (-> *target* control root-prim prim-core action)) + (set! (-> pp type) vent) + (logior! (-> *target* control root-prim prim-core action) (collide-action racer)) + (send-event *target* 'get-pickup (pickup-type eco-green) (-> *FACT-bank* eco-full-inc))))) + ;; red eco! + ((pc-cheats? (-> obj cheats) eco-red) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-red)) (<= (-> *target* fact eco-level) 0.0)) + (send-event *target* 'get-pickup (pickup-type eco-red) (-> *FACT-bank* eco-full-inc)))) + ;; blue eco! + ((pc-cheats? (-> obj cheats) eco-blue) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-blue)) (<= (-> *target* fact eco-level) 0.0)) + (protect ((-> *target* event-hook)) + (set! (-> *target* event-hook) target-generic-event-handler) + (send-event *target* 'get-pickup (pickup-type eco-blue) (-> *FACT-bank* eco-full-inc))) + (send-event *target* 'boost (-> *FACT-bank* eco-single-inc)))) + ;; yellow eco! + ((pc-cheats? (-> obj cheats) eco-yellow) + (when (or (= (-> *target* fact eco-type) (pickup-type eco-yellow)) (<= (-> *target* fact eco-level) 0.0)) + (send-event *target* 'get-pickup (pickup-type eco-yellow) (-> *FACT-bank* eco-full-inc))))))) + (when (pc-cheats? (-> obj cheats) invinc) + (logior! (-> *target* state-flags) (state-flags invulnerable)))) + (if (pc-cheats? (-> obj cheats) tunes) (set! (-> obj flava-hack) -1) (set! (-> obj flava-hack) 0)) (if (pc-cheats? (-> obj cheats) sky) - (let ((date (new 'stack-no-clear 'scf-time))) - (scf-get-time date) - (when (zero? (-> date stat)) - (set-time-of-day (+ (the float (bcd->dec (-> date hour))) (/ (the float (bcd->dec (-> date minute))) 60)))) - )) - + (let ((date (new 'stack-no-clear 'scf-time))) + (scf-get-time date) + (when (zero? (-> date stat)) + (set-time-of-day (+ (the float (bcd->dec (-> date hour))) (/ (the float (bcd->dec (-> date minute))) 60)))))) (pc-set-gfx-hack (pc-gfx-hack no-tex) (logtest? (-> obj cheats) (pc-cheats no-tex))) - (if (pc-cheats? (-> obj cheats) mirror) - (sound-set-mirror-mode (sound-mirror-mode mirrored)) - (sound-set-mirror-mode (sound-mirror-mode normal))) - + (sound-set-mirror-mode (sound-mirror-mode mirrored)) + (sound-set-mirror-mode (sound-mirror-mode normal))) ;; run cheats end!!! ;;;;;;;;;;;;;;;;;;;; - (logior! (-> obj cheats-known) (-> obj cheats)) 0) (defmethod update-music-log ((obj pc-settings-jak1)) "update music log settings." - ;; add whatever is playing to the music log. (add-to-music-log obj (-> *setting-control* current music) (the int (-> *setting-control* current sound-flava))) - ;; special cases. for example, npc's that despawn and you can't hear their music anymore. (if (task-closed? (game-task village1-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava assistant)))) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava assistant)))) (if (task-closed? (game-task village2-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava assistant)))) + (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava assistant)))) (if (task-closed? (game-task village3-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava assistant)))) + (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava assistant)))) (when (task-closed? (game-task beach-ecorocks) (task-status need-introduction)) - (add-to-music-log obj 'village1 1) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava sage))) - ) - (if (task-closed? (game-task jungle-plant) (task-status need-resolution)) - (add-to-music-log obj 'jungleb 2)) + (add-to-music-log obj 'village1 1) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava sage)))) + (if (task-closed? (game-task jungle-plant) (task-status need-resolution)) (add-to-music-log obj 'jungleb 2)) (if (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - (add-to-music-log obj 'beach (flava-lookup 'beach (music-flava birdlady)))) + (add-to-music-log obj 'beach (flava-lookup 'beach (music-flava birdlady)))) (if (task-closed? (game-task beach-flutflut) (task-status need-resolution)) - (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava birdlady)))) + (add-to-music-log obj 'village1 (flava-lookup 'village1 (music-flava birdlady)))) (if (task-closed? (game-task misty-warehouse) (task-status need-resolution)) - (add-to-music-log obj 'misty (flava-lookup 'misty (music-flava misty-battle)))) - (if (task-closed? (game-task misty-cannon) (task-status need-resolution)) - (add-to-music-log obj 'misty 4)) - (if (task-closed? (game-task firecanyon-end) (task-status need-resolution)) - (add-to-music-log obj 'firecanyon 2)) + (add-to-music-log obj 'misty (flava-lookup 'misty (music-flava misty-battle)))) + (if (task-closed? (game-task misty-cannon) (task-status need-resolution)) (add-to-music-log obj 'misty 4)) + (if (task-closed? (game-task firecanyon-end) (task-status need-resolution)) (add-to-music-log obj 'firecanyon 2)) (if (task-closed? (game-task village2-levitator) (task-status need-hint)) - (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava sage)))) - (if (task-closed? (game-task swamp-billy) (task-status need-resolution)) - (add-to-music-log obj 'swamp 1)) + (add-to-music-log obj 'village2 (flava-lookup 'village2 (music-flava sage)))) + (if (task-closed? (game-task swamp-billy) (task-status need-resolution)) (add-to-music-log obj 'swamp 1)) (if (task-closed? (game-task swamp-battle) (task-status need-resolution)) - (add-to-music-log obj 'swamp (flava-lookup 'swamp (music-flava swamp-battle)))) + (add-to-music-log obj 'swamp (flava-lookup 'swamp (music-flava swamp-battle)))) (if (task-closed? (game-task village3-button) (task-status need-hint)) - (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava sage)))) + (add-to-music-log obj 'village3 (flava-lookup 'village3 (music-flava sage)))) (if (task-closed? (game-task snow-bunnies) (task-status need-resolution)) - (add-to-music-log obj 'snow (flava-lookup 'snow (music-flava snow-battle)))) + (add-to-music-log obj 'snow (flava-lookup 'snow (music-flava snow-battle)))) (if (task-closed? (game-task citadel-sage-yellow) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-yellow)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-yellow)))) (if (task-closed? (game-task citadel-sage-red) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-red)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-red)))) (if (task-closed? (game-task citadel-sage-blue) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-blue)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage-blue)))) (if (task-closed? (game-task citadel-sage-green) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava sage)))) (if (task-closed? (game-task citadel-buzzer) (task-status need-resolution)) - (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava assistant)))) + (add-to-music-log obj 'citadel (flava-lookup 'citadel (music-flava assistant)))) (when (task-closed? (game-task finalboss-movies) (task-status unknown)) - (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-middle))) - (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-end))) - ) + (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-middle))) + (add-to-music-log obj 'finalboss (flava-lookup 'finalboss (music-flava finalboss-end)))) (when (and *target* (>= (float->int (send-event *target* 'query 'pickup (pickup-type fuel-cell))) 100)) - (add-to-music-log obj 'credits 0) - (add-to-music-log obj 'credits 1) - (add-to-music-log obj 'credits 2) - ) - + (add-to-music-log obj 'credits 0) + (add-to-music-log obj 'credits 1) + (add-to-music-log obj 'credits 2)) 0) (defmethod update-discord-rpc ((obj pc-settings-jak1)) @@ -255,48 +198,51 @@ (set! (-> info status) "Playing Jak and Daxter: The Precursor Legacy™") (set! (-> info level) (symbol->string (-> (level-get-target-inside *level*) name))) ;; grab the name of level we're in (set! (-> info cutscene?) (real-movie?)) - (set! (-> info ogreboss?) (aif (process-by-ename "ogreboss-1") (case (-> it next-state name) ( - ('ogreboss-die - 'ogreboss-idle - 'ogreboss-stage1 - 'ogreboss-stage2 - 'ogreboss-stage3-hit - 'ogreboss-stage3-shuffle - 'ogreboss-stage3-throw - 'ogreboss-wait-for-player) #t)))) - (set! (-> info plant-boss?) (aif (process-by-ename "plant-boss-3") (case (-> it next-state name) ( - ('plant-boss-idle - 'plant-boss-hit - 'plant-boss-vulnerable - 'plant-boss-spawn - 'plant-boss-reset - 'plant-boss-attack) #t)))) - (set! (-> info racer?) (aif *target* (case (-> it next-state name) ( - ('target-racing - 'target-racing-bounce - 'target-racing-death - 'target-racing-falling - 'target-racing-grab - 'target-racing-hit - 'target-racing-jump - 'target-racing-smack - 'target-racing-start) #t)))) - (set! (-> info flutflut?) (aif *target* (case (-> it next-state name) ( - ('target-flut-air-attack - 'target-flut-air-attack-hit-ground - 'target-flut-double-jump - 'target-flut-falling - 'target-flut-grab - 'target-flut-hit - 'target-flut-hit-ground - 'target-flut-jump - 'target-flut-running-attack - 'target-flut-stance - 'target-flut-start - 'target-flut-walk) #t)))) + (set! (-> info ogreboss?) + (aif (process-by-ename "ogreboss-1") + (case (-> it next-state name) + (('ogreboss-die 'ogreboss-idle + 'ogreboss-stage1 + 'ogreboss-stage2 + 'ogreboss-stage3-hit + 'ogreboss-stage3-shuffle + 'ogreboss-stage3-throw + 'ogreboss-wait-for-player) + #t)))) + (set! (-> info plant-boss?) + (aif (process-by-ename "plant-boss-3") + (case (-> it next-state name) + (('plant-boss-idle 'plant-boss-hit 'plant-boss-vulnerable 'plant-boss-spawn 'plant-boss-reset 'plant-boss-attack) #t)))) + (set! (-> info racer?) + (aif *target* + (case (-> it next-state name) + (('target-racing 'target-racing-bounce + 'target-racing-death + 'target-racing-falling + 'target-racing-grab + 'target-racing-hit + 'target-racing-jump + 'target-racing-smack + 'target-racing-start) + #t)))) + (set! (-> info flutflut?) + (aif *target* + (case (-> it next-state name) + (('target-flut-air-attack 'target-flut-air-attack-hit-ground + 'target-flut-double-jump + 'target-flut-falling + 'target-flut-grab + 'target-flut-hit + 'target-flut-hit-ground + 'target-flut-jump + 'target-flut-running-attack + 'target-flut-stance + 'target-flut-start + 'target-flut-walk) + #t)))) (set! (-> info time-of-day) (&-> *time-of-day-context* time)) - - (with-profiler "discord-update" (pc-discord-rpc-update info))) + (with-profiler "discord-update" + (pc-discord-rpc-update info))) (none)) (defmethod update-speedrun ((obj pc-settings-jak1)) @@ -307,13 +253,10 @@ (defmethod update-video-hacks ((obj pc-settings-jak1)) "update the graphics hacks used for sprites and other things. ugh." - (set! (-> (get-video-params) relative-x-scale) (-> obj aspect-ratio-reciprocal)) (set! (-> (get-video-params) relative-x-scale-reciprical) (-> obj aspect-ratio-scale)) (set! (-> *font-default-matrix* vector 0 x) (-> (get-video-params) relative-x-scale)) - (set-hud-aspect-ratio 'aspect4x3 'ntsc) ;; set hud aspect ratios every frame because why not? - (when *progress-process* ;; adjust sizes for progress. ;; video.gc sets the sizes in the normal game. @@ -321,146 +264,119 @@ (let ((pr (-> *progress-process*)) ;(wide-adjust (* 4.0 (- (/ (-> obj aspect-ratio-scale) ASPECT_16X9_SCALE) (1/ ASPECT_16X9_SCALE)))) ) - (set! (-> pr sides-x-scale) 1.0) - (set! (-> pr sides-y-scale) 13.0) - ;(set! (-> pr left-x-offset) (+ 59 (the int (* (-> obj aspect-ratio-scale) -59)))) - ;(set! (-> pr right-x-offset) 26) - ;(set! (-> pr button-scale) (+ 1.0 (* wide-adjust 0.1))) - ) - ) - ) + (set! (-> pr sides-x-scale) 1.0) + (set! (-> pr sides-y-scale) 13.0) + ;(set! (-> pr left-x-offset) (+ 59 (the int (* (-> obj aspect-ratio-scale) -59)))) + ;(set! (-> pr right-x-offset) 26) + ;(set! (-> pr button-scale) (+ 1.0 (* wide-adjust 0.1))) + ))) (defmethod led-enabled? ((obj pc-settings-jak1)) "should the controller led be set?" - (or (-> obj controller-led-hp?) - (-> obj controller-led-eco?) - (-> obj controller-led-heat?))) + (or (-> obj controller-led-hp?) (-> obj controller-led-eco?) (-> obj controller-led-heat?))) (defmethod update-led ((obj pc-settings-jak1)) "set the controller led color by modifying the controller-led-color vector" - ;; default color is just blue. (set! (-> obj controller-led-color r) 0.0) (set! (-> obj controller-led-color g) 0.0) (set! (-> obj controller-led-color b) 1.0) - (when *target* (let ((set-no-eco-color? #t)) - (when (-> obj controller-led-hp?) - ;; flicker led according to hp. lower hp = faster and more intense flicker - (cond - ((= (-> *target* fact health) 0.0) - ;; dead. just set to minimum brightness. - (set! (-> obj controller-led-color a) (-> obj controller-led-min-brightness)) - ) - (else - (let ((flicker-speed (lerp-scale 2.0 0.0 - (-> *target* fact health) - 1.0 (-> *FACT-bank* health-max-default))) - (flicker-amp (lerp-scale (- 1.0 (-> obj controller-led-min-brightness)) (- 1.0 (-> obj controller-led-max-brightness)) + (when (-> obj controller-led-hp?) + ;; flicker led according to hp. lower hp = faster and more intense flicker + (cond + ((= (-> *target* fact health) 0.0) + ;; dead. just set to minimum brightness. + (set! (-> obj controller-led-color a) (-> obj controller-led-min-brightness))) + (else + (let ((flicker-speed (lerp-scale 2.0 0.0 (-> *target* fact health) 1.0 (-> *FACT-bank* health-max-default))) + (flicker-amp (lerp-scale (- 1.0 (-> obj controller-led-min-brightness)) + (- 1.0 (-> obj controller-led-max-brightness)) (-> *target* fact health) - 1.0 (-> *FACT-bank* health-max-default))) - ) - (set! (-> obj controller-led-color a) (- 1.0 (* flicker-amp (/ (+ 1.0 (sin (* flicker-speed (degrees (-> *display* game-frame-counter))))) 2.0)))) - ) - ) - ) - ) - - (when (and (-> obj controller-led-heat?) - (nonzero? (-> *target* racer)) - (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) - (or (= (-> *target* current-level name) 'lavatube) - (= (-> *target* current-level name) 'firecanyon) - (= (-> *target* current-level name) 'citadel))) - (defun-extern zoomer-heat-slice-color matrix float none) - (defun-extern zoomer-get-heat float) - (defun-extern zoomer-get-heat-max float) - (let ((temp-mtx (new-stack-matrix0)) - (heat (/ (zoomer-get-heat) (zoomer-get-heat-max)))) - (zoomer-heat-slice-color temp-mtx heat) - (when (< 0.0 heat) - (set! (-> obj controller-led-color r) (/ (-> temp-mtx vector 2 x) 128.0)) - (set! (-> obj controller-led-color g) (/ (-> temp-mtx vector 2 y) 128.0)) - (set! (-> obj controller-led-color b) (/ (-> temp-mtx vector 2 z) 128.0)) - (false! set-no-eco-color?)) - ) - ) - - (when (-> obj controller-led-eco?) - ;; get remaining eco as a number from 0.0 to 1.0 - (let ((eco-remain-fac (/ (the float (- (-> *target* fact eco-timeout) (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))) - (the float (-> *FACT-bank* eco-full-timeout))))) - (when set-no-eco-color? - (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 1.0) - (set! (-> obj controller-led-color b) 1.0)) - ;; dont set eco color if we don't have eco. - (when (< 0.0 eco-remain-fac) - ;; set color according to eco type. matches the color in the meter! - (case (-> *target* fact eco-type) - (((pickup-type eco-blue)) - (set! (-> obj controller-led-color r) 0.0) - (set! (-> obj controller-led-color g) 0.5) - (set! (-> obj controller-led-color b) 1.0) - ) - (((pickup-type eco-yellow)) + 1.0 + (-> *FACT-bank* health-max-default)))) + (set! (-> obj controller-led-color a) + (- 1.0 (* flicker-amp (/ (+ 1.0 (sin (* flicker-speed (degrees (-> *display* game-frame-counter))))) 2.0)))))))) + (when (and (-> obj controller-led-heat?) + (nonzero? (-> *target* racer)) + (logtest? (-> *target* control root-prim prim-core action) (collide-action racer)) + (or (= (-> *target* current-level name) 'lavatube) + (= (-> *target* current-level name) 'firecanyon) + (= (-> *target* current-level name) 'citadel))) + (defun-extern zoomer-heat-slice-color matrix float none) + (defun-extern zoomer-get-heat float) + (defun-extern zoomer-get-heat-max float) + (let ((temp-mtx (new-stack-matrix0)) + (heat (/ (zoomer-get-heat) (zoomer-get-heat-max)))) + (zoomer-heat-slice-color temp-mtx heat) + (when (< 0.0 heat) + (set! (-> obj controller-led-color r) (/ (-> temp-mtx vector 2 x) 128.0)) + (set! (-> obj controller-led-color g) (/ (-> temp-mtx vector 2 y) 128.0)) + (set! (-> obj controller-led-color b) (/ (-> temp-mtx vector 2 z) 128.0)) + (false! set-no-eco-color?)))) + (when (-> obj controller-led-eco?) + ;; get remaining eco as a number from 0.0 to 1.0 + (let ((eco-remain-fac (/ (the float (- (-> *target* fact eco-timeout) (- (-> *display* game-frame-counter) (-> *target* fact eco-pickup-time)))) + (the float (-> *FACT-bank* eco-full-timeout))))) + (when set-no-eco-color? (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 0.75) - (set! (-> obj controller-led-color b) 0.0) - ) - (((pickup-type eco-red)) - (set! (-> obj controller-led-color r) 1.0) - (set! (-> obj controller-led-color g) 0.25) - (set! (-> obj controller-led-color b) 0.0) - ) - (((pickup-type eco-green)) - (set! (-> obj controller-led-color r) 0.0) (set! (-> obj controller-led-color g) 1.0) - (set! (-> obj controller-led-color b) 0.25) - ) - ) - ;; less than 20% eco remaining, so we flash. same as eco meter. - (when (and (< eco-remain-fac 0.2) - (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4))) - (*! (-> obj controller-led-color g) 2.0) - ) - ) - )) - )) + (set! (-> obj controller-led-color b) 1.0)) + ;; dont set eco color if we don't have eco. + (when (< 0.0 eco-remain-fac) + ;; set color according to eco type. matches the color in the meter! + (case (-> *target* fact eco-type) + (((pickup-type eco-blue)) + (set! (-> obj controller-led-color r) 0.0) + (set! (-> obj controller-led-color g) 0.5) + (set! (-> obj controller-led-color b) 1.0)) + (((pickup-type eco-yellow)) + (set! (-> obj controller-led-color r) 1.0) + (set! (-> obj controller-led-color g) 0.75) + (set! (-> obj controller-led-color b) 0.0)) + (((pickup-type eco-red)) + (set! (-> obj controller-led-color r) 1.0) + (set! (-> obj controller-led-color g) 0.25) + (set! (-> obj controller-led-color b) 0.0)) + (((pickup-type eco-green)) + (set! (-> obj controller-led-color r) 0.0) + (set! (-> obj controller-led-color g) 1.0) + (set! (-> obj controller-led-color b) 0.25))) + ;; less than 20% eco remaining, so we flash. same as eco meter. + (when (and (< eco-remain-fac 0.2) (zero? (logand (the int (* DISPLAY_FPS_RATIO (-> *display* integral-frame-counter))) 4))) + (*! (-> obj controller-led-color g) 2.0))))))) #t) - (defun find-music-log ((music symbol)) "return #t if the given music is logged into the *pc-settings*, #f otherwise." (dotimes (i PC_MUSIC_LOG_LENGTH) - (if (= music (-> *pc-settings* secrets music i name)) - (return #t))) + (if (= music (-> *pc-settings* secrets music i name)) (return #t))) #f) (defun find-flava-log ((music symbol) (flava-idx int)) "return #t if the given music's flava is logged into the *pc-settings*, #f otherwise." (dotimes (i PC_MUSIC_LOG_LENGTH) (if (= music (-> *pc-settings* secrets music i name)) - (return (logtest? (-> *pc-settings* secrets music i flava-mask) (ash 1 flava-idx))))) + (return (logtest? (-> *pc-settings* secrets music i flava-mask) (ash 1 flava-idx))))) #f) (defun-debug print-music-log ((out object)) "prints the *pc-settings* music log." - (dotimes (i PC_MUSIC_LOG_LENGTH) (if (-> *pc-settings* secrets music i name) - (format out "music log ~D: ~A (f #x~x)~%" i (-> *pc-settings* secrets music i name) (-> *pc-settings* secrets music i flava-mask))) - ) + (format out + "music log ~D: ~A (f #x~x)~%" + i + (-> *pc-settings* secrets music i name) + (-> *pc-settings* secrets music i flava-mask)))) 0) (defun-debug unlock-music-log () "fills the music log with every track and flava" - (dotimes (i PC_MUSIC_LOG_LENGTH) (set! (-> *pc-settings* secrets music i name) #f) - (set! (-> *pc-settings* secrets music i flava-mask) 0) - ) + (set! (-> *pc-settings* secrets music i flava-mask) 0)) (set! (-> *pc-settings* secrets music 0 name) 'fishgame) (set! (-> *pc-settings* secrets music 1 name) 'danger) (set! (-> *pc-settings* secrets music 2 name) 'village1) @@ -483,14 +399,11 @@ (set! (-> *pc-settings* secrets music 19 name) 'finalboss) (set! (-> *pc-settings* secrets music 20 name) 'credits) (dotimes (i PC_MUSIC_LOG_LENGTH) - (set! (-> *pc-settings* secrets music i flava-mask) -1) - ) - ) + (set! (-> *pc-settings* secrets music i flava-mask) -1))) (defmethod add-to-music-log ((obj pc-settings-jak1) (music symbol) (flava int)) "add music and flava information to the music log. if music already exists, adds flava. if flava already exists, nothing happens." - ;; go through our music log (dotimes (i PC_MUSIC_LOG_LENGTH) (cond @@ -498,117 +411,87 @@ ((or (not (-> obj secrets music i name)) (zero? (not (-> obj secrets music i name)))) (set! (-> obj secrets music i name) music) (set! (-> obj secrets music i flava-mask) (ash 1 flava)) - (return 0) - ) + (return 0)) ;; an existing log entry for the current music. fill flava. - ((= music (-> obj secrets music i name)) - (logior! (-> obj secrets music i flava-mask) (ash 1 flava)) - (return 0) - ) + ((= music (-> obj secrets music i name)) (logior! (-> obj secrets music i flava-mask) (ash 1 flava)) (return 0)) ;; something else. maybe the wrong entry, in which case nothing to do. - ) - ) - + )) 0) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; file I/O ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod handle-input-settings ((obj pc-settings-jak1) (file file-stream)) "handle the text parsing input for the 'settings' group" - - ((method-of-type pc-settings handle-input-settings) obj file) + ((method-of-type pc-settings handle-input-settings) obj file) (case-str *pc-temp-string* - (("money-starburst?") (set! (-> obj money-starburst?) (file-stream-read-symbol file))) - (("extra-hud?") (set! (-> obj extra-hud?) (file-stream-read-symbol file))) - (("skip-movies?") (set! (-> obj skip-movies?) (file-stream-read-symbol file))) - (("subtitles?") (set! (-> obj subtitles?) (file-stream-read-symbol file))) - (("subtitle-language") (set! (-> obj subtitle-language) (the-as pc-language (file-stream-read-int file)))) - (("text-language") (set! (-> obj text-language) (the-as pc-language (file-stream-read-int file)))) - (("scenes-seen") - (dotimes (i PC_SPOOL_LOG_LENGTH) - (set! (-> obj scenes-seen i) (file-stream-read-int file)) - ) - ) - (("secrets") - (dosettings (file) - (case-str *pc-temp-string* - (("hard-rats?") (set! (-> obj secrets hard-rats?) (file-stream-read-symbol file))) - (("hero-mode?") (set! (-> obj secrets hero-mode?) (file-stream-read-symbol file))) - (("hud-map?") (set! (-> obj secrets hud-map?) (file-stream-read-symbol file))) - (("hud-counters?") (set! (-> obj secrets hud-counters?) (file-stream-read-symbol file))) - (("hud-watch?") (set! (-> obj secrets hud-watch?) (file-stream-read-symbol file))) - (("watch-12hr?") (set! (-> obj secrets watch-12hr?) (file-stream-read-symbol file))) - (("art") (set! (-> obj secrets art) (the-as pc-jak1-concept-art (file-stream-read-int file)))) - (("hard-fish-hiscore") (set! (-> obj secrets hard-fish-hiscore) (file-stream-read-int file))) - (("hard-rats-hiscore") (set! (-> obj secrets hard-rats-hiscore) (file-stream-read-int file))) - (("hard-rats-hiwave") (set! (-> obj secrets hard-rats-hiwave) (file-stream-read-int file))) - (("cheats") - (set! (-> obj cheats-known) (the pc-cheats (file-stream-read-int file))) - (set! (-> obj cheats) (logand (-> obj cheats-known) (file-stream-read-int file))) - ) - (("music") - (dotimes (i PC_MUSIC_LOG_LENGTH) - (when (!= #x29 (file-stream-get-next-char-ret file)) - (with-settings-scope (file) - (set! (-> obj secrets music i name) (file-stream-read-symbol file)) - (set! (-> obj secrets music i flava-mask) (file-stream-read-int file)) - ) - ) - ) - ) - ) - ) - ) - ) + (("money-starburst?") (set! (-> obj money-starburst?) (file-stream-read-symbol file))) + (("extra-hud?") (set! (-> obj extra-hud?) (file-stream-read-symbol file))) + (("skip-movies?") (set! (-> obj skip-movies?) (file-stream-read-symbol file))) + (("subtitles?") (set! (-> obj subtitles?) (file-stream-read-symbol file))) + (("subtitle-language") (set! (-> obj subtitle-language) (the-as pc-language (file-stream-read-int file)))) + (("text-language") (set! (-> obj text-language) (the-as pc-language (file-stream-read-int file)))) + (("scenes-seen") (dotimes (i PC_SPOOL_LOG_LENGTH) (set! (-> obj scenes-seen i) (file-stream-read-int file)))) + (("secrets") + (dosettings (file) + (case-str *pc-temp-string* + (("hard-rats?") (set! (-> obj secrets hard-rats?) (file-stream-read-symbol file))) + (("hero-mode?") (set! (-> obj secrets hero-mode?) (file-stream-read-symbol file))) + (("hud-map?") (set! (-> obj secrets hud-map?) (file-stream-read-symbol file))) + (("hud-counters?") (set! (-> obj secrets hud-counters?) (file-stream-read-symbol file))) + (("hud-watch?") (set! (-> obj secrets hud-watch?) (file-stream-read-symbol file))) + (("watch-12hr?") (set! (-> obj secrets watch-12hr?) (file-stream-read-symbol file))) + (("art") (set! (-> obj secrets art) (the-as pc-jak1-concept-art (file-stream-read-int file)))) + (("hard-fish-hiscore") (set! (-> obj secrets hard-fish-hiscore) (file-stream-read-int file))) + (("hard-rats-hiscore") (set! (-> obj secrets hard-rats-hiscore) (file-stream-read-int file))) + (("hard-rats-hiwave") (set! (-> obj secrets hard-rats-hiwave) (file-stream-read-int file))) + (("cheats") + (set! (-> obj cheats-known) (the pc-cheats (file-stream-read-int file))) + (set! (-> obj cheats) (logand (-> obj cheats-known) (file-stream-read-int file)))) + (("music") + (dotimes (i PC_MUSIC_LOG_LENGTH) + (when (!= #x29 (file-stream-get-next-char-ret file)) + (with-settings-scope (file) + (set! (-> obj secrets music i name) (file-stream-read-symbol file)) + (set! (-> obj secrets music i flava-mask) (file-stream-read-int file)))))))))) 0) (defmethod handle-output-settings ((obj pc-settings-jak1) (file file-stream)) "handle the text writing output for the 'settings' group" - - ((method-of-type pc-settings handle-output-settings) obj file) + ((method-of-type pc-settings handle-output-settings) obj file) (format file " (money-starburst? ~A)~%" (-> obj money-starburst?)) (format file " (extra-hud? ~A)~%" (-> obj extra-hud?)) (format file " (skip-movies? ~A)~%" (-> obj skip-movies?)) (format file " (subtitles? ~A)~%" (-> obj subtitles?)) (format file " (subtitle-language ~D)~%" (-> obj subtitle-language)) (format file " (text-language ~D)~%" (-> obj text-language)) - #| - (format file " (scenes-seen") - (dotimes (i PC_SPOOL_LOG_LENGTH) - (if (zero? (mod i 16)) - (format file "~% ") + (format file " (scenes-seen") + (dotimes (i PC_SPOOL_LOG_LENGTH) + (if (zero? (mod i 16)) + (format file "~% ") + ) + (format file " ~D" (-> obj scenes-seen i)) ) - (format file " ~D" (-> obj scenes-seen i)) - ) - (format file "~% )~%") + (format file "~% )~%") |# - (format file " (secrets~%") #| - (format file " (art #x~X)~%" (-> obj secrets art)) - (format file " (hard-rats? ~A)~%" (-> obj secrets hard-rats?)) - (format file " (hero-mode? ~A)~%" (-> obj secrets hero-mode?)) - (format file " (hud-map? ~A)~%" (-> obj secrets hud-map?)) - (format file " (hud-counters? ~A)~%" (-> obj secrets hud-counters?)) - (format file " (hard-fish-hiscore ~D)~%" (-> obj secrets hard-fish-hiscore)) - (format file " (hard-rats-hiscore ~D)~%" (-> obj secrets hard-rats-hiscore)) - (format file " (hard-rats-hiwave ~D)~%" (-> obj secrets hard-rats-hiwave)) + (format file " (art #x~X)~%" (-> obj secrets art)) + (format file " (hard-rats? ~A)~%" (-> obj secrets hard-rats?)) + (format file " (hero-mode? ~A)~%" (-> obj secrets hero-mode?)) + (format file " (hud-map? ~A)~%" (-> obj secrets hud-map?)) + (format file " (hud-counters? ~A)~%" (-> obj secrets hud-counters?)) + (format file " (hard-fish-hiscore ~D)~%" (-> obj secrets hard-fish-hiscore)) + (format file " (hard-rats-hiscore ~D)~%" (-> obj secrets hard-rats-hiscore)) + (format file " (hard-rats-hiwave ~D)~%" (-> obj secrets hard-rats-hiwave)) |# (format file " (cheats #x~x #x~x)~%" (-> obj cheats-known) (-> obj cheats)) - (format file " (music~%") (dotimes (i PC_MUSIC_LOG_LENGTH) - (format file " (~A #x~X)~%" (-> obj secrets music i name) (-> obj secrets music i flava-mask)) - ) - + (format file " (~A #x~X)~%" (-> obj secrets music i name) (-> obj secrets music i flava-mask))) (format file " )~%") - (format file " )~%") 0) @@ -616,29 +499,24 @@ ;;;; PC settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (define-once *pc-settings* (new 'global 'pc-settings-jak1)) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; other ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun draw-build-revision () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy *pc-settings-built-sha* - buf - 0 (* 10 (-> (get-video-params) relative-y-scale)) - (font-color flat-yellow) - (font-flags shadow kerning)))) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) global-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy *pc-settings-built-sha* + buf + 0 + (* 10 (-> (get-video-params) relative-y-scale)) + (font-color flat-yellow) + (font-flags shadow kerning)))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; process pools ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; the actor pool for PC processes! it has space for 4 processes, with 16K of space. (define *pc-dead-pool* (new 'global 'dead-pool 4 (* 16 1024) '*pc-dead-pool*)) - diff --git a/goal_src/jak1/pc/progress-pc.gc b/goal_src/jak1/pc/progress-pc.gc index ca5a0b4f61..08c4da8d96 100644 --- a/goal_src/jak1/pc/progress-pc.gc +++ b/goal_src/jak1/pc/progress-pc.gc @@ -1,104 +1,108 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/ui/progress/progress.gc") - #| - Code for the progress menu in the PC port. The original code is still loaded, this just has some overriden functions. - - |# - +|# ;;--------------------------- ;;--------------------------- ;; pc menu extra stuff (defconstant PROGRESS_PC_PAGE_HEIGHT 7) + (defconstant PROGRESS_SCROLL_DIR_UP -1) + (defconstant PROGRESS_SCROLL_DIR_DOWN 1) (defconstant GAME_MIN_RES_MULT 0.5) - (deftype progress-scroll (structure) - ((transition float) + ((transition float) (start-index int16) - (real-index int16) - (direction int8) - (last-screen progress-screen) - ) - ) + (real-index int16) + (direction int8) + (last-screen progress-screen))) + (define *progress-scroll* (new 'static 'progress-scroll)) -(defmacro progress-scrolling? () `(< (-> *progress-scroll* transition) 1.0)) -(defmacro progress-scrolling-up? () `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP))) -(defmacro progress-scrolling-down? () `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN))) +(defmacro progress-scrolling? () + `(< (-> *progress-scroll* transition) 1.0)) + +(defmacro progress-scrolling-up? () + `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP))) + +(defmacro progress-scrolling-down? () + `(and (progress-scrolling?) (= (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN))) + (defconstant *progress-scroll-start* (-> *progress-scroll* start-index)) + (defconstant *progress-scroll-end* (+ -1 PROGRESS_PC_PAGE_HEIGHT (-> *progress-scroll* start-index))) + (defmacro progress-scroll-reset () "resets scroll. nothing will be scrolling, as if it had finished." `(begin (set! (-> *progress-scroll* transition) 1.0) (set! (-> *progress-scroll* direction) 0) (set! (-> *progress-scroll* start-index) 0))) + (defmacro progress-scroll-up! () `(begin (set! (-> *progress-scroll* transition) 0.0) (set! (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_UP) (1-! (-> *progress-scroll* start-index)))) + (defmacro progress-scroll-down! () `(begin (set! (-> *progress-scroll* transition) 0.0) (set! (-> *progress-scroll* direction) PROGRESS_SCROLL_DIR_DOWN) (1+! (-> *progress-scroll* start-index)))) + (defun progress-fast-save-and-start-speedrun ((category speedrun-category)) "saves to first slot, updates last-slot-saved for cursor, then starts speedrun" (set! (-> *progress-state* last-slot-saved) 0) (auto-save-command 'save 0 0 *default-pool*) - (start-speedrun category) - ) - + (start-speedrun category)) ;; used in title logo (define *quit-to-title* #f) - ;; ############################ ;; CAROUSELL STUFF ;; ############################ (deftype progress-carousell-state (structure) - ((int-backup int) - (symbol-backup symbol) - (subtitle-backup pc-language) + ((int-backup int) + (symbol-backup symbol) + (subtitle-backup pc-language) (aspect-native-choice symbol) - (current-carousell (array text-id)) + (current-carousell (array text-id)) + (selection int) + (direction symbol) + (transition symbol) + (x-offset int32))) - (selection int) - (direction symbol) - (transition symbol) - (x-offset int32) - ) - ) (define *progress-carousell* (new 'static 'progress-carousell-state)) - (defmacro def-progress-carousell (name texts) - `(define ,name (new 'static 'boxed-array :type text-id - ,@(apply (lambda (x) `(text-id ,x)) texts) - )) - ) + `(define ,name (new 'static 'boxed-array :type text-id ,@(apply (lambda (x) `(text-id ,x)) texts)))) ;; all carousells (def-progress-carousell *carousell-display-mode* (windowed fullscreen borderless)) + (def-progress-carousell *carousell-msaa* (off 2-times 4-times 8-times 16-times)) + (def-progress-carousell *carousell-lod-bg* (lod-high lod-low)) + (def-progress-carousell *carousell-lod-fg* (lod-high lod-low lod-ps2)) + (def-progress-carousell *carousell-speaker* (speaker-always speaker-never speaker-auto)) + (def-progress-carousell *carousell-frame-rate-150fps* (60fps 100fps 150fps)) + (def-progress-carousell *carousell-frame-rate-100fps* (60fps 100fps)) + (define *carousell-frame-rate* *carousell-frame-rate-150fps*) ;; pad remap stuff @@ -108,406 +112,988 @@ ;; MENU OPTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define *main-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id save-game) + :scale #t + :param3 (game-option-menu save-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id disable-auto-save) + :scale #t + :param3 (game-option-menu memcard-disable-auto-save)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *main-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id disable-auto-save) :scale #t :param3 (game-option-menu memcard-disable-auto-save)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *main-options-secrets* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-options) + :scale #t + :param3 (game-option-menu game-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id graphic-options) + :scale #t + :param3 (game-option-menu graphic-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id sound-options) + :scale #t + :param3 (game-option-menu sound-settings)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id save-game) + :scale #t + :param3 (game-option-menu save-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id disable-auto-save) + :scale #t + :param3 (game-option-menu memcard-disable-auto-save)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id secrets) + :scale #t + :param3 (game-option-menu secrets)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *main-options-secrets* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-options) :scale #t :param3 (game-option-menu game-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id graphic-options) :scale #t :param3 (game-option-menu graphic-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id sound-options) :scale #t :param3 (game-option-menu sound-settings)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id save-game) :scale #t :param3 (game-option-menu save-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id disable-auto-save) :scale #t :param3 (game-option-menu memcard-disable-auto-save)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id secrets) :scale #t :param3 (game-option-menu secrets)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *game-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-options) + :scale #t + :param3 (game-option-menu input-options)) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id subtitles) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id hinttitles) :scale #t) + (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) + (new 'static 'game-option :option-type (game-option-type language-subtitles) :name (text-id subtitles-language) :scale #t) + (new 'static 'game-option :option-type (game-option-type language-text) :name (text-id text-language) :scale #t) + (new 'static 'game-option :option-type (game-option-type speaker) :name (text-id subtitles-speaker) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id misc-options) + :scale #t + :param3 (game-option-menu misc-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *game-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-options) :scale #t :param3 (game-option-menu input-options)) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id play-hints) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id subtitles) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id hinttitles) :scale #t) - (new 'static 'game-option :option-type (game-option-type language) :name (text-id language) :scale #t) - (new 'static 'game-option :option-type (game-option-type language-subtitles) :name (text-id subtitles-language) :scale #t) - (new 'static 'game-option :option-type (game-option-type language-text) :name (text-id text-language) :scale #t) - (new 'static 'game-option :option-type (game-option-type speaker) :name (text-id subtitles-speaker) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id misc-options) :scale #t :param3 (game-option-menu misc-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *graphic-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id game-resolution) + :scale #t + :param3 (game-option-menu resolution)) + (new 'static 'game-option :option-type (game-option-type display-mode) :name (text-id display-mode) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id display) + :scale #t + :param3 (game-option-menu monitor) + :option-disabled-func + (lambda () + (= (-> *pc-settings* display-mode) 'windowed))) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vsync) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id aspect-ratio) + :scale #t + :param3 (game-option-menu aspect-ratio)) + (new 'static 'game-option :option-type (game-option-type msaa) :name (text-id msaa) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type frame-rate) + :name (text-id frame-rate) + :scale #t + :option-disabled-func + (lambda () + (or (-> *pc-settings* speedrunner-mode?) (<= (pc-get-active-display-refresh-rate) 60)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id ps2-options) + :scale #t + :param3 (game-option-menu gfx-ps2-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *graphic-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id game-resolution) :scale #t :param3 (game-option-menu resolution)) - (new 'static 'game-option :option-type (game-option-type display-mode) :name (text-id display-mode) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id display) :scale #t :param3 (game-option-menu monitor) - :option-disabled-func (lambda () (= (-> *pc-settings* display-mode) 'windowed))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vsync) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id aspect-ratio) :scale #t :param3 (game-option-menu aspect-ratio)) - (new 'static 'game-option :option-type (game-option-type msaa) :name (text-id msaa) :scale #t) - (new 'static 'game-option :option-type (game-option-type frame-rate) :name (text-id frame-rate) :scale #t - :option-disabled-func (lambda () (or (-> *pc-settings* speedrunner-mode?) (<= (pc-get-active-display-refresh-rate) 60)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id ps2-options) :scale #t :param3 (game-option-menu gfx-ps2-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *sound-options-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id sfx-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id music-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id speech-volume) + :scale #t + :param1 0.0 + :param2 100.0 + :slider-step-size 1.0) + ;(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id music-fadein) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *sound-options-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id sfx-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id music-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id speech-volume) :scale #t :param1 0.0 :param2 100.0 :slider-step-size 1.0) - ;(new 'static 'game-option :option-type (game-option-type on-off) :name (text-id music-fadein) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *camera-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-first-horz) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-first-vert) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-third-horz) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type normal-inverted) + :name (text-id camera-controls-third-vert) + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-camera *pc-settings* #t) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *camera-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-first-horz) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-first-vert) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-third-horz) :scale #t) - (new 'static 'game-option :option-type (game-option-type normal-inverted) :name (text-id camera-controls-third-vert) :scale #t) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () (reset-camera *pc-settings* #t) (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *controller-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-select-controller) + :scale #t + :param3 (game-option-menu select-controller)) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id vibrations) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-rumble?)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-analog-deadzone) + :scale #t + :param1 0.0 + :param2 1.0 + :slider-step-size 0.01 + :slider-show-decimal? #t) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-ignore-controller-win-focus) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) (set-ignore-controller-in-bg! *pc-settings* val-sym) (none)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-hp) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-eco) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-controller-led-reflect-heat) + :scale #t + :option-disabled-func + (lambda () + (not (pc-current-controller-has-led?)))) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'controller #t) + (set-ignore-controller-in-bg! *pc-settings* (-> *pc-settings* ignore-controller-win-unfocused?)) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *controller-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-select-controller) :scale #t :param3 (game-option-menu select-controller)) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id vibrations) :scale #t :option-disabled-func (lambda () (not (pc-current-controller-has-rumble?)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-analog-deadzone) :scale #t :param1 0.0 :param2 1.0 - :slider-step-size 0.01 :slider-show-decimal? #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-ignore-controller-win-focus) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set-ignore-controller-in-bg! *pc-settings* val-sym) - (none)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-hp) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-eco) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-controller-led-reflect-heat) :scale #t - :option-disabled-func (lambda () (not (pc-current-controller-has-led?)))) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'controller #t) - (set-ignore-controller-in-bg! *pc-settings* (-> *pc-settings* ignore-controller-win-unfocused?)) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *mouse-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-mouse-enable-camera) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-camera?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-mouse-horizontal-sens) + :scale #t + :param1 -30.0 + :param2 30.0 + :slider-step-size 0.25 + :slider-show-decimal? #t + :on-confirm + (lambda () + (update-mouse-controls! *pc-settings*) + (none)) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-camera?)))) + (new 'static + 'game-option + :option-type (game-option-type slider) + :name (text-id input-opts-mouse-vertical-sens) + :scale #t + :param1 -30.0 + :param2 30.0 + :slider-step-size 0.25 + :slider-show-decimal? #t + :on-confirm + (lambda () + (update-mouse-controls! *pc-settings*) + (none)) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-camera?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-mouse-enable-movement) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-movement?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'mouse #t) + (update-mouse-controls! *pc-settings*) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *mouse-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-mouse-enable-camera) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-camera?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-mouse-horizontal-sens) :scale #t - :param1 -30.0 :param2 30.0 :slider-step-size 0.25 :slider-show-decimal? #t - :on-confirm (lambda () - (update-mouse-controls! *pc-settings*) - (none)) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-camera?)))) - (new 'static 'game-option :option-type (game-option-type slider) :name (text-id input-opts-mouse-vertical-sens) :scale #t - :param1 -30.0 :param2 30.0 :slider-step-size 0.25 :slider-show-decimal? #t - :on-confirm (lambda () - (update-mouse-controls! *pc-settings*) - (none)) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-camera?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-mouse-enable-movement) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-movement?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'mouse #t) - (update-mouse-controls! *pc-settings*) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *reassign-binds-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-controller) + :scale #t + :param3 (game-option-menu controller-binds) + :option-disabled-func + (lambda () + (<= (pc-get-controller-count) 0))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-keyboard) + :scale #t + :param3 (game-option-menu keyboard-binds) + :option-disabled-func + (lambda () + (not (pc-get-keyboard-enabled?)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-binds-mouse) + :scale #t + :param3 (game-option-menu mouse-binds) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-enabled?)))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *reassign-binds-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-controller) :scale #t :param3 (game-option-menu controller-binds) - :option-disabled-func (lambda () (<= (pc-get-controller-count) 0))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-keyboard) :scale #t :param3 (game-option-menu keyboard-binds) - :option-disabled-func (lambda () (not (pc-get-keyboard-enabled?)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-binds-mouse) :scale #t :param3 (game-option-menu mouse-binds) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-enabled?)))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *input-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id camera-options) + :scale #t + :param3 (game-option-menu camera-options)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-controller-opts) + :scale #t + :param3 (game-option-menu controller-options) + :option-disabled-func + (lambda () + (<= (pc-get-controller-count) 0))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-enable-kb) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (pc-set-keyboard-enabled! val-sym) + (set! (-> *pc-settings* keyboard-enabled?) val-sym) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-enable-mouse) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* mouse-enabled?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-mouse-opts) + :scale #t + :param3 (game-option-menu mouse-options) + :option-disabled-func + (lambda () + (not (-> *pc-settings* mouse-enabled?)))) + (new 'static + 'game-option + :option-type (game-option-type on-off) + :name (text-id input-opts-auto-hide-cursor) + :scale #t + :on-change + (lambda ((val object)) + (let ((val-sym (the-as symbol val))) + (set! (-> *pc-settings* auto-hide-cursor?) val-sym) + (update-mouse-controls! *pc-settings*) + (none)))) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id input-opts-reassign-binds) + :scale #t + :param3 (game-option-menu reassign-binds-options)) + (new 'static + 'game-option + :option-type (game-option-type confirmation) + :name (text-id restore-defaults) + :scale #t + :on-confirm + (lambda () + (reset-input *pc-settings* 'input #t) + (pc-set-keyboard-enabled! (-> *pc-settings* keyboard-enabled?)) + (update-mouse-controls! *pc-settings*) + (none))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *input-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id camera-options) :scale #t :param3 (game-option-menu camera-options)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-controller-opts) :scale #t :param3 (game-option-menu controller-options) - :option-disabled-func (lambda () (<= (pc-get-controller-count) 0))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-enable-kb) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (pc-set-keyboard-enabled! val-sym) - (set! (-> *pc-settings* keyboard-enabled?) val-sym) - (none)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-enable-mouse) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* mouse-enabled?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-mouse-opts) :scale #t :param3 (game-option-menu mouse-options) - :option-disabled-func (lambda () (not (-> *pc-settings* mouse-enabled?)))) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id input-opts-auto-hide-cursor) :scale #t - :on-change (lambda ((val object)) - (let ((val-sym (the-as symbol val))) - (set! (-> *pc-settings* auto-hide-cursor?) val-sym) - (update-mouse-controls! *pc-settings*) - (none)))) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id input-opts-reassign-binds) :scale #t :param3 (game-option-menu reassign-binds-options)) - (new 'static 'game-option :option-type (game-option-type confirmation) :name (text-id restore-defaults) :scale #t - :on-confirm (lambda () - (reset-input *pc-settings* 'input #t) - (pc-set-keyboard-enabled! (-> *pc-settings* keyboard-enabled?)) - (update-mouse-controls! *pc-settings*) - (none))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *misc-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id money-starburst) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id discord-rpc) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id cutscene-skips) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id speedrunner-mode) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *misc-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id money-starburst) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id discord-rpc) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id cutscene-skips) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id speedrunner-mode) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *gfx-ps2-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type lod-bg) :name (text-id lod-bg) :scale #t) - (new 'static 'game-option :option-type (game-option-type lod-fg) :name (text-id lod-fg) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id ps2-parts) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-envmap) :scale #t) - (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-actors) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *gfx-ps2-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type lod-bg) :name (text-id lod-bg) :scale #t) + (new 'static 'game-option :option-type (game-option-type lod-fg) :name (text-id lod-fg) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id ps2-parts) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-envmap) :scale #t) + (new 'static 'game-option :option-type (game-option-type on-off) :name (text-id force-actors) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) ;; TODO - aspect ratios are hard-coded -(define *aspect-ratio-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id fit-to-screen) :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 4.0 :param2 3.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 16.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect4x3-ps2) :param1 -1.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect16x9-ps2) :param1 -2.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 16.0 :param2 10.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 21.0 :param2 9.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect-fmt) :param1 64.0 :param2 27.0 :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *aspect-ratio-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id fit-to-screen) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 4.0 + :param2 3.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 16.0 + :param2 9.0 + :scale #t) + (new 'static 'game-option :option-type (game-option-type aspect-new) :name (text-id aspect4x3-ps2) :param1 -1.0 :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect16x9-ps2) + :param1 -2.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 16.0 + :param2 10.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 21.0 + :param2 9.0 + :scale #t) + (new 'static + 'game-option + :option-type (game-option-type aspect-new) + :name (text-id aspect-fmt) + :param1 64.0 + :param2 27.0 + :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *title-pc* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id new-game) :scale #t :param3 (game-option-menu save-game-title)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id load-game) :scale #t :param3 (game-option-menu load-game)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id options) :scale #t :param3 (game-option-menu settings-title)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id secrets) :scale #t :param3 (game-option-menu secrets)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id quit-game) :scale #t :param3 (game-option-menu quit-title)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *title-pc* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id new-game) + :scale #t + :param3 (game-option-menu save-game-title)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id load-game) + :scale #t + :param3 (game-option-menu load-game)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id options) + :scale #t + :param3 (game-option-menu settings-title)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id secrets) + :scale #t + :param3 (game-option-menu secrets)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id quit-game) + :scale #t + :param3 (game-option-menu quit-title)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-reset-current-run) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id speedrun-new-individual-level) :scale #t :param3 (game-option-menu speedrun-il-options)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id speedrun-new-cat-ext) :scale #t :param3 (game-option-menu speedrun-cat-ext-options)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-reset-current-run) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id speedrun-new-individual-level) + :scale #t + :param3 (game-option-menu speedrun-il-options)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id speedrun-new-cat-ext) + :scale #t + :param3 (game-option-menu speedrun-cat-ext-options)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-il-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-training) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village1) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-beach) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-jungle) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-misty) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-firecanyon) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village2) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-sunken) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-swamp) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-rolling) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-ogre) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village3) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-snow) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-cave) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-lavatube) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-citadel) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-training) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village1) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-beach) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-jungle) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-misty) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-firecanyon) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village2) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-sunken) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-swamp) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-rolling) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-ogre) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-village3) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-snow) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-cave) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-lavatube) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-il-citadel) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *speedrun-cat-ext-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-game-plus) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub1-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub2-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub3-100) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-all-cutscenes) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-full-game) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-new-game-plus) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub1-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub2-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-hub3-100) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id speedrun-all-cutscenes) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *secrets-title* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id music-player) :scale #t :param3 (game-option-menu music-player)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id cheats) :scale #t :param3 (game-option-menu cheats)) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *secrets-title* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id music-player) + :scale #t + :param3 (game-option-menu music-player)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id cheats) + :scale #t + :param3 (game-option-menu cheats)) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *secrets* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id cheats) :scale #t :param3 (game-option-menu cheats)) - (new 'static 'game-option :option-type (game-option-type menu) :name (text-id checkpoint-select) :scale #t :param3 (game-option-menu checkpoint-select) - :option-disabled-func (lambda () (not (>= (calculate-completion (the progress #f)) 100.0)))) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *secrets* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id cheats) + :scale #t + :param3 (game-option-menu cheats)) + (new 'static + 'game-option + :option-type (game-option-type menu) + :name (text-id checkpoint-select) + :scale #t + :param3 (game-option-menu checkpoint-select) + :option-disabled-func + (lambda () + (not (>= (calculate-completion (the progress #f)) 100.0)))) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) (define *checkpoint-select-options* - (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button) :name (text-id training-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village1-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id beach-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id jungle-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id misty-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id firecanyon-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village2-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id sunken-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id swamp-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id rolling-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id ogre-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id village3-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id snow-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id cave-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id lavatube-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id citadel-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id finalboss-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button) :name (text-id training-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village1-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id beach-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id jungle-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id misty-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id firecanyon-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village2-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id sunken-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id swamp-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id rolling-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id ogre-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id village3-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id snow-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id cave-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id lavatube-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id citadel-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id finalboss-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) -(define *cheats* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sidekick-alt) :scale #t :param1 5.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-head) :scale #t :param1 9.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-small-head) :scale #t :param1 10.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-fist) :scale #t :param1 11.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-big-head-npc) :scale #t :param1 16.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-tunes) :scale #t :param1 6.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sky) :scale #t :param1 7.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-huge-head) :scale #t :param1 15.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-mirror) :scale #t :param1 8.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-yellow) :scale #t :param1 3.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-blue) :scale #t :param1 2.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-red) :scale #t :param1 1.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-eco-green) :scale #t :param1 0.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-invinc) :scale #t :param1 4.0) - (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-no-tex) :scale #t :param1 12.0) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) - -(define *music-player-options* (new 'static 'boxed-array :type game-option - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village1-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id beach-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungle-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id fishgame) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungleb-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id misty-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id firecanyon-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village2-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id rolling-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id swamp-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id sunken-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogre-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogreboss) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village3-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id snow-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id cave-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id lavatube-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id citadel-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id finalboss-level-name) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id credits) :scale #t) - (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id danger-mus) :scale #t) - (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t) - ) - ) +(define *cheats* + (new 'static + 'boxed-array + :type + game-option + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-sidekick-alt) + :scale #t + :param1 5.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-head) + :scale #t + :param1 9.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-small-head) + :scale #t + :param1 10.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-fist) + :scale #t + :param1 11.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-big-head-npc) + :scale #t + :param1 16.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-tunes) :scale #t :param1 6.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-sky) :scale #t :param1 7.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-huge-head) + :scale #t + :param1 15.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-mirror) :scale #t :param1 8.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-yellow) + :scale #t + :param1 3.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-blue) + :scale #t + :param1 2.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-red) + :scale #t + :param1 1.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-eco-green) + :scale #t + :param1 0.0) + (new 'static 'game-option :option-type (game-option-type cheat-toggle) :name (text-id cheat-invinc) :scale #t :param1 4.0) + (new 'static + 'game-option + :option-type (game-option-type cheat-toggle) + :name (text-id cheat-no-tex) + :scale #t + :param1 12.0) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) +(define *music-player-options* + (new 'static + 'boxed-array + :type + game-option + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village1-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id beach-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungle-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id fishgame) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id jungleb-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id misty-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id firecanyon-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village2-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id rolling-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id swamp-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id sunken-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogre-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id ogreboss) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id village3-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id snow-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id cave-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id lavatube-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id citadel-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id finalboss-level-name) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id credits) :scale #t) + (new 'static 'game-option :option-type (game-option-type button-music) :name (text-id danger-mus) :scale #t) + (new 'static 'game-option :option-type (game-option-type button) :name (text-id back) :scale #t))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DATA LISTS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(define *music-list* + '(village1 beach + jungle + fishgame + jungleb + misty + firecanyon + village2 + rolling + swamp + sunken + ogre + ogreboss + village3 + snow + maincave + lavatube + citadel + finalboss + credits + danger)) -(define *music-list* '(village1 beach jungle fishgame jungleb misty firecanyon - village2 rolling swamp sunken ogre ogreboss - village3 snow maincave lavatube - citadel finalboss credits danger)) (define *progress-music* -1) + (defmacro progress-get-music-by-index (idx) `(the symbol (ref *music-list* ,idx))) + (defmacro progress-reset-music-parms () `(begin (set! *progress-music* -1) (set! *progress-flava* -1))) (defmacro static-text-list-array (&rest texts) - `(new 'static 'boxed-array :type text-id - ,@(apply (lambda (x) `(text-id ,x)) texts) - ) - ) -(define *music-flava-name-list* (new 'static 'boxed-array :type (array text-id) - (static-text-list-array village1-level-name flava-vi1-unused0 flava-sage flava-sage-hut flava-birdlady flava-farmer flava-assistant flava-mayor flava-sculptor flava-explorer flava-dock) - (static-text-list-array beach-level-name flava-bea-sentinel flava-bea-cannon flava-bea-grotto flava-birdlady) - (static-text-list-array jungle-level-name flava-jun-temple-exit flava-jun-lurkerm flava-jun-temple-top) - (static-text-list-array fishgame) - (static-text-list-array jungleb-level-name flava-jub-eggtop flava-jub-plant-boss) - (static-text-list-array misty-level-name flava-mis-battle flava-mis-boat flava-racer flava-mis-unused0) - (static-text-list-array firecanyon-level-name flava-racer flava-fic-unused0) - (static-text-list-array village2-level-name flava-sage flava-assistant flava-warrior flava-geologist flava-gambler flava-levitator) - (static-text-list-array rolling-level-name flava-rol-gorge) - (static-text-list-array swamp-level-name flava-swa-game flava-swa-launcher flava-swa-battle flava-flutflut) - (static-text-list-array sunken-level-name) - (static-text-list-array ogre-level-name flava-ogr-middle flava-ogr-end) - (static-text-list-array ogreboss) - (static-text-list-array village3-level-name flava-vi3-miners flava-sage flava-assistant flava-vi3-mai flava-vi3-sno) - (static-text-list-array snow-level-name flava-sno-battle flava-flutflut flava-sno-cave flava-sno-fort flava-sno-balls) - (static-text-list-array cave-level-name flava-mai-rob flava-mai-rob-top flava-mai-mai flava-mai-dar) - (static-text-list-array zero lavatube-level-name flava-lav-middle flava-lav-end) - (static-text-list-array citadel-level-name flava-sage flava-assistant flava-cit-yellowsage flava-cit-redsage flava-cit-bluesage flava-cit-hub) - (static-text-list-array finalboss-level-name flava-fin-middle flava-fin-end) - (static-text-list-array credits flava-credits-middle flava-credits-end) - (static-text-list-array danger-mus) - )) - + `(new 'static 'boxed-array :type text-id ,@(apply (lambda (x) `(text-id ,x)) texts))) +(define *music-flava-name-list* + (new 'static + 'boxed-array + :type (array text-id) + (static-text-list-array village1-level-name + flava-vi1-unused0 + flava-sage + flava-sage-hut + flava-birdlady + flava-farmer + flava-assistant + flava-mayor + flava-sculptor + flava-explorer + flava-dock) + (static-text-list-array beach-level-name flava-bea-sentinel flava-bea-cannon flava-bea-grotto flava-birdlady) + (static-text-list-array jungle-level-name flava-jun-temple-exit flava-jun-lurkerm flava-jun-temple-top) + (static-text-list-array fishgame) + (static-text-list-array jungleb-level-name flava-jub-eggtop flava-jub-plant-boss) + (static-text-list-array misty-level-name flava-mis-battle flava-mis-boat flava-racer flava-mis-unused0) + (static-text-list-array firecanyon-level-name flava-racer flava-fic-unused0) + (static-text-list-array village2-level-name + flava-sage + flava-assistant + flava-warrior + flava-geologist + flava-gambler + flava-levitator) + (static-text-list-array rolling-level-name flava-rol-gorge) + (static-text-list-array swamp-level-name flava-swa-game flava-swa-launcher flava-swa-battle flava-flutflut) + (static-text-list-array sunken-level-name) + (static-text-list-array ogre-level-name flava-ogr-middle flava-ogr-end) + (static-text-list-array ogreboss) + (static-text-list-array village3-level-name flava-vi3-miners flava-sage flava-assistant flava-vi3-mai flava-vi3-sno) + (static-text-list-array snow-level-name flava-sno-battle flava-flutflut flava-sno-cave flava-sno-fort flava-sno-balls) + (static-text-list-array cave-level-name flava-mai-rob flava-mai-rob-top flava-mai-mai flava-mai-dar) + (static-text-list-array zero lavatube-level-name flava-lav-middle flava-lav-end) + (static-text-list-array citadel-level-name + flava-sage + flava-assistant + flava-cit-yellowsage + flava-cit-redsage + flava-cit-bluesage + flava-cit-hub) + (static-text-list-array finalboss-level-name flava-fin-middle flava-fin-end) + (static-text-list-array credits flava-credits-middle flava-credits-end) + (static-text-list-array danger-mus))) (defmacro def-language-remap-info (name langs) - `(define ,name (quote ,(apply (lambda (x) `((the binteger (text-id ,x)) (the binteger (pc-language ,x)))) langs))) - ) + `(define ,name (quote ,(apply (lambda (x) `((the binteger (text-id ,x)) (the binteger (pc-language ,x)))) langs)))) (def-language-remap-info *language-remap-info-pc* - (english uk-english french german spanish italian japanese portuguese br-portuguese swedish finnish danish norwegian dutch hungarian catalan icelandic polish lithuanian)) -(define *text-languages* (static-text-list-array - english uk-english french german spanish italian japanese portuguese br-portuguese swedish finnish danish norwegian dutch hungarian polish lithuanian)) -(define *subtitle-languages* (static-text-list-array - english uk-english french german spanish italian br-portuguese swedish finnish danish dutch polish lithuanian)) + (english uk-english + french + german + spanish + italian + japanese + portuguese + br-portuguese + swedish + finnish + danish + norwegian + dutch + hungarian + catalan + icelandic + polish + lithuanian)) +(define *text-languages* + (static-text-list-array english + uk-english + french + german + spanish + italian + japanese + portuguese + br-portuguese + swedish + finnish + danish + norwegian + dutch + hungarian + polish + lithuanian)) +(define *subtitle-languages* + (static-text-list-array english + uk-english + french + german + spanish + italian + br-portuguese + swedish + finnish + danish + dutch + polish + lithuanian)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; DYNAMIC MENU THINGS @@ -526,22 +1112,19 @@ (defmacro add-flava-player-option (text-id flava) "add a music player w/ flava button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type button-flava)) - (set! (-> option name) ,text-id) - (set! (-> option param1) (the float ,flava)) - (set! (-> option scale) #t) - - (1+! (-> *temp-options* length)) - ) - ) + (set! (-> option option-type) (game-option-type button-flava)) + (set! (-> option name) ,text-id) + (set! (-> option param1) (the float ,flava)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defmacro add-back-option () "add *back-button* to *temp-options*" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type button)) - (set! (-> option name) (text-id back)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (set! (-> option option-type) (game-option-type button)) + (set! (-> option name) (text-id back)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defmacro add-message-option (text) "adds an option that isn't selectable but displays some text" @@ -555,13 +1138,13 @@ (defmacro add-resolution-option (x y) "add a resolution button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*)))) - (set! (-> option option-type) (game-option-type resolution)) - (set! (-> option option-disabled-func) #f) - (set! (-> option name) (text-id resolution-fmt)) - (set! (-> option param1) (the float ,x)) - (set! (-> option param2) (the float ,y)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (set! (-> option option-type) (game-option-type resolution)) + (set! (-> option option-disabled-func) #f) + (set! (-> option name) (text-id resolution-fmt)) + (set! (-> option param1) (the float ,x)) + (set! (-> option param2) (the float ,y)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-resolution-options () (set! (-> *temp-options* length) 0) @@ -583,51 +1166,35 @@ ;; Ignore those that aren't relevant to the current window's aspect ratio ;; we only do this when we aren't in windowed mode, because in windowed mode ;; you are using the resolution menu to change it...so it doesn't make sense to base it on the size - (when (or (= (pc-get-display-mode) 'windowed) - (< (fabs (- window-aspect-ratio res-aspect-ratio)) 0.05)) + (when (or (= (pc-get-display-mode) 'windowed) (< (fabs (- window-aspect-ratio res-aspect-ratio)) 0.05)) (add-resolution-option res-width res-height) (1+! num-resolutions-added))))) ;; if we didn't add any options, inform them they have a weird aspect ratio (cond - ((zero? num-resolutions-added) - (add-message-option (text-id progress-no-other-resolution-options))) + ((zero? num-resolutions-added) (add-message-option (text-id progress-no-other-resolution-options))) ((fullscreen?) - ;; for the weird people that want a more "PS2-like" experience - (add-resolution-option 512 448) - (add-resolution-option 512 224) - ) - ) + ;; for the weird people that want a more "PS2-like" experience + (add-resolution-option 512 448) + (add-resolution-option 512 224))) (add-back-option))) (defun build-flava-player-options ((mus-idx int)) - (set! (-> *temp-options* length) 0) - (dotimes (i (-> *music-flava-name-list* mus-idx length)) - (if (nonzero? (-> *music-flava-name-list* mus-idx i)) - (add-flava-player-option (-> *music-flava-name-list* mus-idx i) i) - ) - ) + (if (nonzero? (-> *music-flava-name-list* mus-idx i)) (add-flava-player-option (-> *music-flava-name-list* mus-idx i) i))) (add-back-option) - - *temp-options* - ) + *temp-options*) (defmacro add-monitor-option (text-id display-id) "add a display button to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*))) - (name (pc-get-display-name ,display-id *pc-cpp-temp-string*))) - (set! (-> option option-type) (game-option-type monitor)) - ;; Use the name of the display if it's available - (if name - (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) - (set! (-> option name) ,text-id)) - (set! (-> option param1) (the float ,display-id)) - (set! (-> option scale) #t) - - (1+! (-> *temp-options* length)) - ) - ) + (name (pc-get-display-name ,display-id *pc-cpp-temp-string*))) + (set! (-> option option-type) (game-option-type monitor)) + ;; Use the name of the display if it's available + (if name (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) (set! (-> option name) ,text-id)) + (set! (-> option param1) (the float ,display-id)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-monitor-options () (set! (-> *temp-options* length) 0) @@ -639,30 +1206,58 @@ (defmacro add-controller-option (text-id controller-id) "add a controller option to *temp-options* with specified size" `(let ((option (-> *temp-options* (length *temp-options*))) - (name (pc-get-controller-name ,controller-id *pc-cpp-temp-string*))) - (set! (-> option option-type) (game-option-type controller)) - ;; Use the name of the controller if it's available - (if name - (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) - (set! (-> option name) ,text-id)) - (set! (-> option param1) (the float ,controller-id)) - (set! (-> option scale) #t) - (1+! (-> *temp-options* length)))) + (name (pc-get-controller-name ,controller-id *pc-cpp-temp-string*))) + (set! (-> option option-type) (game-option-type controller)) + ;; Use the name of the controller if it's available + (if name (copy-string<-string (-> option name-override) *pc-cpp-temp-string*) (set! (-> option name) ,text-id)) + (set! (-> option param1) (the float ,controller-id)) + (set! (-> option scale) #t) + (1+! (-> *temp-options* length)))) (defun build-controller-options () "Dynamically creates menu options for selecting your controller. Will attempt to use the name of the controller, but will fallback to a generic number otherwise" (set! (-> *temp-options* length) 0) (dotimes (i (pc-get-controller-count)) - (add-controller-option (text-id input-opts-generic-controller) i) - ) + (add-controller-option (text-id input-opts-generic-controller) i)) (add-back-option) *temp-options*) -(define *analog-bind-names* (new 'static 'boxed-array :type string "L ANALOG LEFT" "L ANALOG RIGHT" "L ANALOG UP" "L ANALOG DOWN" "R ANALOG LEFT" "R ANALOG RIGHT" "R ANALOG UP" "R ANALOG DOWN")) +(define *analog-bind-names* + (new 'static + 'boxed-array + :type + string + "L ANALOG LEFT" + "L ANALOG RIGHT" + "L ANALOG UP" + "L ANALOG DOWN" + "R ANALOG LEFT" + "R ANALOG RIGHT" + "R ANALOG UP" + "R ANALOG DOWN")) -(define *button-bind-names* (new 'static 'boxed-array :type string "SELECT" "L3" "R3" "START" - "DPAD UP" "DPAD RIGHT" "DPAD DOWN" "DPAD LEFT" "L2" "R2" "L1" "R1" "TRIANGLE" "CIRCLE" "CROSS" "SQUARE")) +(define *button-bind-names* + (new 'static + 'boxed-array + :type + string + "SELECT" + "L3" + "R3" + "START" + "DPAD UP" + "DPAD RIGHT" + "DPAD DOWN" + "DPAD LEFT" + "L2" + "R2" + "L1" + "R1" + "TRIANGLE" + "CIRCLE" + "CROSS" + "SQUARE")) ;; TODO - make a common function for these dynamic menus instead of the duplication / macros (defun build-binding-reassignment-options ((screen progress-screen)) @@ -682,12 +1277,10 @@ (set! (-> option bind-info for-buttons?) #f) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #t) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *analog-bind-names* (* i 2))) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) + (1+! (-> *temp-options* length))) (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option bind-info port) 0) ;; only for keyboards @@ -695,34 +1288,25 @@ (set! (-> option bind-info for-buttons?) #f) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #f) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *analog-bind-names* (+ 1 (* i 2)))) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) - )) + (1+! (-> *temp-options* length))))) ;; Add Button bindings (dotimes (i 16) (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option bind-info port) 0) (case screen - (((progress-screen controller-binds)) - (set! (-> option bind-info device-type) 0)) - (((progress-screen keyboard-binds)) - (set! (-> option bind-info device-type) 1)) - (((progress-screen mouse-binds)) - (set! (-> option bind-info device-type) 2))) + (((progress-screen controller-binds)) (set! (-> option bind-info device-type) 0)) + (((progress-screen keyboard-binds)) (set! (-> option bind-info device-type) 1)) + (((progress-screen mouse-binds)) (set! (-> option bind-info device-type) 2))) (set! (-> option bind-info for-buttons?) #t) (set! (-> option bind-info input-idx) i) (set! (-> option bind-info analog-min-range?) #f) - (set! (-> option option-type) (game-option-type binding-assignment)) (set! (-> option name-override) (-> *button-bind-names* i)) (set! (-> option scale) #t) - (1+! (-> *temp-options* length)) - ) - ) + (1+! (-> *temp-options* length)))) ;; We add a restore defaults button at the bottom of each binding menu (let ((option (-> *temp-options* (length *temp-options*)))) (set! (-> option option-type) (game-option-type confirmation)) @@ -730,66 +1314,48 @@ (set! (-> option scale) #t) ;; No closures :( (case screen - ;; NOTE - assumes only port 0 - (((progress-screen controller-binds)) + ;; NOTE - assumes only port 0 + (((progress-screen controller-binds)) (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 0) (none)))) - (((progress-screen keyboard-binds)) - (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 1) (none)))) - (((progress-screen mouse-binds)) - (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 2) (none))))) - (1+! (-> *temp-options* length)) - ) + (((progress-screen keyboard-binds)) + (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 1) (none)))) + (((progress-screen mouse-binds)) (set! (-> option on-confirm) (lambda () (pc-reset-bindings-to-defaults! 0 2) (none))))) + (1+! (-> *temp-options* length))) (add-back-option) *temp-options*) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; CAROUSELL FUNCTIONS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun get-language-name ((lang pc-language)) "get the text-id from a lang" (dolist (item *language-remap-info-pc*) (when (= lang (the pc-language (/ (the int (cadr (car item))) 8))) - (return (the text-id (/ (the int (car (car item))) 8)))) - ) - (text-id zero) - ) - + (return (the text-id (/ (the int (car (car item))) 8))))) + (text-id zero)) (defun print-string-in-carousell ((arg0 text-id) (arg1 font-context) (arg2 int) (arg3 symbol)) - (let ((s5-0 (if arg3 - arg2 - (- arg2) - ) - ) - ) + (let ((s5-0 (if arg3 arg2 (- arg2)))) (+! (-> arg1 origin x) (the float s5-0)) (let ((f30-0 (- 1.0 (* 0.0033333334 (the float arg2))))) - (print-game-text-scaled (lookup-text! *common-text* arg0 #f) f30-0 arg1 (the int (* 128.0 f30-0))) - ) - (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0))) - ) + (print-game-text-scaled (lookup-text! *common-text* arg0 #f) f30-0 arg1 (the int (* 128.0 f30-0)))) + (set! (-> arg1 origin x) (- (-> arg1 origin x) (the float s5-0)))) (set! (-> arg1 color) (font-color default)) - arg1 - ) + arg1) (defun progress-draw-carousell-from-string-list ((options (array text-id)) (font font-context) (y-off int) (new-val int)) "yep." - (let ((old-lang (-> *progress-carousell* selection)) (new-lang new-val) - (max-lang (length options)) - ) + (max-lang (length options))) (if (-> *progress-carousell* transition) - (seekl! (-> *progress-carousell* x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) + (seekl! (-> *progress-carousell* x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) (when (>= (-> *progress-carousell* x-offset) 100) (set! (-> *progress-carousell* selection) new-lang) (set! old-lang new-lang) (set! (-> *progress-carousell* transition) #f) - (set! (-> *progress-carousell* x-offset) 0) - ) + (set! (-> *progress-carousell* x-offset) 0)) (set! (-> font origin y) (the float (+ y-off 3))) (set-color! font (font-color progress-blue)) 0 @@ -797,52 +1363,33 @@ (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) ;; these are used during the transition since it technically allows you to see 4 langs at once. (next2-lang (mod (+ old-lang 2) max-lang)) - (prev2-lang (mod (+ max-lang -2 old-lang) max-lang)) - ) + (prev2-lang (mod (+ max-lang -2 old-lang) max-lang))) (cond ((-> *progress-carousell* direction) (let ((a2-22 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) - (print-string-in-carousell (-> options prev-lang) font a2-22 #f) - ) + (print-string-in-carousell (-> options prev-lang) font a2-22 #f)) (set-color! font (font-color progress-blue)) (let ((a2-23 (+ (-> *progress-carousell* x-offset) 100))) (cond - ((< a2-23 150) - (print-string-in-carousell (-> options next-lang) font a2-23 #t) - ) + ((< a2-23 150) (print-string-in-carousell (-> options next-lang) font a2-23 #t)) (else - (let ((a2-24 (- 200 (-> *progress-carousell* x-offset)))) - (print-string-in-carousell (-> options prev2-lang) font a2-24 #f) - ) - ) - ) - ) - ) + (let ((a2-24 (- 200 (-> *progress-carousell* x-offset)))) + (print-string-in-carousell (-> options prev2-lang) font a2-24 #f)))))) (else - (let ((a2-25 (+ (-> *progress-carousell* x-offset) 100))) - (cond - ((< a2-25 150) - (print-string-in-carousell (-> options prev-lang) font a2-25 #f) - ) - (else - (let ((a2-26 (- 200 (-> *progress-carousell* x-offset)))) - (print-string-in-carousell (-> options next2-lang) font a2-26 #t) - ) - ) - ) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-27 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) - (print-string-in-carousell (-> options next-lang) font a2-27 #t) - ) - ) - ) - ) - (if (not (-> *progress-carousell* transition)) - (set-color! font (font-color progress-selected))) - (print-string-in-carousell (-> options old-lang) font (-> *progress-carousell* x-offset) (-> *progress-carousell* direction)) - ) - ) + (let ((a2-25 (+ (-> *progress-carousell* x-offset) 100))) + (cond + ((< a2-25 150) (print-string-in-carousell (-> options prev-lang) font a2-25 #f)) + (else + (let ((a2-26 (- 200 (-> *progress-carousell* x-offset)))) + (print-string-in-carousell (-> options next2-lang) font a2-26 #t))))) + (set-color! font (font-color progress-blue)) + (let ((a2-27 (- 200 (+ (-> *progress-carousell* x-offset) 100)))) + (print-string-in-carousell (-> options next-lang) font a2-27 #t))))) + (if (not (-> *progress-carousell* transition)) (set-color! font (font-color progress-selected))) + (print-string-in-carousell (-> options old-lang) + font + (-> *progress-carousell* x-offset) + (-> *progress-carousell* direction)))) ;;--------------------------- ;;--------------------------- @@ -850,92 +1397,80 @@ (defun init-game-options ((obj progress)) "Set the options for all of the menus." - ;; start off by making them all invalid (dotimes (i (progress-screen max)) - (set! (-> *options-remap* i) #f) - ) - + (set! (-> *options-remap* i) #f)) ;; give cheats (when (task-closed? (game-task finalboss-movies) (task-status need-reminder)) - (logior! (-> *pc-settings* cheats-known) (pc-cheats sidekick-blue tunes sky big-head small-head big-fist big-head-npc)) - (when (>= (calculate-completion (the progress #f)) 100.0) - (logior! (-> *pc-settings* cheats-known) (pc-cheats invinc eco-blue eco-red eco-green eco-yellow huge-head mirror no-tex)))) - + (logior! (-> *pc-settings* cheats-known) (pc-cheats sidekick-blue tunes sky big-head small-head big-fist big-head-npc)) + (when (>= (calculate-completion (the progress #f)) 100.0) + (logior! (-> *pc-settings* cheats-known) + (pc-cheats invinc eco-blue eco-red eco-green eco-yellow huge-head mirror no-tex)))) ;; set up options for each screen - (set! (-> *options-remap* (progress-screen settings)) (if (or *cheat-mode* (nonzero? (-> *pc-settings* cheats-known))) - *main-options-secrets* - *main-options-pc*)) + (set! (-> *options-remap* (progress-screen settings)) + (if (or *cheat-mode* (nonzero? (-> *pc-settings* cheats-known))) *main-options-secrets* *main-options-pc*)) (set! (-> *options-remap* (progress-screen game-settings)) *game-options-pc*) (set! (-> *options-remap* (progress-screen graphic-settings)) *graphic-options-pc*) (let ((max-refresh-rate (pc-get-active-display-refresh-rate))) (cond - ((> max-refresh-rate 100) - (set! *carousell-frame-rate* *carousell-frame-rate-150fps*) - ) - ((> max-refresh-rate 60) - (set! *carousell-frame-rate* *carousell-frame-rate-100fps*) - ))) - - (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options-pc*) - (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) - (set! (-> *options-remap* (progress-screen load-game)) *load-options*) - (set! (-> *options-remap* (progress-screen save-game)) *save-options*) - (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) - (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-formatting)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) - (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen title)) *title-pc*) - (set! (-> *options-remap* (progress-screen settings-title)) *options*) - (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) - (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) - (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) + ((> max-refresh-rate 100) (set! *carousell-frame-rate* *carousell-frame-rate-150fps*)) + ((> max-refresh-rate 60) (set! *carousell-frame-rate* *carousell-frame-rate-100fps*)))) + (set! (-> *options-remap* (progress-screen sound-settings)) *sound-options-pc*) + (set! (-> *options-remap* (progress-screen memcard-no-space)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-inserted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-not-formatted)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-format)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-data-exists)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen memcard-insert)) *ok-options*) + (set! (-> *options-remap* (progress-screen load-game)) *load-options*) + (set! (-> *options-remap* (progress-screen save-game)) *save-options*) + (set! (-> *options-remap* (progress-screen save-game-title)) *save-options-title*) + (set! (-> *options-remap* (progress-screen memcard-error-loading)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-saving)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-formatting)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-error-creating)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-auto-save-error)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-removed)) *ok-options*) + (set! (-> *options-remap* (progress-screen memcard-no-data)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen title)) *title-pc*) + (set! (-> *options-remap* (progress-screen settings-title)) *options*) + (set! (-> *options-remap* (progress-screen auto-save)) *ok-options*) + (set! (-> *options-remap* (progress-screen pal-change-to-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen pal-now-60hz)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen no-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen bad-disc)) *ok-options*) + (set! (-> *options-remap* (progress-screen quit)) *yes-no-options*) ;; our screens! - (set! (-> *options-remap* (progress-screen aspect-msg)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen input-options)) *input-options*) - (set! (-> *options-remap* (progress-screen camera-options)) *camera-options*) - (set! (-> *options-remap* (progress-screen controller-options)) *controller-options*) - (set! (-> *options-remap* (progress-screen mouse-options)) *mouse-options*) - (set! (-> *options-remap* (progress-screen reassign-binds-options)) *reassign-binds-options*) - (set! (-> *options-remap* (progress-screen select-controller)) *temp-options*) - (set! (-> *options-remap* (progress-screen controller-binds)) *temp-options*) - (set! (-> *options-remap* (progress-screen keyboard-binds)) *temp-options*) - (set! (-> *options-remap* (progress-screen mouse-binds)) *temp-options*) - - (set! (-> *options-remap* (progress-screen misc-options)) *misc-options*) - (set! (-> *options-remap* (progress-screen gfx-ps2-options)) *gfx-ps2-options*) - (set! (-> *options-remap* (progress-screen resolution)) *temp-options*) - (set! (-> *options-remap* (progress-screen aspect-ratio)) *aspect-ratio-options*) - (set! (-> *options-remap* (progress-screen quit-title)) *yes-no-options*) - (set! (-> *options-remap* (progress-screen secrets)) *secrets-title*) - (set! (-> *options-remap* (progress-screen cheats)) *cheats*) - (set! (-> *options-remap* (progress-screen checkpoint-select)) *checkpoint-select-options*) - (set! (-> *options-remap* (progress-screen music-player)) *music-player-options*) - (set! (-> *options-remap* (progress-screen flava-player)) *temp-options*) - (set! (-> *options-remap* (progress-screen memcard-disable-auto-save)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen aspect-msg)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen input-options)) *input-options*) + (set! (-> *options-remap* (progress-screen camera-options)) *camera-options*) + (set! (-> *options-remap* (progress-screen controller-options)) *controller-options*) + (set! (-> *options-remap* (progress-screen mouse-options)) *mouse-options*) + (set! (-> *options-remap* (progress-screen reassign-binds-options)) *reassign-binds-options*) + (set! (-> *options-remap* (progress-screen select-controller)) *temp-options*) + (set! (-> *options-remap* (progress-screen controller-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen keyboard-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen mouse-binds)) *temp-options*) + (set! (-> *options-remap* (progress-screen misc-options)) *misc-options*) + (set! (-> *options-remap* (progress-screen gfx-ps2-options)) *gfx-ps2-options*) + (set! (-> *options-remap* (progress-screen resolution)) *temp-options*) + (set! (-> *options-remap* (progress-screen aspect-ratio)) *aspect-ratio-options*) + (set! (-> *options-remap* (progress-screen quit-title)) *yes-no-options*) + (set! (-> *options-remap* (progress-screen secrets)) *secrets-title*) + (set! (-> *options-remap* (progress-screen cheats)) *cheats*) + (set! (-> *options-remap* (progress-screen checkpoint-select)) *checkpoint-select-options*) + (set! (-> *options-remap* (progress-screen music-player)) *music-player-options*) + (set! (-> *options-remap* (progress-screen flava-player)) *temp-options*) + (set! (-> *options-remap* (progress-screen memcard-disable-auto-save)) *yes-no-options*) (set! (-> *options-remap* (progress-screen memcard-auto-save-disabled)) *ok-options*) - (set! (-> *options-remap* (progress-screen monitor)) *temp-options*) - (set! (-> *options-remap* (progress-screen speedrun-options)) *speedrun-options*) - (set! (-> *options-remap* (progress-screen speedrun-il-options)) *speedrun-il-options*) - (set! (-> *options-remap* (progress-screen speedrun-cat-ext-options)) *speedrun-cat-ext-options*) - + (set! (-> *options-remap* (progress-screen monitor)) *temp-options*) + (set! (-> *options-remap* (progress-screen speedrun-options)) *speedrun-options*) + (set! (-> *options-remap* (progress-screen speedrun-il-options)) *speedrun-il-options*) + (set! (-> *options-remap* (progress-screen speedrun-cat-ext-options)) *speedrun-cat-ext-options*) ;; set default params (set! (-> *progress-state* aspect-ratio-choice) (get-aspect-ratio)) (set! (-> *progress-state* video-mode-choice) (get-video-mode)) (set! (-> *progress-state* yes-no-choice) #f) - ;; set variable pointers (set! (-> *game-options* 1 value-to-modify) (&-> *setting-control* default play-hints)) (set! (-> *game-options* 2 value-to-modify) (&-> *setting-control* default language)) @@ -948,7 +1483,6 @@ (set! (-> *sound-options* 1 value-to-modify) (&-> *setting-control* default music-volume)) (set! (-> *sound-options* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (set! (-> *yes-no-options* 0 value-to-modify) (&-> *progress-state* yes-no-choice)) - ;; our options! (set! (-> *game-options-pc* 1 value-to-modify) (&-> *setting-control* default play-hints)) (set! (-> *game-options-pc* 2 value-to-modify) (&-> *pc-settings* subtitles?)) @@ -957,23 +1491,19 @@ (set! (-> *game-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *game-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *game-options-pc* 7 value-to-modify) (&-> *progress-carousell* int-backup)) - (set! (-> *graphic-options-pc* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-pc* 2 value-to-modify) (&-> *pc-settings* monitor)) (set! (-> *graphic-options-pc* 3 value-to-modify) (&-> *pc-settings* vsync?)) (set! (-> *graphic-options-pc* 5 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *graphic-options-pc* 6 value-to-modify) (&-> *progress-carousell* int-backup)) - (set! (-> *misc-options* 0 value-to-modify) (&-> *pc-settings* money-starburst?)) (set! (-> *misc-options* 1 value-to-modify) (&-> *pc-settings* discord-rpc?)) (set! (-> *misc-options* 2 value-to-modify) (&-> *pc-settings* skip-movies?)) (set! (-> *misc-options* 3 value-to-modify) (&-> *pc-settings* speedrunner-mode?)) - (set! (-> *camera-options* 0 value-to-modify) (&-> *pc-settings* first-camera-h-inverted?)) (set! (-> *camera-options* 1 value-to-modify) (&-> *pc-settings* first-camera-v-inverted?)) (set! (-> *camera-options* 2 value-to-modify) (&-> *pc-settings* third-camera-h-inverted?)) (set! (-> *camera-options* 3 value-to-modify) (&-> *pc-settings* third-camera-v-inverted?)) - ;; input options (set! (-> *controller-options* 1 value-to-modify) (&-> *setting-control* default vibration)) (set! (-> *controller-options* 2 value-to-modify) (&-> *pc-settings* stick-deadzone)) @@ -981,126 +1511,85 @@ (set! (-> *controller-options* 4 value-to-modify) (&-> *pc-settings* controller-led-hp?)) (set! (-> *controller-options* 5 value-to-modify) (&-> *pc-settings* controller-led-eco?)) (set! (-> *controller-options* 6 value-to-modify) (&-> *pc-settings* controller-led-heat?)) - (set! (-> *mouse-options* 0 value-to-modify) (&-> *pc-settings* mouse-camera?)) (set! (-> *mouse-options* 1 value-to-modify) (&-> *pc-settings* mouse-xsens)) (set! (-> *mouse-options* 2 value-to-modify) (&-> *pc-settings* mouse-ysens)) (set! (-> *mouse-options* 3 value-to-modify) (&-> *pc-settings* mouse-movement?)) - (set! (-> *input-options* 2 value-to-modify) (&-> *pc-settings* keyboard-enabled?)) (set! (-> *input-options* 3 value-to-modify) (&-> *pc-settings* mouse-enabled?)) (set! (-> *input-options* 5 value-to-modify) (&-> *pc-settings* auto-hide-cursor?)) - (set! (-> *gfx-ps2-options* 0 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 1 value-to-modify) (&-> *progress-carousell* int-backup)) (set! (-> *gfx-ps2-options* 2 value-to-modify) (&-> *pc-settings* ps2-parts?)) (set! (-> *gfx-ps2-options* 3 value-to-modify) (&-> *pc-settings* force-envmap?)) (set! (-> *gfx-ps2-options* 4 value-to-modify) (&-> *pc-settings* ps2-actor-vis?)) - (set! (-> *sound-options-pc* 0 value-to-modify) (&-> *setting-control* default sfx-volume)) (set! (-> *sound-options-pc* 1 value-to-modify) (&-> *setting-control* default music-volume)) (set! (-> *sound-options-pc* 2 value-to-modify) (&-> *setting-control* default dialog-volume)) (dotimes (i (1- (-> *cheats* length))) - (set! (-> *cheats* i value-to-modify) (&-> *progress-carousell* symbol-backup)) - ) + (set! (-> *cheats* i value-to-modify) (&-> *progress-carousell* symbol-backup))) ;(set! (-> *sound-options-pc* 3 value-to-modify) (&-> *pc-settings* music-fadein?)) - (set! (-> *progress-carousell* aspect-native-choice) (-> *pc-settings* use-vis?)) - ;; scroll stuff! (progress-scroll-reset) - - (none) - ) - - + (none)) (defmethod respond-common ((obj progress)) "common logic for navigating the progress menu. this is the overriden version, purged of no longer necessary code and with additional new code." - ;; read memcard (mc-get-slot-info 0 *progress-save-info*) (set! (-> obj card-info) *progress-save-info*) ;; build custom dynamic menus (case (-> obj display-state) (((progress-screen resolution)) - ;; TODO infinite scrolling - (build-resolution-options) - ) - (((progress-screen flava-player)) - (build-flava-player-options *progress-music*) - ) + ;; TODO infinite scrolling + (build-resolution-options)) + (((progress-screen flava-player)) (build-flava-player-options *progress-music*)) (((progress-screen secrets)) - (if (= (-> obj display-state-stack 0) (progress-screen title)) - (set! (-> *options-remap* (-> obj display-state)) *secrets-title*) - (set! (-> *options-remap* (-> obj display-state)) *secrets*)) - ) - (((progress-screen monitor)) - (build-monitor-options) - ) - (((progress-screen select-controller)) - (build-controller-options) - ) + (if (= (-> obj display-state-stack 0) (progress-screen title)) + (set! (-> *options-remap* (-> obj display-state)) *secrets-title*) + (set! (-> *options-remap* (-> obj display-state)) *secrets*))) + (((progress-screen monitor)) (build-monitor-options)) + (((progress-screen select-controller)) (build-controller-options)) (((progress-screen controller-binds) (progress-screen keyboard-binds) (progress-screen mouse-binds)) - (build-binding-reassignment-options (-> obj display-state)) - ) - ) + (build-binding-reassignment-options (-> obj display-state)))) ;; run nav code (let ((options (-> *options-remap* (-> obj display-state)))) ;; snap scroll if oob (when (> (length options) PROGRESS_PC_PAGE_HEIGHT) - (set! (-> *progress-scroll* start-index) (max (-> *progress-scroll* start-index) - (- (-> obj option-index) (+ PROGRESS_PC_PAGE_HEIGHT -2)))) - ) + (set! (-> *progress-scroll* start-index) + (max (-> *progress-scroll* start-index) (- (-> obj option-index) (+ PROGRESS_PC_PAGE_HEIGHT -2))))) (when (and options (not (or (progress-scrolling?) (-> obj in-transition)))) ;; only respond to inputs when transition is done (and also there's options at all) (cond ((cpad-pressed? 0 up) - ;; pressed up - ;; original code checked hold and then press, because hold can be used during center screen option. which we don't use. - (when (not (-> obj selected-option)) - (if (!= (length options) 1) - (sound-play "cursor-up-down") - ) - (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) - (cond - ((> (-> obj option-index) 0) - (1-! (-> obj option-index)) - (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (-> obj option-index) *progress-scroll-start*)) - (progress-scroll-up!) - ) - ) - (else - (set! (-> obj option-index) (1- (length options))) - (set! (-> *progress-scroll* start-index) (max 0 (- (length options) PROGRESS_PC_PAGE_HEIGHT -1))) - ) - ) - ) - ) + ;; pressed up + ;; original code checked hold and then press, because hold can be used during center screen option. which we don't use. + (when (not (-> obj selected-option)) + (if (!= (length options) 1) (sound-play "cursor-up-down")) + (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) + (cond + ((> (-> obj option-index) 0) + (1-! (-> obj option-index)) + (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (-> obj option-index) *progress-scroll-start*)) + (progress-scroll-up!))) + (else + (set! (-> obj option-index) (1- (length options))) + (set! (-> *progress-scroll* start-index) (max 0 (- (length options) PROGRESS_PC_PAGE_HEIGHT -1))))))) ((cpad-pressed? 0 down) - ;; pressed down. - (when (not (-> obj selected-option)) - (if (!= (length options) 1) - (sound-play "cursor-up-down") - ) - (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) - (cond - ((< (-> obj option-index) (1- (length options))) - (1+! (-> obj option-index)) - (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (>= (-> obj option-index) *progress-scroll-end*)) - (progress-scroll-down!) - ) - ) - (else - (set! (-> obj option-index) 0) - (set! (-> *progress-scroll* start-index) 0) - ) - ) - ) - ) + ;; pressed down. + (when (not (-> obj selected-option)) + (if (!= (length options) 1) (sound-play "cursor-up-down")) + (set! (-> obj last-option-index-change) (-> *display* real-frame-counter)) + (cond + ((< (-> obj option-index) (1- (length options))) + (1+! (-> obj option-index)) + (when (and (> (length options) PROGRESS_PC_PAGE_HEIGHT) (>= (-> obj option-index) *progress-scroll-end*)) + (progress-scroll-down!))) + (else (set! (-> obj option-index) 0) (set! (-> *progress-scroll* start-index) 0))))) ((cpad-hold? 0 left) - ;; holding left. sliders use hold. + ;; holding left. sliders use hold. (cond ((cpad-pressed? 0 left) ;; navigate left. @@ -1119,29 +1608,24 @@ ;; vibrate if this toggles vibration. ;; TODO - get this working (when (= (-> options (-> obj option-index) name) (text-id vibrations)) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3))) - ) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.3)))) ;; if the option has an explicit on-change function, call it (if (nonzero? (-> options (-> obj option-index) on-change)) - ((-> options (-> obj option-index) on-change) #t) - ;; set to yes - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #t)) - ) + ((-> options (-> obj option-index) on-change) #t) + ;; set to yes + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #t))) (((game-option-type aspect-ratio)) (set! sound? (= (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9)) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3) - ) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3)) (((game-option-type language)) ;; language selection. if not on first language, go back. if on first language, go to last. (if (> (the-as int (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) 0) - (+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify))) -1) - (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 5) - ) + (+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify))) -1) + (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 5)) ;; language was updated. (set! (-> obj language-transition) #t) (set! (-> obj language-direction) #t) - (set! sound? #t) - ) + (set! sound? #t)) (((game-option-type confirmation)) (set! sound? (!= (-> *progress-state* on-off-backup) #t)) (set! (-> *progress-state* on-off-backup) #t)) @@ -1152,72 +1636,49 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type language-subtitles) - (game-option-type language-text) - ) + (game-option-type language-text)) ;; a carousell like language (if (> (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0) - (+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) -1) - (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) (1- (length (-> *progress-carousell* current-carousell)))) - ) + (+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) -1) + (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) + (1- (length (-> *progress-carousell* current-carousell))))) ;; updated. (set! (-> *progress-carousell* transition) #t) (set! (-> *progress-carousell* direction) #t) - (set! sound? #t) - ) - ) - (if sound? - (sound-play "cursor-l-r") - ) - ) - ) - ) + (set! sound? #t))) + (if sound? (sound-play "cursor-l-r"))))) (else - ;; holding left - (when (-> obj selected-option) - (let ((sound? #f)) - (case (-> options (-> obj option-index) option-type) - (((game-option-type slider)) - ;; slider is selected - (cond - ((>= (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (+ (-> options (-> obj option-index) slider-step-size) (-> options (-> obj option-index) param1))) - ;; we're 1 above minimum, so reduce by 1 - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (- (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) slider-step-size))) - (set! sound? #t) - ) - ((< (-> options (-> obj option-index) param1) - ;; not at least 1 above minimum, just set to minimum (why not just use max or something!!) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param1)) - (set! sound? #t) - ) - ) - ) - ) - ;; play sound - (when sound? - (let ((vol 100.0)) - (case (-> options (-> obj option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol vol) - ) - ) - ) - ) - ) - ) - ) - ) + ;; holding left + (when (-> obj selected-option) + (let ((sound? #f)) + (case (-> options (-> obj option-index) option-type) + (((game-option-type slider)) + ;; slider is selected + (cond + ((>= (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (+ (-> options (-> obj option-index) slider-step-size) (-> options (-> obj option-index) param1))) + ;; we're 1 above minimum, so reduce by 1 + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (- (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) slider-step-size))) + (set! sound? #t)) + ((< (-> options (-> obj option-index) param1) + ;; not at least 1 above minimum, just set to minimum (why not just use max or something!!) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param1)) + (set! sound? #t))))) + ;; play sound + (when sound? + (let ((vol 100.0)) + (case (-> options (-> obj option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol vol))))))))) ((cpad-hold? 0 right) - ;; holding right + ;; holding right (cond ((cpad-pressed? 0 right) ;; pressed right @@ -1233,25 +1694,21 @@ (set! sound? (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) ;; if the option has an explicit on-change function, call it (if (nonzero? (-> options (-> obj option-index) on-change)) - ((-> options (-> obj option-index) on-change) #f) - ;; set to no - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #f)) - ) + ((-> options (-> obj option-index) on-change) #f) + ;; set to no + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) #f))) (((game-option-type aspect-ratio)) ;; same shit different toilet (set! sound? (= (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect4x3)) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9) - ) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) 'aspect16x9)) (((game-option-type language)) ;; same thing as before. if at last, go to first. otherwise, keep going forward. (if (< (the-as int (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) 5) - (1+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 0) - ) + (1+! (-> (the-as (pointer uint64) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer int64) (-> options (-> obj option-index) value-to-modify))) 0)) (set! (-> obj language-transition) #t) (set! (-> obj language-direction) #f) - (set! sound? #t) - ) + (set! sound? #t)) (((game-option-type confirmation)) (set! sound? (!= (-> *progress-state* on-off-backup) #f)) (set! (-> *progress-state* on-off-backup) #f)) @@ -1262,67 +1719,43 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type language-subtitles) - (game-option-type language-text) - ) + (game-option-type language-text)) ;; same thing as before. if at last, go to first. otherwise, keep going forward. - (if (< (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) (1- (length (-> *progress-carousell* current-carousell)))) - (1+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0) - ) + (if (< (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) + (1- (length (-> *progress-carousell* current-carousell)))) + (1+! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer int) (-> options (-> obj option-index) value-to-modify))) 0)) (set! (-> *progress-carousell* transition) #t) (set! (-> *progress-carousell* direction) #f) - (set! sound? #t) - ) - ) + (set! sound? #t))) ;; play sound if desired - (if sound? - (sound-play "cursor-l-r") - ) - ) - ) - ) + (if sound? (sound-play "cursor-l-r"))))) (else - ;; holding right, but didnt just press it. same slider stuff as before - (when (-> obj selected-option) - (let ((sound? #f)) - (case (-> options (-> obj option-index) option-type) - (((game-option-type slider)) - (cond - ((>= (- (-> options (-> obj option-index) param2) - (-> options (-> obj option-index) slider-step-size)) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (+ (-> options (-> obj option-index) slider-step-size) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) - (set! sound? #t) - ) - ((< (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param2)) - (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> options (-> obj option-index) param2)) - (set! sound? #t) - ) - ) - ) - ) - (when sound? - (let ((vol 100.0)) - (case (-> options (-> obj option-index) name) - (((text-id music-volume) (text-id speech-volume)) - (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) - ) - (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) - (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) - (sound-play "slider2001" :vol vol) - ) - ) - ) - ) - ) - ) - ) - ) + ;; holding right, but didnt just press it. same slider stuff as before + (when (-> obj selected-option) + (let ((sound? #f)) + (case (-> options (-> obj option-index) option-type) + (((game-option-type slider)) + (cond + ((>= (- (-> options (-> obj option-index) param2) (-> options (-> obj option-index) slider-step-size)) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (+ (-> options (-> obj option-index) slider-step-size) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) + (set! sound? #t)) + ((< (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param2)) + (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) + (-> options (-> obj option-index) param2)) + (set! sound? #t))))) + (when sound? + (let ((vol 100.0)) + (case (-> options (-> obj option-index) name) + (((text-id music-volume) (text-id speech-volume)) + (set! vol (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))))) + (when (< (seconds 0.3) (- (-> *display* real-frame-counter) (-> *progress-state* last-slider-sound))) + (set! (-> *progress-state* last-slider-sound) (-> *display* real-frame-counter)) + (sound-play "slider2001" :vol vol))))))))) ((or (cpad-pressed? 0 square) (cpad-pressed? 0 triangle)) ;; pressed square or triangle, cancel out! (cond @@ -1331,49 +1764,37 @@ (case (-> options (-> obj option-index) option-type) (((game-option-type slider)) (set! (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* slider-backup)) - ) + (-> *progress-state* slider-backup))) (((game-option-type language)) (set! (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* language-backup)) - ) + (-> *progress-state* language-backup))) (((game-option-type on-off) (game-option-type normal-inverted)) (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) - (-> *progress-state* on-off-backup)) - ) - ) + (-> *progress-state* on-off-backup)))) ;; ding (sound-play "cursor-options") - (set! (-> obj selected-option) #f) - ) + (set! (-> obj selected-option) #f)) ((or (can-go-back? obj) (= (-> obj display-state) (progress-screen load-game)) (= (-> obj display-state) (progress-screen save-game)) - (= (-> obj display-state) (progress-screen save-game-title)) - ) + (= (-> obj display-state) (progress-screen save-game-title))) ;; no option selected, go back (cpad-clear! 0 square) (cpad-clear! 0 triangle) - (if (= (-> obj display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> obj display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (when (= (-> obj display-state) (progress-screen music-player)) - (sound-group-pause (sound-group music)) - (progress-reset-music-parms)) + (sound-group-pause (sound-group music)) + (progress-reset-music-parms)) (load-level-text-files (-> *level-task-data* (-> obj display-level-index) text-group-index)) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen invalid))))) ((or (cpad-pressed? 0 x) (cpad-pressed? 0 circle)) ;; pressed x or circle. advance! ;; first check if the option is disabled, if so leave early and do nothing (when (and (nonzero? (-> options (-> obj option-index) option-disabled-func)) (!= (-> options (-> obj option-index) option-disabled-func) #f) ((-> options (-> obj option-index) option-disabled-func))) - (sound-play "cursor-options") - (return #f)) + (sound-play "cursor-options") + (return #f)) (cond ((not (-> obj selected-option)) ;; no option already selected. @@ -1383,186 +1804,111 @@ (cpad-clear! 0 x) (cpad-clear! 0 circle) (cond - ((and (not (-> *setting-control* default auto-save)) - (= (text-id disable-auto-save) (-> options (-> obj option-index) name))) - (sound-play "cursor-options") - ) - (else - (push! obj) - (sound-play "select-option") - (set! (-> obj next-display-state) (the-as progress-screen (-> options (-> obj option-index) param3))) - (case (-> obj next-display-state) - (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> obj next-display-state) (set-memcard-screen obj (-> obj next-display-state))) - ) - ) - ) - ) - ) + ((and (not (-> *setting-control* default auto-save)) + (= (text-id disable-auto-save) (-> options (-> obj option-index) name))) + (sound-play "cursor-options")) + (else + (push! obj) + (sound-play "select-option") + (set! (-> obj next-display-state) (the-as progress-screen (-> options (-> obj option-index) param3))) + (case (-> obj next-display-state) + (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) + (set! (-> obj next-display-state) (set-memcard-screen obj (-> obj next-display-state)))))))) ((= (-> options (-> obj option-index) option-type) (game-option-type button)) ;; a button. what? (case (-> options (-> obj option-index) name) (((text-id exit-demo)) ;; exit demo! (set! *master-exit* 'force) - (set-master-mode 'game) - ) + (set-master-mode 'game)) (((text-id back)) ;; go back! - (if (= (-> obj display-state) (progress-screen settings)) - (sound-play "menu-stats") - (sound-play "cursor-options") - ) + (if (= (-> obj display-state) (progress-screen settings)) (sound-play "menu-stats") (sound-play "cursor-options")) (when (= (-> obj display-state) (progress-screen music-player)) - (sound-group-pause (sound-group music)) - (progress-reset-music-parms)) + (sound-group-pause (sound-group music)) + (progress-reset-music-parms)) (load-level-text-files (-> *level-task-data* (-> obj display-level-index) text-group-index)) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) ;; LEVEL SELECT (((text-id training-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "game-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village1-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village1-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id beach-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "beach-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id jungle-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "jungle-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id misty-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "misty-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id firecanyon-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "firecanyon-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village2-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village2-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id sunken-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "sunken-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id swamp-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "swamp-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id rolling-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "rolling-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id ogre-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "ogre-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id village3-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "village3-warp")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id snow-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "snow-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id cave-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "maincave-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id lavatube-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "lavatube-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id citadel-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "citadel-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) (((text-id finalboss-level-name)) (set! (-> *game-info* current-continue) (get-continue-by-name *game-info* "finalboss-start")) - (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f)) - ) + (initialize! *game-info* 'die (the-as game-save #f) (the-as string #f))) ;; SPEEDRUNS ;; Restart current run - (((text-id speedrun-reset-current-run)) - (progress-fast-save-and-start-speedrun (the-as speedrun-category #f)) - ) + (((text-id speedrun-reset-current-run)) (progress-fast-save-and-start-speedrun (the-as speedrun-category #f))) ;; Full game runs - (((text-id speedrun-new-full-game)) - (progress-fast-save-and-start-speedrun (speedrun-category full-game)) - ) + (((text-id speedrun-new-full-game)) (progress-fast-save-and-start-speedrun (speedrun-category full-game))) ;; Individual Levels - (((text-id speedrun-il-training)) - (progress-fast-save-and-start-speedrun (speedrun-category il-training)) - ) - (((text-id speedrun-il-village1)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village1)) - ) - (((text-id speedrun-il-beach)) - (progress-fast-save-and-start-speedrun (speedrun-category il-beach)) - ) - (((text-id speedrun-il-jungle)) - (progress-fast-save-and-start-speedrun (speedrun-category il-jungle)) - ) - (((text-id speedrun-il-misty)) - (progress-fast-save-and-start-speedrun (speedrun-category il-misty)) - ) - (((text-id speedrun-il-firecanyon)) - (progress-fast-save-and-start-speedrun (speedrun-category il-firecanyon)) - ) - (((text-id speedrun-il-village2)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village2)) - ) - (((text-id speedrun-il-sunken)) - (progress-fast-save-and-start-speedrun (speedrun-category il-sunken)) - ) - (((text-id speedrun-il-swamp)) - (progress-fast-save-and-start-speedrun (speedrun-category il-swamp)) - ) - (((text-id speedrun-il-rolling)) - (progress-fast-save-and-start-speedrun (speedrun-category il-rolling)) - ) - (((text-id speedrun-il-ogre)) - (progress-fast-save-and-start-speedrun (speedrun-category il-ogre)) - ) - (((text-id speedrun-il-village3)) - (progress-fast-save-and-start-speedrun (speedrun-category il-village3)) - ) - (((text-id speedrun-il-snow)) - (progress-fast-save-and-start-speedrun (speedrun-category il-snow)) - ) - (((text-id speedrun-il-cave)) - (progress-fast-save-and-start-speedrun (speedrun-category il-cave)) - ) - (((text-id speedrun-il-lavatube)) - (progress-fast-save-and-start-speedrun (speedrun-category il-lavatube)) - ) - (((text-id speedrun-il-citadel)) - (progress-fast-save-and-start-speedrun (speedrun-category il-citadel)) - ) - (((text-id speedrun-new-game-plus)) - (progress-fast-save-and-start-speedrun (speedrun-category new-game-plus)) - ) - (((text-id speedrun-hub1-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub1-100)) - ) - (((text-id speedrun-hub2-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub2-100)) - ) - (((text-id speedrun-hub3-100)) - (progress-fast-save-and-start-speedrun (speedrun-category hub3-100)) - ) - (((text-id speedrun-all-cutscenes)) - (progress-fast-save-and-start-speedrun (speedrun-category all-cutscenes)) - ) - ) - (commit-to-file *pc-settings*) + (((text-id speedrun-il-training)) (progress-fast-save-and-start-speedrun (speedrun-category il-training))) + (((text-id speedrun-il-village1)) (progress-fast-save-and-start-speedrun (speedrun-category il-village1))) + (((text-id speedrun-il-beach)) (progress-fast-save-and-start-speedrun (speedrun-category il-beach))) + (((text-id speedrun-il-jungle)) (progress-fast-save-and-start-speedrun (speedrun-category il-jungle))) + (((text-id speedrun-il-misty)) (progress-fast-save-and-start-speedrun (speedrun-category il-misty))) + (((text-id speedrun-il-firecanyon)) (progress-fast-save-and-start-speedrun (speedrun-category il-firecanyon))) + (((text-id speedrun-il-village2)) (progress-fast-save-and-start-speedrun (speedrun-category il-village2))) + (((text-id speedrun-il-sunken)) (progress-fast-save-and-start-speedrun (speedrun-category il-sunken))) + (((text-id speedrun-il-swamp)) (progress-fast-save-and-start-speedrun (speedrun-category il-swamp))) + (((text-id speedrun-il-rolling)) (progress-fast-save-and-start-speedrun (speedrun-category il-rolling))) + (((text-id speedrun-il-ogre)) (progress-fast-save-and-start-speedrun (speedrun-category il-ogre))) + (((text-id speedrun-il-village3)) (progress-fast-save-and-start-speedrun (speedrun-category il-village3))) + (((text-id speedrun-il-snow)) (progress-fast-save-and-start-speedrun (speedrun-category il-snow))) + (((text-id speedrun-il-cave)) (progress-fast-save-and-start-speedrun (speedrun-category il-cave))) + (((text-id speedrun-il-lavatube)) (progress-fast-save-and-start-speedrun (speedrun-category il-lavatube))) + (((text-id speedrun-il-citadel)) (progress-fast-save-and-start-speedrun (speedrun-category il-citadel))) + (((text-id speedrun-new-game-plus)) (progress-fast-save-and-start-speedrun (speedrun-category new-game-plus))) + (((text-id speedrun-hub1-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub1-100))) + (((text-id speedrun-hub2-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub2-100))) + (((text-id speedrun-hub3-100)) (progress-fast-save-and-start-speedrun (speedrun-category hub3-100))) + (((text-id speedrun-all-cutscenes)) (progress-fast-save-and-start-speedrun (speedrun-category all-cutscenes)))) + (commit-to-file *pc-settings*) ;; other behaviors are hardcoded elsewhere because screw you. ) ((= (-> options (-> obj option-index) option-type) (game-option-type button-music)) @@ -1573,9 +1919,7 @@ (set! *progress-music* (-> obj option-index)) (push! obj) (sound-play "select-option") - (set! (-> obj next-display-state) (progress-screen flava-player)) - ) - ) + (set! (-> obj next-display-state) (progress-screen flava-player)))) ((= (-> options (-> obj option-index) option-type) (game-option-type button-flava)) ;; set flava (when (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options (-> obj option-index) param1))) @@ -1584,305 +1928,230 @@ (set-setting *setting-control* obj 'music (progress-get-music-by-index *progress-music*) 0.0 0) (set! *progress-flava* (the int (-> options (-> obj option-index) param1))) (sound-group-continue (sound-group music)) - (sound-play "select-option") - ) - ) + (sound-play "select-option"))) ((= (-> options (-> obj option-index) option-type) (game-option-type resolution)) ;; resolution button. change resolution! (let ((newx (the int (-> options (-> obj option-index) param1))) (newy (the int (-> options (-> obj option-index) param2)))) - (set-size! *pc-settings* newx newy #t)) + (set-size! *pc-settings* newx newy #t)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ;; TODO - might be able to simplify this with the new on-change func ((= (-> options (-> obj option-index) option-type) (game-option-type controller)) (let ((controller-id (the int (-> options (-> obj option-index) param1)))) ;; NOTE - for now, we only manage port 0 in the progress menu - (pc-set-controller! controller-id 0) - ) + (pc-set-controller! controller-id 0)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ((= (-> options (-> obj option-index) option-type) (game-option-type monitor)) ;; monitor button - (let ((monitor (the int (-> options (-> obj option-index) param1)))) - (set-monitor! *pc-settings* monitor) - ) + (let ((monitor (the int (-> options (-> obj option-index) param1)))) (set-monitor! *pc-settings* monitor)) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid)) - (commit-to-file *pc-settings*) - ) + (commit-to-file *pc-settings*)) ((= (-> options (-> obj option-index) option-type) (game-option-type aspect-new)) ;; aspect ratio button. (let ((newx (the int (-> options (-> obj option-index) param1))) (newy (the int (-> options (-> obj option-index) param2)))) - (cond - ((= (-> options (-> obj option-index) name) (text-id fit-to-screen)) - (set-aspect! *pc-settings* 4 3) - (false! (-> *pc-settings* use-vis?)) - (set-aspect-ratio 'aspect4x3) - (true! (-> *pc-settings* aspect-ratio-auto?)) - ) - ((= newx -1.0) - (set-aspect! *pc-settings* 4 3) - (true! (-> *pc-settings* use-vis?)) - (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) - (set-aspect-ratio 'aspect4x3) - ) - ((= newx -2.0) - (set-aspect! *pc-settings* 4 3) - (true! (-> *pc-settings* use-vis?)) - (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) - (set-aspect-ratio 'aspect16x9) - ) - (else - (set-aspect! *pc-settings* newx newy)))) + (cond + ((= (-> options (-> obj option-index) name) (text-id fit-to-screen)) + (set-aspect! *pc-settings* 4 3) + (false! (-> *pc-settings* use-vis?)) + (set-aspect-ratio 'aspect4x3) + (true! (-> *pc-settings* aspect-ratio-auto?))) + ((= newx -1.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect4x3) + (set-aspect-ratio 'aspect4x3)) + ((= newx -2.0) + (set-aspect! *pc-settings* 4 3) + (true! (-> *pc-settings* use-vis?)) + (set! (-> *setting-control* default aspect-ratio) 'aspect16x9) + (set-aspect-ratio 'aspect16x9)) + (else (set-aspect! *pc-settings* newx newy)))) (cpad-clear! 0 x) (cpad-clear! 0 circle) (sound-play "cursor-options") (commit-to-file *pc-settings*) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) ((and (= (-> options (-> obj option-index) option-type) (game-option-type cheat-toggle)) (not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1)))))) (sound-play "cursor-options") (if (and (= *cheat-mode* 'debug) (cpad-hold? 0 l1) (cpad-hold? 0 r1)) - (logior! (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1))))) - ) + (logior! (-> *pc-settings* cheats-known) (ash 1 (the int (-> options (-> obj option-index) param1)))))) ((!= (-> options (-> obj option-index) option-type) (game-option-type yes-no)) ;; not yes-no ;; set backups! we're entering some toggle or whatever (case (-> options (-> obj option-index) option-type) (((game-option-type slider)) (set! (-> *progress-state* slider-backup) - (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify)))) - ) + (-> (the-as (pointer float) (-> options (-> obj option-index) value-to-modify))))) (((game-option-type language)) (set! (-> *progress-state* language-backup) - (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify)))) - ) + (-> (the-as (pointer language-enum) (-> options (-> obj option-index) value-to-modify))))) (((game-option-type on-off) (game-option-type normal-inverted)) (set! (-> *progress-state* on-off-backup) - (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - ) - (((game-option-type confirmation)) - (set! (-> *progress-state* on-off-backup) #f)) + (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))))) + (((game-option-type confirmation)) (set! (-> *progress-state* on-off-backup) #f)) (((game-option-type binding-assignment)) (set! *progress-pad-timeout* (-> *display* real-frame-counter)) ;; Inform the C++ side to start listening for input (pc-set-waiting-for-bind! (-> options (-> obj option-index) bind-info device-type) (not (-> options (-> obj option-index) bind-info for-buttons?)) (-> options (-> obj option-index) bind-info analog-min-range?) - (-> options (-> obj option-index) bind-info input-idx)) - ) + (-> options (-> obj option-index) bind-info input-idx))) (((game-option-type cheat-toggle)) - (set! (-> *progress-state* on-off-backup) (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options (-> obj option-index) param1))))) - (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) (-> *progress-state* on-off-backup)) - ) + (set! (-> *progress-state* on-off-backup) + (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options (-> obj option-index) param1))))) + (set! (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))) + (-> *progress-state* on-off-backup))) (((game-option-type display-mode)) ;; display-mode just reuses language stuff (case (pc-get-display-mode) (('windowed #f) (set! (-> *progress-carousell* int-backup) 0)) (('fullscreen #t) (set! (-> *progress-carousell* int-backup) 1)) - (('borderless) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (('borderless) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type msaa)) (case (-> *pc-settings* gfx-msaa) ((2) (set! (-> *progress-carousell* int-backup) 1)) ((4) (set! (-> *progress-carousell* int-backup) 2)) ((8) (set! (-> *progress-carousell* int-backup) 3)) ((16) (set! (-> *progress-carousell* int-backup) 4)) - (else (set! (-> *progress-carousell* int-backup) 0)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 0)))) (((game-option-type lod-bg)) (case (-> *pc-settings* lod-force-tfrag) ((0) (set! (-> *progress-carousell* int-backup) 0)) ((1 2) (set! (-> *progress-carousell* int-backup) 1)) - (else (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type lod-fg)) (cond ((-> *pc-settings* ps2-lod-dist?) (set! (-> *progress-carousell* int-backup) 1)) - (else (set! (-> *progress-carousell* int-backup) 0)) - ) - ) + (else (set! (-> *progress-carousell* int-backup) 0)))) (((game-option-type speaker)) (case (-> *pc-settings* subtitle-speaker?) ((#t) (set! (-> *progress-carousell* int-backup) 0)) ((#f) (set! (-> *progress-carousell* int-backup) 1)) - (('auto) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + (('auto) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type frame-rate)) (case (-> *pc-settings* target-fps) ((60) (set! (-> *progress-carousell* int-backup) 0)) ((100) (set! (-> *progress-carousell* int-backup) 1)) - ((150) (set! (-> *progress-carousell* int-backup) 2)) - ) - ) + ((150) (set! (-> *progress-carousell* int-backup) 2)))) (((game-option-type language-subtitles)) (let ((cur-lang (get-language-name (-> *pc-settings* subtitle-language)))) - (dotimes (i (-> *subtitle-languages* length)) - (if (= (-> *subtitle-languages* i) cur-lang) - (set! (-> *progress-carousell* int-backup) i)) - )) - ) + (dotimes (i (-> *subtitle-languages* length)) + (if (= (-> *subtitle-languages* i) cur-lang) (set! (-> *progress-carousell* int-backup) i))))) (((game-option-type language-text)) (let ((cur-lang (get-language-name (-> *pc-settings* text-language)))) - (dotimes (i (-> *text-languages* length)) - (if (= (-> *text-languages* i) cur-lang) - (set! (-> *progress-carousell* int-backup) i)) - )) - ) - ) + (dotimes (i (-> *text-languages* length)) + (if (= (-> *text-languages* i) cur-lang) (set! (-> *progress-carousell* int-backup) i)))))) (sound-play "select-option") (cpad-clear! 0 x) (cpad-clear! 0 circle) (set! (-> obj selected-option) #t) (case (-> options (-> obj option-index) option-type) (((game-option-type language)) - (set! (-> obj language-selection) (-> *setting-control* current language)) - (set! (-> obj language-direction) #t) - (set! (-> obj language-transition) #f) - (set! (-> obj language-x-offset) 0) - ) + (set! (-> obj language-selection) (-> *setting-control* current language)) + (set! (-> obj language-direction) #t) + (set! (-> obj language-transition) #f) + (set! (-> obj language-x-offset) 0)) (else - (set! (-> *progress-carousell* selection) (-> *progress-carousell* int-backup)) - (set! (-> *progress-carousell* direction) #t) - (set! (-> *progress-carousell* transition) #f) - (set! (-> *progress-carousell* x-offset) 0) - (case (-> options (-> obj option-index) option-type) - (((game-option-type display-mode)) (set! (-> *progress-carousell* current-carousell) *carousell-display-mode*)) - (((game-option-type msaa)) (set! (-> *progress-carousell* current-carousell) *carousell-msaa*)) - (((game-option-type lod-bg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) - (((game-option-type lod-fg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) - (((game-option-type speaker)) (set! (-> *progress-carousell* current-carousell) *carousell-speaker*)) - (((game-option-type frame-rate)) (set! (-> *progress-carousell* current-carousell) *carousell-frame-rate*)) - (((game-option-type language-subtitles)) (set! (-> *progress-carousell* current-carousell) *subtitle-languages*)) - (((game-option-type language-text)) (set! (-> *progress-carousell* current-carousell) *text-languages*)) - ) - ) - ) - ) - ) - ) + (set! (-> *progress-carousell* selection) (-> *progress-carousell* int-backup)) + (set! (-> *progress-carousell* direction) #t) + (set! (-> *progress-carousell* transition) #f) + (set! (-> *progress-carousell* x-offset) 0) + (case (-> options (-> obj option-index) option-type) + (((game-option-type display-mode)) (set! (-> *progress-carousell* current-carousell) *carousell-display-mode*)) + (((game-option-type msaa)) (set! (-> *progress-carousell* current-carousell) *carousell-msaa*)) + (((game-option-type lod-bg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) + (((game-option-type lod-fg)) (set! (-> *progress-carousell* current-carousell) *carousell-lod-bg*)) + (((game-option-type speaker)) (set! (-> *progress-carousell* current-carousell) *carousell-speaker*)) + (((game-option-type frame-rate)) (set! (-> *progress-carousell* current-carousell) *carousell-frame-rate*)) + (((game-option-type language-subtitles)) (set! (-> *progress-carousell* current-carousell) *subtitle-languages*)) + (((game-option-type language-text)) (set! (-> *progress-carousell* current-carousell) *text-languages*)))))))) (else - ;; an option was selected. write stuff! - (if (= (-> options (-> obj option-index) option-type) (game-option-type confirmation)) - (if (-> *progress-state* on-off-backup) - (sound-play "menu-stats") - (sound-play "cursor-options")) + ;; an option was selected. write stuff! + (if (= (-> options (-> obj option-index) option-type) (game-option-type confirmation)) + (if (-> *progress-state* on-off-backup) (sound-play "menu-stats") (sound-play "cursor-options")) (sound-play "start-options")) - (set! (-> obj selected-option) #f) - (case (-> options (-> obj option-index) option-type) - (((game-option-type cheat-toggle)) - (let ((the-cheat (ash 1 (the int (-> options (-> obj option-index) param1))))) - (cond - ((-> (the (pointer symbol) (-> options (-> obj option-index) value-to-modify))) - (logior! (-> *pc-settings* cheats) the-cheat)) - (else - (logclear! (-> *pc-settings* cheats) the-cheat) - (when (and *target* (= the-cheat (pc-cheats invinc))) - (logclear! (-> *target* state-flags) (state-flags invulnerable))))) - ) - ) - (((game-option-type aspect-ratio)) - ;; aspect ratio is first written to the backup. so this is for applying the change if we went through with it. - (set! (-> *setting-control* default aspect-ratio) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - ) - (((game-option-type aspect-native)) - (set! (-> *pc-settings* use-vis?) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) - (if (-> *pc-settings* use-vis?) - (set! (-> *setting-control* current aspect-ratio) #f) - (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y))) - ) - (((game-option-type display-mode)) - ;; same thing. - (case (-> *progress-carousell* int-backup) - ((0) (set-display-mode! *pc-settings* 'windowed #t)) - ((1) (set-display-mode! *pc-settings* 'fullscreen #t)) - ((2) (set-display-mode! *pc-settings* 'borderless #t)) - ) - ) - (((game-option-type msaa)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* gfx-msaa) 1)) - ((1) (set! (-> *pc-settings* gfx-msaa) 2)) - ((2) (set! (-> *pc-settings* gfx-msaa) 4)) - ((3) (set! (-> *pc-settings* gfx-msaa) 8)) - ((4) (set! (-> *pc-settings* gfx-msaa) 16)) - ) - ) - (((game-option-type lod-bg)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* lod-force-tfrag) 0) (set! (-> *pc-settings* lod-force-tie) 0)) - ((1) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 2)) - ((2) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 3)) - ) - ) - (((game-option-type lod-fg)) - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #f)) - ((1) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #t)) - ) - ) - (((game-option-type language-subtitles)) - (let ((lang (assoc (the binteger (-> *subtitle-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) - (set! (-> *pc-settings* subtitle-language) (the pc-language (/ (the int (cadr lang)) 8))) - ) - ) - (((game-option-type language-text)) - (let ((lang (assoc (the binteger (-> *text-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) - (set! (-> *pc-settings* text-language) (the pc-language (/ (the int (cadr lang)) 8))) - ) - (if (not (-> *progress-carousell* transition)) - (load-level-text-files (-> obj display-level-index))) - ) - (((game-option-type speaker)) - ;; same thing. - (case (-> *progress-carousell* int-backup) - ((0) (set! (-> *pc-settings* subtitle-speaker?) #t)) - ((1) (set! (-> *pc-settings* subtitle-speaker?) #f)) - ((2) (set! (-> *pc-settings* subtitle-speaker?) 'auto)) - ) - ) - (((game-option-type frame-rate)) - (case (-> *progress-carousell* int-backup) - ((0) (set-frame-rate! *pc-settings* 60 #t)) - ((1) (set-frame-rate! *pc-settings* 100 #t)) - ((2) (set-frame-rate! *pc-settings* 150 #t)) - ) - (set-video-mode (-> *setting-control* default video-mode)) - ) - ) - ;; if the option has a `on-confirm` function, run it - (when (nonzero? (-> options (-> obj option-index) on-confirm)) - ((-> options (-> obj option-index) on-confirm))) - (commit-to-file *pc-settings*) - ) - ) - ) - ) - ) - ) - (none) - ) + (set! (-> obj selected-option) #f) + (case (-> options (-> obj option-index) option-type) + (((game-option-type cheat-toggle)) + (let ((the-cheat (ash 1 (the int (-> options (-> obj option-index) param1))))) + (cond + ((-> (the (pointer symbol) (-> options (-> obj option-index) value-to-modify))) + (logior! (-> *pc-settings* cheats) the-cheat)) + (else + (logclear! (-> *pc-settings* cheats) the-cheat) + (when (and *target* (= the-cheat (pc-cheats invinc))) + (logclear! (-> *target* state-flags) (state-flags invulnerable))))))) + (((game-option-type aspect-ratio)) + ;; aspect ratio is first written to the backup. so this is for applying the change if we went through with it. + (set! (-> *setting-control* default aspect-ratio) + (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify))))) + (((game-option-type aspect-native)) + (set! (-> *pc-settings* use-vis?) (-> (the-as (pointer symbol) (-> options (-> obj option-index) value-to-modify)))) + (if (-> *pc-settings* use-vis?) + (set! (-> *setting-control* current aspect-ratio) #f) + (set-aspect! *pc-settings* (-> *pc-settings* aspect-custom-x) (-> *pc-settings* aspect-custom-y)))) + (((game-option-type display-mode)) + ;; same thing. + (case (-> *progress-carousell* int-backup) + ((0) (set-display-mode! *pc-settings* 'windowed #t)) + ((1) (set-display-mode! *pc-settings* 'fullscreen #t)) + ((2) (set-display-mode! *pc-settings* 'borderless #t)))) + (((game-option-type msaa)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* gfx-msaa) 1)) + ((1) (set! (-> *pc-settings* gfx-msaa) 2)) + ((2) (set! (-> *pc-settings* gfx-msaa) 4)) + ((3) (set! (-> *pc-settings* gfx-msaa) 8)) + ((4) (set! (-> *pc-settings* gfx-msaa) 16)))) + (((game-option-type lod-bg)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* lod-force-tfrag) 0) (set! (-> *pc-settings* lod-force-tie) 0)) + ((1) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 2)) + ((2) (set! (-> *pc-settings* lod-force-tfrag) 2) (set! (-> *pc-settings* lod-force-tie) 3)))) + (((game-option-type lod-fg)) + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #f)) + ((1) (set! (-> *pc-settings* lod-force-actor) 0) (set! (-> *pc-settings* ps2-lod-dist?) #t)))) + (((game-option-type language-subtitles)) + (let ((lang (assoc (the binteger (-> *subtitle-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) + (set! (-> *pc-settings* subtitle-language) (the pc-language (/ (the int (cadr lang)) 8))))) + (((game-option-type language-text)) + (let ((lang (assoc (the binteger (-> *text-languages* (-> *progress-carousell* int-backup))) *language-remap-info-pc*))) + (set! (-> *pc-settings* text-language) (the pc-language (/ (the int (cadr lang)) 8)))) + (if (not (-> *progress-carousell* transition)) (load-level-text-files (-> obj display-level-index)))) + (((game-option-type speaker)) + ;; same thing. + (case (-> *progress-carousell* int-backup) + ((0) (set! (-> *pc-settings* subtitle-speaker?) #t)) + ((1) (set! (-> *pc-settings* subtitle-speaker?) #f)) + ((2) (set! (-> *pc-settings* subtitle-speaker?) 'auto)))) + (((game-option-type frame-rate)) + (case (-> *progress-carousell* int-backup) + ((0) (set-frame-rate! *pc-settings* 60 #t)) + ((1) (set-frame-rate! *pc-settings* 100 #t)) + ((2) (set-frame-rate! *pc-settings* 150 #t))) + (set-video-mode (-> *setting-control* default video-mode)))) + ;; if the option has a `on-confirm` function, run it + (when (nonzero? (-> options (-> obj option-index) on-confirm)) + ((-> options (-> obj option-index) on-confirm))) + (commit-to-file *pc-settings*))))))) + (none)) (defmethod respond-memcard ((obj progress)) "logic for handling input in memcard screens." - (let ((s5-0 (-> obj card-info))) (when (and s5-0 (not (-> obj in-transition))) (when (or (cpad-pressed? 0 x) (cpad-pressed? 0 circle)) @@ -1895,15 +2164,8 @@ (when (nonzero? (-> s5-0 file (-> obj option-index) present)) (sound-play "start-options") (set! (-> *progress-state* which) (-> obj option-index)) - (set! (-> obj next-display-state) (progress-screen memcard-loading)) - ) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-loading)))) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen save-game) (progress-screen save-game-title)) (cond ((< (-> obj option-index) 4) @@ -1911,93 +2173,62 @@ (set! (-> *progress-state* which) (-> obj option-index)) ;; save slot selected (if (zero? (-> s5-0 file (-> obj option-index) present)) - (set! (-> obj next-display-state) (progress-screen memcard-saving)) - (set! (-> obj next-display-state) (progress-screen memcard-data-exists)) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-saving)) + (set! (-> obj next-display-state) (progress-screen memcard-data-exists)))) ;; continue without saving ((and (= (-> obj display-state) (progress-screen save-game-title)) (= (-> obj option-index) 4)) (sound-play "starts-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) (if (= (-> *pc-settings* speedrunner-mode?) #t) - ;; Start a new game differently if speedrunning mode is active - (speedrun-start-full-game-run) - ;; start the game normally - (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) + ;; Start a new game differently if speedrunning mode is active + (speedrun-start-full-game-run) + ;; start the game normally + (initialize! *game-info* 'game (the-as game-save #f) "intro-start")) (set-master-mode 'game)) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-insert)) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen memcard-data-exists)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-saving)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-saving))) (else - (sound-play "cursor-options") - (if (= (-> obj display-state-stack 0) (progress-screen title)) - (set! (-> obj next-display-state) (progress-screen save-game-title)) - (set! (-> obj next-display-state) (progress-screen save-game)) - ) - ) - ) - ) + (sound-play "cursor-options") + (if (= (-> obj display-state-stack 0) (progress-screen title)) + (set! (-> obj next-display-state) (progress-screen save-game-title)) + (set! (-> obj next-display-state) (progress-screen save-game)))))) (((progress-screen memcard-no-data)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-creating)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-creating))) (else - (sound-play "cursor-options") - (sound-volume-off) - (set! (-> *game-info* mode) 'play) - ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - ) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) + (sound-play "cursor-options") + (sound-volume-off) + (set! (-> *game-info* mode) 'play) + ;; Start a new game differently if speedrunning mode is active + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)))) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) (cond ((= (-> obj display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - ((nonzero? (-> obj display-state-stack 0)) - (sound-play "start-options") - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)) + ((nonzero? (-> obj display-state-stack 0)) (sound-play "start-options") (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) @@ -2005,45 +2236,32 @@ (progress-screen memcard-auto-save-error) (progress-screen memcard-removed) (progress-screen auto-save) - (progress-screen memcard-auto-save-disabled) - ) + (progress-screen memcard-auto-save-disabled)) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen pal-change-to-60hz)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) (set! (-> obj video-mode-timeout) (-> *display* real-frame-counter)) - (set! (-> obj next-display-state) (progress-screen pal-now-60hz)) - ) + (set! (-> obj next-display-state) (progress-screen pal-now-60hz))) (else - (sound-play "cursor-options") - (set! (-> *progress-state* video-mode-choice) 'pal) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (sound-play "cursor-options") + (set! (-> *progress-state* video-mode-choice) 'pal) + (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen pal-now-60hz)) (cond ((not (-> *progress-state* yes-no-choice)) (set! (-> *progress-state* video-mode-choice) 'pal) (set! (-> *setting-control* default video-mode) (-> *progress-state* video-mode-choice)) - (sound-play "cursor-options") - ) - (else - (sound-play "start-options") - ) - ) - (set! (-> obj next-display-state) (progress-screen invalid)) - ) + (sound-play "cursor-options")) + (else (sound-play "start-options"))) + (set! (-> obj next-display-state) (progress-screen invalid))) (((progress-screen no-disc) (progress-screen bad-disc)) (when (is-cd-in?) (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) + (set! (-> obj next-display-state) (progress-screen invalid)))) (((progress-screen quit)) (cond ((-> *progress-state* yes-no-choice) @@ -2051,88 +2269,54 @@ (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) - (initialize! *game-info* 'game (the-as game-save #f) "title-start") - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (initialize! *game-info* 'game (the-as game-save #f) "title-start")) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-format)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") - (set! (-> obj next-display-state) (progress-screen memcard-formatting)) - ) + (set! (-> obj next-display-state) (progress-screen memcard-formatting))) ((= (-> obj display-state-stack 0) (progress-screen title)) (sound-play "start-options") (sound-volume-off) (set! (-> *game-info* mode) 'play) ;; Start a new game differently if speedrunning mode is active - (cond ((-> *pc-settings* speedrunner-mode?) - (speedrun-start-full-game-run)) - ;; start the game normally - (else - (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) - (set-master-mode 'game) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (cond + ((-> *pc-settings* speedrunner-mode?) (speedrun-start-full-game-run)) + ;; start the game normally + (else (initialize! *game-info* 'game (the-as game-save #f) "intro-start"))) + (set-master-mode 'game)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen quit-title)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (commit-to-file *pc-settings*) (sound-volume-off) - (kernel-shutdown) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) + (kernel-shutdown)) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))) (((progress-screen memcard-disable-auto-save)) (cond ((-> *progress-state* yes-no-choice) (sound-play "start-options") (set! (-> *setting-control* default auto-save) #f) - (set! (-> obj next-display-state) (progress-screen memcard-auto-save-disabled)) - ) - (else - (sound-play "cursor-options") - (set! (-> obj next-display-state) (progress-screen invalid)) - ) - ) - ) - ) - ) - ) - ) + (set! (-> obj next-display-state) (progress-screen memcard-auto-save-disabled))) + (else (sound-play "cursor-options") (set! (-> obj next-display-state) (progress-screen invalid))))))))) 0 - (none) - ) - + (none)) (defmethod draw-options ((obj progress) (arg0 int) (arg1 int) (arg2 float)) "common logic for drawing options menus." - (let ((options (-> *options-remap* (-> obj display-state)))) (when options ;; this menu has options to draw omg (let* ((line-amt (if (> (length options) PROGRESS_PC_PAGE_HEIGHT) (1- PROGRESS_PC_PAGE_HEIGHT) (length options))) - (y-off (- arg0 (/ (* arg1 line-amt) 2))) - (option-count 0) - (unkx 27) - (unk2 0) - (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))) - (locked-str (lookup-text! *common-text* (text-id locked) #f)) - ) + (y-off (- arg0 (/ (* arg1 line-amt) 2))) + (option-count 0) + (unkx 27) + (unk2 0) + (font (new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))) + (locked-str (lookup-text! *common-text* (text-id locked) #f))) ;; set the common params for the text drawing (set-width! font 370) (set-height! font 25) @@ -2141,118 +2325,107 @@ (set! (-> obj particles 32 init-pos y) (the float (* 2 (- y-off 20)))) ;; when scrolling we draw an extra line (cond - ((progress-scrolling-down?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (- 1.0 (-> *progress-scroll* transition)))))) - ((progress-scrolling-up?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (-> *progress-scroll* transition))))) - ) + ((progress-scrolling-down?) + (set! y-off (+ (- y-off arg1) (* (the float arg1) (- 1.0 (-> *progress-scroll* transition)))))) + ((progress-scrolling-up?) (set! y-off (+ (- y-off arg1) (* (the float arg1) (-> *progress-scroll* transition)))))) (let ((draw-arrows (and (not (-> obj in-transition)) (= (-> obj next-state name) 'progress-normal) (> (length options) PROGRESS_PC_PAGE_HEIGHT) (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)))) (draw-prev (< 0 *progress-scroll-start*)) (draw-next (> (length options) *progress-scroll-end*))) - (set! (-> obj particles 32 init-pos x) (the float (if (and draw-arrows draw-prev) - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ))) - (set! (-> obj particles 33 init-pos x) (the float (if (and draw-arrows draw-next) - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ))) - ) + (set! (-> obj particles 32 init-pos x) + (the float (if (and draw-arrows draw-prev) (- 195 (-> *progress-process* 0 left-x-offset)) -320))) + (set! (-> obj particles 33 init-pos x) + (the float (if (and draw-arrows draw-next) (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) ;; cheating a bit and putting some screen-specific code here. it's not a big deal. (case (-> obj display-state) (((progress-screen music-player)) - (set-color! font (font-color default)) - (set-origin! font (- 17 (-> obj left-x-offset)) 14) - (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) - (print-game-text (lookup-text! *common-text* (text-id select-level) #f) font #f (the int (* 128.0 (-> obj transition-percentage-invert))) 22) - ) + (set-color! font (font-color default)) + (set-origin! font (- 17 (-> obj left-x-offset)) 14) + (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) + (print-game-text (lookup-text! *common-text* (text-id select-level) #f) + font + #f + (the int (* 128.0 (-> obj transition-percentage-invert))) + 22)) (((progress-screen flava-player)) - (set-color! font (font-color default)) - (set-origin! font (- 17 (-> obj left-x-offset)) 14) - (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) - (print-game-text (lookup-text! *common-text* (text-id select-flava) #f) font #f (the int (* 128.0 (-> obj transition-percentage-invert))) 22) - ) - ) + (set-color! font (font-color default)) + (set-origin! font (- 17 (-> obj left-x-offset)) 14) + (set-scale! font (* 0.6 (-> obj transition-percentage-invert))) + (print-game-text (lookup-text! *common-text* (text-id select-flava) #f) + font + #f + (the int (* 128.0 (-> obj transition-percentage-invert))) + 22))) (dotimes (index (length options)) (let ((option-str (the string #f)) ;; the option text (option-x 17) (option-y y-off) - (locked? #f) - ) + (locked? #f)) ;; Check if the option should be disabled (when (and (nonzero? (-> options index option-disabled-func)) (!= (-> options index option-disabled-func) #f) ((-> options index option-disabled-func))) - (set! locked? #t)) + (set! locked? #t)) (case (-> options index option-type) (((game-option-type yes-no)) - ;; yes-no option. text is either '->YES<- NO' or 'YES ->NO<-', not the most robust but this option is a strange hack anyway. - (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - ) - ) + ;; yes-no option. text is either '->YES<- NO' or 'YES ->NO<-', not the most robust but this option is a strange hack anyway. + (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))))) ;; menu option or simple button. just draw its text! (((game-option-type menu) (game-option-type button)) (if (nonzero? (-> options index name)) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str #f)) - ;; if autosave disabled, update text and lock it - (when (and (not (-> *setting-control* default auto-save)) - (= (text-id disable-auto-save) (-> options index name))) - (set! option-str (lookup-text! *common-text* (text-id auto-save-disabled) #f)) - (true! locked?)) - ;; checkpoint-select only unlocked after beating finalboss - (when (and (not (task-closed? (game-task finalboss-movies) (task-status need-reminder))) - (= (text-id checkpoint-select) (-> options index name))) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f)) - (true! locked?)) - ) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str #f)) + ;; if autosave disabled, update text and lock it + (when (and (not (-> *setting-control* default auto-save)) (= (text-id disable-auto-save) (-> options index name))) + (set! option-str (lookup-text! *common-text* (text-id auto-save-disabled) #f)) + (true! locked?)) + ;; checkpoint-select only unlocked after beating finalboss + (when (and (not (task-closed? (game-task finalboss-movies) (task-status need-reminder))) + (= (text-id checkpoint-select) (-> options index name))) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f)) + (true! locked?))) (((game-option-type button-music)) - ;; a button for the music player. has the text "locked" sometimes! - (if (and (nonzero? (-> options index name)) (find-music-log (progress-get-music-by-index index))) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str locked-str) - ) - ) + ;; a button for the music player. has the text "locked" sometimes! + (if (and (nonzero? (-> options index name)) (find-music-log (progress-get-music-by-index index))) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str locked-str))) (((game-option-type button-flava)) - ;; a button for the flava player. has the text "locked" sometimes! - (if (and (nonzero? (-> options index name)) (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options index param1)))) - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - (set! option-str locked-str) - ) - ) + ;; a button for the flava player. has the text "locked" sometimes! + (if (and (nonzero? (-> options index name)) + (find-flava-log (progress-get-music-by-index *progress-music*) (the int (-> options index param1)))) + (set! option-str (lookup-text! *common-text* (-> options index name) #f)) + (set! option-str locked-str))) (((game-option-type resolution) (game-option-type aspect-new)) - ;; resolution settings - (set! option-str (string-format (lookup-text! *common-text* (-> options index name) #f) - (the int (-> options index param1)) (the int (-> options index param2)))) - ) + ;; resolution settings + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) + (the int (-> options index param1)) + (the int (-> options index param2))))) (((game-option-type monitor)) - ;; monitor list - (if (nonzero? (-> options index name-override)) - (set! option-str - (string-format "~S (~D)" - (-> options index name-override) - (+ 1 (the int (-> options index param1))))) - (set! option-str - (string-format (lookup-text! *common-text* (-> options index name) #f) - (+ 1 (the int (-> options index param1)))))) - ) + ;; monitor list + (if (nonzero? (-> options index name-override)) + (set! option-str (string-format "~S (~D)" (-> options index name-override) (+ 1 (the int (-> options index param1))))) + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) (+ 1 (the int (-> options index param1))))))) (((game-option-type controller)) - ;; controller list - (if (nonzero? (-> options index name-override)) - (set! option-str - (string-format "~S (~D)" - (-> options index name-override) - (+ 1 (the int (-> options index param1))))) - (set! option-str - (string-format (lookup-text! *common-text* (-> options index name) #f) - (+ 1 (the int (-> options index param1)))))) - ) + ;; controller list + (if (nonzero? (-> options index name-override)) + (set! option-str (string-format "~S (~D)" (-> options index name-override) (+ 1 (the int (-> options index param1))))) + (set! option-str + (string-format (lookup-text! *common-text* (-> options index name) #f) (+ 1 (the int (-> options index param1))))))) (else - (cond - ((and (-> obj selected-option) (= (-> obj option-index) index)) + (cond + ((and (-> obj selected-option) (= (-> obj option-index) index)) ;; this option is SELECTED! (set-color! font (font-color default)) (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) @@ -2273,156 +2446,124 @@ (print-game-text (string-format "~S (~4L~D~0L)" (-> options index name-override) time-left) font #f 128 22)) (print-game-text (lookup-text! *common-text* (-> options index name) #f) font #f 128 22)) (set! option-y (+ y-off 7)) - (case (-> options index option-type) - (((game-option-type slider)) - ;; draw a slider and its text. - ;; this ugliness is just decompiler stuff. all it does is fade the alpha according to value. - (let* ((v1-82 (the-as uint #x8000ffff)) - ;; calculate the percentage of the bar based on the actual range, instead of assuming 0-100 - ;; low = param1 / high = param2 - ;; (actual + abs(low)) / (high + abs(low)) = percentage - (percentage (/ (+ (-> (the-as (pointer float) (-> options index value-to-modify))) - (fabs (-> options index param1))) - (+ (-> options index param2) - (fabs (-> options index param1))))) - (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 percentage))) 56) 56))) - (color (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48))) - ) - (draw-percent-bar (- 75 (-> obj left-x-offset)) (+ y-off 8) percentage (the-as rgba color)) - (set! option-x (+ (the int (* 2.5 (* 100.0 percentage))) - -100)) - ) - (if (= (-> options index slider-show-decimal?) #t) - (set! option-str (string-format "~,,1f" (-> (the-as (pointer float) (-> options index value-to-modify))))) - (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> options index value-to-modify))))))) - ) - (((game-option-type on-off) - (game-option-type normal-inverted) - (game-option-type aspect-native) - ) - ;; on-off option or some other toggle. same logic as yes-no. changed to cut down code duping. - (let ((on-str (case (-> options index option-type) - (((game-option-type on-off) (game-option-type aspect-native)) - (lookup-text! *common-text* (text-id on) #f)) - (((game-option-type normal-inverted)) - (lookup-text! *common-text* (text-id inverted) #f)))) - (off-str (case (-> options index option-type) - (((game-option-type on-off) (game-option-type aspect-native)) - (lookup-text! *common-text* (text-id off) #f)) - (((game-option-type normal-inverted)) - (lookup-text! *common-text* (text-id normal) #f))))) - (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" on-str off-str)) - (set! option-str (string-format "~0L~S ~30L~S" on-str off-str)))) - ) - ;; the same as yes-no, but we aren't changing an underlying value. - (((game-option-type confirmation)) - (if (-> *progress-state* on-off-backup) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id yes) #f) (lookup-text! *common-text* (text-id no) #f))))) - (((game-option-type cheat-toggle)) - (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id on) #f) (lookup-text! *common-text* (text-id off) #f))) - ) - ) - (((game-option-type binding-assignment)) - (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) - (cond - ((= bind #f) - (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) - ((string= *pc-cpp-temp-string* "unknown") - (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) - (else - (set! option-str (string-format "~S" *pc-cpp-temp-string*)))))) - (((game-option-type display-mode) - (game-option-type msaa) - (game-option-type lod-bg) - (game-option-type lod-fg) - (game-option-type speaker) - (game-option-type frame-rate) - (game-option-type language-subtitles) - (game-option-type language-text) - ) - ;; crunched down to one generic function. - (progress-draw-carousell-from-string-list (-> *progress-carousell* current-carousell) font y-off (-> (the-as (pointer int) (-> options index value-to-modify)))) - ) - (((game-option-type language)) - ;; language carousell. who knew this could be so complicated. - (let ((old-lang (-> obj language-selection)) - (new-lang (-> (the-as (pointer language-enum) (-> options index value-to-modify)))) - (max-lang 6) - ) - (if (-> obj language-transition) - (seekl! (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) - (when (>= (-> obj language-x-offset) 100) - (set! (-> obj language-selection) new-lang) - (set! old-lang new-lang) - (set! (-> obj language-transition) #f) - (set! (-> obj language-x-offset) 0) - ) - (set! (-> font origin y) (the float (+ y-off 3))) - (set-color! font (font-color progress-blue)) - 0 - (let ((next-lang (mod (+ old-lang 1) max-lang)) - (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) - ;; these are used during the transition since it technically allows you to see 4 langs at once. - (next2-lang (mod (+ old-lang 2) max-lang)) - (prev2-lang (mod (+ max-lang -2 old-lang) max-lang)) - ) - (cond - ((-> obj language-direction) - (let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100)))) - (print-language-name prev-lang font a2-22 #f) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-23 (+ (-> obj language-x-offset) 100))) - (cond - ((< a2-23 150) - (print-language-name (the int next-lang) font a2-23 #t) - ) - (else - (let ((a2-24 (- 200 (-> obj language-x-offset)))) - (print-language-name prev2-lang font a2-24 #f) - ) - ) - ) - ) - ) - (else - (let ((a2-25 (+ (-> obj language-x-offset) 100))) - (cond - ((< a2-25 150) - (print-language-name prev-lang font a2-25 #f) - ) - (else - (let ((a2-26 (- 200 (-> obj language-x-offset)))) - (print-language-name (the int next2-lang) font a2-26 #t) - ) - ) - ) - ) - (set-color! font (font-color progress-blue)) - (let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100)))) - (print-language-name (the int next-lang) font a2-27 #t) - ) - ) - ) - ) - (if (not (-> obj language-transition)) - (set-color! font (font-color progress-selected))) - (print-language-name (the-as int old-lang) font (-> obj language-x-offset) (-> obj language-direction)) - )) - (((game-option-type aspect-ratio)) - ;; same as on-off but checks a different symbol - (if (= (-> (the-as (pointer symbol) (-> options index value-to-modify))) 'aspect4x3) - (set! option-str (string-format "~30L~S~0L ~S" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - (set! option-str (string-format "~0L~S ~30L~S" (lookup-text! *common-text* (text-id 4x3) #f) (lookup-text! *common-text* (text-id 16x9) #f))) - ) - ) - ) - ) - (else + (case (-> options index option-type) + (((game-option-type slider)) + ;; draw a slider and its text. + ;; this ugliness is just decompiler stuff. all it does is fade the alpha according to value. + (let* ((v1-82 (the-as uint #x8000ffff)) + ;; calculate the percentage of the bar based on the actual range, instead of assuming 0-100 + ;; low = param1 / high = param2 + ;; (actual + abs(low)) / (high + abs(low)) = percentage + (percentage (/ (+ (-> (the-as (pointer float) (-> options index value-to-modify))) (fabs (-> options index param1))) + (+ (-> options index param2) (fabs (-> options index param1))))) + (a0-34 (logior (logand v1-82 -256) (shr (shl (the int (+ 64.0 (* 191.0 percentage))) 56) 56))) + (color (logior (logand a0-34 -65281) (shr (shl (shr (shl a0-34 56) 56) 56) 48)))) + (draw-percent-bar (- 75 (-> obj left-x-offset)) (+ y-off 8) percentage (the-as rgba color)) + (set! option-x (+ (the int (* 2.5 (* 100.0 percentage))) -100))) + (if (= (-> options index slider-show-decimal?) #t) + (set! option-str (string-format "~,,1f" (-> (the-as (pointer float) (-> options index value-to-modify))))) + (set! option-str (string-format "~D" (the int (-> (the-as (pointer float) (-> options index value-to-modify)))))))) + (((game-option-type on-off) (game-option-type normal-inverted) (game-option-type aspect-native)) + ;; on-off option or some other toggle. same logic as yes-no. changed to cut down code duping. + (let ((on-str (case (-> options index option-type) + (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (text-id on) #f)) + (((game-option-type normal-inverted)) (lookup-text! *common-text* (text-id inverted) #f)))) + (off-str (case (-> options index option-type) + (((game-option-type on-off) (game-option-type aspect-native)) (lookup-text! *common-text* (text-id off) #f)) + (((game-option-type normal-inverted)) (lookup-text! *common-text* (text-id normal) #f))))) + (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) + (set! option-str (string-format "~30L~S~0L ~S" on-str off-str)) + (set! option-str (string-format "~0L~S ~30L~S" on-str off-str))))) + ;; the same as yes-no, but we aren't changing an underlying value. + (((game-option-type confirmation)) + (if (-> *progress-state* on-off-backup) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id yes) #f) + (lookup-text! *common-text* (text-id no) #f))))) + (((game-option-type cheat-toggle)) + (if (-> (the-as (pointer symbol) (-> options index value-to-modify))) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) + (((game-option-type binding-assignment)) + (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) + (cond + ((= bind #f) (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) + ((string= *pc-cpp-temp-string* "unknown") + (set! option-str (string-format "~S" (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) + (else (set! option-str (string-format "~S" *pc-cpp-temp-string*)))))) + (((game-option-type display-mode) + (game-option-type msaa) + (game-option-type lod-bg) + (game-option-type lod-fg) + (game-option-type speaker) + (game-option-type frame-rate) + (game-option-type language-subtitles) + (game-option-type language-text)) + ;; crunched down to one generic function. + (progress-draw-carousell-from-string-list (-> *progress-carousell* current-carousell) + font + y-off + (-> (the-as (pointer int) (-> options index value-to-modify))))) + (((game-option-type language)) + ;; language carousell. who knew this could be so complicated. + (let ((old-lang (-> obj language-selection)) + (new-lang (-> (the-as (pointer language-enum) (-> options index value-to-modify)))) + (max-lang 6)) + (if (-> obj language-transition) + (seekl! (-> obj language-x-offset) 200 (the int (* 10.0 (-> *display* time-adjust-ratio))))) + (when (>= (-> obj language-x-offset) 100) + (set! (-> obj language-selection) new-lang) + (set! old-lang new-lang) + (set! (-> obj language-transition) #f) + (set! (-> obj language-x-offset) 0)) + (set! (-> font origin y) (the float (+ y-off 3))) + (set-color! font (font-color progress-blue)) + 0 + (let ((next-lang (mod (+ old-lang 1) max-lang)) + (prev-lang (mod (+ max-lang -1 old-lang) max-lang)) + ;; these are used during the transition since it technically allows you to see 4 langs at once. + (next2-lang (mod (+ old-lang 2) max-lang)) + (prev2-lang (mod (+ max-lang -2 old-lang) max-lang))) + (cond + ((-> obj language-direction) + (let ((a2-22 (- 200 (+ (-> obj language-x-offset) 100)))) (print-language-name prev-lang font a2-22 #f)) + (set-color! font (font-color progress-blue)) + (let ((a2-23 (+ (-> obj language-x-offset) 100))) + (cond + ((< a2-23 150) (print-language-name (the int next-lang) font a2-23 #t)) + (else (let ((a2-24 (- 200 (-> obj language-x-offset)))) (print-language-name prev2-lang font a2-24 #f)))))) + (else + (let ((a2-25 (+ (-> obj language-x-offset) 100))) + (cond + ((< a2-25 150) (print-language-name prev-lang font a2-25 #f)) + (else (let ((a2-26 (- 200 (-> obj language-x-offset)))) (print-language-name (the int next2-lang) font a2-26 #t))))) + (set-color! font (font-color progress-blue)) + (let ((a2-27 (- 200 (+ (-> obj language-x-offset) 100)))) (print-language-name (the int next-lang) font a2-27 #t))))) + (if (not (-> obj language-transition)) (set-color! font (font-color progress-selected))) + (print-language-name (the-as int old-lang) font (-> obj language-x-offset) (-> obj language-direction)))) + (((game-option-type aspect-ratio)) + ;; same as on-off but checks a different symbol + (if (= (-> (the-as (pointer symbol) (-> options index value-to-modify))) 'aspect4x3) + (set! option-str + (string-format "~30L~S~0L ~S" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))) + (set! option-str + (string-format "~0L~S ~30L~S" + (lookup-text! *common-text* (text-id 4x3) #f) + (lookup-text! *common-text* (text-id 16x9) #f))))))) + (else ;; this option is not selected (case (-> options index option-type) (((game-option-type slider) @@ -2434,148 +2575,113 @@ (game-option-type speaker) (game-option-type frame-rate) (game-option-type normal-inverted) - (game-option-type confirmation) - ) - ;; slider and aspect ratio options just show their text - (set! option-str (lookup-text! *common-text* (-> options index name) #f)) - ) + (game-option-type confirmation)) + ;; slider and aspect ratio options just show their text + (set! option-str (lookup-text! *common-text* (-> options index name) #f))) (((game-option-type on-off) (game-option-type aspect-native)) - ;; on-off options show their text + on or off - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) - (lookup-text! *common-text* (text-id on) #f) - (lookup-text! *common-text* (text-id off) #f) - ))) - ) + ;; on-off options show their text + on or off + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (if (-> (the-as (pointer uint32) (-> options index value-to-modify))) + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))) (((game-option-type binding-assignment)) ;; binding assignment options show their input + the current binding (let ((bind (pc-get-current-bind (-> options index bind-info) *pc-cpp-temp-string*))) - (cond - ((= bind #f) - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) - ((string= *pc-cpp-temp-string* "unknown") - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) - (else - (set! option-str (string-format "~S: ~10L~S~0L" - (-> options index name-override) - *pc-cpp-temp-string*)))))) + (cond + ((= bind #f) + (set! option-str + (string-format "~S: ~10L~S~0L" + (-> options index name-override) + (lookup-text! *common-text* (text-id input-opts-binds-unset) #f)))) + ((string= *pc-cpp-temp-string* "unknown") + (set! option-str + (string-format "~S: ~10L~S~0L" + (-> options index name-override) + (lookup-text! *common-text* (text-id input-opts-binds-unknown) #f)))) + (else (set! option-str (string-format "~S: ~10L~S~0L" (-> options index name-override) *pc-cpp-temp-string*)))))) (((game-option-type cheat-toggle)) - (cond - ((not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options index param1))))) + (cond + ((not (logtest? (-> *pc-settings* cheats-known) (ash 1 (the int (-> options index param1))))) (true! locked?) (case (ash 1 (the int (-> options index param1))) - (((pc-cheats eco-blue) - (pc-cheats eco-green) - (pc-cheats eco-red) - (pc-cheats eco-yellow) - (pc-cheats invinc) - (pc-cheats huge-head) - (pc-cheats mirror) - (pc-cheats no-tex) - ) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-100-percent) #f))) - (((pc-cheats sky) - (pc-cheats sidekick-blue) - (pc-cheats tunes) - (pc-cheats big-head) - (pc-cheats small-head) - (pc-cheats big-fist) - (pc-cheats big-head-npc) - ) - (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f))) - (else - ;; (format 0 "weird case ~f #x~x~%" (-> options index param1) (ash 1 (the int (-> options index param1)))) - (set! option-str locked-str)) - ) - ) - (else - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (if (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options index param1)))) - (lookup-text! *common-text* (text-id on) #f) - (lookup-text! *common-text* (text-id off) #f) - ))) - ) - ) - ) + (((pc-cheats eco-blue) + (pc-cheats eco-green) + (pc-cheats eco-red) + (pc-cheats eco-yellow) + (pc-cheats invinc) + (pc-cheats huge-head) + (pc-cheats mirror) + (pc-cheats no-tex)) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-100-percent) #f))) + (((pc-cheats sky) + (pc-cheats sidekick-blue) + (pc-cheats tunes) + (pc-cheats big-head) + (pc-cheats small-head) + (pc-cheats big-fist) + (pc-cheats big-head-npc)) + (set! option-str (lookup-text! *common-text* (text-id cheat-req-beat-game) #f))) + (else + ;; (format 0 "weird case ~f #x~x~%" (-> options index param1) (ash 1 (the int (-> options index param1)))) + (set! option-str locked-str)))) + (else + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (if (logtest? (-> *pc-settings* cheats) (ash 1 (the int (-> options index param1)))) + (lookup-text! *common-text* (text-id on) #f) + (lookup-text! *common-text* (text-id off) #f))))))) (((game-option-type language)) - ;; language options show their text + language name - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (-> *language-name-remap* (-> (the-as (pointer uint64) (-> options index value-to-modify)))) #f))) - ) + ;; language options show their text + language name + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* + (-> *language-name-remap* (-> (the-as (pointer uint64) (-> options index value-to-modify)))) + #f)))) (((game-option-type language-subtitles)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (get-language-name (-> *pc-settings* subtitle-language)) #f))) - ) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* (get-language-name (-> *pc-settings* subtitle-language)) #f)))) (((game-option-type language-text)) - (set! option-str (string-format "~S: ~S" (lookup-text! *common-text* (-> options index name) #f) - (lookup-text! *common-text* (get-language-name (-> *pc-settings* text-language)) #f))) - ) - ) - ) - )) - ) + (set! option-str + (string-format "~S: ~S" + (lookup-text! *common-text* (-> options index name) #f) + (lookup-text! *common-text* (get-language-name (-> *pc-settings* text-language)) #f))))))))) (when (or (<= (length options) PROGRESS_PC_PAGE_HEIGHT) - (and (not (progress-scrolling?)) - (>= index *progress-scroll-start*) - (< index *progress-scroll-end*)) - (and (progress-scrolling-down?) - (>= index (1- *progress-scroll-start*)) - (< index *progress-scroll-end*)) - (and (progress-scrolling-up?) - (>= index *progress-scroll-start*) - (< index (1+ *progress-scroll-end*))) - ) - (when option-str - ;; draw the actual text! - (let ((f0-23 (-> obj transition-percentage-invert)) - (scroll-amt (-> *progress-scroll* transition))) - (cond - ((or (and (progress-scrolling-up?) (= index *progress-scroll-start*)) - (and (progress-scrolling-down?) (= index (1- *progress-scroll-end*)))) - ) - ((or (and (progress-scrolling-down?) (= index (1- *progress-scroll-start*))) - (and (progress-scrolling-up?) (= index *progress-scroll-end*))) - (set! scroll-amt (- 1.0 scroll-amt)) - ) - (else - (set! scroll-amt 1.0) - ) - ) - (set-color! font (cond - ((and (!= index (-> obj option-index)) - (or locked? (= locked-str option-str))) - ;; for "locked" options! - (font-color menu-invalid)) - ((and (= index (-> obj option-index)) - (not (or (progress-scrolling?) (-> obj in-transition)))) - (font-color progress-selected)) - (else - (font-color default)) - )) - (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) - (set! (-> font origin y) (the float (the int (* (the float option-y) (if (-> options index scale) - f0-23 - 1.0 - ))))) - (set-scale! font (* arg2 f0-23 scroll-amt)) - (print-game-text option-str font #f (the int (* 128.0 f0-23 scroll-amt)) 22) - ) - ) - (+! y-off arg1) - (+! option-count 1) - ) - )) - ) - ) - ) + (and (not (progress-scrolling?)) (>= index *progress-scroll-start*) (< index *progress-scroll-end*)) + (and (progress-scrolling-down?) (>= index (1- *progress-scroll-start*)) (< index *progress-scroll-end*)) + (and (progress-scrolling-up?) (>= index *progress-scroll-start*) (< index (1+ *progress-scroll-end*)))) + (when option-str + ;; draw the actual text! + (let ((f0-23 (-> obj transition-percentage-invert)) + (scroll-amt (-> *progress-scroll* transition))) + (cond + ((or (and (progress-scrolling-up?) (= index *progress-scroll-start*)) + (and (progress-scrolling-down?) (= index (1- *progress-scroll-end*))))) + ((or (and (progress-scrolling-down?) (= index (1- *progress-scroll-start*))) + (and (progress-scrolling-up?) (= index *progress-scroll-end*))) + (set! scroll-amt (- 1.0 scroll-amt))) + (else (set! scroll-amt 1.0))) + (set-color! font + (cond + ((and (!= index (-> obj option-index)) (or locked? (= locked-str option-str))) + ;; for "locked" options! + (font-color menu-invalid)) + ((and (= index (-> obj option-index)) (not (or (progress-scrolling?) (-> obj in-transition)))) + (font-color progress-selected)) + (else (font-color default)))) + (set! (-> font origin x) (the float (- option-x (-> obj left-x-offset)))) + (set! (-> font origin y) (the float (the int (* (the float option-y) (if (-> options index scale) f0-23 1.0))))) + (set-scale! font (* arg2 f0-23 scroll-amt)) + (print-game-text option-str font #f (the int (* 128.0 f0-23 scroll-amt)) 22))) + (+! y-off arg1) + (+! option-count 1))))))) 0 - (none) - ) - + (none)) (defun draw-memcard-speedrun-options ((obj progress) (arg0 font-context)) (set-scale! arg0 0.85) @@ -2585,7 +2691,9 @@ (set-color! arg0 (font-color progress-blue)) (set-height! arg0 20) (print-game-text-scaled (lookup-text! *common-text* (text-id speedrun-options-heading) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set-scale! arg0 0.6) (set-flags! arg0 (font-flags shadow kerning middle middle-vert large)) (set-origin! arg0 (- 20 (-> obj left-x-offset)) 60) @@ -2593,7 +2701,9 @@ (set-height! arg0 20) (set-color! arg0 (font-color progress-yellow)) (print-game-text-scaled (lookup-text! *common-text* (text-id speedrun-options-warning) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) 0) (defun draw-memcard-auto-save-disabled ((obj progress) (arg0 font-context)) @@ -2603,18 +2713,23 @@ (set-width! arg0 360) (set-height! arg0 20) (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-title) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set! (-> arg0 origin y) 72.0) (set-width! arg0 360) (set-height! arg0 60) (print-game-text-scaled (lookup-text! *common-text* (text-id autosave-disabled-msg) #f) - (-> obj transition-percentage-invert) arg0 128) + (-> obj transition-percentage-invert) + arg0 + 128) (set-scale! arg0 0.65) (set! (-> arg0 origin y) 120.0) (set-height! arg0 60) (print-game-text-scaled (lookup-text! *common-text* (text-id continue?) #f) - (-> obj transition-percentage-invert) arg0 128) - + (-> obj transition-percentage-invert) + arg0 + 128) 0) (defun draw-memcard-disable-auto-save ((obj progress) (arg0 font-context)) @@ -2624,450 +2739,278 @@ (set-height! arg0 40) (set-flags! arg0 (font-flags shadow kerning middle middle-vert large)) (print-game-text-scaled (lookup-text! *common-text* (text-id disable-auto-save-query) #f) - (-> obj transition-percentage-invert) arg0 128) - + (-> obj transition-percentage-invert) + arg0 + 128) 0) (defmethod draw-notice-screen ((obj progress)) (hide-progress-icons) (when *common-text* - (let ((a1-1 (new 'stack 'font-context *font-default-matrix* (- 70 (-> obj left-x-offset)) 10 0.0 - (font-color default) (font-flags shadow kerning)))) + (let ((a1-1 (new 'stack + 'font-context + *font-default-matrix* + (- 70 (-> obj left-x-offset)) + 10 + 0.0 + (font-color default) + (font-flags shadow kerning)))) (case (-> obj display-state) - (((progress-screen memcard-format)) - (draw-memcard-format obj a1-1) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-memcard-storage-error obj a1-1) - ) - (((progress-screen memcard-data-exists)) - (draw-memcard-data-exists obj a1-1) - ) - (((progress-screen memcard-no-data)) - (draw-memcard-no-data obj a1-1) - ) + (((progress-screen memcard-format)) (draw-memcard-format obj a1-1)) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-memcard-storage-error obj a1-1)) + (((progress-screen memcard-data-exists)) (draw-memcard-data-exists obj a1-1)) + (((progress-screen memcard-no-data)) (draw-memcard-no-data obj a1-1)) (((progress-screen memcard-loading) (progress-screen memcard-saving) (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-memcard-accessing obj a1-1) - ) - (((progress-screen memcard-insert)) - (draw-memcard-insert obj a1-1) - ) + (progress-screen memcard-creating)) + (draw-memcard-accessing obj a1-1)) + (((progress-screen memcard-insert)) (draw-memcard-insert obj a1-1)) (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (draw-memcard-file-select obj a1-1) - ) - (((progress-screen memcard-auto-save-error)) - (draw-memcard-auto-save-error obj a1-1) - ) - (((progress-screen memcard-removed)) - (draw-memcard-removed obj a1-1) - ) + (draw-memcard-file-select obj a1-1)) + (((progress-screen memcard-auto-save-error)) (draw-memcard-auto-save-error obj a1-1)) + (((progress-screen memcard-removed)) (draw-memcard-removed obj a1-1)) (((progress-screen memcard-error-loading) (progress-screen memcard-error-saving) (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - ) - (draw-memcard-error obj a1-1) - ) - (((progress-screen auto-save)) - (draw-auto-save obj a1-1) - ) - (((progress-screen pal-change-to-60hz)) - (draw-pal-change-to-60hz obj a1-1) - ) - (((progress-screen pal-now-60hz)) - (draw-pal-now-60hz obj a1-1) - ) - (((progress-screen no-disc)) - (draw-no-disc obj a1-1) - ) - (((progress-screen bad-disc)) - (draw-bad-disc obj a1-1) - ) - (((progress-screen quit) (progress-screen quit-title)) - (draw-quit obj a1-1) - ) - (((progress-screen memcard-disable-auto-save)) - (draw-memcard-disable-auto-save obj a1-1) - ) - (((progress-screen memcard-auto-save-disabled)) - (draw-memcard-auto-save-disabled obj a1-1) - ) - (((progress-screen speedrun-options)) - (draw-memcard-speedrun-options obj a1-1) - ) - ) - ) - ) + (progress-screen memcard-error-creating)) + (draw-memcard-error obj a1-1)) + (((progress-screen auto-save)) (draw-auto-save obj a1-1)) + (((progress-screen pal-change-to-60hz)) (draw-pal-change-to-60hz obj a1-1)) + (((progress-screen pal-now-60hz)) (draw-pal-now-60hz obj a1-1)) + (((progress-screen no-disc)) (draw-no-disc obj a1-1)) + (((progress-screen bad-disc)) (draw-bad-disc obj a1-1)) + (((progress-screen quit) (progress-screen quit-title)) (draw-quit obj a1-1)) + (((progress-screen memcard-disable-auto-save)) (draw-memcard-disable-auto-save obj a1-1)) + (((progress-screen memcard-auto-save-disabled)) (draw-memcard-auto-save-disabled obj a1-1)) + (((progress-screen speedrun-options)) (draw-memcard-speedrun-options obj a1-1))))) 0 - (none) - ) - + (none)) ;; override the post handler for progress-normal (set! (-> progress-normal post) - (lambda :behavior progress () - (when (progress-scrolling?) - (seek! (-> *progress-scroll* transition) 1.0 (* (/ 1.75 512) (-> self transition-speed) (-> *display* time-adjust-ratio))) - ) - (when (!= (-> self display-state) (-> *progress-scroll* last-screen)) - (progress-scroll-reset) - (set! (-> *progress-scroll* last-screen) (-> self display-state)) - ) - ;; draw the menus!! - (let* ((a1-0 (-> self display-level-index)) - (gp-0 (-> *level-task-data* a1-0)) - (unk #t) - (stats? #f) - ) - (case (-> self display-state) - (((progress-screen fuel-cell)) - (set! stats? #t) - (draw-fuel-cell-screen self a1-0) - ) - (((progress-screen money)) - (set! stats? #t) - (draw-money-screen self a1-0) - ) - (((progress-screen buzzer)) - (set! stats? #t) - (draw-buzzer-screen self a1-0) - ) - (((progress-screen graphic-settings) - (progress-screen settings-title) - (progress-screen title) - (progress-screen sound-settings) - (progress-screen game-ps2-options) - (progress-screen resolution) - (progress-screen aspect-ratio) - (progress-screen secrets) - (progress-screen cheats) - (progress-screen monitor) - ) - (hide-progress-icons) - (draw-options self 115 25 0.82) - ) - (((progress-screen settings) - (progress-screen settings-title) - ) - (hide-progress-icons) - (draw-options self 115 25 0.78) - ) - (((progress-screen misc-options)) - (hide-progress-icons) - (draw-options self 115 25 0.79) - ) - (((progress-screen music-player)) - (hide-progress-icons) - (draw-options self 128 21 0.82) - ) - (((progress-screen flava-player)) - (hide-progress-icons) - (draw-options self 128 21 0.82) - ) - (((progress-screen speedrun-options)) - (hide-progress-icons) - (draw-notice-screen self) - (draw-options self 155 25 0.65) - ) - (((progress-screen camera-options) (progress-screen checkpoint-select) (progress-screen speedrun-il-options) (progress-screen speedrun-cat-ext-options)) - ;; camera options lines are a bit too big - (hide-progress-icons) - (draw-options self 115 25 0.65) - ) - (((progress-screen input-options) - (progress-screen select-controller) - (progress-screen controller-binds) - (progress-screen keyboard-binds) - (progress-screen mouse-binds) - (progress-screen controller-options) - (progress-screen mouse-options) - (progress-screen reassign-binds-options)) - (hide-progress-icons) - (draw-options self 115 25 0.65) - ) - (((progress-screen gfx-ps2-options)) - (hide-progress-icons) - (draw-options self 115 25 0.67) - ) - (((progress-screen game-settings)) - (hide-progress-icons) - (draw-options self 115 25 0.70) - ) - (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) - (draw-notice-screen self) - (draw-options self 192 0 0.82) - ) - (((progress-screen memcard-no-data) (progress-screen memcard-auto-save-disabled)) - (draw-notice-screen self) - (draw-options self 165 0 0.82) - ) - (((progress-screen memcard-format)) - (draw-notice-screen self) - (draw-options self 172 0 0.82) - ) - (((progress-screen memcard-no-space) - (progress-screen memcard-not-inserted) - (progress-screen memcard-not-formatted) - ) - (draw-notice-screen self) - (draw-options self 195 0 0.82) - ) - (((progress-screen memcard-error-loading) - (progress-screen memcard-error-saving) - (progress-screen memcard-error-formatting) - (progress-screen memcard-error-creating) - (progress-screen memcard-auto-save-error) - (progress-screen auto-save) (progress-screen load-game) (progress-screen save-game) - ) - (draw-notice-screen self) - (draw-options self 190 0 0.82) - ) - (((progress-screen no-disc) (progress-screen bad-disc)) - (draw-notice-screen self) - (if (is-cd-in?) - (draw-options self 170 0 0.82) - ) - ) - (((progress-screen quit) - (progress-screen quit-title) - (progress-screen memcard-disable-auto-save)) - (draw-notice-screen self) - (draw-options self 110 0 0.82) - ) - (((progress-screen memcard-insert)) - (draw-notice-screen self) - (draw-options self 165 0 0.82) - ) - (((progress-screen memcard-data-exists)) - (draw-notice-screen self) - (draw-options self 168 0 0.82) - ) - (((progress-screen memcard-loading) - (progress-screen memcard-saving) - (progress-screen memcard-formatting) - (progress-screen memcard-creating) - ) - (draw-notice-screen self) - ) - (((progress-screen save-game-title)) - (draw-notice-screen self) - (draw-options self 169 15 0.6) - ) - (else - (format 0 "PROGRESS - You forgot to add a `progress-screen` case to draw options!")) - ) - (when stats? - (let* ((v1-98 (cond ((-> self stat-transition) 0) + (lambda :behavior progress () + (when (progress-scrolling?) + (seek! (-> *progress-scroll* transition) + 1.0 + (* (/ 1.75 512) (-> self transition-speed) (-> *display* time-adjust-ratio)))) + (when (!= (-> self display-state) (-> *progress-scroll* last-screen)) + (progress-scroll-reset) + (set! (-> *progress-scroll* last-screen) (-> self display-state))) + ;; draw the menus!! + (let* ((a1-0 (-> self display-level-index)) + (gp-0 (-> *level-task-data* a1-0)) + (unk #t) + (stats? #f)) + (case (-> self display-state) + (((progress-screen fuel-cell)) (set! stats? #t) (draw-fuel-cell-screen self a1-0)) + (((progress-screen money)) (set! stats? #t) (draw-money-screen self a1-0)) + (((progress-screen buzzer)) (set! stats? #t) (draw-buzzer-screen self a1-0)) + (((progress-screen graphic-settings) + (progress-screen settings-title) + (progress-screen title) + (progress-screen sound-settings) + (progress-screen game-ps2-options) + (progress-screen resolution) + (progress-screen aspect-ratio) + (progress-screen secrets) + (progress-screen cheats) + (progress-screen monitor)) + (hide-progress-icons) + (draw-options self 115 25 0.82)) + (((progress-screen settings) (progress-screen settings-title)) (hide-progress-icons) (draw-options self 115 25 0.78)) + (((progress-screen misc-options)) (hide-progress-icons) (draw-options self 115 25 0.79)) + (((progress-screen music-player)) (hide-progress-icons) (draw-options self 128 21 0.82)) + (((progress-screen flava-player)) (hide-progress-icons) (draw-options self 128 21 0.82)) + (((progress-screen speedrun-options)) (hide-progress-icons) (draw-notice-screen self) (draw-options self 155 25 0.65)) + (((progress-screen camera-options) + (progress-screen checkpoint-select) + (progress-screen speedrun-il-options) + (progress-screen speedrun-cat-ext-options)) + ;; camera options lines are a bit too big + (hide-progress-icons) + (draw-options self 115 25 0.65)) + (((progress-screen input-options) + (progress-screen select-controller) + (progress-screen controller-binds) + (progress-screen keyboard-binds) + (progress-screen mouse-binds) + (progress-screen controller-options) + (progress-screen mouse-options) + (progress-screen reassign-binds-options)) + (hide-progress-icons) + (draw-options self 115 25 0.65)) + (((progress-screen gfx-ps2-options)) (hide-progress-icons) (draw-options self 115 25 0.67)) + (((progress-screen game-settings)) (hide-progress-icons) (draw-options self 115 25 0.70)) + (((progress-screen memcard-removed) (progress-screen memcard-auto-save-error)) + (draw-notice-screen self) + (draw-options self 192 0 0.82)) + (((progress-screen memcard-no-data) (progress-screen memcard-auto-save-disabled)) + (draw-notice-screen self) + (draw-options self 165 0 0.82)) + (((progress-screen memcard-format)) (draw-notice-screen self) (draw-options self 172 0 0.82)) + (((progress-screen memcard-no-space) (progress-screen memcard-not-inserted) (progress-screen memcard-not-formatted)) + (draw-notice-screen self) + (draw-options self 195 0 0.82)) + (((progress-screen memcard-error-loading) + (progress-screen memcard-error-saving) + (progress-screen memcard-error-formatting) + (progress-screen memcard-error-creating) + (progress-screen memcard-auto-save-error) + (progress-screen auto-save) + (progress-screen load-game) + (progress-screen save-game)) + (draw-notice-screen self) + (draw-options self 190 0 0.82)) + (((progress-screen no-disc) (progress-screen bad-disc)) + (draw-notice-screen self) + (if (is-cd-in?) (draw-options self 170 0 0.82))) + (((progress-screen quit) (progress-screen quit-title) (progress-screen memcard-disable-auto-save)) + (draw-notice-screen self) + (draw-options self 110 0 0.82)) + (((progress-screen memcard-insert)) (draw-notice-screen self) (draw-options self 165 0 0.82)) + (((progress-screen memcard-data-exists)) (draw-notice-screen self) (draw-options self 168 0 0.82)) + (((progress-screen memcard-loading) + (progress-screen memcard-saving) + (progress-screen memcard-formatting) + (progress-screen memcard-creating)) + (draw-notice-screen self)) + (((progress-screen save-game-title)) (draw-notice-screen self) (draw-options self 169 15 0.6)) + (else (format 0 "PROGRESS - You forgot to add a `progress-screen` case to draw options!"))) + (when stats? + (let* ((v1-98 (cond + ((-> self stat-transition) 0) ((= (-> self level-transition) 1) (- (-> self transition-offset))) - (else (-> self transition-offset)) - )) - (f30-0 (the-as float (if (-> self stat-transition) - 1.0 - (-> self transition-percentage-invert) - ))) - (s5-1 (new 'stack 'font-context *font-default-matrix* - (- 32 (-> self left-x-offset)) - (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) - 8325000.0 - (font-color progress-blue) - (font-flags shadow kerning) - )) - ) - (set-width! s5-1 328) - (set-height! s5-1 45) - (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) - (print-game-text-scaled (lookup-text! *common-text* (-> gp-0 level-name-id) #f) f30-0 s5-1 (the int (* 128.0 f30-0))) - ) - ) - ) - (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (draw-progress self) - ) - ) - (adjust-sprites self) - (adjust-icons self) - (none) - )) + (else (-> self transition-offset)))) + (f30-0 (the-as float (if (-> self stat-transition) 1.0 (-> self transition-percentage-invert)))) + (s5-1 (new 'stack + 'font-context + *font-default-matrix* + (- 32 (-> self left-x-offset)) + (the int (* (+ 42.0 (the float (/ v1-98 2))) f30-0)) + 8325000.0 + (font-color progress-blue) + (font-flags shadow kerning)))) + (set-width! s5-1 328) + (set-height! s5-1 45) + (set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large)) + (print-game-text-scaled (lookup-text! *common-text* (-> gp-0 level-name-id) #f) f30-0 s5-1 (the int (* 128.0 f30-0)))))) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) (draw-progress self))) + (adjust-sprites self) + (adjust-icons self) + (none))) ;; override the enter handler for progress-going-out (set! (-> progress-going-out enter) - (lambda :behavior progress () - (sound-play "menu-close") - (hide-progress-icons) - (remove-setting! 'music) - (apply-settings *setting-control*) - (progress-reset-music-parms) - (commit-to-file *pc-settings*) - (set! (-> self particles 3 init-pos x) -320.0) - (set! (-> self particles 4 init-pos x) -320.0) - (set! (-> self particles 32 init-pos x) -320.0) - (set! (-> self particles 33 init-pos x) -320.0) - (case (-> self display-state) - (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) - (set! (-> self transition-speed) 30.0) - ) - ) - (none) - )) + (lambda :behavior progress () + (sound-play "menu-close") + (hide-progress-icons) + (remove-setting! 'music) + (apply-settings *setting-control*) + (progress-reset-music-parms) + (commit-to-file *pc-settings*) + (set! (-> self particles 3 init-pos x) -320.0) + (set! (-> self particles 4 init-pos x) -320.0) + (set! (-> self particles 32 init-pos x) -320.0) + (set! (-> self particles 33 init-pos x) -320.0) + (case (-> self display-state) + (((progress-screen load-game) (progress-screen save-game) (progress-screen save-game-title)) + (set! (-> self transition-speed) 30.0))) + (none))) ;; these need to be overridden as well (set! (-> progress-going-out post) (-> progress-normal post)) + (set! (-> progress-coming-in post) (-> progress-normal post)) ;; override this as well... (set! (-> progress-normal code) - (lambda :behavior progress () - (loop - (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) - (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) - (>= (-> self task-index) 0) - ) - (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) - (close-specific-task! gp-0 (task-status need-resolution)) - (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float gp-0)) - ) - ) - ) - (if (and (= (-> self display-state) (-> self next-display-state)) - (= (-> self display-level-index) (-> self next-level-index)) - ) - (seekl! - (-> self transition-offset) - 0 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - (seekl! - (-> self transition-offset) - 512 - (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) - (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) - 2 - 1 - ) - ) - ) - ) - (set-transition-progress! self (-> self transition-offset)) - (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) - (when (and (not (handle->process (-> *game-info* auto-save-proc))) - (or (-> self force-transition) (-> self in-transition)) - (>= (-> self transition-offset) (if (and (zero? (-> self level-transition)) - (nonzero? (-> self next-display-state)) - (!= (-> self next-display-state) 1) - (!= (-> self next-display-state) 2) - ) - 512 - 256 - ) - ) - ) - (if (>= (the-as int (-> self next-display-state)) 0) - (enter! self (-> self next-display-state) 0) - (pop! self) - ) - (set! (-> self display-level-index) (-> self next-level-index)) - (when (nonzero? (-> self level-transition)) - (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) - (case (-> self level-transition) - ((1) - (set! (-> self level-transition) 2) - ) - ((2) - (set! (-> self level-transition) 1) - ) - ) - ) - (set! (-> self force-transition) #f) - ) - (when (zero? (-> self transition-offset)) - (set! (-> self stat-transition) #f) - (set! (-> self level-transition) 0) - 0 - ) - (let ((gp-1 #f)) - (let ((v1-62 #f)) - (case (-> self display-state) - (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) - (let ((s5-0 (-> self display-level-index))) - (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) - (zero? (-> *progress-process* 0 in-out-position)) - (not (-> self in-transition)) - (zero? (-> self transition-offset)) - ) - (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) - (set! v1-62 (!= s5-0 (get-next-level-down s5-0))) - ) - ) - ) - ) - (set! (-> self particles 3 init-pos x) (the float (if v1-62 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (set! (-> self particles 4 init-pos x) (the float (if gp-1 - (- 195 (-> *progress-process* 0 left-x-offset)) - -320 - ) - ) - ) - ) - (respond-common self) - (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) - (let ((v1-74 (-> self display-state))) - (cond - ((or (= v1-74 (progress-screen fuel-cell)) - (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer))) - ) - (respond-progress self) - ) - ((or (= v1-74 (progress-screen memcard-no-space)) - (= v1-74 (progress-screen memcard-format)) - (= v1-74 (progress-screen memcard-data-exists)) - (= v1-74 (progress-screen memcard-insert)) - (= v1-74 (progress-screen load-game)) - (= v1-74 (progress-screen save-game)) - (= v1-74 (progress-screen save-game-title)) - (= v1-74 (progress-screen memcard-error-loading)) - (= v1-74 (progress-screen memcard-error-saving)) - (= v1-74 (progress-screen memcard-error-formatting)) - (= v1-74 (progress-screen memcard-error-creating)) - (= v1-74 (progress-screen memcard-auto-save-error)) - (= v1-74 (progress-screen memcard-removed)) - (= v1-74 (progress-screen memcard-no-data)) - (= v1-74 (progress-screen memcard-not-inserted)) - (= v1-74 (progress-screen memcard-not-formatted)) - (= v1-74 (progress-screen auto-save)) - (= v1-74 (progress-screen pal-change-to-60hz)) - (= v1-74 (progress-screen pal-now-60hz)) - (= v1-74 (progress-screen no-disc)) - (= v1-74 (progress-screen bad-disc)) - (= v1-74 (progress-screen quit)) - (= v1-74 (progress-screen quit-title)) - (= v1-74 (progress-screen memcard-auto-save-disabled)) - (= v1-74 (progress-screen memcard-disable-auto-save)) - ) - (respond-memcard self) - ) - ) - ) - (suspend) - ) - (none) - ) - ) + (lambda :behavior progress () + (loop (when (and (cpad-hold? 0 l1) (cpad-hold? 0 r1) *cheat-mode*) + (when (and (< (-> self task-index) (-> *level-task-data* (-> self display-level-index) nb-of-tasks)) + (>= (-> self task-index) 0)) + (let ((gp-0 (-> *level-task-data* (-> self display-level-index) task-info (-> self task-index) task-id))) + (close-specific-task! gp-0 (task-status need-resolution)) + (send-event *target* 'get-pickup (pickup-type fuel-cell) (the float gp-0))))) + (if (and (= (-> self display-state) (-> self next-display-state)) + (= (-> self display-level-index) (-> self next-level-index))) + (seekl! (-> self transition-offset) + 0 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1))) + (seekl! (-> self transition-offset) + 512 + (* (the int (* (-> self transition-speed) (-> *display* time-adjust-ratio))) + (if (or (-> self stat-transition) (nonzero? (-> self level-transition))) 2 1)))) + (set-transition-progress! self (-> self transition-offset)) + (set! (-> self in-transition) (or (-> self force-transition) (nonzero? (-> self transition-offset)))) + (when (and (not (handle->process (-> *game-info* auto-save-proc))) + (or (-> self force-transition) (-> self in-transition)) + (>= (-> self transition-offset) + (if (and (zero? (-> self level-transition)) + (nonzero? (-> self next-display-state)) + (!= (-> self next-display-state) 1) + (!= (-> self next-display-state) 2)) + 512 + 256))) + (if (>= (the-as int (-> self next-display-state)) 0) (enter! self (-> self next-display-state) 0) (pop! self)) + (set! (-> self display-level-index) (-> self next-level-index)) + (when (nonzero? (-> self level-transition)) + (set! (-> self task-index) (get-next-task-up -1 (-> self display-level-index))) + (case (-> self level-transition) + ((1) (set! (-> self level-transition) 2)) + ((2) (set! (-> self level-transition) 1)))) + (set! (-> self force-transition) #f)) + (when (zero? (-> self transition-offset)) + (set! (-> self stat-transition) #f) + (set! (-> self level-transition) 0) + 0) + (let ((gp-1 #f)) + (let ((v1-62 #f)) + (case (-> self display-state) + (((progress-screen fuel-cell) (progress-screen money) (progress-screen buzzer)) + (let ((s5-0 (-> self display-level-index))) + (when (and (< (mod (-> *display* real-frame-counter) (seconds 0.2)) (seconds 0.1)) + (zero? (-> *progress-process* 0 in-out-position)) + (not (-> self in-transition)) + (zero? (-> self transition-offset))) + (set! gp-1 (!= s5-0 (get-next-level-up s5-0))) + (set! v1-62 (!= s5-0 (get-next-level-down s5-0))))))) + (set! (-> self particles 3 init-pos x) (the float (if v1-62 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (set! (-> self particles 4 init-pos x) (the float (if gp-1 (- 195 (-> *progress-process* 0 left-x-offset)) -320)))) + (respond-common self) + (set! (-> self next-display-state) (set-memcard-screen self (-> self next-display-state))) + (let ((v1-74 (-> self display-state))) + (cond + ((or (= v1-74 (progress-screen fuel-cell)) (or (= v1-74 (progress-screen money)) (= v1-74 (progress-screen buzzer)))) + (respond-progress self)) + ((or (= v1-74 (progress-screen memcard-no-space)) + (= v1-74 (progress-screen memcard-format)) + (= v1-74 (progress-screen memcard-data-exists)) + (= v1-74 (progress-screen memcard-insert)) + (= v1-74 (progress-screen load-game)) + (= v1-74 (progress-screen save-game)) + (= v1-74 (progress-screen save-game-title)) + (= v1-74 (progress-screen memcard-error-loading)) + (= v1-74 (progress-screen memcard-error-saving)) + (= v1-74 (progress-screen memcard-error-formatting)) + (= v1-74 (progress-screen memcard-error-creating)) + (= v1-74 (progress-screen memcard-auto-save-error)) + (= v1-74 (progress-screen memcard-removed)) + (= v1-74 (progress-screen memcard-no-data)) + (= v1-74 (progress-screen memcard-not-inserted)) + (= v1-74 (progress-screen memcard-not-formatted)) + (= v1-74 (progress-screen auto-save)) + (= v1-74 (progress-screen pal-change-to-60hz)) + (= v1-74 (progress-screen pal-now-60hz)) + (= v1-74 (progress-screen no-disc)) + (= v1-74 (progress-screen bad-disc)) + (= v1-74 (progress-screen quit)) + (= v1-74 (progress-screen quit-title)) + (= v1-74 (progress-screen memcard-auto-save-disabled)) + (= v1-74 (progress-screen memcard-disable-auto-save))) + (respond-memcard self)))) + (suspend)) + (none))) diff --git a/goal_src/jak1/pc/subtitle.gc b/goal_src/jak1/pc/subtitle.gc index a6f3200009..6bf58cefaf 100644 --- a/goal_src/jak1/pc/subtitle.gc +++ b/goal_src/jak1/pc/subtitle.gc @@ -1,12 +1,9 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/entity/ambient.gc") (require "pc/pckernel.gc") - #| - Code for subtitles for the PC port. A PC actor pool is provided, and the subtitle process lives there. It automatically detects the currently playing cutscene and plays the subtitles for it on channel 0. The other two channels are for hints, first checked automatically by name, then by text ID. @@ -16,28 +13,26 @@ heap. In Jak 2, the subtitles are stored directly within the .STR files. We don't have that luxury here, unfortunately. - - |# - +|# ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defconstant PC_SUBTITLE_FILE_SIZE (* 256 1024)) ;; 256K heap for subtitles. adjust later if necessary. + (defconstant PC_SUBTITLE_FILE_NAME "subtit") + (defconstant PC_SUB_DBG_Y 32) + (defconstant PC_SUB_DBG_CHECK_GROUP_SIZE 22) + (defglobalconstant PC_SUBTITLE_DEBUG #f) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types and enums ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;;;------------------------ ;; data ;;;------------------------ @@ -45,7 +40,11 @@ ;; enum for the subtitle channels, no more than 2 bytes! (defenum pc-subtitle-channel :type int16 - (invalid -1) (movie 0) (hint 1) (hint-named 2)) + (invalid -1) + (movie 0) + (hint 1) + (hint-named 2)) + (defconstant SUBTITLE_CHANNEL_COUNT 3) (defenum pc-subtitle-flags @@ -56,170 +55,116 @@ ;; information about a single line of subtitles (deftype subtitle-keyframe (structure) - ( - (frame int32) ;; the frame to play the subtitle line on - (string string) ;; the text for the subtitle line - (speaker string) ;; name of the speaker. leave blank for no speaker. - (flags pc-subtitle-flags) ;; flags + ((frame int32) ;; the frame to play the subtitle line on + (string string) ;; the text for the subtitle line + (speaker string) ;; name of the speaker. leave blank for no speaker. + (flags pc-subtitle-flags) ;; flags ) - :pack-me - ) + :pack-me) ;; an individual entry to a subtitle text making up a scene, comprised of a series of keyframes (frame+line of text) (deftype subtitle-text (structure) - ( - ;; the channel to play the text on, useful for lookup since it can also be used to tell subtitle types apart - (kind pc-subtitle-channel) + (;; the channel to play the text on, useful for lookup since it can also be used to tell subtitle types apart + (kind pc-subtitle-channel) ;; the amount of keyframes/lines - (length int16) + (length int16) ;; data (keyframes (inline-array subtitle-keyframe)) - ;; now we store a way to identify and lookup the subtitles. - ;; the name of the spool-anim - (name string :offset 8) + (name string :offset 8) ;; the text-id if this is for a hint - (id text-id :offset 12) + (id text-id :offset 12) ;; the 8-character name for an ambient or hint - (hash uint64 :offset 8) - - - ) - - :size-assert #x10 ;; compact! + (hash uint64 :offset 8)) + :size-assert #x10 + ;; compact! ) ;; the global subtitle text info bank (deftype subtitle-text-info (basic) - ((length int32) - (lang pc-language) - (dummy int32) - (data subtitle-text :inline :dynamic) - ) - + ((length int32) + (lang pc-language) + (dummy int32) + (data subtitle-text :inline :dynamic)) (:methods - (get-scene-by-name (_type_ pc-subtitle-channel string) subtitle-text) - (get-scene-by-text-id (_type_ pc-subtitle-channel text-id) subtitle-text) - ) - ) - + (get-scene-by-name (_type_ pc-subtitle-channel string) subtitle-text) + (get-scene-by-text-id (_type_ pc-subtitle-channel text-id) subtitle-text))) (defmacro subtitle-flags? (sub &rest flags) `(logtest? (-> ,sub flags) (pc-subtitle-flags ,@flags))) - - ;;;---------------------------------- ;; process type ;;;---------------------------------- - ;; graphic parameters for subtitles (deftype subtitle-bank (structure) - ( - (scale float) - (width float) - (height float) - (lines float) + ((scale float) + (width float) + (height float) + (lines float) (notice-height float) - (hint-height float) - ) - - ) + (hint-height float))) (define *SUBTITLE-bank* - (new 'static 'subtitle-bank - :scale 0.5 - :width 0.87 - :height 0.75 - :lines 2.0 - :notice-height 0.2 - :hint-height 0.8 - )) + (new 'static 'subtitle-bank :scale 0.5 :width 0.87 :height 0.75 :lines 2.0 :notice-height 0.2 :hint-height 0.8)) ;; the subtitle process! it lives on the PC actor pool and awaits for incoming subtitle messages, or a movie (deftype subtitle (process) - ( - (font font-context) ;; the font to use for the subtitles. - (bank-backup subtitle-bank :inline) ;; debug backup. - - (state-time time-frame) ;; a timestamp, used for notices - (notice-id text-id) ;; what notice text to display at the top of the screen - - ( spool-name string) - (old-spool-name string) - (text-id text-id) - (cur-channel pc-subtitle-channel) - + ((font font-context) ;; the font to use for the subtitles. + (bank-backup subtitle-bank :inline) ;; debug backup. + (state-time time-frame) ;; a timestamp, used for notices + (notice-id text-id) ;; what notice text to display at the top of the screen + (spool-name string) + (old-spool-name string) + (text-id text-id) + (cur-channel pc-subtitle-channel) ;; debug things - (debug-lines? symbol) - (checking-lines? symbol) - (current-debug-scene int16) - (current-debug-line int16) - - (want-subtitle subtitle-keyframe) ;; the subtitle we want to display - (hint-subtitle? symbol) - ) - + (debug-lines? symbol) + (checking-lines? symbol) + (current-debug-scene int16) + (current-debug-line int16) + (want-subtitle subtitle-keyframe) ;; the subtitle we want to display + (hint-subtitle? symbol)) (:methods - (subtitle-format (_type_ subtitle-keyframe) string) - ) + (subtitle-format (_type_ subtitle-keyframe) string)) (:states - subtitle-debug - subtitle-debug-checking-lines) - ) - - - + subtitle-debug + subtitle-debug-checking-lines)) ;;;---------------------------------------------- ;; globals ;;;---------------------------------------------- - ;; the subtitle process. (define *subtitle* (the (pointer subtitle) #f)) ;; subtitle text data (define *subtitle-text* (the subtitle-text-info #f)) + (kheap-alloc (define *subtitle-text-heap* (new 'global 'kheap)) PC_SUBTITLE_FILE_SIZE) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; loading files ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defmethod get-scene-by-name ((obj subtitle-text-info) (kind pc-subtitle-channel) (name string)) "get a subtitle scene info with the corresponding name. #f = none found" - ;; invalid name so return invalid scene. - (if (not name) - (return (the subtitle-text #f))) - + (if (not name) (return (the subtitle-text #f))) (dotimes (i (-> obj length)) ;; name and kind matches, return that! - (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) - (string= (-> obj data i name) name)) - (return (-> obj data i)) - ) - ) - + (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) (string= (-> obj data i name) name)) + (return (-> obj data i)))) (the subtitle-text #f)) (defmethod get-scene-by-text-id ((obj subtitle-text-info) (kind pc-subtitle-channel) (id text-id)) "get a subtitle scene info with the corresponding name. #f = none found" - (dotimes (i (-> obj length)) ;; name and kind matches, return that! - (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) - (= (-> obj data i id) id)) - (return (-> obj data i)) - ) - ) - + (when (and (or (= kind (pc-subtitle-channel invalid)) (= kind (-> obj data i kind))) (= (-> obj data i id) id)) + (return (-> obj data i)))) (the subtitle-text #f)) (defun load-subtitle-text-info ((txt-name string) (curr-text symbol) (heap kheap)) @@ -227,134 +172,101 @@ txt-name = language-agnostic file name curr-text = a symbol to a subtitle-text-info to link the file to heap = the text heap to load the file onto" - (let ((heap-sym-heap (the-as subtitle-text-info (-> curr-text value))) (lang (-> *pc-settings* subtitle-language)) (load-status 0) (heap-free (&- (-> heap top) (the-as uint (-> heap base))))) - ;; current text has nothing loaded, or language doesn't match. - (when (or (= heap-sym-heap #f) - (!= (-> heap-sym-heap lang) lang) - ) + (when (or (= heap-sym-heap #f) (!= (-> heap-sym-heap lang) lang)) ;; so reload. - ;; reset the text heap. (kheap-reset heap) - ;; try to load load... - (while (not (str-load (string-format "~D~S.TXT" lang txt-name) -1 (logand -64 (&+ (-> heap current) 63)) (&- (-> heap top) (-> heap current)))) - (return 0) - ) + (while (not (str-load (string-format "~D~S.TXT" lang txt-name) + -1 + (logand -64 (&+ (-> heap current) 63)) + (&- (-> heap top) (-> heap current)))) + (return 0)) ;; load succeeded. check status. - (label retry) (let ((status (str-load-status (the-as (pointer int32) (& load-status))))) (when (= status 'error) (format 0 "Error loading subtitle~%") (return 0) - (goto loaded) - ) + (goto loaded)) (cond - ((>= load-status (+ heap-free -300)) - (format 0 "Game subtitle heap overrun!~%") - (return 0) - ) + ((>= load-status (+ heap-free -300)) (format 0 "Game subtitle heap overrun!~%") (return 0)) ((= status 'busy) ;; still loading. - (goto retry) - ) - ) - ) + (goto retry)))) (label loaded) - ;; link the text file! (let ((new-mem (logand -64 (&+ (-> heap current) 63)))) - (flush-cache 0) - (set! (-> curr-text value) (link new-mem (-> (string-format "~D~S.TXT" lang txt-name) data) load-status heap 0)) - ) + (flush-cache 0) + (set! (-> curr-text value) (link new-mem (-> (string-format "~D~S.TXT" lang txt-name) data) load-status heap 0))) ;; if linking failed just make the text invalid. - (if (<= (the-as int (-> curr-text value)) 0) - (set! (-> curr-text value) (the-as object #f)) - ) - )) + (if (<= (the-as int (-> curr-text value)) 0) (set! (-> curr-text value) (the-as object #f))))) 0) (defun load-level-subtitle-files ((idx int)) "Load the subtitle files needed for level idx. This function made more sense back when text files were split up, but in the end they put everything in a single text group and file." - ;; just load common. (if (or *level-text-file-load-flag* (>= idx 0)) - (load-subtitle-text-info PC_SUBTITLE_FILE_NAME '*subtitle-text* *subtitle-text-heap*) - ) - + (load-subtitle-text-info PC_SUBTITLE_FILE_NAME '*subtitle-text* *subtitle-text-heap*)) (none)) - (defmacro reload-subtitles () "rebuild and reload subtitles." `(begin - (asm-text-file subtitle :files ("game/assets/game_subtitle.gp")) - (if *subtitle-text* - (+! (-> *subtitle-text* lang) 1)) - (load-level-subtitle-files 0))) + (asm-text-file subtitle :files ("game/assets/game_subtitle.gp")) + (if *subtitle-text* (+! (-> *subtitle-text* lang) 1)) + (load-level-subtitle-files 0))) (defmacro reload-text () "rebuild and reload text." `(begin - (mng) - (if *common-text* - (+! (-> *common-text* language-id) 1)) - (load-level-text-files 0))) - - - + (mng) + (if *common-text* (+! (-> *common-text* language-id) 1)) + (load-level-text-files 0))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; subtitle process and drawing! ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defun-recursive print-game-subtitle float ((str string) (font-ctxt font-context) (no-draw symbol) (alpha int) (line-height int)) "Print text. Not worth commenting until we get stack variables in lets, I think" (local-vars - (sv-112 float) - (sv-116 float) - (sv-120 float) - (sv-124 float) - (sv-128 float) - (sv-132 float) - (sv-136 float) - (sv-140 (pointer uint8)) - (sv-144 float) - (sv-148 float) - (sv-152 float) - (sv-156 float) - (sv-160 float) - (sv-164 float) - (sv-168 int) - (sv-176 int) - (sv-184 int) - (sv-192 int) - (sv-200 int) - (sv-208 symbol) - (sv-212 symbol) - ) - (let ((gp-0 (new - 'stack - 'font-context - *font-default-matrix* - (the int (-> font-ctxt origin x)) - (the int (-> font-ctxt origin y)) - 0.0 - (font-color default) - (font-flags shadow kerning) - ) - ) - ) + (sv-112 float) + (sv-116 float) + (sv-120 float) + (sv-124 float) + (sv-128 float) + (sv-132 float) + (sv-136 float) + (sv-140 (pointer uint8)) + (sv-144 float) + (sv-148 float) + (sv-152 float) + (sv-156 float) + (sv-160 float) + (sv-164 float) + (sv-168 int) + (sv-176 int) + (sv-184 int) + (sv-192 int) + (sv-200 int) + (sv-208 symbol) + (sv-212 symbol)) + (let ((gp-0 (new 'stack + 'font-context + *font-default-matrix* + (the int (-> font-ctxt origin x)) + (the int (-> font-ctxt origin y)) + 0.0 + (font-color default) + (font-flags shadow kerning)))) (when (< 0.1 (-> font-ctxt scale)) (set! sv-112 (-> font-ctxt mat vector 0 x)) (set! sv-116 (-> font-ctxt mat vector 1 y)) @@ -370,17 +282,12 @@ (when (logtest? (-> gp-0 flags) (font-flags middle-vert)) (logclear! (-> gp-0 flags) (font-flags middle-vert)) (let ((f30-0 (-> gp-0 width)) - (f28-0 (-> gp-0 height)) - ) + (f28-0 (-> gp-0 height))) (set! (-> gp-0 width) (-> font-ctxt width)) (set! (-> gp-0 height) (-> font-ctxt height)) - (+! (-> gp-0 origin y) - (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-subtitle str gp-0 #t 128 22))))) - ) + (+! (-> gp-0 origin y) (the float (the int (* 0.5 (- (-> gp-0 height) (print-game-subtitle str gp-0 #t 128 22)))))) (set! (-> gp-0 width) f30-0) - (set! (-> gp-0 height) f28-0) - ) - ) + (set! (-> gp-0 height) f28-0))) (set! (-> gp-0 mat vector 0 x) (* (-> gp-0 mat vector 0 x) sv-136)) (set! (-> gp-0 mat vector 1 y) (* (-> gp-0 mat vector 1 y) sv-136)) (set! (-> *video-parms* relative-x-scale) (* (-> *video-parms* relative-x-scale) sv-136)) @@ -393,17 +300,9 @@ (set! sv-152 (+ (-> gp-0 origin x) (-> font-ctxt width))) (set! sv-156 (+ (-> gp-0 origin y) (-> font-ctxt height))) (set! sv-160 (* (get-string-length " " gp-0) (-> *video-parms* relative-x-scale))) - (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) - (the float line-height) - 14.0 - ) - sv-136 - ) - ) + (set! sv-164 (* (if (logtest? (-> gp-0 flags) (font-flags large)) (the float line-height) 14.0) sv-136)) (set! sv-168 0) - (if (logtest? (-> gp-0 flags) (font-flags middle)) - (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width))) - ) + (if (logtest? (-> gp-0 flags) (font-flags middle)) (+! (-> gp-0 origin x) (* 0.5 (-> font-ctxt width)))) (set! sv-176 (the-as int (-> sv-140 0))) (set! sv-184 0) (set! sv-192 0) @@ -416,42 +315,21 @@ ((= sv-176 32) (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) (set! sv-184 (+ sv-184 1)) - (set! sv-208 #t) - ) - ((zero? sv-176) - (if (zero? sv-184) - (set! sv-212 #t) - (set! sv-208 #t) - ) - ) + (set! sv-208 #t)) + ((zero? sv-176) (if (zero? sv-184) (set! sv-212 #t) (set! sv-208 #t))) (else - (if (= sv-176 95) - (set! sv-176 32) - ) - (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) - (set! sv-184 (+ sv-184 1)) - ) - ) + (if (= sv-176 95) (set! sv-176 32)) + (set! (-> *game-text-word* data sv-184) (the-as uint sv-176)) + (set! sv-184 (+ sv-184 1)))) (when (= sv-208 #t) (set! (-> *game-text-word* data sv-184) (the-as uint 0)) (let* ((f30-1 sv-144) (f0-49 (* (get-string-length *game-text-word* gp-0) (-> *video-parms* relative-x-scale))) - (f1-14 (+ f30-1 f0-49)) - ) - (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) - (set! f1-14 (- f1-14 sv-160)) - ) + (f1-14 (+ f30-1 f0-49))) + (if (= (-> *game-text-word* data (+ sv-184 -1)) 32) (set! f1-14 (- f1-14 sv-160))) (cond - ((< sv-152 f1-14) - (set! sv-144 (+ sv-148 f0-49)) - (set! sv-212 #t) - ) - (else - (set! sv-144 (+ sv-144 f0-49)) - ) - ) - ) - ) + ((< sv-152 f1-14) (set! sv-144 (+ sv-148 f0-49)) (set! sv-212 #t)) + (else (set! sv-144 (+ sv-144 f0-49)))))) (when (= sv-212 #t) (when (>= sv-200 (the-as int (-> gp-0 start-line))) (let ((f30-2 (+ (-> gp-0 origin y) sv-164))) @@ -460,21 +338,14 @@ (set! (-> *game-text-line* data (+ sv-192 -1)) (the-as uint 0)) (when (and (= (-> *game-text-line* data (+ sv-192 -5)) 126) (= (-> *game-text-line* data (+ sv-192 -2)) 72)) (set! (-> *game-text-line* data (+ sv-192 -5)) (the-as uint 0)) - 0 - ) - ) - ) + 0))) (when (and (= (-> *game-text-line* data (+ sv-192 -4)) 126) (= (-> *game-text-line* data (+ sv-192 -1)) 72)) (set! (-> *game-text-line* data (+ sv-192 -4)) (the-as uint 0)) - 0 - ) - (if (nonzero? (-> *game-text-line* data 0)) - (set! sv-168 (+ sv-168 1)) - ) + 0) + (if (nonzero? (-> *game-text-line* data 0)) (set! sv-168 (+ sv-168 1))) (when (not no-draw) (let* ((s1-1 (-> *display* frames (-> *display* on-screen) frame global-buf)) - (s2-1 (-> s1-1 base)) - ) + (s2-1 (-> s1-1 base))) (set-font-color-alpha (-> font-ctxt color) alpha) (draw-string *game-text-line* s1-1 gp-0) (set-font-color-alpha (-> font-ctxt color) 128) @@ -484,526 +355,438 @@ (set! (-> (the-as dma-packet v1-127) dma) (new 'static 'dma-tag :id (dma-tag-id next))) (set! (-> (the-as dma-packet v1-127) vif0) (new 'static 'vif-tag)) (set! (-> (the-as dma-packet v1-127) vif1) (new 'static 'vif-tag)) - (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16)) - ) - (dma-bucket-insert-tag - (-> *display* frames (-> *display* on-screen) frame bucket-group) - (bucket-id subtitle) - s2-1 - (the-as (pointer dma-tag) a3-3) - ) - ) - ) - ) - (set! (-> gp-0 origin y) f30-2) - ) - ) + (set! (-> s1-1 base) (&+ (the-as pointer v1-127) 16))) + (dma-bucket-insert-tag (-> *display* frames (-> *display* on-screen) frame bucket-group) + (bucket-id subtitle) + s2-1 + (the-as (pointer dma-tag) a3-3))))) + (set! (-> gp-0 origin y) f30-2))) (set! sv-200 (+ sv-200 1)) (set! (-> *game-text-line* data 0) (the-as uint 0)) (set! sv-192 0) - (set! sv-212 (the-as symbol #f)) - ) + (set! sv-212 (the-as symbol #f))) (when (= sv-208 #t) (copy-charp<-charp (&-> *game-text-line* data sv-192) (-> *game-text-word* data)) (set! sv-192 (+ sv-192 sv-184)) (set! sv-184 0) - (set! sv-208 (the-as symbol #f)) - ) + (set! sv-208 (the-as symbol #f))) (when (nonzero? sv-176) (set! sv-140 (&-> sv-140 1)) - (set! sv-176 (the-as int (-> sv-140 0))) - ) - ) + (set! sv-176 (the-as int (-> sv-140 0))))) (set! (-> gp-0 mat vector 0 x) sv-112) (set! (-> gp-0 mat vector 1 y) sv-116) (set! (-> *video-parms* relative-x-scale) sv-120) (set! (-> *video-parms* relative-y-scale) sv-124) (set! (-> *video-parms* relative-x-scale-reciprical) sv-128) (set! (-> *video-parms* relative-y-scale-reciprical) sv-132) - (if (> sv-168 0) - (* sv-164 (the float sv-168)) - 0.0 - ) - ) - ) - ) - - + (if (> sv-168 0) (* sv-164 (the float sv-168)) 0.0)))) (defmethod subtitle-format ((obj subtitle) (keyframe subtitle-keyframe)) "check settings and format subtitle accordingly." - (cond ((= 0 (length (-> keyframe speaker))) ;; there's no speaker so who cares. - (string-format "~S" (-> keyframe string)) - ) + (string-format "~S" (-> keyframe string))) ((or (= #t (-> *pc-settings* subtitle-speaker?)) (and (= 'auto (-> *pc-settings* subtitle-speaker?)) (subtitle-flags? keyframe offscreen))) ;; there is a speaker and we do want it. - (string-format "~3L~S:~0L ~S" (-> keyframe speaker) (-> keyframe string)) - ) - (else - (string-format "~S" (-> keyframe string)) - ) - ) - - ) + (string-format "~3L~S:~0L ~S" (-> keyframe speaker) (-> keyframe string))) + (else (string-format "~S" (-> keyframe string))))) (defun subtitle? ((hinttitles? symbol)) "can a subtitle be displayed right now?" - (and (or (and (not hinttitles?) (-> *pc-settings* subtitles?)) ;; subtitles enabled + (and (or (and (not hinttitles?) (-> *pc-settings* subtitles?)) ;; subtitles enabled (and hinttitles? (-> *pc-settings* hinttitles?))) - (or *debug-segment* (= *master-mode* 'game)) ;; current mode is game, OR we are just debugging + (or *debug-segment* (= *master-mode* 'game)) ;; current mode is game, OR we are just debugging (not *progress-process*) ;; no progress open - ) - ) + )) (defun subtitle-str-adjust ((pos int)) (if (< pos 0) -1 (the int (/ pos (/ 1024.0 60))))) - (defbehavior setup-subtitle-font subtitle () "setup the subtitle font." - ;; set font settings. (set! (-> self font origin x) (* (- 1.0 (-> *SUBTITLE-bank* width)) 256)) - (set! (-> self font origin y) (* (if (or (>= (-> *pc-settings* aspect-ratio) ASPECT_16X9) (not (movie?))) - (-> *SUBTITLE-bank* hint-height) - (-> *SUBTITLE-bank* height) - ) 224)) + (set! (-> self font origin y) + (* (if (or (>= (-> *pc-settings* aspect-ratio) ASPECT_16X9) (not (movie?))) + (-> *SUBTITLE-bank* hint-height) + (-> *SUBTITLE-bank* height)) + 224)) (set-width! (-> self font) (the int (* (-> *SUBTITLE-bank* width) 512))) (set-height! (-> self font) (the int (* (-> *SUBTITLE-bank* lines) 11))) - (set-scale! (-> self font) (-> *SUBTITLE-bank* scale)) - ) + (set-scale! (-> self font) (-> *SUBTITLE-bank* scale))) (defbehavior draw-subtitle subtitle () "draw the current subtitle using the current font." - (when (and (-> self want-subtitle) (subtitle? (-> self hint-subtitle?))) - ;; we got a valid subtitle! render it. - (hide-bottom-hud) - (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22) - (#when PC_SUBTITLE_DEBUG - (draw-debug-text-box (-> self font)) - ) - ) - ) - + ;; we got a valid subtitle! render it. + (hide-bottom-hud) + (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22) + (#when PC_SUBTITLE_DEBUG + (draw-debug-text-box (-> self font))))) (defstate subtitle-process (subtitle) - - :event (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) - (case msg - (('subtitle-start) - 0 - ) - (('debug) - (go subtitle-debug) - ) - ) - ) - - :code (behavior () - (loop - (suspend)) - ) - - :trans (behavior () - (load-level-subtitle-files 0) - ;; reset params - (set! (-> self want-subtitle) (the subtitle-keyframe #f)) - (set! (-> self hint-subtitle?) #f) - (set! (-> self spool-name) #f) - (set! (-> self cur-channel) (pc-subtitle-channel invalid)) - - ;; check what kind of subtitles are running - (cond - ((and (movie?) (-> *art-control* spool-lock) (-> *art-control* active-stream)) - ;; there's a cutscene happening and an active spool with a valid owner. - (set! (-> self spool-name) (-> *art-control* active-stream)) - (set! (-> self cur-channel) (pc-subtitle-channel movie)) - (with-proc ((handle->process (-> *art-control* spool-lock))) - (if *debug-segment* - (format *stdcon* "movie spool detected:~%~3L~A~0L~%current spool frame is ~3L~D~0L~%" - (-> *art-control* active-stream) (the int (ja-aframe-num 0))) - ) - ) - ) - (*hint-semaphore* - ;; there's a hint playing - (set! (-> self spool-name) (-> *hint-semaphore* 0 sound-to-play)) - (unless (-> self spool-name) - (set! (-> self spool-name) *level-hint-spool-name*)) - (set! (-> self text-id) (-> *hint-semaphore* 0 text-id-to-display)) - (set! (-> self cur-channel) (if (-> self spool-name) - (pc-subtitle-channel hint-named) - (pc-subtitle-channel hint))) - (if *debug-segment* - (format *stdcon* "hint detected!~%~3L~A~0L/~3L#x~X~0L~%current str pos is ~D (~3L~D~0L)~%" - (-> self spool-name) (-> self text-id) - (current-str-pos (-> *hint-semaphore* 0 sound-id)) - (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id)))) - ) - ) - ) - - ;; do subtitles - - ;; intro first time notice (if subtitles are disabled) - (when (and (= (pc-subtitle-channel movie) (-> self cur-channel)) - (!= (-> self old-spool-name) (-> self spool-name)) - (string= (-> self spool-name) "sage-intro-sequence-a")) - (set-state-time) - (set! (-> self notice-id) (text-id subtitle-hint)) - ) - - ;; get a subtitle info that matches our current status - (let ((keyframe (the subtitle-keyframe #f))) - (when *subtitle-text* - (case (-> self cur-channel) - (((pc-subtitle-channel movie)) - ;; cutscenes. get our cutscene. - (set! (-> self hint-subtitle?) #f) - (awhen (get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name)) - - ;; during a cutscene, check if user toggled subtitles - (when (and (= 'game *master-mode*) - (cpad-pressed? 0 square)) - (not! (-> *pc-settings* subtitles?)) - (set-state-time) - (if (-> *pc-settings* subtitles?) - (set! (-> self notice-id) (text-id subtitle-enabled)) - (set! (-> self notice-id) (text-id subtitle-disabled)) - ) - ) - ;; find out position in the scene. - (let ((pos 0)) - ;; get frame num - (with-proc ((handle->process (-> *art-control* spool-lock))) - (set! pos (the int (ja-aframe-num 0))) - ) - ;; find closest keyframe - (dotimes (i (-> it length)) - (when (>= pos (-> it keyframes i frame)) - (set! keyframe (-> it keyframes i))) - ) - ) - ) - - ) - (((pc-subtitle-channel hint) (pc-subtitle-channel hint-named)) - ;; hint! find it. or else. - (set! (-> self hint-subtitle?) #t) - - (let ((scene (get-scene-by-text-id *subtitle-text* (pc-subtitle-channel hint) (-> self text-id)))) - (if (not scene) - (set! scene (get-scene-by-name *subtitle-text* (pc-subtitle-channel hint-named) (-> self spool-name)))) - - (when scene - (let ((pos (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))) - ;; find closest keyframe - (dotimes (i (-> scene length)) - (when (>= pos (-> scene keyframes i frame)) - (set! keyframe (-> scene keyframes i))) - ) - ) - )) - ) - )) - + :event + (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) + (case msg + (('subtitle-start) 0) + (('debug) (go subtitle-debug)))) + :code + (behavior () + (loop (suspend))) + :trans + (behavior () + (load-level-subtitle-files 0) + ;; reset params + (set! (-> self want-subtitle) (the subtitle-keyframe #f)) + (set! (-> self hint-subtitle?) #f) + (set! (-> self spool-name) #f) + (set! (-> self cur-channel) (pc-subtitle-channel invalid)) + ;; check what kind of subtitles are running + (cond + ((and (movie?) (-> *art-control* spool-lock) (-> *art-control* active-stream)) + ;; there's a cutscene happening and an active spool with a valid owner. + (set! (-> self spool-name) (-> *art-control* active-stream)) + (set! (-> self cur-channel) (pc-subtitle-channel movie)) + (with-proc ((handle->process (-> *art-control* spool-lock))) + (if *debug-segment* + (format *stdcon* + "movie spool detected:~%~3L~A~0L~%current spool frame is ~3L~D~0L~%" + (-> *art-control* active-stream) + (the int (ja-aframe-num 0)))))) + (*hint-semaphore* + ;; there's a hint playing + (set! (-> self spool-name) (-> *hint-semaphore* 0 sound-to-play)) + (unless (-> self spool-name) + (set! (-> self spool-name) *level-hint-spool-name*)) + (set! (-> self text-id) (-> *hint-semaphore* 0 text-id-to-display)) + (set! (-> self cur-channel) (if (-> self spool-name) (pc-subtitle-channel hint-named) (pc-subtitle-channel hint))) + (if *debug-segment* + (format *stdcon* + "hint detected!~%~3L~A~0L/~3L#x~X~0L~%current str pos is ~D (~3L~D~0L)~%" + (-> self spool-name) + (-> self text-id) + (current-str-pos (-> *hint-semaphore* 0 sound-id)) + (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))))) + ;; do subtitles + ;; intro first time notice (if subtitles are disabled) + (when (and (= (pc-subtitle-channel movie) (-> self cur-channel)) + (!= (-> self old-spool-name) (-> self spool-name)) + (string= (-> self spool-name) "sage-intro-sequence-a")) + (set-state-time) + (set! (-> self notice-id) (text-id subtitle-hint))) + ;; get a subtitle info that matches our current status + (let ((keyframe (the subtitle-keyframe #f))) + (when *subtitle-text* + (case (-> self cur-channel) + (((pc-subtitle-channel movie)) + ;; cutscenes. get our cutscene. + (set! (-> self hint-subtitle?) #f) + (awhen (get-scene-by-name *subtitle-text* (-> self cur-channel) (-> self spool-name)) + ;; during a cutscene, check if user toggled subtitles + (when (and (= 'game *master-mode*) (cpad-pressed? 0 square)) + (not! (-> *pc-settings* subtitles?)) + (set-state-time) + (if (-> *pc-settings* subtitles?) + (set! (-> self notice-id) (text-id subtitle-enabled)) + (set! (-> self notice-id) (text-id subtitle-disabled)))) + ;; find out position in the scene. + (let ((pos 0)) + ;; get frame num + (with-proc ((handle->process (-> *art-control* spool-lock))) (set! pos (the int (ja-aframe-num 0)))) + ;; find closest keyframe + (dotimes (i (-> it length)) + (when (>= pos (-> it keyframes i frame)) + (set! keyframe (-> it keyframes i))))))) + (((pc-subtitle-channel hint) (pc-subtitle-channel hint-named)) + ;; hint! find it. or else. + (set! (-> self hint-subtitle?) #t) + (let ((scene (get-scene-by-text-id *subtitle-text* (pc-subtitle-channel hint) (-> self text-id)))) + (if (not scene) (set! scene (get-scene-by-name *subtitle-text* (pc-subtitle-channel hint-named) (-> self spool-name)))) + (when scene + (let ((pos (subtitle-str-adjust (current-str-pos (-> *hint-semaphore* 0 sound-id))))) + ;; find closest keyframe + (dotimes (i (-> scene length)) + (when (>= pos (-> scene keyframes i frame)) + (set! keyframe (-> scene keyframes i)))))))))) ;; save whatever subtitle we got. (set! (-> self want-subtitle) keyframe)) - - ;; keep this for later - (set! (-> self old-spool-name) (-> self spool-name)) - - (when *debug-segment* + ;; keep this for later + (set! (-> self old-spool-name) (-> self spool-name)) + (when *debug-segment* (when (and (cpad-hold? 0 l3) (cpad-pressed? 0 start)) - (cpad-clear! 0 start) - (send-event self 'debug) - ) - - ) - - (none)) - - :post (behavior () - - (setup-subtitle-font) - (draw-subtitle) - - (cond - ((!= *master-mode* 'game) - ) - ((and (< (time-passed) (seconds 5)) - (= (-> self notice-id) (text-id subtitle-hint))) - (when (not (-> *pc-settings* subtitles?)) - (set-scale! (-> self font) (* (-> *SUBTITLE-bank* scale) 1.5)) - (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22) - ) - ) - ((and (= (-> self cur-channel) (pc-subtitle-channel movie)) - (< (time-passed) (seconds 2)) - (< (mod (time-passed) (seconds 1)) (seconds 0.8))) - (set! (-> self font origin y) (* (-> *SUBTITLE-bank* notice-height) 224)) - (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22) - ) - ) - - - 0) - - ) - + (cpad-clear! 0 start) + (send-event self 'debug))) + (none)) + :post + (behavior () + (setup-subtitle-font) + (draw-subtitle) + (cond + ((!= *master-mode* 'game)) + ((and (< (time-passed) (seconds 5)) (= (-> self notice-id) (text-id subtitle-hint))) + (when (not (-> *pc-settings* subtitles?)) + (set-scale! (-> self font) (* (-> *SUBTITLE-bank* scale) 1.5)) + (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22))) + ((and (= (-> self cur-channel) (pc-subtitle-channel movie)) + (< (time-passed) (seconds 2)) + (< (mod (time-passed) (seconds 1)) (seconds 0.8))) + (set! (-> self font origin y) (* (-> *SUBTITLE-bank* notice-height) 224)) + (print-game-subtitle (lookup-text! *common-text* (-> self notice-id) #f) (-> self font) #f 128 22))) + 0)) (defstate subtitle-debug (subtitle) - - - :event (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) + :event + (behavior ((from process) (argc int) (msg symbol) (block event-message-block)) (case msg - (('debug) - (go subtitle-process) - ) - ) - ) - - :enter (behavior () - (mem-copy! (the pointer (-> self bank-backup)) (the pointer *SUBTITLE-bank*) (size-of subtitle-bank)) - (set-master-mode 'pause) - ) - - :trans (behavior () - - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - - (draw-string-xy "~3LSUBTITLE DEBUG!~0L" buf 14 (+ PC_SUB_DBG_Y (* 0 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L3+Start: exit" buf 14 (+ PC_SUB_DBG_Y (* 1 8)) (font-color default) (font-flags shadow kerning)) + (('debug) (go subtitle-process)))) + :enter + (behavior () + (mem-copy! (the pointer (-> self bank-backup)) (the pointer *SUBTITLE-bank*) (size-of subtitle-bank)) + (set-master-mode 'pause)) + :trans + (behavior () + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-string-xy "~3LSUBTITLE DEBUG!~0L" + buf + 14 + (+ PC_SUB_DBG_Y (* 0 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "L3+Start: exit" buf 14 (+ PC_SUB_DBG_Y (* 1 8)) (font-color default) (font-flags shadow kerning)) (if (!= 'pause *master-mode*) - (draw-string-xy "Pause the game to continue" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning))) - - (when (= 'pause *master-mode*) - (cond - ((and (cpad-hold? 0 l3) (cpad-pressed? 0 x)) - (set! (-> self debug-lines?) #t) - ) - ((and (cpad-hold? 0 l3) (cpad-pressed? 0 triangle)) - (set! (-> self debug-lines?) #f) - ) - ) - (draw-string-xy "L3+X: debug lines" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L3+Triangle: debug box" buf 14 (+ PC_SUB_DBG_Y (* 3 8)) (font-color default) (font-flags shadow kerning)) - - (cond - ((or (not *subtitle-text*) (zero? (-> *subtitle-text* length))) - (draw-string-xy "NO SUBTITLES LOADED!!!" buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) - (load-level-subtitle-files 0) - (set! (-> self current-debug-scene) 0) - (set! (-> self current-debug-line) 0) - ) - ((-> self debug-lines?) - - (cond - ((cpad-pressed? 0 square) - (true! (-> self checking-lines?)) - ) - ((cpad-pressed? 0 left) - (if (> (-> self current-debug-line) 0) - (1-! (-> self current-debug-line))) - ) - ((cpad-pressed? 0 right) - (if (< (-> self current-debug-line) (1- (-> *subtitle-text* data (-> self current-debug-scene) length))) - (1+! (-> self current-debug-line))) - ) - ((or (cpad-pressed? 0 up) (and (cpad-hold? 0 l2) (cpad-hold? 0 up))) - (when (> (-> self current-debug-scene) 0) - (1-! (-> self current-debug-scene)) - (set! (-> self current-debug-line) 0)) - ) - ((or (cpad-pressed? 0 down) (and (cpad-hold? 0 l2) (cpad-hold? 0 down))) - (when (< (-> self current-debug-scene) (1- (-> *subtitle-text* length))) - (1+! (-> self current-debug-scene)) - (set! (-> self current-debug-line) 0)) - ) - ) - - (let ((cur-scene (-> *subtitle-text* data (-> self current-debug-scene)))) - (if (nonzero? (-> cur-scene length)) - (set! (-> self want-subtitle) (-> *subtitle-text* data (-> self current-debug-scene) keyframes (-> self current-debug-line))) - (set! (-> self want-subtitle) #f)) - - (draw-string-xy "Up/down: Pick scene" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "L2+Up/down: Pick scene (fast)" buf 14 (+ PC_SUB_DBG_Y (* 5 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Left/right: Pick line" buf 14 (+ PC_SUB_DBG_Y (* 6 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Square: Check all line heights" buf 14 (+ PC_SUB_DBG_Y (* 7 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy (string-format "Scene: ~D/~D" (1+ (-> self current-debug-scene)) (-> *subtitle-text* length)) - buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy (string-format "Line: ~D/~D" (1+ (-> self current-debug-line)) (-> cur-scene length)) - buf 14 (+ PC_SUB_DBG_Y (* 9 8)) (font-color default) (font-flags shadow kerning)) - - (case (-> cur-scene kind) - (((pc-subtitle-channel movie)) - (draw-string-xy (string-format "Current scene: ~3L~A~0L" (-> cur-scene name)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (((pc-subtitle-channel hint-named)) - (draw-string-xy (string-format "Current scene: ~3L~A~0L (~3L#x~X~0L)" (-> cur-scene name) (-> cur-scene id)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (((pc-subtitle-channel hint)) - (draw-string-xy (string-format "Current scene: ~3L#x~X~0L" (-> cur-scene id)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color default) (font-flags shadow kerning)) - ) - (else - (draw-string-xy (string-format "Unknown scene kind ~D" (-> cur-scene kind)) - buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) - ) - )) - - ) - - (else - (draw-string-xy "Square: reset" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Up/down: Move vertically" buf 14 (+ PC_SUB_DBG_Y (* 5 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Triangle+R1/L1: width" buf 14 (+ PC_SUB_DBG_Y (* 6 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Triangle+R2/L2: height" buf 14 (+ PC_SUB_DBG_Y (* 7 8)) (font-color default) (font-flags shadow kerning)) - (draw-string-xy "Circle+R1/L1: scale" buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) - - - (when (cpad-pressed? 0 square) - (mem-copy! (the pointer *SUBTITLE-bank*) (the pointer (-> self bank-backup)) (size-of subtitle-bank)) - ) - - (when (cpad-hold? 0 up) (+! (-> *SUBTITLE-bank* height) -0.01)) - (when (cpad-hold? 0 down) (+! (-> *SUBTITLE-bank* height) 0.01)) - + (draw-string-xy "Pause the game to continue" + buf + 14 + (+ PC_SUB_DBG_Y (* 2 8)) + (font-color default) + (font-flags shadow kerning))) + (when (= 'pause *master-mode*) (cond - ((cpad-hold? 0 triangle) - (when (cpad-hold? 0 r1) (-! (-> *SUBTITLE-bank* width) 0.01)) - (when (cpad-hold? 0 l1) (+! (-> *SUBTITLE-bank* width) 0.01)) - (when (cpad-hold? 0 r2) (-! (-> *SUBTITLE-bank* lines) 0.05)) - (when (cpad-hold? 0 l2) (+! (-> *SUBTITLE-bank* lines) 0.05)) - ) - ((cpad-hold? 0 circle) - (when (cpad-hold? 0 r1) (+! (-> *SUBTITLE-bank* scale) 0.01)) - (when (cpad-hold? 0 l1) (-! (-> *SUBTITLE-bank* scale) 0.01)) - ) - )) - ) - )) - + ((and (cpad-hold? 0 l3) (cpad-pressed? 0 x)) (set! (-> self debug-lines?) #t)) + ((and (cpad-hold? 0 l3) (cpad-pressed? 0 triangle)) (set! (-> self debug-lines?) #f))) + (draw-string-xy "L3+X: debug lines" buf 14 (+ PC_SUB_DBG_Y (* 2 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "L3+Triangle: debug box" + buf + 14 + (+ PC_SUB_DBG_Y (* 3 8)) + (font-color default) + (font-flags shadow kerning)) + (cond + ((or (not *subtitle-text*) (zero? (-> *subtitle-text* length))) + (draw-string-xy "NO SUBTITLES LOADED!!!" buf 14 (+ PC_SUB_DBG_Y (* 10 8)) (font-color red) (font-flags shadow kerning)) + (load-level-subtitle-files 0) + (set! (-> self current-debug-scene) 0) + (set! (-> self current-debug-line) 0)) + ((-> self debug-lines?) + (cond + ((cpad-pressed? 0 square) (true! (-> self checking-lines?))) + ((cpad-pressed? 0 left) (if (> (-> self current-debug-line) 0) (1-! (-> self current-debug-line)))) + ((cpad-pressed? 0 right) + (if (< (-> self current-debug-line) (1- (-> *subtitle-text* data (-> self current-debug-scene) length))) + (1+! (-> self current-debug-line)))) + ((or (cpad-pressed? 0 up) (and (cpad-hold? 0 l2) (cpad-hold? 0 up))) + (when (> (-> self current-debug-scene) 0) + (1-! (-> self current-debug-scene)) + (set! (-> self current-debug-line) 0))) + ((or (cpad-pressed? 0 down) (and (cpad-hold? 0 l2) (cpad-hold? 0 down))) + (when (< (-> self current-debug-scene) (1- (-> *subtitle-text* length))) + (1+! (-> self current-debug-scene)) + (set! (-> self current-debug-line) 0)))) + (let ((cur-scene (-> *subtitle-text* data (-> self current-debug-scene)))) + (if (nonzero? (-> cur-scene length)) + (set! (-> self want-subtitle) + (-> *subtitle-text* data (-> self current-debug-scene) keyframes (-> self current-debug-line))) + (set! (-> self want-subtitle) #f)) + (draw-string-xy "Up/down: Pick scene" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "L2+Up/down: Pick scene (fast)" + buf + 14 + (+ PC_SUB_DBG_Y (* 5 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Left/right: Pick line" + buf + 14 + (+ PC_SUB_DBG_Y (* 6 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Square: Check all line heights" + buf + 14 + (+ PC_SUB_DBG_Y (* 7 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy (string-format "Scene: ~D/~D" (1+ (-> self current-debug-scene)) (-> *subtitle-text* length)) + buf + 14 + (+ PC_SUB_DBG_Y (* 8 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy (string-format "Line: ~D/~D" (1+ (-> self current-debug-line)) (-> cur-scene length)) + buf + 14 + (+ PC_SUB_DBG_Y (* 9 8)) + (font-color default) + (font-flags shadow kerning)) + (case (-> cur-scene kind) + (((pc-subtitle-channel movie)) + (draw-string-xy (string-format "Current scene: ~3L~A~0L" (-> cur-scene name)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (((pc-subtitle-channel hint-named)) + (draw-string-xy (string-format "Current scene: ~3L~A~0L (~3L#x~X~0L)" (-> cur-scene name) (-> cur-scene id)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (((pc-subtitle-channel hint)) + (draw-string-xy (string-format "Current scene: ~3L#x~X~0L" (-> cur-scene id)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color default) + (font-flags shadow kerning))) + (else + (draw-string-xy (string-format "Unknown scene kind ~D" (-> cur-scene kind)) + buf + 14 + (+ PC_SUB_DBG_Y (* 10 8)) + (font-color red) + (font-flags shadow kerning)))))) + (else + (draw-string-xy "Square: reset" buf 14 (+ PC_SUB_DBG_Y (* 4 8)) (font-color default) (font-flags shadow kerning)) + (draw-string-xy "Up/down: Move vertically" + buf + 14 + (+ PC_SUB_DBG_Y (* 5 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Triangle+R1/L1: width" + buf + 14 + (+ PC_SUB_DBG_Y (* 6 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Triangle+R2/L2: height" + buf + 14 + (+ PC_SUB_DBG_Y (* 7 8)) + (font-color default) + (font-flags shadow kerning)) + (draw-string-xy "Circle+R1/L1: scale" buf 14 (+ PC_SUB_DBG_Y (* 8 8)) (font-color default) (font-flags shadow kerning)) + (when (cpad-pressed? 0 square) + (mem-copy! (the pointer *SUBTITLE-bank*) (the pointer (-> self bank-backup)) (size-of subtitle-bank))) + (when (cpad-hold? 0 up) + (+! (-> *SUBTITLE-bank* height) -0.01)) + (when (cpad-hold? 0 down) + (+! (-> *SUBTITLE-bank* height) 0.01)) + (cond + ((cpad-hold? 0 triangle) + (when (cpad-hold? 0 r1) + (-! (-> *SUBTITLE-bank* width) 0.01)) + (when (cpad-hold? 0 l1) + (+! (-> *SUBTITLE-bank* width) 0.01)) + (when (cpad-hold? 0 r2) + (-! (-> *SUBTITLE-bank* lines) 0.05)) + (when (cpad-hold? 0 l2) + (+! (-> *SUBTITLE-bank* lines) 0.05))) + ((cpad-hold? 0 circle) + (when (cpad-hold? 0 r1) + (+! (-> *SUBTITLE-bank* scale) 0.01)) + (when (cpad-hold? 0 l1) + (-! (-> *SUBTITLE-bank* scale) 0.01)))))))) (when (-> self checking-lines?) - (false! (-> self checking-lines?)) - (go subtitle-debug-checking-lines) - ) + (false! (-> self checking-lines?)) + (go subtitle-debug-checking-lines)) (when (and (cpad-hold? 0 l3) (cpad-pressed? 0 start)) - (cpad-clear! 0 start) - (send-event self 'debug) - ) - + (cpad-clear! 0 start) + (send-event self 'debug)) (none)) - - :code (-> subtitle-process code) - :post (behavior () + :code + (-> subtitle-process + code) + :post + (behavior () (setup-subtitle-font) (draw-subtitle) (draw-debug-text-box (-> self font)) - 0) - - ) + 0)) (defstate subtitle-debug-checking-lines (subtitle) - - :trans (behavior () (setup-subtitle-font) (none)) - :code (behavior () + :trans + (behavior () + (setup-subtitle-font) + (none)) + :code + (behavior () (protect ((-> *pc-settings* subtitle-speaker?)) - (set! (-> *pc-settings* subtitle-speaker?) #t) - (let ((lines-so-far 0) - (lines-this-time 0) - (bad-lines 0)) - (dotimes (i (length *subtitle-text*)) - (dotimes (ii (length (-> *subtitle-text* data i))) - (when (= lines-this-time PC_SUB_DBG_CHECK_GROUP_SIZE) + (set! (-> *pc-settings* subtitle-speaker?) #t) + (let ((lines-so-far 0) + (lines-this-time 0) + (bad-lines 0)) + (dotimes (i (length *subtitle-text*)) + (dotimes (ii (length (-> *subtitle-text* data i))) + (when (= lines-this-time PC_SUB_DBG_CHECK_GROUP_SIZE) (set! lines-this-time 0) (suspend)) - - (set! (-> self want-subtitle) (-> *subtitle-text* data i keyframes ii)) - (1+! lines-this-time) - (when (< (* (-> *SUBTITLE-bank* lines) 11) (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22)) - (format 0 "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) + (set! (-> self want-subtitle) (-> *subtitle-text* data i keyframes ii)) + (1+! lines-this-time) + (when (< (* (-> *SUBTITLE-bank* lines) 11) + (print-game-subtitle (subtitle-format self (-> self want-subtitle)) (-> self font) #f 128 22)) + (format 0 "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) (format #t "LINE ~D IN SCENE ~D IS TOO LARGE!~%" (1+ ii) (1+ i)) - (1+! bad-lines) - ) - ) - ) - (suspend) - (if (> bad-lines 0) - (format 0 "~D bad lines detected.~%" bad-lines) - (format 0 "no bad lines detected!~%" bad-lines)) - )) - (go subtitle-debug) - ) - :post (behavior () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug)) - (draw-string-xy "Checking for bad lines... See console for info" buf 14 PC_SUB_DBG_Y (font-color red) (font-flags shadow kerning)) - ) + (1+! bad-lines)))) + (suspend) + (if (> bad-lines 0) (format 0 "~D bad lines detected.~%" bad-lines) (format 0 "no bad lines detected!~%" bad-lines)))) + (go subtitle-debug)) + :post + (behavior () + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug)) + (draw-string-xy "Checking for bad lines... See console for info" + buf + 14 + PC_SUB_DBG_Y + (font-color red) + (font-flags shadow kerning))) (draw-debug-text-box (-> self font)) - 0) - - ) - - - + 0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; helper functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - (defmethod length ((obj subtitle-text-info)) "Get the length (number of subtitle scenes) in a subtitle-text-info." - (-> obj length) - ) + (-> obj length)) (defmethod length ((obj subtitle-text)) "Get the length (number of subtitle lines) in a subtitle-text." - (-> obj length) - ) - + (-> obj length)) (defbehavior subtitle-init-by-other subtitle () "external initializer for subtitle process" - - (set! (-> self font) (new 'process 'font-context *font-default-matrix* - 0 0 0.0 (font-color default) (font-flags shadow kerning middle large))) + (set! (-> self font) + (new 'process 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning middle large))) (set! (-> self debug-lines?) #t) (set! (-> self checking-lines?) #f) - (go subtitle-process) - ) - + (go subtitle-process)) (defun subtitle-stop () "kill the subtitle process" - (kill-by-type subtitle *display-pool*) (set! *subtitle* (the (pointer subtitle) #f))) (defun subtitle-start () "start the subtitle process" - (when *subtitle* - (subtitle-stop) - ) - - (set! *subtitle* (process-spawn subtitle :from *pc-dead-pool* :to *display-pool*)) - ) - + (subtitle-stop)) + (set! *subtitle* (process-spawn subtitle :from *pc-dead-pool* :to *display-pool*))) ;; start the subtitle process when this file loads. (subtitle-start) - - - diff --git a/goal_src/jak1/pc/util/display-font-color.gc b/goal_src/jak1/pc/util/display-font-color.gc index b9bc614e3e..2916b22dab 100644 --- a/goal_src/jak1/pc/util/display-font-color.gc +++ b/goal_src/jak1/pc/util/display-font-color.gc @@ -1,11 +1,9 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/gfx/hw/display-h.gc") (require "kernel/gstring.gc") (require "kernel/gstate.gc") - ;; This script creates a simple process that draws text demonstrating ;; all of GOAL's color constants to the on-screen debug output. @@ -21,18 +19,18 @@ ;; font-color is from font-h.gc (defun font-color->string ((val font-color)) "return the name of the font-color" - (enum->string font-color val) - ) + (enum->string font-color val)) (defun draw-all-font-colors () "draws all font color names onscreen" - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (dotimes (i 48) - (draw-string-xy (string-format "~2D ~S" i (font-color->string (the font-color i))) buf - (+ 4 (* (get-screen-x 0.5) (mod i 2))) (+ 8 (* 8 (/ i 2))) (the font-color i) (font-flags shadow))) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (dotimes (i 48) + (draw-string-xy (string-format "~2D ~S" i (font-color->string (the font-color i))) + buf + (+ 4 (* (get-screen-x 0.5) (mod i 2))) + (+ 8 (* 8 (/ i 2))) + (the font-color i) + (font-flags shadow))))) (defun start-display-text-colors () "Spawn an onscreen string displaying all possible colors" @@ -40,18 +38,12 @@ (format #t "Colors are already being displayed") ;; else (set! (get-color-display-handle) - (ppointer->handle (process-spawn-function process :name 'display-proc - (lambda :behavior process () - (loop - (draw-all-font-colors) - (suspend)) - ) - ))) - ) - ) - + (ppointer->handle (process-spawn-function process + :name 'display-proc + (lambda :behavior process () + (loop (draw-all-font-colors) + (suspend)))))))) (defun-debug stop-display-text-colors () "Kill the example text color display" - (kill-by-name 'display-proc *active-pool*) - ) + (kill-by-name 'display-proc *active-pool*)) diff --git a/goal_src/jak1/pc/util/font-encode-test.gc b/goal_src/jak1/pc/util/font-encode-test.gc index e3f4d3377b..3d43ddee8f 100644 --- a/goal_src/jak1/pc/util/font-encode-test.gc +++ b/goal_src/jak1/pc/util/font-encode-test.gc @@ -1,11 +1,8 @@ ;;-*-Lisp-*- (in-package goal) - (require "kernel/gstate.gc") (require "engine/ps2/pad.gc") - - ;; This file is used for debugging and testing the large font encoding. ;; This file should *not* be included as part of any packages, it should be manually loaded by the user. @@ -17,81 +14,61 @@ (ml "goal_src/jak1/pc/util/font-encode-test.gc") ;; build and load this file. |# - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconstant FONT_ENCODE_TEXT_LEFT 56) + (defconstant FONT_ENCODE_TEXT_Y 80) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (define *font-string* (new 'global 'string 64 (the string #f))) + (define *font-string-ex* (the string #f)) + (define *font-string-val* #x96) (defun-debug font-encode-test-start () "start the encode test proc" - (unless (process-by-name 'font-encode *active-pool*) - (process-spawn-function process :name 'font-encode - (lambda :behavior process () - (let ((fnt (new 'stack 'font-context *font-default-matrix* FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y 0.0 - (font-color red) (font-flags shadow kerning large middle))) - ) - - (set-width! fnt 400) - (set-height! fnt 100) - - (loop - (suspend) - - (if (or (cpad-pressed? 0 left) (cpad-hold? 0 l1)) - (-! *font-string-val* 1)) - (if (or (cpad-pressed? 0 right) (cpad-hold? 0 r1)) - (+! *font-string-val* 1)) - (minmax! *font-string-val* 1 #x1ff) - - (clear *font-string*) - (cond - ((>= *font-string-val* #x100) - (set! (-> *font-string* data 0) (/ *font-string-val* 256)) - (set! (-> *font-string* data 1) (logand *font-string-val* #xff)) - (set! (-> *font-string* data 2) 0) - ) - (else - (set! (-> *font-string* data 0) (logand *font-string-val* #xff)) - (set! (-> *font-string* data 1) 0) - ) - ) - - (set-origin! fnt FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y) - (set-flags! fnt (font-flags shadow kerning large middle)) - (print-game-text *font-string* fnt #f 128 24) - (when *font-string-ex* - (set-origin! fnt FONT_ENCODE_TEXT_LEFT (+ FONT_ENCODE_TEXT_Y 32)) - (print-game-text *font-string-ex* fnt #f 128 24)) - (set-origin! fnt FONT_ENCODE_TEXT_LEFT (- FONT_ENCODE_TEXT_Y 16)) - (set-flags! fnt (font-flags shadow kerning middle)) - (print-game-text (string-format "#x~x" *font-string-val*) fnt #f 128 12) - ) - ) - - ) - ) - ) - ) + (process-spawn-function process + :name 'font-encode + (lambda :behavior process () + (let ((fnt (new 'stack + 'font-context + *font-default-matrix* + FONT_ENCODE_TEXT_LEFT + FONT_ENCODE_TEXT_Y + 0.0 + (font-color red) + (font-flags shadow kerning large middle)))) + (set-width! fnt 400) + (set-height! fnt 100) + (loop (suspend) + (if (or (cpad-pressed? 0 left) (cpad-hold? 0 l1)) (-! *font-string-val* 1)) + (if (or (cpad-pressed? 0 right) (cpad-hold? 0 r1)) (+! *font-string-val* 1)) + (minmax! *font-string-val* 1 #x1ff) + (clear *font-string*) + (cond + ((>= *font-string-val* #x100) + (set! (-> *font-string* data 0) (/ *font-string-val* 256)) + (set! (-> *font-string* data 1) (logand *font-string-val* #xff)) + (set! (-> *font-string* data 2) 0)) + (else (set! (-> *font-string* data 0) (logand *font-string-val* #xff)) (set! (-> *font-string* data 1) 0))) + (set-origin! fnt FONT_ENCODE_TEXT_LEFT FONT_ENCODE_TEXT_Y) + (set-flags! fnt (font-flags shadow kerning large middle)) + (print-game-text *font-string* fnt #f 128 24) + (when *font-string-ex* + (set-origin! fnt FONT_ENCODE_TEXT_LEFT (+ FONT_ENCODE_TEXT_Y 32)) + (print-game-text *font-string-ex* fnt #f 128 24)) + (set-origin! fnt FONT_ENCODE_TEXT_LEFT (- FONT_ENCODE_TEXT_Y 16)) + (set-flags! fnt (font-flags shadow kerning middle)) + (print-game-text (string-format "#x~x" *font-string-val*) fnt #f 128 12))))))) (defun-debug font-encode-test-stop () "stop the encode test proc" - - (kill-by-name 'font-encode *active-pool*) - ) - - + (kill-by-name 'font-encode *active-pool*)) diff --git a/goal_src/jak1/pc/util/hash.gc b/goal_src/jak1/pc/util/hash.gc index 1381f35468..376e8f0dda 100644 --- a/goal_src/jak1/pc/util/hash.gc +++ b/goal_src/jak1/pc/util/hash.gc @@ -3,17 +3,17 @@ ;;;;;;;;;;;;;;;;;;;;;; (defconstant CRC_POLY #x04c11db7) + ;; Could predefine this and only allocate memory when init is called (define *crc-table* (new 'global 'boxed-array uint32 #x100)) + (defun crc32-init () "Initialize the CRC32 table" (dotimes (i #x100) (let ((n (the uint32 (shl i 24)))) (dotimes (j 8) (set! n (if (!= 0 (logand n #x80000000)) (logxor (shl n 1) CRC_POLY) (shl n 1)))) - (set! (-> *crc-table* i) n)) - ) - ) + (set! (-> *crc-table* i) n)))) (defun crc32 ((data (pointer uint8)) (size int)) "Take the CRC32 hash of some data" @@ -21,16 +21,10 @@ (dotimes (i size) (set! crc (logxor (-> *crc-table* (shr crc 24)) (logior (shl crc 8) (-> data 0)))) (&+! data 1)) - crc) - ) + crc)) (defmacro murmur-32-scramble (k-in) - `(let ((k ,k-in)) - (*! k #xcc9e2d51) - (set! k (logior (shl k 15) (shr k 17))) - (*! k #x1b873593) - k) - ) + `(let ((k ,k-in)) (*! k #xcc9e2d51) (set! k (logior (shl k 15) (shr k 17))) (*! k #x1b873593) k)) (defun murmur3-32 ((key (pointer uint8)) (len int) (seed uint)) "Take the murmur3-32 hash of some data. The seed allows for a different hash set given the same input. @@ -39,33 +33,27 @@ (k (the uint32 0)) (i (shr len 2)) ;; Initialized to number of remaining 4-byte chunks ) - ;; Read each 4-byte chunk - (while (!= i 0) (1-! i) + (while (!= i 0) + (1-! i) ;; Copy this 4 byte chunk into a 32-bit int (logior! k (shl (-> key 3) 24)) (logior! k (shl (-> key 2) 16)) - (logior! k (shl (-> key 1) 8)) + (logior! k (shl (-> key 1) 8)) (logior! k (-> key)) - ;; Move our data forward to the next 4-byte chunk (&+! key (the uint (size-of uint32))) - ;; Scramble and shift (logxor! h (murmur-32-scramble k)) (set! h (logior (shl h 13) (shr h 19))) - (set! h (+ (* h 5) #xe6546b64)) - ) - + (set! h (+ (* h 5) #xe6546b64))) ;; Read the rest (set! k (the uint32 0)) (set! i (logand len 3)) (while (!= i 0) (set! k (shl k 8)) (logior! k (-> key (- i 1))) - (1-! i) - ) - + (1-! i)) ;; Final scramble and shift (logxor! h (murmur-32-scramble k)) (logxor! h len) @@ -74,8 +62,7 @@ (logxor! h (shr h 13)) (*! h #xc2b2ae35) (logxor! h (shr h 16)) - h) - ) + h)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Hash Table Implementation @@ -91,22 +78,17 @@ (defmacro hash-truncate (value &key (size 8) &key (seed (the uint 62))) "Take the murmur3-32 hash and truncate. Intended to keep the backing array of a hash table small. Note that this increases the chance of collision." - `(logand (murmur3-32 ,value ,size ,seed) #xFF) - ) + `(logand (murmur3-32 ,value ,size ,seed) #xFF)) (defmacro new-hash-table (&key (type basic) &key (size 66)) "This is just an alias for a boxed array of the given type with a default type and size" - `(new 'global 'boxed-array ,type ,size) - ) + `(new 'global 'boxed-array ,type ,size)) (defmacro get-hash (table key &key (key-size 8) &key (seed (the uint 62))) - `(-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) - ) + `(-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed))) (defmacro set-hash! (table key &key (key-size 8) &key (seed (the uint 62)) value) - `(set! (-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) ,value) - ) - + `(set! (-> ,table (hash-truncate (-> ,key data) :size ,key-size :seed ,seed)) ,value)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -120,7 +102,6 @@ ;; ) ;;;;;;;;;;;;;;;;;; - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Jump Table Implementation ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -135,23 +116,19 @@ `(begin (let ((highest-value -9999)) ,@(apply (lambda (case) - `(when (>= ,(car case) highest-value) - (when (= ,(car case) highest-value) - (format #t "[WARNING] Duplicate case in jump-table!\n") - ) - (set! highest-value ,(car case)))) - cases) + `(when (>= ,(car case) highest-value) + (when (= ,(car case) highest-value) + (format #t "[WARNING] Duplicate case in jump-table!\n")) + (set! highest-value ,(car case)))) + cases) (define ,table (new 'global 'boxed-array function highest-value)) ,@(apply (lambda (case) - `(set! (-> ,table ,(car case)) (lambda (,@(cadr case)) ,@(cddr case)))) - cases)) - ) - ) + `(set! (-> ,table ,(car case)) (lambda (,@(cadr case)) ,@(cddr case)))) + cases)))) (defmacro jump-to (table key &key (typespec ()) &rest args) "Calls the lambda stored in the jump-table at the given key with the provided arguments" - `((the (function ,@typespec none) (-> ,table ,key)) ,@args) - ) + `((the (function ,@typespec none) (-> ,table ,key)) ,@args)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -195,32 +172,22 @@ `(begin (let ((highest-value -9999)) ,@(apply (lambda (case) - `(let ((hash (the int (hash-truncate (-> (symbol->string ,(car case)) data)))) - ) - (when (>= hash highest-value) - (when (= hash highest-value) - (format #t "[WARNING] Hash collision generating jump table!\n")) - (set! highest-value hash) - ) - ) - ) - cases) + `(let ((hash (the int (hash-truncate (-> (symbol->string ,(car case)) data))))) + (when (>= hash highest-value) + (when (= hash highest-value) + (format #t "[WARNING] Hash collision generating jump table!\n")) + (set! highest-value hash)))) + cases) (define ,table (new 'global 'boxed-array function highest-value)) ,@(apply (lambda (case) - ;; Converts the symbol to a string by adding the string offset and then - `(set! (-> ,table (hash-truncate (-> (symbol->string ,(car case)) data))) - (lambda (,@(cadr case)) ,@(cddr case))) - ) - cases) - ) - ) - ) + ;; Converts the symbol to a string by adding the string offset and then + `(set! (-> ,table (hash-truncate (-> (symbol->string ,(car case)) data))) (lambda (,@(cadr case)) ,@(cddr case)))) + cases)))) (defmacro jump-to-sym (table key &key (typespec ()) &rest args) "Calls the lambda stored in the jump-table at the hash of the given key with provided typespec and arguments" - `((the (function ,@typespec none) (-> ,table (hash-truncate (-> (symbol->string ,key) data)))) ,@args) - ) + `((the (function ,@typespec none) (-> ,table (hash-truncate (-> (symbol->string ,key) data)))) ,@args)) ;;;;;;;;;;;;;;;;;; ;; Example usage @@ -237,5 +204,3 @@ ;; prints "floppin, value: 32" ;; (jump-to-sym *test-symbol-table* 'flop :typespec (int) 32) ;;;;;;;;;;;;;;;;;; - - diff --git a/goal_src/jak1/pc/util/knuth-rand.gc b/goal_src/jak1/pc/util/knuth-rand.gc index a886b5b9ef..a5e245e215 100644 --- a/goal_src/jak1/pc/util/knuth-rand.gc +++ b/goal_src/jak1/pc/util/knuth-rand.gc @@ -1,21 +1,17 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/game/settings-h.gc") - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; mimicking Java's util.Random https://docs.oracle.com/javase/8/docs/api/java/util/Random.html ;;;; This is a linear congruential pseudorandom number generator, as defined by D. H. Lehmer ;;;; and described by Donald E. Knuth in The Art of Computer Programming, Volume 3: Seminumerical Algorithms, section 3.2.1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - (defun scf-time-to-int64 () "pack system time into 64-bits for randomization purposes." (let ((date (new 'stack-no-clear 'scf-time))) (scf-get-time date) - (logior (the int (-> date stat)) (shl (-> date second) 8) (shl (-> date minute) 16) @@ -23,51 +19,39 @@ (shl (-> date week) 32) (shl (-> date day) 40) (shl (-> date month) 48) - (shl (-> date year) 56)) - ) - ) - + (shl (-> date year) 56)))) (deftype knuth-rand-state (structure) - ((seed int64)) - ) + ((seed int64))) (define *knuth-rand-state* (new 'static 'knuth-rand-state)) - (defun knuth-rand-init ((seed int)) - (set! (-> *knuth-rand-state* seed) seed) - ) + (set! (-> *knuth-rand-state* seed) seed)) (defun knuth-rand-advance-seed () ;; seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1) - (set! (-> *knuth-rand-state* seed) (logand (+ (imul64 (-> *knuth-rand-state* seed) #x5deece66d) #xb) (- (shl 1 48) 1))) - ) + (set! (-> *knuth-rand-state* seed) (logand (+ (imul64 (-> *knuth-rand-state* seed) #x5deece66d) #xb) (- (shl 1 48) 1)))) (defun knuth-rand-next ((bits int)) (knuth-rand-advance-seed) ;; return (int)(seed >>> (48 - bits)) - (shr (-> *knuth-rand-state* seed) (- 48 bits)) - ) + (shr (-> *knuth-rand-state* seed) (- 48 bits))) (defun knuth-rand-next-int () (knuth-rand-advance-seed) - (-> *knuth-rand-state* seed) - ) + (-> *knuth-rand-state* seed)) ;; returns a pseudorandom int in the range [min, max) (defun knuth-rand-int-range ((min int) (max int)) (let* ((bound (- max min)) - ;; int bits, val; + ;; int bits, val; (bits 0) (val 0)) - ;; if ((bound & -bound) == bound) // i.e., bound is a power of 2 (if (= (logand bound (- bound)) bound) ;; return (int)((bound * (long)next(31)) >> 31); - (return (+ min (sar (imul64 bound (knuth-rand-next 31)) 31))) - ) - + (return (+ min (sar (imul64 bound (knuth-rand-next 31)) 31)))) ;; do { ;; bits = next(31); ;; val = bits % bound; @@ -75,16 +59,12 @@ ;; return val; (until (not (< (+ bits (- val) bound -1) 0)) (set! bits (knuth-rand-next 31)) - (set! val (mod bits bound)) - ) - (+ min val)) - ) + (set! val (mod bits bound))) + (+ min val))) ;; returns a pseudorandom float in the range [0, 1) (defun knuth-rand-next-float () ;; return next(24) / ((float)(1 << 24)); - (/ (the float (knuth-rand-next 24)) (shl 1 24)) - ) + (/ (the float (knuth-rand-next 24)) (shl 1 24))) (knuth-rand-init (scf-time-to-int64)) - diff --git a/goal_src/jak1/pc/util/pc-anim-util.gc b/goal_src/jak1/pc/util/pc-anim-util.gc index 0e747d6aa9..ca33612b4c 100644 --- a/goal_src/jak1/pc/util/pc-anim-util.gc +++ b/goal_src/jak1/pc/util/pc-anim-util.gc @@ -1,21 +1,20 @@ ;;-*-Lisp-*- (in-package goal) - (require "pc/pckernel-impl.gc") (require "engine/common-obs/process-drawable-h.gc") (require "engine/anim/mspace-h.gc") (require "engine/target/target-h.gc") - #| A random assortment of functions used for manipulating various animations and skeletons in the pc port. This is used for funny cheat codes and the like. |# - (define *cheat-big-head-scale* (new 'static 'vector :x 1.5 :y 1.5 :z 1.5 :w 1.0)) + (define *cheat-huge-head-scale* (new 'static 'vector :x 2.5 :y 2.5 :z 2.5 :w 1.0)) + (define *cheat-small-head-scale* (new 'static 'vector :x 0.667 :y 0.667 :z 0.667 :w 1.0)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -32,97 +31,76 @@ This is used for funny cheat codes and the like. (set! (-> out vector 1 data 1) value) (set! (-> out vector 2 data 2) value) (set! (-> out vector 3 data 3) value) - out - ) + out) (defun matrix*!-bone-callback ((the-bone bone) (is-parent? symbol) (mtx matrix) a) "apply a transform matrix to a bone." - (matrix*! (-> the-bone transform) (-> the-bone transform) mtx) - ) + (matrix*! (-> the-bone transform) (-> the-bone transform) mtx)) -(defun cspace-map-joints ((proc process-drawable) (cspace-idx int) (include-parent? symbol) (func (function bone symbol object object object)) p0 p1) +(defun cspace-map-joints ((proc process-drawable) + (cspace-idx int) + (include-parent? symbol) + (func (function bone symbol object object object)) + p0 + p1) "run func on all joints' bones that are children of cspace-idx if include-parent? = #t then also apply to that joint." ;; iterate through all cspaces in the process (let ((parent-joint (-> proc node-list data cspace-idx joint))) - (dotimes (i (-> proc node-list length)) - ;; see if it's a joint and keep that for later - (awhen (-> proc node-list data i joint) - (cond - ;; run func if we ARE the parent! - ((= it parent-joint) - ;;(format #t "running map on parent ~A~%" it) - (if include-parent? - (func (-> proc node-list data i bone) #t p0 p1))) - ;; otherwise go up our parents until we hit what we want (yay!) or nothing (nay...) - (else - (let ((cur-parent it)) - (until (or (not cur-parent) (= cur-parent parent-joint)) - (set! cur-parent (-> cur-parent parent)) - ) - (when (= cur-parent parent-joint) + (dotimes (i (-> proc node-list length)) + ;; see if it's a joint and keep that for later + (awhen (-> proc node-list data i joint) + (cond + ;; run func if we ARE the parent! + ((= it parent-joint) + ;;(format #t "running map on parent ~A~%" it) + (if include-parent? (func (-> proc node-list data i bone) #t p0 p1))) + ;; otherwise go up our parents until we hit what we want (yay!) or nothing (nay...) + (else + (let ((cur-parent it)) + (until (or (not cur-parent) (= cur-parent parent-joint)) + (set! cur-parent (-> cur-parent parent))) + (when (= cur-parent parent-joint) ;;(format #t "running map on child ~A~%" it) - (func (-> proc node-list data i bone) #f p0 p1)) - ) - ) - ) - ) - )) - ) + (func (-> proc node-list data i bone) #f p0 p1))))))))) (defun scale-joints ((obj process-drawable) (cspace-idx int) (scale-children? symbol) (scale vector)) "scale a joint (cspace-idx) in an actor. if scale-children? = #t, also scales all child joints." - (if (= cspace-idx -1) - (return #f)) + (if (= cspace-idx -1) (return #f)) (let* ((parent-mtx (-> obj node-list data cspace-idx bone transform)) (unscale-q (matrix-diagonal! (new-stack-matrix0) (/ 1.0 (-> parent-mtx data 15)))) (scale-q (matrix-diagonal! (new-stack-matrix0) (-> parent-mtx data 15))) - (scale-mat (matrix-scale! (new-stack-matrix0) scale)) (parent-fixed (matrix*! (new-stack-matrix0) parent-mtx unscale-q)) - (inv-parent (matrix-4x4-inverse! (new-stack-matrix0) parent-fixed)) ;; bone * inverse(parent * unscale-q) * scale * parent * scale-q - (matrix1 (matrix*! (new-stack-matrix0) inv-parent scale-mat)) (matrix2 (matrix*! (new-stack-matrix0) matrix1 parent-mtx)) - (matrix3 (matrix*! (new-stack-matrix0) matrix2 scale-q)) - ) + (matrix3 (matrix*! (new-stack-matrix0) matrix2 scale-q))) (if scale-children? - (cspace-map-joints obj cspace-idx #t matrix*!-bone-callback matrix3 scale) - (matrix*!-bone-callback (-> obj node-list data cspace-idx bone) #t matrix3 scale) - ) - ) - ) + (cspace-map-joints obj cspace-idx #t matrix*!-bone-callback matrix3 scale) + (matrix*!-bone-callback (-> obj node-list data cspace-idx bone) #t matrix3 scale)))) (defun target-joint-callback-pc ((obj target)) "custom animation callback for *target*" - (let ((neckA-idx (cspace-index-by-name obj "neckA"))) - (cond - ((pc-cheats? (-> *pc-settings* cheats) small-head) (scale-joints obj neckA-idx #t *cheat-small-head-scale*)) - ((pc-cheats? (-> *pc-settings* cheats) huge-head) (scale-joints obj neckA-idx #t *cheat-huge-head-scale*)) - ((pc-cheats? (-> *pc-settings* cheats) big-head) (scale-joints obj neckA-idx #t *cheat-big-head-scale*)) - )) + (cond + ((pc-cheats? (-> *pc-settings* cheats) small-head) (scale-joints obj neckA-idx #t *cheat-small-head-scale*)) + ((pc-cheats? (-> *pc-settings* cheats) huge-head) (scale-joints obj neckA-idx #t *cheat-huge-head-scale*)) + ((pc-cheats? (-> *pc-settings* cheats) big-head) (scale-joints obj neckA-idx #t *cheat-big-head-scale*)))) (when (and (pc-cheats? (-> *pc-settings* cheats) big-fist) (!= 'target-edge-grab (-> obj next-state name))) - (scale-joints obj (cspace-index-by-name obj "sk_lhand") #t *cheat-huge-head-scale*) - (scale-joints obj (cspace-index-by-name obj "sk_rhand") #t *cheat-huge-head-scale*) - ) - 0 (none) - ) + (scale-joints obj (cspace-index-by-name obj "sk_lhand") #t *cheat-huge-head-scale*) + (scale-joints obj (cspace-index-by-name obj "sk_rhand") #t *cheat-huge-head-scale*)) + 0 + (none)) (defun process-drawable-joint-callback-pc ((obj process-drawable)) "custom animation callback for any process drawable" - (when (pc-cheats? (-> *pc-settings* cheats) oh-my-goodness) - ;; don't ask. - (scale-joints obj (cspace-index-by-name obj "lbood") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) - (scale-joints obj (cspace-index-by-name obj "rboob") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) - ) + ;; don't ask. + (scale-joints obj (cspace-index-by-name obj "lbood") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0)) + (scale-joints obj (cspace-index-by-name obj "rboob") #t (new 'static 'vector :x 2.0 :y 2.0 :z 2.0 :w 1.0))) (when (pc-cheats? (-> *pc-settings* cheats) big-head-npc) - (scale-joints obj (cspace-index-by-name obj "head") #t *cheat-big-head-scale*) - ) - 0 (none) - ) - - + (scale-joints obj (cspace-index-by-name obj "head") #t *cheat-big-head-scale*)) + 0 + (none)) diff --git a/goal_src/jak1/pc/util/pc-pad-utils.gc b/goal_src/jak1/pc/util/pc-pad-utils.gc index 0b5c41eb74..3f8b8981e4 100644 --- a/goal_src/jak1/pc/util/pc-pad-utils.gc +++ b/goal_src/jak1/pc/util/pc-pad-utils.gc @@ -1,13 +1,10 @@ ;;-*-Lisp-*- (in-package goal) - (require "engine/dma/dma-buffer.gc") (require "kernel/gstring.gc") (require "kernel/gstate.gc") (require "engine/util/types-h.gc") - - ;; This file is used for debugging and testing the PC port pad (controller/input) implementation. ;; It contains a function for creating a process for debugging cpad inputs and a function to kill that process. ;; It also contains a function to start a process to map keys to cpad inputs (X, circle, etc.), and another one to kill it. @@ -21,296 +18,241 @@ (ml "goal_src/jak1/pc/util/pc-pad-utils.gc") ;; build and load this file. |# - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; a structure to hold the handles used in this file (deftype pc-pad-proc-list (structure) - ((show handle) - (input handle) - ) - ) + ((show handle) + (input handle))) (define *pc-pad-proc-list* (new 'static 'pc-pad-proc-list)) + (set! (-> *pc-pad-proc-list* show) INVALID_HANDLE) + (set! (-> *pc-pad-proc-list* input) INVALID_HANDLE) ;; a pc pad process (deftype pc-pad-proc (process) - ((state-time time-frame) - (input-index uint64) - (pad-idx int64) - ) + ((state-time time-frame) + (input-index uint64) + (pad-idx int64)) :heap-base #x20 (:states - pc-pi-mapping-button - ) - ) + pc-pi-mapping-button)) (define *pc-pad-button-names* - (new 'static 'array string 16 - "SELECT" - "L3" - "R3" - "START" - - "UP" - "RIGHT" - "DOWN" - "LEFT" - - "L2" - "R2" - "L1" - "R1" - - "TRIANGLE" - "CIRCLE" - "X" - "SQUARE" - )) + (new 'static + 'array + string + 16 + "SELECT" + "L3" + "R3" + "START" + "UP" + "RIGHT" + "DOWN" + "LEFT" + "L2" + "R2" + "L1" + "R1" + "TRIANGLE" + "CIRCLE" + "X" + "SQUARE")) ;; there is a matching enum in newpad.h (defenum pc-pad-input-status (disabled) (enabled) - (canceled) - ) - - + (canceled)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; constants ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defconstant PC_PAD_INPUT_NOTICE_TIME (seconds 1.5)) + (defconstant PC_PAD_TOP_Y 40) - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun-debug pc-pad-show-start () "Start the PC port pad debug display" - (if (not (handle->process (-> *pc-pad-proc-list* show))) - (let ((procp - (process-spawn-function pc-pad-proc :name 'pc-pad-show - (lambda :behavior pc-pad-proc () - (stack-size-set! (-> self main-thread) 512) - (format #t "Reference keycode constants at https://www.glfw.org/docs/latest/group__keys.html~%") - (loop - (dotimes (_ 9) - (format *stdcon* "~%") - ) - (dotimes (ii 2) - (format *stdcon* " ~0k~3Lcpad ~D~0L~%" ii) - (dotimes (j 8) - (dotimes (i 2) - (format *stdcon* " ") - (let* ( - (btn-idx (+ i(* j 2))) - (btn-name (-> *pc-pad-button-names* btn-idx)) - (keycode (pc-pad-get-mapped-button ii btn-idx)) - ) - (format *stdcon* "~8L~S: " btn-name) - ;; longest button string is TRIANGLE, which is 8 characters in length - ;; but only shows up in the left column. CIRCLE and SQUARE are longest in the right with 6 - (dotimes (_ (- - (cond ((= i 0) 8) ((= i 1) 6)) - (length btn-name))) - (format *stdcon* " ") - ) - (format *stdcon* "~0L~D" keycode) - (when (< keycode 100) - (format *stdcon* " ") - (if (< keycode 10) - (format *stdcon* " ") - ) - ) - ) - ) - (format *stdcon* "~%") - ) - ) - (suspend) - ) - ) - ) - )) - (set! (-> *pc-pad-proc-list* show) (ppointer->handle procp)) - ) - - (format #t "That process is already running. :-)~%") - ) - ) + (let ((procp (process-spawn-function pc-pad-proc + :name 'pc-pad-show + (lambda :behavior pc-pad-proc () + (stack-size-set! (-> self main-thread) 512) + (format #t "Reference keycode constants at https://www.glfw.org/docs/latest/group__keys.html~%") + (loop (dotimes (_ 9) + (format *stdcon* "~%")) + (dotimes (ii 2) + (format *stdcon* " ~0k~3Lcpad ~D~0L~%" ii) + (dotimes (j 8) + (dotimes (i 2) + (format *stdcon* " ") + (let* ((btn-idx (+ i (* j 2))) + (btn-name (-> *pc-pad-button-names* btn-idx)) + (keycode (pc-pad-get-mapped-button ii btn-idx))) + (format *stdcon* "~8L~S: " btn-name) + ;; longest button string is TRIANGLE, which is 8 characters in length + ;; but only shows up in the left column. CIRCLE and SQUARE are longest in the right with 6 + (dotimes (_ (- (cond + ((= i 0) 8) + ((= i 1) 6)) + (length btn-name))) + (format *stdcon* " ")) + (format *stdcon* "~0L~D" keycode) + (when (< keycode 100) + (format *stdcon* " ") + (if (< keycode 10) (format *stdcon* " "))))) + (format *stdcon* "~%"))) + (suspend)))))) + (set! (-> *pc-pad-proc-list* show) (ppointer->handle procp))) + (format #t "That process is already running. :-)~%"))) (defun-debug pc-pad-show-stop () "Stop the PC port pad debug display" - - (kill-by-name 'pc-pad-show *active-pool*) - ) + (kill-by-name 'pc-pad-show *active-pool*)) (defun-debug pc-pad-input-start ((pad-idx int)) "Start the PC port pad debug key mapping" - (if (not (handle->process (-> *pc-pad-proc-list* input))) - (let ((procp - (process-spawn pc-pad-proc :name 'pc-pad-input - :init (lambda :behavior pc-pad-proc ((pad-idx int)) - (set! (-> self pad-idx) pad-idx) - (pc-pad-input-mode-set #t) - (pc-pad-input-pad-set (-> self pad-idx)) - (go pc-pi-mapping-button) - ) - pad-idx - ) - )) - (set! (-> *pc-pad-proc-list* input) (ppointer->handle procp)) - ) - - (format #t "That process is already running. :-)~%") - ) - ) + (let ((procp (process-spawn pc-pad-proc + :name 'pc-pad-input + :init + (lambda :behavior pc-pad-proc ((pad-idx int)) + (set! (-> self pad-idx) pad-idx) + (pc-pad-input-mode-set #t) + (pc-pad-input-pad-set (-> self pad-idx)) + (go pc-pi-mapping-button)) + pad-idx))) + (set! (-> *pc-pad-proc-list* input) (ppointer->handle procp))) + (format #t "That process is already running. :-)~%"))) (defun-debug pc-pad-input-stop () "Stop the PC port pad debug key mapping" - (kill-by-name 'pc-pad-input *active-pool*) - (pc-pad-input-mode-set 'canceled) - ) - - + (pc-pad-input-mode-set 'canceled)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; behaviors ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defbehavior pc-pi-post pc-pad-proc () - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPING PAD ~D" (-> self pad-idx)) buf 256 PC_PAD_TOP_Y - (font-color red) (font-flags shadow kerning large middle)) - ) - ) - + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPING PAD ~D" (-> self pad-idx)) + buf + 256 + PC_PAD_TOP_Y + (font-color red) + (font-flags shadow kerning large middle)))) (defstatehandler pc-pad-proc :post pc-pi-post) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;; states ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defstate pc-pi-new-mapping (pc-pad-proc) - - :enter (behavior () (set! (-> self input-index) (pc-pad-input-index-get)) ) - :code (behavior () + :enter + (behavior () + (set! (-> self input-index) (pc-pad-input-index-get))) + :code + (behavior () (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPED ~D TO ~S!" - (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - (go pc-pi-mapping-button) - ) - :trans (behavior () - (if (or (!= (-> self input-index) (pc-pad-input-index-get)) - (!= (pc-pad-input-mode-get) (pc-pad-input-status enabled))) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPED ~D TO ~S!" (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)) + (go pc-pi-mapping-button)) + :trans + (behavior () + (if (or (!= (-> self input-index) (pc-pad-input-index-get)) (!= (pc-pad-input-mode-get) (pc-pad-input-status enabled))) ;; something's changed, go back to the main state and check everything - (go pc-pi-mapping-button) - ) - (none) - ) - - ) + (go pc-pi-mapping-button)) + (none))) (defstate pc-pi-canceled (pc-pad-proc) - - :code (behavior () + :code + (behavior () (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy "CANCELED!" buf 256 (+ PC_PAD_TOP_Y 64) (font-color red-reverse) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy "CANCELED!" + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color red-reverse) + (font-flags shadow kerning large middle))) + (suspend)))) (defstate pc-pi-done (pc-pad-proc) - - :enter (behavior () (set! (-> self input-index) 16)) - :code (behavior () + :enter + (behavior () + (set! (-> self input-index) 16)) + :code + (behavior () (pc-pad-input-map-save!) (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "MAPPED ~D TO ~S!" - (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "MAPPED ~D TO ~S!" (pc-pad-input-key-get) (-> *pc-pad-button-names* (1- (-> self input-index)))) + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)) (set-state-time) (until (time-passed? PC_PAD_INPUT_NOTICE_TIME) - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy (string-format "KEY MAPPING COMPLETE!~%SETTINGS SAVED.") buf 256 (+ PC_PAD_TOP_Y 64) (font-color green) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - ) + (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy (string-format "KEY MAPPING COMPLETE!~%SETTINGS SAVED.") + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color green) + (font-flags shadow kerning large middle))) + (suspend)))) (defstate pc-pi-mapping-button (pc-pad-proc) - - :code (behavior () - (loop - (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) - (bucket-id debug-no-zbuf)) - (draw-string-xy "PRESS ESCAPE TO EXIT" buf 256 (+ PC_PAD_TOP_Y 32) (font-color default) (font-flags shadow kerning large middle)) - (draw-string-xy (string-format "PRESS KEY FOR ~S" (-> *pc-pad-button-names* (-> self input-index))) - buf 256 (+ PC_PAD_TOP_Y 64) (font-color default) (font-flags shadow kerning large middle)) - ) - (suspend) - ) - ) - :trans (behavior () + :code + (behavior () + (loop (with-dma-buffer-add-bucket ((buf (-> (current-frame) debug-buf)) (bucket-id debug-no-zbuf)) + (draw-string-xy "PRESS ESCAPE TO EXIT" + buf + 256 + (+ PC_PAD_TOP_Y 32) + (font-color default) + (font-flags shadow kerning large middle)) + (draw-string-xy (string-format "PRESS KEY FOR ~S" (-> *pc-pad-button-names* (-> self input-index))) + buf + 256 + (+ PC_PAD_TOP_Y 64) + (font-color default) + (font-flags shadow kerning large middle))) + (suspend))) + :trans + (behavior () (cond ;; canceled - ((= (pc-pad-input-mode-get) (pc-pad-input-status canceled)) - (go pc-pi-canceled) - ) + ((= (pc-pad-input-mode-get) (pc-pad-input-status canceled)) (go pc-pi-canceled)) ;; finished - ((or (>= (pc-pad-input-index-get) 16) - (= (pc-pad-input-mode-get) (pc-pad-input-status disabled))) - (go pc-pi-done) - ) + ((or (>= (pc-pad-input-index-get) 16) (= (pc-pad-input-mode-get) (pc-pad-input-status disabled))) (go pc-pi-done)) ;; waiting input - ((= (-> self input-index) (pc-pad-input-index-get)) - ) + ((= (-> self input-index) (pc-pad-input-index-get))) ;; one input has been done! - ((= (1+ (-> self input-index)) (pc-pad-input-index-get)) - (go pc-pi-new-mapping) - ) + ((= (1+ (-> self input-index)) (pc-pad-input-index-get)) (go pc-pi-new-mapping)) ;; more than one input has been done. go to last mapping. - ((< (1+ (-> self input-index)) (pc-pad-input-index-get)) - (go pc-pi-new-mapping) - ) - ) - ) - - ) - - + ((< (1+ (-> self input-index)) (pc-pad-input-index-get)) (go pc-pi-new-mapping))))) diff --git a/test/common/formatter/corpus/indent.test.gc b/test/common/formatter/corpus/indent.test.gc index a9048787cd..4f9057e42a 100644 --- a/test/common/formatter/corpus/indent.test.gc +++ b/test/common/formatter/corpus/indent.test.gc @@ -150,7 +150,7 @@ Long array creation (the-as (function none) (-> arr i))))) === -TODO - Nested function call +Nested function call === (set! (-> this attack-event) @@ -162,6 +162,7 @@ TODO - Nested function call (set! (-> this attack-event) (the-as symbol - ((the-as (function res-lump symbol symbol float structure (pointer res-tag) pointer object) (method-of-type res-lump get-property-struct)) - (-> this entity) - 'attack-event))) + ((the-as (function res-lump symbol symbol float structure (pointer res-tag) pointer object) + (method-of-type res-lump get-property-struct)) + (-> this entity) + 'attack-event))) diff --git a/test/common/formatter/corpus/lists.test.gc b/test/common/formatter/corpus/lists.test.gc index 1547679dce..7ddff71c63 100644 --- a/test/common/formatter/corpus/lists.test.gc +++ b/test/common/formatter/corpus/lists.test.gc @@ -34,7 +34,7 @@ Empty List () === -TODO - lists of lists +List of lists === (defpart 116 @@ -48,7 +48,46 @@ TODO - lists of lists (defpart 116 :init-specs - ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) - (:fade-a 0.0) - (:next-time (seconds 0.5)) - (:next-launcher 117))) \ No newline at end of file + ((:scalevel-x (meters 0.006666667)) + (:scalevel-y :copy scalevel-x) + (:fade-a 0.0) + (:next-time (seconds 0.5)) + (:next-launcher 117))) + + +=== +Another list of lists +=== + +((:texture (new 'static 'texture-id :index #x1e :page #x2)) (:num 1.0) + (:scale-x (meters 0.5) (meters 0.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 109)) + +--- + +((:texture (new 'static 'texture-id :index #x1e :page #x2)) + (:num 1.0) + (:scale-x (meters 0.5) (meters 0.6)) + (:rot-y (degrees 0) (degrees 360)) + (:scale-y :copy scale-x) + (:r 128.0) + (:g 128.0) + (:b 128.0) + (:a 64.0 64.0) + (:scalevel-x (meters 0.0016666667) (meters 0.001)) + (:scalevel-y :copy scalevel-x) + (:timer (seconds 2)) + (:flags (bit2 bit3 left-multiply-quat)) + (:next-time (seconds 0.5)) + (:next-launcher 109)) \ No newline at end of file diff --git a/test/common/formatter/corpus/symbols.test.gc b/test/common/formatter/corpus/symbols.test.gc index 05ce32a924..ea38c863e9 100644 --- a/test/common/formatter/corpus/symbols.test.gc +++ b/test/common/formatter/corpus/symbols.test.gc @@ -19,7 +19,7 @@ Unquote Splicing ,@(apply (lambda (x) `(,x :class vf)) regs) === -!Numbers at the start of symbols +Numbers at the start of symbols === (4x3 #x12a) diff --git a/test/common/formatter/corpus/types.test.gc b/test/common/formatter/corpus/types.test.gc index 0e3df88a36..de260dd4aa 100644 --- a/test/common/formatter/corpus/types.test.gc +++ b/test/common/formatter/corpus/types.test.gc @@ -136,13 +136,13 @@ With flags --- (deftype process-tree (basic) - ((name basic :offset-assert 4) - (mask process-mask :offset-assert 8) + ((name basic :offset-assert 4) + (mask process-mask :offset-assert 8) (parent (pointer process-tree) :offset-assert 12) (brother (pointer process-tree) :offset-assert 16) (child (pointer process-tree) :offset-assert 20) - (ppointer (pointer process) :offset-assert 24) - (self process-tree :offset-assert 28)) + (ppointer (pointer process) :offset-assert 24) + (self process-tree :offset-assert 28)) (:methods (new (symbol type basic) _type_) (activate (_type_ process-tree basic pointer) process-tree) ;; 9 diff --git a/test/common/formatter/test_formatter.cpp b/test/common/formatter/test_formatter.cpp index 42f4ecf118..b058627339 100644 --- a/test/common/formatter/test_formatter.cpp +++ b/test/common/formatter/test_formatter.cpp @@ -102,7 +102,7 @@ bool run_tests(const fs::path& file_path, const bool only_important_tests) { if (only_important_tests && !str_util::starts_with(test.name, "!")) { continue; } - if (str_util::contains(test.output, "TODO")) { + if (str_util::contains(test.name, "TODO")) { // ignore the output fmt::print(" ⚠️ - {}\n", test.name); continue; diff --git a/third-party/tree-sitter/tree-sitter-opengoal/grammar.js b/third-party/tree-sitter/tree-sitter-opengoal/grammar.js index f6eb33c0c4..880b7890bd 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/grammar.js +++ b/third-party/tree-sitter/tree-sitter-opengoal/grammar.js @@ -208,7 +208,7 @@ module.exports = grammar({ seq(field('numberOfArgs', $._format_token), '*'), '?', "Newline", - seq(repeat(choice($._format_token, ',')), /[$mMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]/), + seq(repeat(choice($._format_token, ',')), /[$AmMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]/), ), format_specifier: $ => prec.left(seq( diff --git a/third-party/tree-sitter/tree-sitter-opengoal/grammar.json b/third-party/tree-sitter/tree-sitter-opengoal/grammar.json index c7c67b238f..16568b2f00 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/grammar.json +++ b/third-party/tree-sitter/tree-sitter-opengoal/grammar.json @@ -638,7 +638,7 @@ }, { "type": "PATTERN", - "value": "[$mMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]" + "value": "[$AmMrRbBdDgGxXeEoOsStTfFHhJjKkLlNnVwWyYzZ]" } ] } diff --git a/third-party/tree-sitter/tree-sitter-opengoal/parser.c b/third-party/tree-sitter/tree-sitter-opengoal/parser.c index 984eb49455..e3c90235e5 100644 --- a/third-party/tree-sitter/tree-sitter-opengoal/parser.c +++ b/third-party/tree-sitter/tree-sitter-opengoal/parser.c @@ -789,7 +789,7 @@ static inline bool sym_kwd_lit_character_set_2(int32_t c) { static inline bool aux_sym_format_directive_type_token11_character_set_1(int32_t c) { return (c < 'V' ? (c < 'D' - ? (c < 'B' + ? (c < 'A' ? c == '$' : c <= 'B') : (c <= 'H' || (c < 'R' @@ -1126,18 +1126,18 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == ';') ADVANCE(74); if (lookahead == '?') ADVANCE(74); if (lookahead == '@') ADVANCE(74); + if (lookahead == 'A') ADVANCE(74); if (lookahead == 'V') ADVANCE(74); if (lookahead == '\\') ADVANCE(39); if (lookahead == '^') ADVANCE(74); if (lookahead == '_') ADVANCE(74); if (lookahead == '`') ADVANCE(74); + if (lookahead == 'a') ADVANCE(74); if (lookahead == 'v') ADVANCE(74); if (lookahead == '|') ADVANCE(74); if (lookahead == '~') ADVANCE(49); if (lookahead == '<' || lookahead == '>') ADVANCE(74); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(74); if (lookahead == 'C' || lookahead == 'c') ADVANCE(74); if (lookahead == 'I' || @@ -1169,19 +1169,19 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == ';') ADVANCE(66); if (lookahead == '?') ADVANCE(69); if (lookahead == '@') ADVANCE(45); + if (lookahead == 'A') ADVANCE(60); if (lookahead == 'N') ADVANCE(72); if (lookahead == 'V') ADVANCE(41); if (lookahead == '^') ADVANCE(54); if (lookahead == '_') ADVANCE(61); if (lookahead == '`') ADVANCE(67); + if (lookahead == 'a') ADVANCE(60); if (lookahead == 'v') ADVANCE(40); if (lookahead == '|') ADVANCE(52); if (lookahead == '~') ADVANCE(49); if (('+' <= lookahead && lookahead <= '-')) ADVANCE(7); if (lookahead == '<' || lookahead == '>') ADVANCE(65); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(60); if (lookahead == 'C' || lookahead == 'c') ADVANCE(53); if (lookahead == 'I' || @@ -1216,17 +1216,17 @@ static bool ts_lex(TSLexer *lexer, TSStateId state) { if (lookahead == ';') ADVANCE(66); if (lookahead == '?') ADVANCE(69); if (lookahead == '@') ADVANCE(45); + if (lookahead == 'A') ADVANCE(60); if (lookahead == 'N') ADVANCE(72); if (lookahead == '^') ADVANCE(54); if (lookahead == '_') ADVANCE(61); if (lookahead == '`') ADVANCE(67); + if (lookahead == 'a') ADVANCE(60); if (lookahead == '|') ADVANCE(52); if (lookahead == '~') ADVANCE(49); if (('+' <= lookahead && lookahead <= '-')) ADVANCE(7); if (lookahead == '<' || lookahead == '>') ADVANCE(65); - if (lookahead == 'A' || - lookahead == 'a') ADVANCE(60); if (lookahead == 'C' || lookahead == 'c') ADVANCE(53); if (lookahead == 'I' ||