diff --git a/graphics/HUD/BlackShell.png b/graphics/HUD/BlackShell.png new file mode 100644 index 000000000..373f1e7e1 Binary files /dev/null and b/graphics/HUD/BlackShell.png differ diff --git a/graphics/HUD/BlueShell.png b/graphics/HUD/BlueShell.png new file mode 100644 index 000000000..fceedb0ef Binary files /dev/null and b/graphics/HUD/BlueShell.png differ diff --git a/graphics/HUD/GoldShell.png b/graphics/HUD/GoldShell.png new file mode 100644 index 000000000..f8772f728 Binary files /dev/null and b/graphics/HUD/GoldShell.png differ diff --git a/graphics/HUD/GreenShell.png b/graphics/HUD/GreenShell.png new file mode 100644 index 000000000..abb6ade7a Binary files /dev/null and b/graphics/HUD/GreenShell.png differ diff --git a/graphics/HUD/LoadedBlackShell.png b/graphics/HUD/LoadedBlackShell.png new file mode 100644 index 000000000..ee2c8d4b9 Binary files /dev/null and b/graphics/HUD/LoadedBlackShell.png differ diff --git a/graphics/HUD/LoadedBlueShell.png b/graphics/HUD/LoadedBlueShell.png new file mode 100644 index 000000000..ac091f4bd Binary files /dev/null and b/graphics/HUD/LoadedBlueShell.png differ diff --git a/graphics/HUD/LoadedGoldShell.png b/graphics/HUD/LoadedGoldShell.png new file mode 100644 index 000000000..f86cc86b9 Binary files /dev/null and b/graphics/HUD/LoadedGoldShell.png differ diff --git a/graphics/HUD/LoadedGreenShell.png b/graphics/HUD/LoadedGreenShell.png new file mode 100644 index 000000000..680f994e5 Binary files /dev/null and b/graphics/HUD/LoadedGreenShell.png differ diff --git a/graphics/HUD/LoadedPurpleShell.png b/graphics/HUD/LoadedPurpleShell.png new file mode 100644 index 000000000..a9ee7a45d Binary files /dev/null and b/graphics/HUD/LoadedPurpleShell.png differ diff --git a/graphics/HUD/LoadedRedShell.png b/graphics/HUD/LoadedRedShell.png new file mode 100644 index 000000000..bd8841071 Binary files /dev/null and b/graphics/HUD/LoadedRedShell.png differ diff --git a/graphics/HUD/LoadedWhiteShell.png b/graphics/HUD/LoadedWhiteShell.png new file mode 100644 index 000000000..583d3f0f2 Binary files /dev/null and b/graphics/HUD/LoadedWhiteShell.png differ diff --git a/graphics/HUD/PurpleShell.png b/graphics/HUD/PurpleShell.png new file mode 100644 index 000000000..9b778aa95 Binary files /dev/null and b/graphics/HUD/PurpleShell.png differ diff --git a/graphics/HUD/PusherBar.png b/graphics/HUD/PusherBar.png index a586148e6..9f511190d 100644 Binary files a/graphics/HUD/PusherBar.png and b/graphics/HUD/PusherBar.png differ diff --git a/graphics/HUD/PusherDisplay.png b/graphics/HUD/PusherDisplay.png index 468aa29cc..f6c8346da 100644 Binary files a/graphics/HUD/PusherDisplay.png and b/graphics/HUD/PusherDisplay.png differ diff --git a/graphics/HUD/RedShell.png b/graphics/HUD/RedShell.png new file mode 100644 index 000000000..59405cfee Binary files /dev/null and b/graphics/HUD/RedShell.png differ diff --git a/graphics/HUD/SpreadgunDisplay.png b/graphics/HUD/SpreadgunDisplay.png new file mode 100644 index 000000000..cbf2e57de Binary files /dev/null and b/graphics/HUD/SpreadgunDisplay.png differ diff --git a/graphics/HUD/WhiteShell.png b/graphics/HUD/WhiteShell.png new file mode 100644 index 000000000..745dc7839 Binary files /dev/null and b/graphics/HUD/WhiteShell.png differ diff --git a/language.txt b/language.txt index a35c12947..9ab0dfc0a 100644 --- a/language.txt +++ b/language.txt @@ -208,7 +208,7 @@ SWWM_LORETXT_AKARILABS = "Addendum: Akari Labs was one of the sponsors of the 2020 Tokyo Olympic Games. Saya's personal Maidbot singing the national anthem was one of the major highlights of the event."; SWWM_LORETAG_ANARUKON = "Anarukon"; SWWM_LORETAB_ANARUKON = "Lore"; -SWWM_LOREREL_ANARUKON = "Gods;Novoskhana;Hell;Saya"; +SWWM_LOREREL_ANARUKON = "Gods;Novoskhana;Hell;Saya;Kirin"; SWWM_LORETXT_ANARUKON = "Name: Anarukon\n" "Classification: Immortal beings\n" @@ -216,9 +216,19 @@ SWWM_LORETXT_ANARUKON = "\n" "Summary: The Anarukon are a race of immortal beings created by a god known as Noskas Kurenai (in their tongue, \"Father of Eternity\"). They are entirely unkillable, able to recover even if burned to ashes. While most of the population is in the Empire of Novoskhana, other groups split off from it following major disagreements with the empire's policies.\n" "\n" -"Addendum: The Anarukon are one of the few races that the Demons of Hell have never dared fight against.\n" +"Addendum: The Anarukon are the humanoid race with the highest ratio of individuals who don't conform to the sex or gender binaries according to a recent census. Approximately 40% of the population falls under the \"intersex\" classification, and only 30% of the total population could be considered \"cisgender\". A study by Mosse Anderken traced this to a mutation in the Anarukon genome that appeared many years after the creation of the empire.\n" "\n" "Saya's Note: More stuff about gods here. Really not joking around, they ARE real."; +SWWM_LORETXT_ANARUKON2 = +"Name: Anarukon\n" +"Classification: Immortal beings\n" +"Location: Various\n" +"\n" +"Summary: The Anarukon are a race of immortal beings created by a god known as Noskas Kurenai (in their tongue, \"Father of Eternity\"). They are entirely unkillable, able to recover even if burned to ashes. While most of the population is in the Empire of Novoskhana, other groups split off from it following major disagreements with the empire's policies. Among them the most notable are the Eternal Kingdom, founded by Noskas Kurenai himself and led by Queen Andreki Anderken, and the Rust Empire, founded by Syrakha Yanikov and led by Child Emperor Kirin Xanai.\n" +"\n" +"Addendum: The Anarukon are the humanoid race with the highest ratio of individuals who don't conform to the sex or gender binaries according to a recent census. Approximately 40% of the population falls under the \"intersex\" classification, and only 30% of the total population could be considered \"cisgender\". A study by Mosse Anderken traced this to a mutation in the Anarukon genome that appeared many years after the creation of the empire.\n" +"\n" +"Saya's Note: You know... I met Andreki once, after my wedding with Kirin-kun. I seriously thought she was just a little kid, god damn that was embarrassing... I also met some of her relatives, like this witchy looking lady... her aunt I think? I couldn't stare at her for too long, it made me anxious. T-there was also uhhh... her mom, really hardcore looking badass gutsy warrior mommy, another aunt who apparently likes to go around in a creepy costume and uses a voice changer to sound all evil, she was the most fun to talk to. I also met the GOD in all caps himself, the \"Father of Eternity\"... oh boy the tension when he was looking at me... but it was fine because turns out he's a real softly lol. Ahhh... it was so fun finally getting to meet these people after having only ever read about them, and oh boy don't even get me started on what it's like to be married to one, huhu. Finally, an immortal cutie just for me... and hot daaaamn he's a big cutie... and a beast in bed, uheheheheheh~"; SWWM_LORETAG_ARGENT = "Argent Energy"; SWWM_LORETAB_ARGENT = "Lore"; SWWM_LOREREL_ARGENT = "UAC;Hell;Saya;Nukuri;NokronKiny"; @@ -362,7 +372,7 @@ SWWM_LOREREL_DECADEMECH = "Sunkaeze;XAnimen"; SWWM_LORETXT_DECADEMECH = "Name: Decade Mechanics\n" "Classification: Military Research Facility???\n" -"Location: Sunkaeze (X'Animen outer rim)\n" +"Location: Sunkaeze, Xathar outer rim, X'Animen Coalition\n" "\n" "Summary: Ever since humanity was made aware of the gateway in Sedna connecting the two solar systems, many expeditions have been made to learn more of the worlds in X'Animen (name given by the governing bodies within). One major discovery that not even the natives were aware of, was that of a ruined research facility in the wasteland planet of Sunkaeze, belonging to a defunct company named \"Decade Mechanics\", run by the long-dead mechanical demigod Maester Mekes. Research material, blueprints and even finished, still functioning products have been found within, giving a general idea of what this facility was specialized in. Various groups have successfully recreated items entirely off their original blueprints, some of which have been commercial successes in the military field.\n" "\n" @@ -959,7 +969,7 @@ SWWM_LORETXT_NOVOSKHANA = "\n" "Summary: A tyrannical society where most of the Anarukon reside, ruled by the Eternal Empress Sythana Va Sarkha Daia Mykha Azanth Serei Yanikov I. It is a strict matriarchal society where men live only to serve their wives. Most if not all women born in Novoskhana are raised to be warriors. The Empire has an approximate population of 13 billion, and no one has dared stand up to them.\n" "\n" -"Addendum: Many groups split out due to disagreements with the Empire's policies, such as the Vexx Sisterhood (now the Anderken Royal Family) and the Rust Empire. This happened during a time where a genetic mutation began to surface among the Anarukon people, resulting in a destabilization of the previously stable sex and gender binaries, to which the Empire responded by ordering the execution of any \"deviants\" born, along with their fathers, and anyone who dared protect them.\n" +"Addendum: Many groups split out due to disagreements with the Empire's policies, such as the Vexx Sisterhood (now the Eternal Kingdom) and the Rust Empire. This happened during a time where a genetic mutation began to surface among the Anarukon people, resulting in a destabilization of the previously stable sex and gender binaries, to which the Empire responded by ordering the execution of any \"deviants\" born, along with their fathers, and anyone who dared protect them.\n" "\n" "Saya's Note: So... a TERF empire. Wonderful. Just... wonderful."; SWWM_LORETAG_NUGGET = "H/A Nuggets"; @@ -1279,7 +1289,7 @@ SWWM_LORETXT_UNISSIX = "\n" "Addendum: Rose to fame on Earth during a visit from Zanaveth II, her wife, who leads Nekuratek, a massive tech giant in the Nukuri homeworld. Misa is a big fan of videogames, finding it rather exciting to finally be able to go on adventures of her own, without having to put much physical effort into it.\n" "\n" -"Saya's Note: I remember having some chats with her. She's got good taste, and her wife is hot af (and really smart, I mean she made the AI you're built on). I'm still pissy that we haven't been in contact much thanks to those American idiots causing the Nukuri to leave. I could send messages sometimes through the embassy in the Lunar Capital, but those damn bunnies always made it hard. BTW... I remember this one time we went to the hot springs and I saw... her down there... omg... huge... ohhhhhhh...... Zana-sama you lucky devil, no wonder I can hear you two going at it from across the house."; +"Saya's Note: I remember having some chats with her. She's got good taste, and her wife is hot af (and really smart, I mean she made the AI you're built on). I'm still pissy that we haven't been in contact much thanks to those American idiots causing the Nukuri to leave. I could send messages sometimes through the embassy in the Lunar Capital, but those damn bunnies always made it hard. BTW... I remember this one time we went to the hot springs and I saw... her down there... omg... huge... ohhhhhhh...... Zana-sama you lucky devil, no wonder I could hear you two going at it from across the house."; SWWM_LORETAG_VOICEBOX = "Loudboi Voicebox"; SWWM_LORETAB_VOICEBOX = "Item"; SWWM_LOREREL_VOICEBOX = "AkariLabs;Ibuki;Demolitionist"; @@ -1364,7 +1374,7 @@ SWWM_LORETXT_XANIMEN = "Classification: Solar System Cluster\n" "Location: Various Galaxies\n" "\n" -"Summary: X'Animen is the name of a group of planetary systems, comprising several inhabited worlds, all connected through portals. During the first days following the \"Luna Incident\", it was discovered that our own solar system had a portal connecting to them, in the remote dwarf planet of Sedna, from which the Nukuri had come to our world in order to study us as potential candidates for joining the group.\n" +"Summary: X'Animen is the name of a group of planetary systems, comprising several inhabited worlds, all connected through portals. During the first days following the \"Luna Incident\", it was discovered that our own solar system had a portal connecting to them, in the remote dwarf planet of Sedna, from which the Nukuri had come to our world in order to study us as potential candidates for joining the group. The current member systems are Xanthar (where the Nukuri homeworld is), Zenna, Mondakan and Kryudon.\n" "\n" "Addendum: Things aren't always peaceful in here. Several member races are prone to waging war among themselves, or fighting over the nonexistent leadership of the X'Animen Coalition.\n" "\n" diff --git a/modeldef.spreadgun b/modeldef.spreadgun index 607b6bf3c..99f8a5687 100644 --- a/modeldef.spreadgun +++ b/modeldef.spreadgun @@ -11,3 +11,1019 @@ Model "Spreadgun" FrameIndex XZW1 A 0 0 } + +Model "Spreadgun" +{ + Path "models/extra" + + Model 2 "Flat_d.3d" + Offset 16 -60 -15 + PitchOffset 90 + + // buckshot + Scale 0.13 0.13 0.13 + Skin 2 "ShotgMuz.png" + FrameIndex XZWZ A 2 0 + // slug + Scale 0.08 0.08 0.08 + Skin 2 "ShotgMuz.png" + FrameIndex XZWZ B 2 0 + // dragon + Scale 0.12 0.12 0.12 + Skin 2 "ShotgMuz.png" + FrameIndex XZWZ C 2 0 + // kinylum + Scale 0.13 0.13 0.13 + Skin 2 "ShotgMuzSalt.png" + FrameIndex XZWZ D 2 0 + // fuckoff + Scale 0.18 0.18 0.18 + Skin 2 "ShotgMuz.png" + FrameIndex XZWZ E 2 0 + // ball + Scale 0.06 0.06 0.06 + Skin 2 "ShotgMuz.png" + FrameIndex XZWZ F 2 0 + // gold + Scale 0.2 0.2 0.2 + Skin 2 "GoldMuz.png" + FrameIndex XZWZ G 2 0 +} + +// AAAAAAAAAAAA +// We really need a scripted way of changing surface skins so I don't have +// to do this. Hell this damn thing almost exhausted all the dummy sprite names +Model "Spreadgun" +{ + Path "models" + + Model 1 "Spreadgun1st_d.3d" + SurfaceSkin 1 0 "DemoTags.png" + SurfaceSkin 1 1 "DemoArms.png" + SurfaceSkin 1 2 "DemoSoft.png" + SurfaceSkin 1 3 "Spreadgun.png" + AngleOffset -90 + Offset -4 0 -2 + Scale -0.005 0.0025 0.005 + + ///// PRIMED + // Idle / Deselect + FrameIndex XZW2 A 1 0 + FrameIndex XZW2 B 1 1 + FrameIndex XZW2 C 1 2 + FrameIndex XZW2 D 1 3 + FrameIndex XZW2 E 1 4 + FrameIndex XZW2 F 1 5 + FrameIndex XZW2 G 1 6 + FrameIndex XZW2 H 1 7 + FrameIndex XZW2 I 1 8 // Select + FrameIndex XZW2 J 1 9 + FrameIndex XZW2 K 1 10 + FrameIndex XZW2 L 1 11 + FrameIndex XZW2 M 1 12 + FrameIndex XZW2 N 1 13 + FrameIndex XZW2 O 1 14 + FrameIndex XZW2 P 1 15 + FrameIndex XZW2 Q 1 16 + // Fire + FrameIndex XZW2 R 1 18 + FrameIndex XZW2 S 1 19 + FrameIndex XZW2 T 1 20 + FrameIndex XZW2 U 1 21 + FrameIndex XZW2 V 1 22 + FrameIndex XZW2 W 1 23 + FrameIndex XZW2 X 1 24 + FrameIndex XZW2 Y 1 25 + ///// FIRED + // Idle / Deselect + FrameIndex XZW2 Z 1 26 + FrameIndex XZW3 A 1 27 + FrameIndex XZW3 B 1 28 + FrameIndex XZW3 C 1 29 + FrameIndex XZW3 D 1 30 + FrameIndex XZW3 E 1 31 + FrameIndex XZW3 F 1 32 + FrameIndex XZW3 G 1 33 + FrameIndex XZW3 H 1 34 // Select + FrameIndex XZW3 I 1 35 + FrameIndex XZW3 J 1 36 + FrameIndex XZW3 K 1 37 + FrameIndex XZW3 L 1 38 + FrameIndex XZW3 M 1 39 + FrameIndex XZW3 N 1 40 + FrameIndex XZW3 O 1 41 + FrameIndex XZW3 P 1 42 + // Unload (Red) + SurfaceSkin 1 4 "Shell_Normal_Used.png" + FrameIndex XZW3 Q 1 44 + FrameIndex XZW3 R 1 45 + FrameIndex XZW3 S 1 46 + FrameIndex XZW3 T 1 47 + FrameIndex XZW3 U 1 48 + FrameIndex XZW3 V 1 49 + FrameIndex XZW3 W 1 50 + FrameIndex XZW3 X 1 51 + FrameIndex XZW3 Y 1 52 + FrameIndex XZW3 Z 1 53 + FrameIndex XZW4 A 1 54 + FrameIndex XZW4 B 1 55 + FrameIndex XZW4 C 1 56 + FrameIndex XZW4 D 1 57 + FrameIndex XZW4 E 1 58 + FrameIndex XZW4 F 1 59 + FrameIndex XZW4 G 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW4 H 1 61 + // Unload (Green) + SurfaceSkin 1 4 "Shell_Slug_Used.png" + FrameIndex XZW4 I 1 44 + FrameIndex XZW4 J 1 45 + FrameIndex XZW4 K 1 46 + FrameIndex XZW4 L 1 47 + FrameIndex XZW4 M 1 48 + FrameIndex XZW4 N 1 49 + FrameIndex XZW4 O 1 50 + FrameIndex XZW4 P 1 51 + FrameIndex XZW4 Q 1 52 + FrameIndex XZW4 R 1 53 + FrameIndex XZW4 S 1 54 + FrameIndex XZW4 T 1 55 + FrameIndex XZW4 U 1 56 + FrameIndex XZW4 V 1 57 + FrameIndex XZW4 W 1 58 + FrameIndex XZW4 X 1 59 + FrameIndex XZW4 Y 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW4 Z 1 61 + // Unload (White) + SurfaceSkin 1 4 "Shell_Dragon_Used.png" + FrameIndex XZW5 A 1 44 + FrameIndex XZW5 B 1 45 + FrameIndex XZW5 C 1 46 + FrameIndex XZW5 D 1 47 + FrameIndex XZW5 E 1 48 + FrameIndex XZW5 F 1 49 + FrameIndex XZW5 G 1 50 + FrameIndex XZW5 H 1 51 + FrameIndex XZW5 I 1 52 + FrameIndex XZW5 J 1 53 + FrameIndex XZW5 K 1 54 + FrameIndex XZW5 L 1 55 + FrameIndex XZW5 M 1 56 + FrameIndex XZW5 N 1 57 + FrameIndex XZW5 O 1 58 + FrameIndex XZW5 P 1 59 + FrameIndex XZW5 Q 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW5 R 1 61 + // Unload (Blue) + SurfaceSkin 1 4 "Shell_Kinylum_Used.png" + FrameIndex XZW5 S 1 44 + FrameIndex XZW5 T 1 45 + FrameIndex XZW5 U 1 46 + FrameIndex XZW5 V 1 47 + FrameIndex XZW5 W 1 48 + FrameIndex XZW5 X 1 49 + FrameIndex XZW5 Y 1 50 + FrameIndex XZW5 Z 1 51 + FrameIndex XZW6 A 1 52 + FrameIndex XZW6 B 1 53 + FrameIndex XZW6 C 1 54 + FrameIndex XZW6 D 1 55 + FrameIndex XZW6 E 1 56 + FrameIndex XZW6 F 1 57 + FrameIndex XZW6 G 1 58 + FrameIndex XZW6 H 1 59 + FrameIndex XZW6 I 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW6 J 1 61 + // Unload (Black) + SurfaceSkin 1 4 "Shell_Fuck_Used.png" + FrameIndex XZW6 K 1 44 + FrameIndex XZW6 L 1 45 + FrameIndex XZW6 M 1 46 + FrameIndex XZW6 N 1 47 + FrameIndex XZW6 O 1 48 + FrameIndex XZW6 P 1 49 + FrameIndex XZW6 Q 1 50 + FrameIndex XZW6 R 1 51 + FrameIndex XZW6 S 1 52 + FrameIndex XZW6 T 1 53 + FrameIndex XZW6 U 1 54 + FrameIndex XZW6 V 1 55 + FrameIndex XZW6 W 1 56 + FrameIndex XZW6 X 1 57 + FrameIndex XZW6 Y 1 58 + FrameIndex XZW6 Z 1 59 + FrameIndex XZW7 A 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW7 B 1 61 + // Unload (Purple) + SurfaceSkin 1 4 "Shell_Ball_Used.png" + FrameIndex XZW7 C 1 44 + FrameIndex XZW7 D 1 45 + FrameIndex XZW7 E 1 46 + FrameIndex XZW7 F 1 47 + FrameIndex XZW7 G 1 48 + FrameIndex XZW7 H 1 49 + FrameIndex XZW7 I 1 50 + FrameIndex XZW7 J 1 51 + FrameIndex XZW7 K 1 52 + FrameIndex XZW7 L 1 53 + FrameIndex XZW7 M 1 54 + FrameIndex XZW7 N 1 55 + FrameIndex XZW7 O 1 56 + FrameIndex XZW7 P 1 57 + FrameIndex XZW7 Q 1 58 + FrameIndex XZW7 R 1 59 + FrameIndex XZW7 S 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW7 T 1 61 + // Unload (Gold) + SurfaceSkin 1 4 "Shell_Gold_Used.png" + FrameIndex XZW7 U 1 44 + FrameIndex XZW7 V 1 45 + FrameIndex XZW7 W 1 46 + FrameIndex XZW7 X 1 47 + FrameIndex XZW7 Y 1 48 + FrameIndex XZW7 Z 1 49 + FrameIndex XZW8 A 1 50 + FrameIndex XZW8 B 1 51 + FrameIndex XZW8 C 1 52 + FrameIndex XZW8 D 1 53 + FrameIndex XZW8 E 1 54 + FrameIndex XZW8 F 1 55 + FrameIndex XZW8 G 1 56 + FrameIndex XZW8 H 1 57 + FrameIndex XZW8 I 1 58 + FrameIndex XZW8 J 1 59 + FrameIndex XZW8 K 1 60 + SurfaceSkin 1 4 "" + FrameIndex XZW8 L 1 61 + // Load (Red) + SurfaceSkin 1 5 "Shell_Normal.png" + FrameIndex XZW8 M 1 62 + FrameIndex XZW8 N 1 63 + FrameIndex XZW8 O 1 64 + FrameIndex XZW8 P 1 65 + FrameIndex XZW8 Q 1 66 + FrameIndex XZW8 R 1 67 + FrameIndex XZW8 S 1 68 + FrameIndex XZW8 T 1 69 + FrameIndex XZW8 U 1 70 + FrameIndex XZW8 V 1 71 + FrameIndex XZW8 W 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Normal.png" + FrameIndex XZW8 X 1 73 + FrameIndex XZW8 Y 1 74 + FrameIndex XZW8 Z 1 75 + FrameIndex XZW9 A 1 76 + FrameIndex XZW9 B 1 77 + FrameIndex XZW9 C 1 78 + FrameIndex XZW9 D 1 79 + FrameIndex XZW9 E 1 80 + FrameIndex XZW9 F 1 81 + FrameIndex XZW9 G 1 82 + FrameIndex XZW9 H 1 83 + FrameIndex XZW9 I 1 84 + FrameIndex XZW9 J 1 85 + FrameIndex XZW9 K 1 86 + FrameIndex XZW9 L 1 87 + FrameIndex XZW9 M 1 88 + FrameIndex XZW9 N 1 89 + FrameIndex XZW9 O 1 90 + FrameIndex XZW9 P 1 91 + FrameIndex XZW9 Q 1 92 + FrameIndex XZW9 R 1 93 + FrameIndex XZW9 S 1 94 + SurfaceSkin 1 4 "" + // Load (Green) + SurfaceSkin 1 5 "Shell_Slug.png" + FrameIndex XZW9 T 1 62 + FrameIndex XZW9 U 1 63 + FrameIndex XZW9 V 1 64 + FrameIndex XZW9 W 1 65 + FrameIndex XZW9 X 1 66 + FrameIndex XZW9 Y 1 67 + FrameIndex XZW9 Z 1 68 + FrameIndex XZWA A 1 69 + FrameIndex XZWA B 1 70 + FrameIndex XZWA C 1 71 + FrameIndex XZWA D 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Slug.png" + FrameIndex XZWA E 1 73 + FrameIndex XZWA F 1 74 + FrameIndex XZWA G 1 75 + FrameIndex XZWA H 1 76 + FrameIndex XZWA I 1 77 + FrameIndex XZWA J 1 78 + FrameIndex XZWA K 1 79 + FrameIndex XZWA L 1 80 + FrameIndex XZWA M 1 81 + FrameIndex XZWA N 1 82 + FrameIndex XZWA O 1 83 + FrameIndex XZWA P 1 84 + FrameIndex XZWA Q 1 85 + FrameIndex XZWA R 1 86 + FrameIndex XZWA S 1 87 + FrameIndex XZWA T 1 88 + FrameIndex XZWA U 1 89 + FrameIndex XZWA V 1 90 + FrameIndex XZWA W 1 91 + FrameIndex XZWA X 1 92 + FrameIndex XZWA Y 1 93 + FrameIndex XZWA Z 1 94 + SurfaceSkin 1 4 "" + // Load (White) + SurfaceSkin 1 5 "Shell_Dragon.png" + FrameIndex XZWB A 1 62 + FrameIndex XZWB B 1 63 + FrameIndex XZWB C 1 64 + FrameIndex XZWB D 1 65 + FrameIndex XZWB E 1 66 + FrameIndex XZWB F 1 67 + FrameIndex XZWB G 1 68 + FrameIndex XZWB H 1 69 + FrameIndex XZWB I 1 70 + FrameIndex XZWB J 1 71 + FrameIndex XZWB K 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Dragon.png" + FrameIndex XZWB L 1 73 + FrameIndex XZWB M 1 74 + FrameIndex XZWB N 1 75 + FrameIndex XZWB O 1 76 + FrameIndex XZWB P 1 77 + FrameIndex XZWB Q 1 78 + FrameIndex XZWB R 1 79 + FrameIndex XZWB S 1 80 + FrameIndex XZWB T 1 81 + FrameIndex XZWB U 1 82 + FrameIndex XZWB V 1 83 + FrameIndex XZWB W 1 84 + FrameIndex XZWB X 1 85 + FrameIndex XZWB Y 1 86 + FrameIndex XZWB Z 1 87 + FrameIndex XZWC A 1 88 + FrameIndex XZWC B 1 89 + FrameIndex XZWC C 1 90 + FrameIndex XZWC D 1 91 + FrameIndex XZWC E 1 92 + FrameIndex XZWC F 1 93 + FrameIndex XZWC G 1 94 + SurfaceSkin 1 4 "" + // Load (Blue) + SurfaceSkin 1 5 "Shell_Kinylum.png" + FrameIndex XZWC H 1 62 + FrameIndex XZWC I 1 63 + FrameIndex XZWC J 1 64 + FrameIndex XZWC K 1 65 + FrameIndex XZWC L 1 66 + FrameIndex XZWC M 1 67 + FrameIndex XZWC N 1 68 + FrameIndex XZWC O 1 69 + FrameIndex XZWC P 1 70 + FrameIndex XZWC Q 1 71 + FrameIndex XZWC R 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Kinylum.png" + FrameIndex XZWC S 1 73 + FrameIndex XZWC T 1 74 + FrameIndex XZWC U 1 75 + FrameIndex XZWC V 1 76 + FrameIndex XZWC W 1 77 + FrameIndex XZWC X 1 78 + FrameIndex XZWC Y 1 79 + FrameIndex XZWC Z 1 80 + FrameIndex XZWD A 1 81 + FrameIndex XZWD B 1 82 + FrameIndex XZWD C 1 83 + FrameIndex XZWD D 1 84 + FrameIndex XZWD E 1 85 + FrameIndex XZWD F 1 86 + FrameIndex XZWD G 1 87 + FrameIndex XZWD H 1 88 + FrameIndex XZWD I 1 89 + FrameIndex XZWD J 1 90 + FrameIndex XZWD K 1 91 + FrameIndex XZWD L 1 92 + FrameIndex XZWD M 1 93 + FrameIndex XZWD N 1 94 + SurfaceSkin 1 4 "" + // Load (Black) + SurfaceSkin 1 5 "Shell_Fuck.png" + FrameIndex XZWD O 1 62 + FrameIndex XZWD P 1 63 + FrameIndex XZWD Q 1 64 + FrameIndex XZWD R 1 65 + FrameIndex XZWD S 1 66 + FrameIndex XZWD T 1 67 + FrameIndex XZWD U 1 68 + FrameIndex XZWD V 1 69 + FrameIndex XZWD W 1 70 + FrameIndex XZWD X 1 71 + FrameIndex XZWD Y 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Fuck.png" + FrameIndex XZWD Z 1 73 + FrameIndex XZWE A 1 74 + FrameIndex XZWE B 1 75 + FrameIndex XZWE C 1 76 + FrameIndex XZWE D 1 77 + FrameIndex XZWE E 1 78 + FrameIndex XZWE F 1 79 + FrameIndex XZWE G 1 80 + FrameIndex XZWE H 1 81 + FrameIndex XZWE I 1 82 + FrameIndex XZWE J 1 83 + FrameIndex XZWE K 1 84 + FrameIndex XZWE L 1 85 + FrameIndex XZWE M 1 86 + FrameIndex XZWE N 1 87 + FrameIndex XZWE O 1 88 + FrameIndex XZWE P 1 89 + FrameIndex XZWE Q 1 90 + FrameIndex XZWE R 1 91 + FrameIndex XZWE S 1 92 + FrameIndex XZWE T 1 93 + FrameIndex XZWE U 1 94 + SurfaceSkin 1 4 "" + // Load (Purple) + SurfaceSkin 1 5 "Shell_Ball.png" + FrameIndex XZWE V 1 62 + FrameIndex XZWE W 1 63 + FrameIndex XZWE X 1 64 + FrameIndex XZWE Y 1 65 + FrameIndex XZWE Z 1 66 + FrameIndex XZWF A 1 67 + FrameIndex XZWF B 1 68 + FrameIndex XZWF C 1 69 + FrameIndex XZWF D 1 70 + FrameIndex XZWF E 1 71 + FrameIndex XZWF F 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Ball.png" + FrameIndex XZWF G 1 73 + FrameIndex XZWF H 1 74 + FrameIndex XZWF I 1 75 + FrameIndex XZWF J 1 76 + FrameIndex XZWF K 1 77 + FrameIndex XZWF L 1 78 + FrameIndex XZWF M 1 79 + FrameIndex XZWF N 1 80 + FrameIndex XZWF O 1 81 + FrameIndex XZWF P 1 82 + FrameIndex XZWF Q 1 83 + FrameIndex XZWF R 1 84 + FrameIndex XZWF S 1 85 + FrameIndex XZWF T 1 86 + FrameIndex XZWF U 1 87 + FrameIndex XZWF V 1 88 + FrameIndex XZWF W 1 89 + FrameIndex XZWF X 1 90 + FrameIndex XZWF Y 1 91 + FrameIndex XZWF Z 1 92 + FrameIndex XZWG A 1 93 + FrameIndex XZWG B 1 94 + SurfaceSkin 1 4 "" + // Load (Gold) + SurfaceSkin 1 5 "Shell_Gold.png" + FrameIndex XZWG C 1 62 + FrameIndex XZWG D 1 63 + FrameIndex XZWG E 1 64 + FrameIndex XZWG F 1 65 + FrameIndex XZWG G 1 66 + FrameIndex XZWG H 1 67 + FrameIndex XZWG I 1 68 + FrameIndex XZWG J 1 69 + FrameIndex XZWG K 1 70 + FrameIndex XZWG L 1 71 + FrameIndex XZWG M 1 72 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Gold.png" + FrameIndex XZWG N 1 73 + FrameIndex XZWG O 1 74 + FrameIndex XZWG P 1 75 + FrameIndex XZWG Q 1 76 + FrameIndex XZWG R 1 77 + FrameIndex XZWG S 1 78 + FrameIndex XZWG T 1 79 + FrameIndex XZWG U 1 80 + FrameIndex XZWG V 1 81 + FrameIndex XZWG W 1 82 + FrameIndex XZWG X 1 83 + FrameIndex XZWG Y 1 84 + FrameIndex XZWG Z 1 85 + FrameIndex XZWH A 1 86 + FrameIndex XZWH B 1 87 + FrameIndex XZWH C 1 88 + FrameIndex XZWH D 1 89 + FrameIndex XZWH E 1 90 + FrameIndex XZWH F 1 91 + FrameIndex XZWH G 1 92 + FrameIndex XZWH H 1 93 + FrameIndex XZWH I 1 94 + SurfaceSkin 1 4 "" + ///// PRIMED (Again) + // Check out + FrameIndex XZWH J 1 96 + FrameIndex XZWH K 1 97 + FrameIndex XZWH L 1 98 + FrameIndex XZWH M 1 99 + FrameIndex XZWH N 1 100 + FrameIndex XZWH O 1 101 + FrameIndex XZWH P 1 102 + FrameIndex XZWH Q 1 103 + FrameIndex XZWH R 1 104 + FrameIndex XZWH S 1 105 + FrameIndex XZWH T 1 106 + FrameIndex XZWH U 1 107 + FrameIndex XZWH V 1 108 + FrameIndex XZWH W 1 109 + FrameIndex XZWH X 1 110 + FrameIndex XZWH Y 1 111 + FrameIndex XZWH Z 1 112 + FrameIndex XZWI A 1 113 + FrameIndex XZWI B 1 114 + FrameIndex XZWI C 1 115 + FrameIndex XZWI D 1 116 + FrameIndex XZWI E 1 117 + FrameIndex XZWI F 1 118 + FrameIndex XZWI G 1 119 + FrameIndex XZWI H 1 120 + FrameIndex XZWI I 1 121 + // Melee + FrameIndex XZWI J 1 123 + FrameIndex XZWI K 1 124 + FrameIndex XZWI L 1 125 + FrameIndex XZWI M 1 126 + FrameIndex XZWI N 1 127 + FrameIndex XZWI O 1 128 + FrameIndex XZWI P 1 129 + FrameIndex XZWI Q 1 130 + FrameIndex XZWI R 1 131 + FrameIndex XZWI S 1 132 + FrameIndex XZWI T 1 133 + FrameIndex XZWI U 1 134 + FrameIndex XZWI V 1 135 + ////// FIRED (Extra) + // Check out + FrameIndex XZWI W 1 138 + FrameIndex XZWI X 1 139 + FrameIndex XZWI Y 1 140 + FrameIndex XZWI Z 1 141 + FrameIndex XZWJ A 1 142 + FrameIndex XZWJ B 1 143 + FrameIndex XZWJ C 1 144 + FrameIndex XZWJ D 1 145 + FrameIndex XZWJ E 1 146 + FrameIndex XZWJ F 1 147 + FrameIndex XZWJ G 1 148 + FrameIndex XZWJ H 1 149 + FrameIndex XZWJ I 1 150 + FrameIndex XZWJ J 1 151 + FrameIndex XZWJ K 1 152 + FrameIndex XZWJ L 1 153 + FrameIndex XZWJ M 1 154 + FrameIndex XZWJ N 1 155 + FrameIndex XZWJ O 1 156 + FrameIndex XZWJ P 1 157 + FrameIndex XZWJ Q 1 158 + FrameIndex XZWJ R 1 159 + FrameIndex XZWJ S 1 160 + FrameIndex XZWJ T 1 161 + FrameIndex XZWJ U 1 162 + FrameIndex XZWJ V 1 163 + // Melee + FrameIndex XZWJ W 1 165 + FrameIndex XZWJ X 1 166 + FrameIndex XZWJ Y 1 167 + FrameIndex XZWJ Z 1 168 + FrameIndex XZWK A 1 169 + FrameIndex XZWK B 1 170 + FrameIndex XZWK C 1 171 + FrameIndex XZWK D 1 172 + FrameIndex XZWK E 1 173 + FrameIndex XZWK F 1 174 + FrameIndex XZWK G 1 175 + FrameIndex XZWK H 1 176 + FrameIndex XZWK I 1 177 + ////// PRIMED (Extra) + // Unload (Red) + SurfaceSkin 1 4 "Shell_Normal.png" + FrameIndex XZWK J 1 180 + FrameIndex XZWK K 1 181 + FrameIndex XZWK L 1 182 + FrameIndex XZWK M 1 183 + FrameIndex XZWK N 1 184 + FrameIndex XZWK O 1 185 + FrameIndex XZWK P 1 186 + FrameIndex XZWK Q 1 187 + FrameIndex XZWK R 1 188 + FrameIndex XZWK S 1 189 + FrameIndex XZWK T 1 190 + FrameIndex XZWK U 1 191 + FrameIndex XZWK V 1 192 + FrameIndex XZWK W 1 193 + FrameIndex XZWK X 1 194 + FrameIndex XZWK Y 1 195 + FrameIndex XZWK Z 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWL A 1 197 + // Unload (Green) + SurfaceSkin 1 4 "Shell_Slug.png" + FrameIndex XZWL B 1 180 + FrameIndex XZWL C 1 181 + FrameIndex XZWL D 1 182 + FrameIndex XZWL E 1 183 + FrameIndex XZWL F 1 184 + FrameIndex XZWL G 1 185 + FrameIndex XZWL H 1 186 + FrameIndex XZWL I 1 187 + FrameIndex XZWL J 1 188 + FrameIndex XZWL K 1 189 + FrameIndex XZWL L 1 190 + FrameIndex XZWL M 1 191 + FrameIndex XZWL N 1 192 + FrameIndex XZWL O 1 193 + FrameIndex XZWL P 1 194 + FrameIndex XZWL Q 1 195 + FrameIndex XZWL R 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWL S 1 197 + // Unload (White) + SurfaceSkin 1 4 "Shell_Dragon.png" + FrameIndex XZWL T 1 180 + FrameIndex XZWL U 1 181 + FrameIndex XZWL V 1 182 + FrameIndex XZWL W 1 183 + FrameIndex XZWL X 1 184 + FrameIndex XZWL Y 1 185 + FrameIndex XZWL Z 1 186 + FrameIndex XZWM A 1 187 + FrameIndex XZWM B 1 188 + FrameIndex XZWM C 1 189 + FrameIndex XZWM D 1 190 + FrameIndex XZWM E 1 191 + FrameIndex XZWM F 1 192 + FrameIndex XZWM G 1 193 + FrameIndex XZWM H 1 194 + FrameIndex XZWM I 1 195 + FrameIndex XZWM J 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWM K 1 197 + // Unload (Blue) + SurfaceSkin 1 4 "Shell_Kinylum.png" + FrameIndex XZWM L 1 180 + FrameIndex XZWM M 1 181 + FrameIndex XZWM N 1 182 + FrameIndex XZWM O 1 183 + FrameIndex XZWM P 1 184 + FrameIndex XZWM Q 1 185 + FrameIndex XZWM R 1 186 + FrameIndex XZWM S 1 187 + FrameIndex XZWM T 1 188 + FrameIndex XZWM U 1 189 + FrameIndex XZWM V 1 190 + FrameIndex XZWM W 1 191 + FrameIndex XZWM X 1 192 + FrameIndex XZWM Y 1 193 + FrameIndex XZWM Z 1 194 + FrameIndex XZWN A 1 195 + FrameIndex XZWN B 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWN C 1 197 + // Unload (Black) + SurfaceSkin 1 4 "Shell_Fuck.png" + FrameIndex XZWN D 1 180 + FrameIndex XZWN E 1 181 + FrameIndex XZWN F 1 182 + FrameIndex XZWN G 1 183 + FrameIndex XZWN H 1 184 + FrameIndex XZWN I 1 185 + FrameIndex XZWN J 1 186 + FrameIndex XZWN K 1 187 + FrameIndex XZWN L 1 188 + FrameIndex XZWN M 1 189 + FrameIndex XZWN N 1 190 + FrameIndex XZWN O 1 191 + FrameIndex XZWN P 1 192 + FrameIndex XZWN Q 1 193 + FrameIndex XZWN R 1 194 + FrameIndex XZWN S 1 195 + FrameIndex XZWN T 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWN U 1 197 + // Unload (Purple) + SurfaceSkin 1 4 "Shell_Ball.png" + FrameIndex XZWN V 1 180 + FrameIndex XZWN W 1 181 + FrameIndex XZWN X 1 182 + FrameIndex XZWN Y 1 183 + FrameIndex XZWN Z 1 184 + FrameIndex XZWO A 1 185 + FrameIndex XZWO B 1 186 + FrameIndex XZWO C 1 187 + FrameIndex XZWO D 1 188 + FrameIndex XZWO E 1 189 + FrameIndex XZWO F 1 190 + FrameIndex XZWO G 1 191 + FrameIndex XZWO H 1 192 + FrameIndex XZWO I 1 193 + FrameIndex XZWO J 1 194 + FrameIndex XZWO K 1 195 + FrameIndex XZWO L 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWO M 1 197 + // Unload (Gold) + SurfaceSkin 1 4 "Shell_Gold.png" + FrameIndex XZWO N 1 180 + FrameIndex XZWO O 1 181 + FrameIndex XZWO P 1 182 + FrameIndex XZWO Q 1 183 + FrameIndex XZWO R 1 184 + FrameIndex XZWO S 1 185 + FrameIndex XZWO T 1 186 + FrameIndex XZWO U 1 187 + FrameIndex XZWO V 1 188 + FrameIndex XZWO W 1 189 + FrameIndex XZWO X 1 190 + FrameIndex XZWO Y 1 191 + FrameIndex XZWO Z 1 192 + FrameIndex XZWP A 1 193 + FrameIndex XZWP B 1 194 + FrameIndex XZWP C 1 195 + FrameIndex XZWP D 1 196 + SurfaceSkin 1 4 "" + FrameIndex XZWP E 1 197 + // Load (Red) + SurfaceSkin 1 5 "Shell_Normal.png" + FrameIndex XZWP F 1 198 + FrameIndex XZWP G 1 199 + FrameIndex XZWP H 1 200 + FrameIndex XZWP I 1 201 + FrameIndex XZWP J 1 202 + FrameIndex XZWP K 1 203 + FrameIndex XZWP L 1 204 + FrameIndex XZWP M 1 205 + FrameIndex XZWP N 1 206 + FrameIndex XZWP O 1 207 + FrameIndex XZWP P 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Normal.png" + FrameIndex XZWP Q 1 209 + FrameIndex XZWP R 1 210 + FrameIndex XZWP S 1 211 + FrameIndex XZWP T 1 212 + FrameIndex XZWP U 1 213 + FrameIndex XZWP V 1 214 + FrameIndex XZWP W 1 215 + FrameIndex XZWP X 1 216 + FrameIndex XZWP Y 1 217 + FrameIndex XZWP Z 1 218 + FrameIndex XZWQ A 1 219 + FrameIndex XZWQ B 1 220 + FrameIndex XZWQ C 1 221 + FrameIndex XZWQ D 1 222 + FrameIndex XZWQ E 1 223 + FrameIndex XZWQ F 1 224 + FrameIndex XZWQ G 1 225 + FrameIndex XZWQ H 1 226 + FrameIndex XZWQ I 1 227 + FrameIndex XZWQ J 1 228 + FrameIndex XZWQ K 1 229 + FrameIndex XZWQ L 1 230 + SurfaceSkin 1 4 "" + // Load (Green) + SurfaceSkin 1 5 "Shell_Slug.png" + FrameIndex XZWQ M 1 198 + FrameIndex XZWQ N 1 199 + FrameIndex XZWQ O 1 200 + FrameIndex XZWQ P 1 201 + FrameIndex XZWQ Q 1 202 + FrameIndex XZWQ R 1 203 + FrameIndex XZWQ S 1 204 + FrameIndex XZWQ T 1 205 + FrameIndex XZWQ U 1 206 + FrameIndex XZWQ V 1 207 + FrameIndex XZWQ W 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Slug.png" + FrameIndex XZWQ X 1 209 + FrameIndex XZWQ Y 1 210 + FrameIndex XZWQ Z 1 211 + FrameIndex XZWR A 1 212 + FrameIndex XZWR B 1 213 + FrameIndex XZWR C 1 214 + FrameIndex XZWR D 1 215 + FrameIndex XZWR E 1 216 + FrameIndex XZWR F 1 217 + FrameIndex XZWR G 1 218 + FrameIndex XZWR H 1 219 + FrameIndex XZWR I 1 220 + FrameIndex XZWR J 1 221 + FrameIndex XZWR K 1 222 + FrameIndex XZWR L 1 223 + FrameIndex XZWR M 1 224 + FrameIndex XZWR N 1 225 + FrameIndex XZWR O 1 226 + FrameIndex XZWR P 1 227 + FrameIndex XZWR Q 1 228 + FrameIndex XZWR R 1 229 + FrameIndex XZWR S 1 230 + SurfaceSkin 1 4 "" + // Load (White) + SurfaceSkin 1 5 "Shell_Dragon.png" + FrameIndex XZWR T 1 198 + FrameIndex XZWR U 1 199 + FrameIndex XZWR V 1 200 + FrameIndex XZWR W 1 201 + FrameIndex XZWR X 1 202 + FrameIndex XZWR Y 1 203 + FrameIndex XZWR Z 1 204 + FrameIndex XZWS A 1 205 + FrameIndex XZWS B 1 206 + FrameIndex XZWS C 1 207 + FrameIndex XZWS D 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Dragon.png" + FrameIndex XZWS E 1 209 + FrameIndex XZWS F 1 210 + FrameIndex XZWS G 1 211 + FrameIndex XZWS H 1 212 + FrameIndex XZWS I 1 213 + FrameIndex XZWS J 1 214 + FrameIndex XZWS K 1 215 + FrameIndex XZWS L 1 216 + FrameIndex XZWS M 1 217 + FrameIndex XZWS N 1 218 + FrameIndex XZWS O 1 219 + FrameIndex XZWS P 1 220 + FrameIndex XZWS Q 1 221 + FrameIndex XZWS R 1 222 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Gold.png" + FrameIndex XZWS S 1 223 + FrameIndex XZWS T 1 224 + FrameIndex XZWS U 1 225 + FrameIndex XZWS V 1 226 + FrameIndex XZWS W 1 227 + FrameIndex XZWS X 1 228 + FrameIndex XZWS Y 1 229 + FrameIndex XZWS Z 1 230 + SurfaceSkin 1 4 "" + // Load (Blue) + SurfaceSkin 1 5 "Shell_Kinylum.png" + FrameIndex XZWT A 1 198 + FrameIndex XZWT B 1 199 + FrameIndex XZWT C 1 200 + FrameIndex XZWT D 1 201 + FrameIndex XZWT E 1 202 + FrameIndex XZWT F 1 203 + FrameIndex XZWT G 1 204 + FrameIndex XZWT H 1 205 + FrameIndex XZWT I 1 206 + FrameIndex XZWT J 1 207 + FrameIndex XZWT K 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Kinylum.png" + FrameIndex XZWT L 1 209 + FrameIndex XZWT M 1 210 + FrameIndex XZWT N 1 211 + FrameIndex XZWT O 1 212 + FrameIndex XZWT P 1 213 + FrameIndex XZWT Q 1 214 + FrameIndex XZWT R 1 215 + FrameIndex XZWT S 1 216 + FrameIndex XZWT T 1 217 + FrameIndex XZWT U 1 218 + FrameIndex XZWT V 1 219 + FrameIndex XZWT W 1 220 + FrameIndex XZWT X 1 221 + FrameIndex XZWT Y 1 222 + FrameIndex XZWT Z 1 223 + FrameIndex XZWU A 1 224 + FrameIndex XZWU B 1 225 + FrameIndex XZWU C 1 226 + FrameIndex XZWU D 1 227 + FrameIndex XZWU E 1 228 + FrameIndex XZWU F 1 229 + FrameIndex XZWU G 1 230 + SurfaceSkin 1 4 "" + // Load (Black) + SurfaceSkin 1 5 "Shell_Fuck.png" + FrameIndex XZWU H 1 198 + FrameIndex XZWU I 1 199 + FrameIndex XZWU J 1 200 + FrameIndex XZWU K 1 201 + FrameIndex XZWU L 1 202 + FrameIndex XZWU M 1 203 + FrameIndex XZWU N 1 204 + FrameIndex XZWU O 1 205 + FrameIndex XZWU P 1 206 + FrameIndex XZWU Q 1 207 + FrameIndex XZWU R 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Fuck.png" + FrameIndex XZWU S 1 209 + FrameIndex XZWU T 1 210 + FrameIndex XZWU U 1 211 + FrameIndex XZWU V 1 212 + FrameIndex XZWU W 1 213 + FrameIndex XZWU X 1 214 + FrameIndex XZWU Y 1 215 + FrameIndex XZWU Z 1 216 + FrameIndex XZWV A 1 217 + FrameIndex XZWV B 1 218 + FrameIndex XZWV C 1 219 + FrameIndex XZWV D 1 220 + FrameIndex XZWV E 1 221 + FrameIndex XZWV F 1 222 + FrameIndex XZWV G 1 223 + FrameIndex XZWV H 1 224 + FrameIndex XZWV I 1 225 + FrameIndex XZWV J 1 226 + FrameIndex XZWV K 1 227 + FrameIndex XZWV L 1 228 + FrameIndex XZWV M 1 229 + FrameIndex XZWV N 1 230 + SurfaceSkin 1 4 "" + // Load (Purple) + SurfaceSkin 1 5 "Shell_Ball.png" + FrameIndex XZWV O 1 198 + FrameIndex XZWV P 1 199 + FrameIndex XZWV Q 1 200 + FrameIndex XZWV R 1 201 + FrameIndex XZWV S 1 202 + FrameIndex XZWV T 1 203 + FrameIndex XZWV U 1 204 + FrameIndex XZWV V 1 205 + FrameIndex XZWV W 1 206 + FrameIndex XZWV X 1 207 + FrameIndex XZWV Y 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Ball.png" + FrameIndex XZWV Z 1 209 + FrameIndex XZWW A 1 210 + FrameIndex XZWW B 1 211 + FrameIndex XZWW C 1 212 + FrameIndex XZWW D 1 213 + FrameIndex XZWW E 1 214 + FrameIndex XZWW F 1 215 + FrameIndex XZWW G 1 216 + FrameIndex XZWW H 1 217 + FrameIndex XZWW I 1 218 + FrameIndex XZWW J 1 219 + FrameIndex XZWW K 1 220 + FrameIndex XZWW L 1 221 + FrameIndex XZWW M 1 222 + FrameIndex XZWW N 1 223 + FrameIndex XZWW O 1 224 + FrameIndex XZWW P 1 225 + FrameIndex XZWW Q 1 226 + FrameIndex XZWW R 1 227 + FrameIndex XZWW S 1 228 + FrameIndex XZWW T 1 229 + FrameIndex XZWW U 1 230 + SurfaceSkin 1 4 "" + // Load (Gold) + SurfaceSkin 1 5 "Shell_Gold.png" + FrameIndex XZWW V 1 198 + FrameIndex XZWW W 1 199 + FrameIndex XZWW X 1 200 + FrameIndex XZWW Y 1 201 + FrameIndex XZWW Z 1 202 + FrameIndex XZWX A 1 203 + FrameIndex XZWX B 1 204 + FrameIndex XZWX C 1 205 + FrameIndex XZWX D 1 206 + FrameIndex XZWX E 1 207 + FrameIndex XZWX F 1 208 + SurfaceSkin 1 5 "" + SurfaceSkin 1 4 "Shell_Gold.png" + FrameIndex XZWX G 1 209 + FrameIndex XZWX H 1 210 + FrameIndex XZWX I 1 211 + FrameIndex XZWX J 1 212 + FrameIndex XZWX K 1 213 + FrameIndex XZWX L 1 214 + FrameIndex XZWX M 1 215 + FrameIndex XZWX N 1 216 + FrameIndex XZWX O 1 217 + FrameIndex XZWX P 1 218 + FrameIndex XZWX Q 1 219 + FrameIndex XZWX R 1 220 + FrameIndex XZWX S 1 221 + FrameIndex XZWX T 1 222 + FrameIndex XZWX U 1 223 + FrameIndex XZWX V 1 224 + FrameIndex XZWX W 1 225 + FrameIndex XZWX X 1 226 + FrameIndex XZWX Y 1 227 + FrameIndex XZWX Z 1 228 + FrameIndex XZWY A 1 229 + FrameIndex XZWY B 1 230 + SurfaceSkin 1 4 "" +} diff --git a/models/Spreadgun1st.blend b/models/Spreadgun1st.blend index 426c0eef6..ef51de7f6 100644 Binary files a/models/Spreadgun1st.blend and b/models/Spreadgun1st.blend differ diff --git a/models/Spreadgun1st_a.3d b/models/Spreadgun1st_a.3d index 19e37f162..7fcd17e49 100644 Binary files a/models/Spreadgun1st_a.3d and b/models/Spreadgun1st_a.3d differ diff --git a/models/Spreadgun1st_d.3d b/models/Spreadgun1st_d.3d index 3d66e3eb4..62b4b8e34 100644 Binary files a/models/Spreadgun1st_d.3d and b/models/Spreadgun1st_d.3d differ diff --git a/sndinfo.txt b/sndinfo.txt index e280beee4..80ad8c5be 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -419,6 +419,35 @@ pusher/bounce2 sounds/pusher/push_bounce2.ogg pusher/bounce3 sounds/pusher/push_bounce3.ogg $random pusher/bounce { pusher/bounce1 pusher/bounce2 pusher/bounce3 } +spreadgun/open sounds/spreadgun/spread_open.ogg +spreadgun/hammer sounds/spreadgun/spread_hammer.ogg +spreadgun/close sounds/spreadgun/spread_close.ogg +spreadgun/shellin sounds/spreadgun/spread_load.ogg +spreadgun/select sounds/spreadgun/spread_select.ogg +spreadgun/deselect sounds/spreadgun/spread_deselect.ogg +spreadgun/redfire1 sounds/spreadgun/spread_redfire1.ogg +spreadgun/redfire2 sounds/spreadgun/spread_redfire2.ogg +$random spreadgun/redfire { spreadgun/redfire1 spreadgun/redfire2 } +spreadgun/greenfire1 sounds/spreadgun/spread_greenfire1.ogg +spreadgun/greenfire2 sounds/spreadgun/spread_greenfire2.ogg +$random spreadgun/greenfire { spreadgun/greenfire1 spreadgun/greenfire2 } +spreadgun/whitefire1 sounds/spreadgun/spread_whitefire1.ogg +spreadgun/whitefire2 sounds/spreadgun/spread_whitefire2.ogg +$random spreadgun/whitefire { spreadgun/whitefire1 spreadgun/whitefire2 } +spreadgun/bluefire1 sounds/spreadgun/spread_bluefire1.ogg +spreadgun/bluefire2 sounds/spreadgun/spread_bluefire2.ogg +$random spreadgun/bluefire { spreadgun/bluefire1 spreadgun/bluefire2 } +spreadgun/blackfire1 sounds/spreadgun/spread_blackfire1.ogg +spreadgun/blackfire2 sounds/spreadgun/spread_blackfire2.ogg +$random spreadgun/blackfire { spreadgun/blackfire1 spreadgun/blackfire2 } +spreadgun/purplefire1 sounds/spreadgun/spread_purplefire1.ogg +spreadgun/purplefire2 sounds/spreadgun/spread_purplefire2.ogg +$random spreadgun/purplefire { spreadgun/purplefire1 spreadgun/purplefire2 } +spreadgun/goldfire1 sounds/spreadgun/spread_goldfire1.ogg +spreadgun/goldfire2 sounds/spreadgun/spread_goldfire2.ogg +$random spreadgun/goldfire { spreadgun/goldfire1 spreadgun/goldfire2 } +spreadgun/checkgun sounds/spreadgun/spread_idle.ogg + candygun/fire1 sounds/candygun/candy_fire1.ogg candygun/fire2 sounds/candygun/candy_fire2.ogg candygun/fire3 sounds/candygun/candy_fire3.ogg diff --git a/sounds/deepimpact/makeammo.ogg b/sounds/deepimpact/makeammo.ogg deleted file mode 100644 index 8decf76d1..000000000 Binary files a/sounds/deepimpact/makeammo.ogg and /dev/null differ diff --git a/sounds/items/makeammo.ogg b/sounds/items/makeammo.ogg index 33b64dabe..8decf76d1 100644 Binary files a/sounds/items/makeammo.ogg and b/sounds/items/makeammo.ogg differ diff --git a/sounds/spreadgun/spread_blackfire1.ogg b/sounds/spreadgun/spread_blackfire1.ogg new file mode 100644 index 000000000..603e954c2 Binary files /dev/null and b/sounds/spreadgun/spread_blackfire1.ogg differ diff --git a/sounds/spreadgun/spread_blackfire2.ogg b/sounds/spreadgun/spread_blackfire2.ogg new file mode 100644 index 000000000..cbd616a61 Binary files /dev/null and b/sounds/spreadgun/spread_blackfire2.ogg differ diff --git a/sounds/spreadgun/spread_bluefire1.ogg b/sounds/spreadgun/spread_bluefire1.ogg new file mode 100644 index 000000000..e55db0460 Binary files /dev/null and b/sounds/spreadgun/spread_bluefire1.ogg differ diff --git a/sounds/spreadgun/spread_bluefire2.ogg b/sounds/spreadgun/spread_bluefire2.ogg new file mode 100644 index 000000000..73843bbe2 Binary files /dev/null and b/sounds/spreadgun/spread_bluefire2.ogg differ diff --git a/sounds/spreadgun/spread_close.ogg b/sounds/spreadgun/spread_close.ogg new file mode 100644 index 000000000..a8625e3b5 Binary files /dev/null and b/sounds/spreadgun/spread_close.ogg differ diff --git a/sounds/spreadgun/spread_deselect.ogg b/sounds/spreadgun/spread_deselect.ogg new file mode 100644 index 000000000..60453aa38 Binary files /dev/null and b/sounds/spreadgun/spread_deselect.ogg differ diff --git a/sounds/spreadgun/spread_goldfire1.ogg b/sounds/spreadgun/spread_goldfire1.ogg new file mode 100644 index 000000000..e74d29816 Binary files /dev/null and b/sounds/spreadgun/spread_goldfire1.ogg differ diff --git a/sounds/spreadgun/spread_goldfire2.ogg b/sounds/spreadgun/spread_goldfire2.ogg new file mode 100644 index 000000000..b93875683 Binary files /dev/null and b/sounds/spreadgun/spread_goldfire2.ogg differ diff --git a/sounds/spreadgun/spread_greenfire1.ogg b/sounds/spreadgun/spread_greenfire1.ogg new file mode 100644 index 000000000..492a678a9 Binary files /dev/null and b/sounds/spreadgun/spread_greenfire1.ogg differ diff --git a/sounds/spreadgun/spread_greenfire2.ogg b/sounds/spreadgun/spread_greenfire2.ogg new file mode 100644 index 000000000..973a8606a Binary files /dev/null and b/sounds/spreadgun/spread_greenfire2.ogg differ diff --git a/sounds/spreadgun/spread_hammer.ogg b/sounds/spreadgun/spread_hammer.ogg new file mode 100644 index 000000000..371e78458 Binary files /dev/null and b/sounds/spreadgun/spread_hammer.ogg differ diff --git a/sounds/spreadgun/spread_idle.ogg b/sounds/spreadgun/spread_idle.ogg new file mode 100644 index 000000000..8e75b71b2 Binary files /dev/null and b/sounds/spreadgun/spread_idle.ogg differ diff --git a/sounds/spreadgun/spread_load.ogg b/sounds/spreadgun/spread_load.ogg new file mode 100644 index 000000000..c6ca12465 Binary files /dev/null and b/sounds/spreadgun/spread_load.ogg differ diff --git a/sounds/spreadgun/spread_open.ogg b/sounds/spreadgun/spread_open.ogg new file mode 100644 index 000000000..368c7c5a1 Binary files /dev/null and b/sounds/spreadgun/spread_open.ogg differ diff --git a/sounds/spreadgun/spread_purplefire1.ogg b/sounds/spreadgun/spread_purplefire1.ogg new file mode 100644 index 000000000..d7e22fbe5 Binary files /dev/null and b/sounds/spreadgun/spread_purplefire1.ogg differ diff --git a/sounds/spreadgun/spread_purplefire2.ogg b/sounds/spreadgun/spread_purplefire2.ogg new file mode 100644 index 000000000..23f1f515d Binary files /dev/null and b/sounds/spreadgun/spread_purplefire2.ogg differ diff --git a/sounds/spreadgun/spread_redfire1.ogg b/sounds/spreadgun/spread_redfire1.ogg new file mode 100644 index 000000000..55f464978 Binary files /dev/null and b/sounds/spreadgun/spread_redfire1.ogg differ diff --git a/sounds/spreadgun/spread_redfire2.ogg b/sounds/spreadgun/spread_redfire2.ogg new file mode 100644 index 000000000..3957d8325 Binary files /dev/null and b/sounds/spreadgun/spread_redfire2.ogg differ diff --git a/sounds/spreadgun/spread_select.ogg b/sounds/spreadgun/spread_select.ogg new file mode 100644 index 000000000..84534d380 Binary files /dev/null and b/sounds/spreadgun/spread_select.ogg differ diff --git a/sounds/spreadgun/spread_whitefire1.ogg b/sounds/spreadgun/spread_whitefire1.ogg new file mode 100644 index 000000000..5127c8659 Binary files /dev/null and b/sounds/spreadgun/spread_whitefire1.ogg differ diff --git a/sounds/spreadgun/spread_whitefire2.ogg b/sounds/spreadgun/spread_whitefire2.ogg new file mode 100644 index 000000000..d7b8b9b94 Binary files /dev/null and b/sounds/spreadgun/spread_whitefire2.ogg differ diff --git a/zscript/swwm_common.zsc b/zscript/swwm_common.zsc index 18ef35dc1..ef9081583 100644 --- a/zscript/swwm_common.zsc +++ b/zscript/swwm_common.zsc @@ -243,6 +243,8 @@ Class SWWMLoreLibrary : Thinker { if ( text ~== "SWWM_LORETXT_SAYA" ) text = "SWWM_LORETXT_SAYA2"; // married kirin + else if ( text ~== "SWWM_LORETXT_ANARUKON" ) + text = "SWWM_LORETXT_ANARUKON2"; // comments from miyamoto-xanai wedding else if ( text ~== "SWWM_LORETXT_HELL2" ) text = "SWWM_LORETXT_HELL3"; // mention the return of manakei } diff --git a/zscript/swwm_shot.zsc b/zscript/swwm_shot.zsc index 13ab5a3e5..e6de4fe83 100644 --- a/zscript/swwm_shot.zsc +++ b/zscript/swwm_shot.zsc @@ -3,17 +3,62 @@ Class Spreadgun : SWWMWeapon { - bool loaded; - Class loadammo, nextammo; + bool fired; // shell was used + Class loadammo, nextammo; // currently loaded shell, next shell to load - transient ui TextureID WeaponBox; - transient ui HUDFont mTewiFont; + transient ui TextureID WeaponBox, AmmoIcon[7], LoadedIcon[7]; + transient ui Font TewiFont; + + override void DrawWeapon( double TicFrac, double bx, double by, Vector2 hs, Vector2 ss ) + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + if ( !WeaponBox ) + { + WeaponBox = TexMan.CheckForTexture("graphics/HUD/SpreadgunDisplay.png",TexMan.Type_Any); + AmmoIcon[0] = TexMan.CheckForTexture("graphics/HUD/RedShell.png",TexMan.Type_Any); + AmmoIcon[1] = TexMan.CheckForTexture("graphics/HUD/GreenShell.png",TexMan.Type_Any); + AmmoIcon[2] = TexMan.CheckForTexture("graphics/HUD/WhiteShell.png",TexMan.Type_Any); + AmmoIcon[3] = TexMan.CheckForTexture("graphics/HUD/BlueShell.png",TexMan.Type_Any); + AmmoIcon[4] = TexMan.CheckForTexture("graphics/HUD/BlackShell.png",TexMan.Type_Any); + AmmoIcon[5] = TexMan.CheckForTexture("graphics/HUD/PurpleShell.png",TexMan.Type_Any); + AmmoIcon[6] = TexMan.CheckForTexture("graphics/HUD/GoldShell.png",TexMan.Type_Any); + LoadedIcon[0] = TexMan.CheckForTexture("graphics/HUD/LoadedRedShell.png",TexMan.Type_Any); + LoadedIcon[1] = TexMan.CheckForTexture("graphics/HUD/LoadedGreenShell.png",TexMan.Type_Any); + LoadedIcon[2] = TexMan.CheckForTexture("graphics/HUD/LoadedWhiteShell.png",TexMan.Type_Any); + LoadedIcon[3] = TexMan.CheckForTexture("graphics/HUD/LoadedBlueShell.png",TexMan.Type_Any); + LoadedIcon[4] = TexMan.CheckForTexture("graphics/HUD/LoadedBlackShell.png",TexMan.Type_Any); + LoadedIcon[5] = TexMan.CheckForTexture("graphics/HUD/LoadedPurpleShell.png",TexMan.Type_Any); + LoadedIcon[6] = TexMan.CheckForTexture("graphics/HUD/LoadedGoldShell.png",TexMan.Type_Any); + } + if ( !TewiFont ) TewiFont = Font.GetFont('TewiShaded'); + Screen.DrawTexture(WeaponBox,false,bx-55,by-44,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true); + int ox = 7; + int oy = 12; + for ( int i=0; i<7; i++ ) + { + Screen.DrawTexture(AmmoIcon[i],false,bx-ox,by-oy,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); + String astr = String.Format("%3d",Owner.CountInv(types[i])); + Screen.DrawText(TewiFont,Font.CR_FIRE,bx-ox-(TewiFont.StringWidth(astr)+1),by-oy-2,astr,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,(types[i]==nextammo)?Color(0,0,0,0):Color(128,0,0,0)); + oy += 10; + if ( i == 3 ) + { + oy = 22; + ox = 34; + } + } + for ( int i=0; i<7; i++ ) + { + if ( loadammo != types[i] ) continue; + Screen.DrawTexture(LoadedIcon[i],false,bx-49,by-9,DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true,DTA_ColorOverlay,fired?Color(128,0,0,0):Color(0,0,0,0)); + break; + } + } override bool ReportHUDAmmo() { static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; - return loaded; + return !fired; } override bool CheckAmmo( int firemode, bool autoswitch, bool requireammo, int ammocount ) @@ -21,7 +66,7 @@ Class Spreadgun : SWWMWeapon static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; if ( (firemode == PrimaryFire) || (firemode == AltFire) ) { - if ( loaded ) return true; + if ( !fired ) return true; for ( int i=0; i<7; i++ ) if ( Owner.CountInv(types[i]) > 0 ) return true; return false; } @@ -35,6 +80,154 @@ Class Spreadgun : SWWMWeapon return false; } + action void A_SelectUnloadState() + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const statelabel primedstates[] = {"UnloadRed", "UnloadGreen", "UnloadWhite", "UnloadBlue", "UnloadBlack", "UnloadPurple", "UnloadGold"}; + static const statelabel firedstates[] = {"UnloadRedFired", "UnloadGreenFired", "UnloadWhiteFired", "UnloadBlueFired", "UnloadBlackFired", "UnloadPurpleFired", "UnloadGoldFired"}; + int amidx = 0; + for ( int i=0; i<7; i++ ) + { + if ( invoker.loadammo != types[i] ) continue; + amidx = i; + break; + } + if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); + else player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); + A_Overlay(-9999,"UnloadDummy"); + A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); + } + + action void A_SelectLoadState() + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const statelabel primedstates[] = {"LoadRed", "LoadGreen", "LoadWhite", "LoadBlue", "LoadBlack", "LoadPurple", "LoadGold"}; + static const statelabel firedstates[] = {"LoadRedFired", "LoadGreenFired", "LoadWhiteFired", "LoadBlueFired", "LoadBlackFired", "LoadPurpleFired", "LoadGoldFired"}; + int amidx = 0; + for ( int i=0; i<7; i++ ) + { + if ( invoker.nextammo != types[i] ) continue; + amidx = i; + break; + } + if ( !invoker.fired ) player.SetPSprite(PSP_WEAPON,invoker.FindState(primedstates[amidx])); + else player.SetPSprite(PSP_WEAPON,invoker.FindState(firedstates[amidx])); + if ( !sv_infiniteammo && !FindInventory('PowerInfiniteAmmo',true) ) + { + TakeInventory(invoker.nextammo,1); + } + A_Overlay(-9999,"LoadDummy"); + } + + action void A_DropShell() + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + if ( !invoker.fired ) + { + for ( int i=0; i<7; i++ ) + { + if ( invoker.loadammo != types[i] ) continue; + if ( !GiveInventory(types[i],1) ) Spawn(types[i],Vec3Angle(5,angle,height/2)); + break; + } + } + else Console.Printf("// TODO drop spent shell"); + } + + action void A_FireShell() + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + static const statelabel flashes[] = {"FlashRed","FlashGreen","FlashWhite","FlashBlue","FlashBlack","FlashPurple","FlashGold"}; + static const String sounds[] = {"spreadgun/redfire","spreadgun/greenfire","spreadgun/whitefire","spreadgun/bluefire","spreadgun/blackfire","spreadgun/purplefire","spreadgun/goldfire"}; + static const int louds[] = {800,1000,1100,1200,1400,600,2500}; + static const int quakes[] = {3,4,2,4,3,1,6}; + static const Color cols[] = {Color(40,255,192,64),Color(36,255,192,80),Color(64,255,160,32),Color(48,32,176,255),Color(72,255,128,16),Color(24,255,224,96),Color(96,255,224,16)}; + Console.Printf("// TODO fire shell"); + for ( int i=0; i<7; i++ ) + { + if ( invoker.loadammo != types[i] ) continue; + A_SWWMFlash(flashes[i]); + A_StartSound(sounds[i],CHAN_WEAPON,CHANF_OVERLAP,attenuation:.6); + A_AlertMonsters(louds[i]); + A_QuakeEx(quakes[i],quakes[i],quakes[i],9,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:.2*quakes[i]); + A_ZoomFactor(1.+quakes[i]*.04,ZOOM_INSTANT); + A_ZoomFactor(1.); + SWWMHandler.DoFlash(self,cols[i],5); + break; + } + A_StartSound("spreadgun/hammer",CHAN_WEAPON,CHANF_OVERLAP); + invoker.fired = true; + } + + action void A_LoadShell() + { + A_StartSound("spreadgun/shellin",CHAN_WEAPON,CHANF_OVERLAP); + invoker.loadammo = invoker.nextammo; + } + + action void A_Prime() + { + if ( invoker.fired ) + { + A_StartSound("spreadgun/hammer",CHAN_WEAPON,CHANF_OVERLAP); + invoker.fired = false; + } + if ( CountInv(invoker.nextammo) <= 0 ) A_SwitchAmmoType(true); + } + + override void AttachToOwner( Actor other ) + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + Super.AttachToOwner(other); + if ( !loadammo ) loadammo = "RedShell"; + for ( int i=0; i<7; i++ ) + { + Ammo a = Ammo(other.FindInventory(types[i])); + if ( !a ) continue; + nextammo = types[i]; + Ammo1 = a; + return; + } + nextammo = AmmoType1; + } + + action void A_SwitchAmmoType( bool rev = false ) + { + static const Class types[] = {"RedShell","GreenShell","WhiteShell","BlueShell","BlackShell","PurpleShell","GoldShell"}; + int cur = 0, next = 0; + for ( int i=0; i<7; i++ ) + { + if ( invoker.nextammo != types[i] ) continue; + cur = i; + break; + } + for ( int i=0; i<7; i++ ) + { + int ridx; + if ( rev ) + { + ridx = (cur-i)%7; + if ( ridx < 0 ) ridx = 6; + } + else ridx = (i+cur+1)%7; + if ( CountInv(types[ridx]) <= 0 ) continue; + next = ridx; + break; + } + if ( invoker.nextammo != types[next] ) A_StartSound("misc/invchange",CHAN_WEAPONEXTRA,CHANF_UI|CHANF_LOCAL); + invoker.nextammo = types[next]; + invoker.Ammo1 = Ammo(FindInventory(invoker.nextammo)); + A_WeaponReady(WRF_NOFIRE); + } + + action void A_AltHold() + { + A_WeaponReady(WRF_NOFIRE); + if ( player.cmd.buttons&BT_ALTATTACK ) return; + if ( !invoker.fired ) player.SetPSPrite(PSP_WEAPON,invoker.FindState("Ready")); + else player.SetPSPrite(PSP_WEAPON,invoker.FindState("ReadyFired")); + } + Default { Tag "$T_SPREADGUN"; @@ -46,6 +239,7 @@ Class Spreadgun : SWWMWeapon Weapon.AmmoType1 "RedShell"; Weapon.AmmoGive1 1; Stamina 15000; + +SWWMWEAPON.NOFIRSTGIVE; } States @@ -53,5 +247,310 @@ Class Spreadgun : SWWMWeapon Spawn: XZW1 A -1; Stop; + Deselect: + XZW2 A 1 + { + A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.fired,"DeselectFired"); + } + XZW2 BCDEFGHI 1; + XZW2 I -1 A_FullLower(); + Stop; + DeselectFired: + XZW2 Z 1; + XZW3 ABCDEFGH 1; + XZW3 H -1 A_FullLower(); + Stop; + Select: + XZW2 I 1 + { + A_FullRaise(); + return A_JumpIf(invoker.fired,"SelectFired"); + } + XZW2 JKLMNOPQ 1; + Goto Ready; + SelectFired: + XZW3 HIJKLMNOP 1; + Goto ReadyFired; + Ready: + XZW2 A 1 + { + int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; + if ( invoker.nextammo && (CountInv(invoker.nextammo) > 0) ) + flg |= WRF_ALLOWRELOAD; + A_WeaponReady(flg); + } + Wait; + ReadyFired: + XZW2 Z 1 + { + int flg = WRF_ALLOWZOOM|WRF_ALLOWUSER1; + if ( invoker.nextammo && (CountInv(invoker.nextammo) > 0) ) + flg |= WRF_ALLOWRELOAD; + else flg |= WRF_NOPRIMARY; + A_WeaponReady(flg); + } + Wait; + Fire: + #### # 1 + { + if ( invoker.fired ) return ResolveState("Reload"); + A_FireShell(); + return ResolveState(null); + } + XZW2 RSTU 1; + XZW2 VWXY 2; + Goto ReadyFired; + AltFire: + #### # 1 A_SwitchAmmoType(); + #### # 1 A_AltHold(); + Wait; + Reload: + #### # 1 A_SelectUnloadState(); + Stop; + UnloadDummy: // overlay with shared functions for all unload anims + TNT1 A 11; + TNT1 A 14 A_StartSound("spreadgun/open",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 1 A_DropShell(); + Stop; + UnloadRedFired: + XZW2 Z 2; + XZW3 QRST 2; + XZW3 UVWXYZ 1; + XZW4 ABCDEFGH 1; + XZW8 M 1; + Goto Reload2; + UnloadGreenFired: + XZW2 Z 2; + XZW4 IJKL 2; + XZW4 MNOPQRSTUVWXYZ 1; + XZW9 T 1; + Goto Reload2; + UnloadWhiteFired: + XZW2 Z 2; + XZW5 ABCD 2; + XZW5 EFGHIJKLMNOPQR 1; + XZWB A 1; + Goto Reload2; + UnloadBlueFired: + XZW2 Z 2; + XZW5 STUV 2; + XZW5 WXYZ 1; + XZW6 ABCDEFGHIJ 1; + XZWC H 1; + Goto Reload2; + UnloadBlackFired: + XZW2 Z 2; + XZW6 KLMN 2; + XZW6 OPQRSTUVWXYZ 1; + XZW7 AB 1; + XZWD O 1; + Goto Reload2; + UnloadPurpleFired: + XZW2 Z 2; + XZW7 CDEF 2; + XZW7 GHIJKLMNOPQRST 1; + XZWE V 1; + Goto Reload2; + UnloadGoldFired: + XZW2 Z 2; + XZW7 UVWX 2; + XZW7 YZ 1; + XZW8 ABCDEFGHIJKL 1; + XZWG C 1; + Goto Reload2; + UnloadRed: + XZW2 A 2; + XZWK JKLM 2; + XZWK NOPQRSTUVWXYZ 1; + XZWL A 1; + XZWP F 1; + Goto Reload2; + UnloadGreen: + XZW2 A 2; + XZWL BCDE 2; + XZWL FGHIJKLMNOPQRS 1; + XZWQ M 1; + Goto Reload2; + UnloadWhite: + XZW2 A 2; + XZWL TUVW 2; + XZWL XYZ 1; + XZWM ABCDEFGHIJK 1; + XZWR T 1; + Goto Reload2; + UnloadBlue: + XZW2 A 2; + XZWM LMNO 2; + XZWM PQRSTUVWXYZ 1; + XZWN ABC 1; + XZWT A 1; + Goto Reload2; + UnloadBlack: + XZW2 A 2; + XZWN DEFG 2; + XZWN HIJKLMNOPQRSTU 1; + XZWU H 1; + Goto Reload2; + UnloadPurple: + XZW2 A 2; + XZWN VWXY 2; + XZWN Z 1; + XZWO ABCDEFGHIJKLM 1; + XZWV O 1; + Goto Reload2; + UnloadGold: + XZW2 A 2; + XZWO NOPQ 2; + XZWO RSTUVWXYZ 1; + XZWP ABCDE 1; + XZWW V 1; + Goto Reload2; + Reload2: + #### # 1 A_SelectLoadState(); + Stop; + LoadDummy: // overlay with shared functions for all load anims + TNT1 A 9; + TNT1 A 12 A_LoadShell(); + TNT1 A 2 A_StartSound("spreadgun/close",CHAN_WEAPON,CHANF_OVERLAP); + TNT1 A 2 A_Prime(); + TNT1 A 1 { invoker.PlayUpSound(self); } + Stop; + LoadRedFired: + XZW8 MNOPQRSTUVWXYZ 1; + XZW9 ABCDEFGHIJKLMNOPQRS 1; + Goto Ready; + LoadGreenFired: + XZW9 TUVWXYZ 1; + XZWA ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + Goto Ready; + LoadWhiteFired: + XZWB ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + XZWC ABCDEFG 1; + Goto Ready; + LoadBlueFired: + XZWC HIJKLMNOPQRSTUVWXYZ 1; + XZWD ABCDEFGHIJKLMN 1; + Goto Ready; + LoadBlackFired: + XZWD OPQRSTUVWXYZ 1; + XZWE ABCDEFGHIJKLMNOPQRSTU 1; + Goto Ready; + LoadPurpleFired: + XZWE VWXYZ 1; + XZWF ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + XZWG AB 1; + Goto Ready; + LoadGoldFired: + XZWG CDEFGHIJKLMNOPQRSTUVWXYZ 1; + XZWH ABCDEFGHI 1; + Goto Ready; + LoadRed: + XZWP FGHIJKLMNOPQRSTUVWXYZ 1; + XZWQ ABCDEFGHIJKL 1; + Goto Ready; + LoadGreen: + XZWQ MNOPQRSTUVWXYZ 1; + XZWR ABCDEFGHIJKLMNOPQRS 1; + Goto Ready; + LoadWhite: + XZWR TUVWXYZ 1; + XZWS ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + Goto Ready; + LoadBlue: + XZWT ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + XZWU ABCDEFG 1; + Goto Ready; + LoadBlack: + XZWU HIJKLMNOPQRSTUVWXYZ 1; + XZWV ABCDEFGHIJKLMN 1; + Goto Ready; + LoadPurple: + XZWV OPQRSTUVWXYZ 1; + XZWW ABCDEFGHIJKLMNOPQRSTU 1; + Goto Ready; + LoadGold: + XZWW VWXYZ 1; + XZWX ABCDEFGHIJKLMNOPQRSTUVWXYZ 1; + XZWY AB 1; + Goto Ready; + Zoom: + XZW2 A 1 + { + A_StartSound("spreadgun/checkgun",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.fired,"ZoomFired"); + } + XZWH JKLMNOPQRST 1; + XZWH UVWXYZ 2; + XZWI ABC 2; + XZWI DEFGHI 1; + Goto Ready; + ZoomFired: + XZW2 Z 1; + XZWI WXYZ 1; + XZWJ ABCDEFG 1; + XZWJ HIJKLMNOP 2; + XZWJ QRSTUV 1; + Goto ReadyFired; + DummyMelee: + TNT1 A 3; + TNT1 A 1 A_Melee(); + Stop; + User1: + XZW2 A 2 + { + A_StartSound("spreadgun/deselect",CHAN_WEAPON,CHANF_OVERLAP); + return A_JumpIf(invoker.fired,"User1Fired"); + } + XZWI JK 2; + User1Hold: + XZWI L 1 + { + A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); + A_Overlay(-9999,"DummyMelee"); + } + XZWI MNOP 2; + XZWI QR 3; + XZWI S 0 A_JumpIf(player.cmd.buttons&BT_USER1,"User1Hold"); + XZWI S 0 { invoker.PlayUpSound(self); } + XZWI STUV 2; + Goto Ready; + User1Fired: + XZW2 Z 2; + XZWJ WX 2; + User1FiredHold: + XZWJ Y 1 + { + A_StartSound("demolitionist/swing",CHAN_WEAPON,CHANF_OVERLAP); + A_Overlay(-9999,"DummyMelee"); + } + XZWJ Z 2; + XZWK ABC 2; + XZWK DE 3; + XZWK F 0 A_JumpIf(player.cmd.buttons&BT_USER1,"User1FiredHold"); + XZWK F 0 { invoker.PlayUpSound(self); } + XZWK FGHI 2; + Goto ReadyFired; + FlashRed: + XZWZ A 2 Bright; + Stop; + FlashGreen: + XZWZ B 2 Bright; + Stop; + FlashWhite: + XZWZ C 2 Bright; + Stop; + FlashBlue: + XZWZ D 2 Bright; + Stop; + FlashBlack: + XZWZ E 2 Bright; + Stop; + FlashPurple: + XZWZ F 2 Bright; + Stop; + FlashGold: + XZWZ G 2 Bright; + Stop; } } \ No newline at end of file