I'm trying to make use of one of the bosses in MM8BDM in a custom map but naturally the important bits are hidden (I can respect this). It is not my intention to steal anyone's intellectual property in this regard, but I feel it is healthy for the community to continue to make use of the tools and gameplay concepts presented in MM8BDM... perhaps to draw more people into the game! If there is a concern with learning about this functionality and specifically this actor then I will request that this conversation end and the thread locked; in this event please accept my apologies in advance.
What I'm looking for is a bit of help in interpreting this de-compiled ACS to reimplement some functionality. The actor definition I'm interested in references this script to define certain behavior.
Google seems quite sparse with regard to ZDoom related things so I'm wondering if you experts can shed some more light on this.
2579: script 5, type = 0 (NORMAL), flags = 0000, argc = 1
2579: PUSHSCRIPTVAR 0
2581: PUSHBYTE 0
2583: EQ
2584: IFNOTGOTO 2601
2589: ACTIVATORTID
2591: PUSHBYTE 1
2593: PUSHNUMBER 98304
2598: SETACTORPROPERTY
2600: TERMINATE
2601: PUSHSCRIPTVAR 0
2603: PUSHBYTE 1
2605: EQ
2606: IFNOTGOTO 2620
2611: ACTIVATORTID
2613: PUSH2BYTES 124, 0
2616: SETACTORSTATE
2618: DROP
2619: TERMINATE
2620: PUSHSCRIPTVAR 0
2622: PUSHBYTE 2
2624: EQ
2625: IFNOTGOTO 2639
2630: ACTIVATORTID
2632: PUSH2BYTES 125, 0
2635: SETACTORSTATE
2637: DROP
2638: TERMINATE
2639: PUSHSCRIPTVAR 0
2641: PUSHBYTE 3
2643: EQ
2644: IFNOTGOTO 2658
2649: ACTIVATORTID
2651: PUSH2BYTES 126, 0
2654: SETACTORSTATE
2656: DROP
2657: TERMINATE
2658: PUSHSCRIPTVAR 0
2660: PUSHBYTE 4
2662: EQ
2663: IFNOTGOTO 2677
2668: ACTIVATORTID
2670: PUSH2BYTES 127, 0
2673: SETACTORSTATE
2675: DROP
2676: TERMINATE
2677: PUSHSCRIPTVAR 0
2679: PUSHBYTE 5
2681: EQ
2682: IFNOTGOTO 2696
2687: ACTIVATORTID
2689: PUSH2BYTES 128, 0
2692: SETACTORSTATE
2694: DROP
2695: TERMINATE
2696: PUSHSCRIPTVAR 0
2698: PUSHBYTE 6
2700: EQ
2701: IFNOTGOTO 2715
2706: ACTIVATORTID
2708: PUSH2BYTES 129, 0
2711: SETACTORSTATE
2713: DROP
2714: TERMINATE
2715: PUSHSCRIPTVAR 0
2717: PUSHBYTE 7
2719: EQ
2720: IFNOTGOTO 2734
2725: ACTIVATORTID
2727: PUSH2BYTES 74, 0
2730: SETACTORSTATE
2732: DROP
2733: TERMINATE
2734: PUSHSCRIPTVAR 0
2736: PUSHBYTE 8
2738: EQ
2739: IFNOTGOTO 2753
2744: ACTIVATORTID
2746: PUSH2BYTES 130, 0
2749: SETACTORSTATE
2751: DROP
2752: TERMINATE
2753: PUSHSCRIPTVAR 0
2755: PUSHBYTE 9
2757: EQ
2758: IFNOTGOTO 2773
2763: PUSH2BYTES 131, 127
2766: AMBIENTSOUND
2767: PUSH2BYTES 61, 6
2770: LSPEC2 119
2772: TERMINATE
2773: PUSHSCRIPTVAR 0
2775: PUSHBYTE 10
2777: EQ
2778: IFNOTGOTO 2809
2783: PUSH2BYTES 132, 127
2786: AMBIENTSOUND
2787: PUSH3BYTES 5, 20, 0
2791: PUSHNUMBER 256
2796: PUSHBYTE 70
2798: LSPEC5 120
2800: PUSH5BYTES 71, 10, 133, 88, 1
2806: SECTORDAMAGE
2808: TERMINATE
2809: PUSHSCRIPTVAR 0
2811: PUSHBYTE 11
2813: EQ
2814: IFNOTGOTO 2837
2819: PUSH2BYTES 132, 127
2822: AMBIENTSOUND
2823: PUSH3BYTES 5, 20, 0
2827: PUSHNUMBER 256
2832: PUSHBYTE 70
2834: LSPEC5 120
2836: TERMINATE
2837: PUSHSCRIPTVAR 0
2839: PUSHBYTE 12
2841: EQ
2842: IFNOTGOTO 2970
2847: PUSH2BYTES 134, 127
2850: AMBIENTSOUND
2851: PUSH3BYTES 5, 20, 0
2855: PUSHNUMBER 256
2860: PUSHBYTE 70
2862: LSPEC5 120
2864: PUSH5BYTES 73, 2, 133, 88, 1
2870: SECTORDAMAGE
2872: PUSH5BYTES 86, 2, 133, 88, 1
2878: SECTORDAMAGE
2880: PUSH5BYTES 89, 2, 133, 88, 1
2886: SECTORDAMAGE
2888: PUSHBYTE 5
2890: DELAY
2891: PUSH5BYTES 73, 2, 133, 88, 1
2897: SECTORDAMAGE
2899: PUSH5BYTES 86, 2, 133, 88, 1
2905: SECTORDAMAGE
2907: PUSH5BYTES 89, 2, 133, 88, 1
2913: SECTORDAMAGE
2915: PUSHBYTE 5
2917: DELAY
2918: PUSH5BYTES 73, 2, 133, 88, 1
2924: SECTORDAMAGE
2926: PUSH5BYTES 86, 2, 133, 88, 1
2932: SECTORDAMAGE
2934: PUSH5BYTES 89, 2, 133, 88, 1
2940: SECTORDAMAGE
2942: PUSHBYTE 5
2944: DELAY
2945: PUSH5BYTES 73, 2, 133, 88, 1
2951: SECTORDAMAGE
2953: PUSH5BYTES 86, 2, 133, 88, 1
2959: SECTORDAMAGE
2961: PUSH5BYTES 89, 2, 133, 88, 1
2967: SECTORDAMAGE
2969: TERMINATE
2970: PUSHSCRIPTVAR 0
2972: PUSHBYTE 13
2974: EQ
2975: IFNOTGOTO 2995
2980: PUSH2BYTES 131, 127
2983: AMBIENTSOUND
2984: PUSH2BYTES 30, 0
2987: LSPEC2 82
2989: PUSH2BYTES 76, 12
2992: LSPEC2 119
2994: TERMINATE
2995: PUSHSCRIPTVAR 0
2997: PUSHBYTE 14
2999: EQ
3000: IFNOTGOTO 3010
3005: PUSH2BYTES 135, 127
3008: AMBIENTSOUND
3009: TERMINATE
3010: PUSHSCRIPTVAR 0
3012: PUSHBYTE 15
3014: EQ
3015: IFNOTGOTO 3025
3020: PUSH2BYTES 136, 127
3023: AMBIENTSOUND
3024: TERMINATE
3025: PUSHSCRIPTVAR 0
3027: PUSHBYTE 16
3029: EQ
3030: IFNOTGOTO 3043
3035: PUSH2BYTES 137, 127
3038: AMBIENTSOUND
3039: PUSHBYTE 10
3041: DELAY
3042: TERMINATE
3043: PUSHSCRIPTVAR 0
3045: PUSHBYTE 17
3047: EQ
3048: IFNOTGOTO 3058
3053: PUSH2BYTES 138, 127
3056: AMBIENTSOUND
3057: TERMINATE
3058: PUSHSCRIPTVAR 0
3060: PUSHBYTE 18
3062: EQ
3063: IFNOTGOTO 3073
3068: PUSH2BYTES 139, 127
3071: AMBIENTSOUND
3072: TERMINATE
3073: PUSHSCRIPTVAR 0
3075: PUSHBYTE 19
3077: EQ
3078: IFNOTGOTO 3101
3083: PUSH2BYTES 132, 127
3086: AMBIENTSOUND
3087: PUSH3BYTES 5, 20, 0
3091: PUSHNUMBER 256
3096: PUSHBYTE 70
3098: LSPEC5 120
3100: TERMINATE
3101: TERMINATE
EDIT: I've basically got this boss working the way I want in a map but the only thing missing is a pain state. The actor itself does not have a pain state but I think the mystery is in this decompiled ACS with a hidden state or behavior setting the actor state that is not immediately obvious. How do you make it flash with like the mm2pain sound?