The Scandalous Scarlet Moon

Spankers, Spankees, and Switches of All Ages (18 and above),

Today, I am proud to release the first day of the first episode of The Scandalous Scarlet Moon.

You take on the role of a Silver Age style superhero(ine) Scarlet Moon. Aided by your best friend Juliana, you must protect the City of Generica from a host of villains, from brutish thugs to sensual seducers, grinning giants to evil masterminds, honorable hunters to cheating thieves. But don’t spend too much time superheroing! After all, you’ve got a job to keep down, studies to keep up on, precious precious beauty sleep, and you might even want to have fun every now and then! Neglect them at your peril (to your bottom). But don’t spend too much time focusing on your regular life either! After all, every one of those villains will happily put you over their knees and give you the kind of a spanking a meddling superhero deserves if you let your guard down for even a single second!

So join me as we embark upon an epic quest across, over, and under Generica City!

In this release experience the epic, action-packed origins of Scarlet Moon! Fight your way through an abandoned business park crawling with the Evul gang, the Whistlers, learning skills as you go that will be absolutely essential to getting out of there with an unmarked bottom. Come face to face with your very first supervillain: the boisterous Buzzsaw and learn up close how they earned their menacing name!

 

This release contains the following:

  1. Customize your character however you want! Pick their gender, name, appearance, and clothing.
  2. Pick the genders of most other characters! Most NPCs are broken into one of three roles: spanker, spankee, and switch. Pick their genders universally at the beginning of the game, or select the gender of each character as you meet them.
  3. Experience a rather generic superhero story, where you get to make some choices that dictate how your character reacts to the situations! This episode is alas, rather linear, and your choices don’t impact gameplay much. But that will come in subsequent episodes.
  4. Engage in turn-based tactical combat. Most of your enemies don’t pose much of a threat, but be careful! Your health and mana are combined into a single stat, energy, you have no way of restoring energy, and you lose energy each round  (this can be turned off). You’ll have to make intelligent and efficient use of every skill in your ever-growing  arsenal if you hope to survive!
  5. Get annoyed when you discover that you gain nothing from combat!
  6. Experience in-combat spankings! Be mildly annoyed at how utterly impractical they are at this point in the game, and hope they become more useful as the game progresses!
  7. Experience lovingly crafted in-story spanking scenes that eschew sound effects in favor of purple prose, and clunky back and forth between the spanker and spankee! How many different ways can we describe getting slapped on the ass? Play and find out!
  8. Prefer to play a Domly Dom of Domliness and don’t relish the idea of your character getting their fanny whacked? Every spanking scene is avoidable! Turn off in-combat spankings (which also turns off losing-to-the-supervillain-spankings)! Naughtiness is inevitable, but spankings are not!
  9. All sorts of bugs and crashes that have slipped past myself and my beta testers, because let’s be honest, I’m a hack whose too busy jerking it to use proper design, write enough unit tests, and don’t even talk to me about integration tests! (If you happen to discover one of these, please let me know, and maybe we can trick a few people into believing I know what I’m doing).

The next major release will contain the following:

    1. Beach scene! Because who doesn’t love the idea of buxom women in thong bikinis getting spanked in public at the beach?
    2. The kidnapping of a character you’ve only just met, and probably don’t like very much, but are expected to save anyway!
    3. The unveiling of Scarlet Moon’s costume! Will she have a modest, practical outfit, or the type of sexy skanky skimpy spandex slip you secretly enjoy but publicly denounce because there’s something terribly wrong, yet dirtily sexy, about a genre where the mainstream works have already done the work of designing the outfits for the inevitable porn parodies!
    4. Stat gain through roleplaying! Rather than getting stronger in combat, some of the choices you make during the story will give you stat bonuses, and let you learn new skills! Will you be a character with high Strength, who punches her way through problems, or a fast-talking charmer with high WIllpower who talks her way out of scrapes? The choice is up to you!
    5. Balance short-term gains with long-term benefits! Do you eavesdrop on your opponent, and try to learn her motivations, or do you ambush her now, and gain the upper hand in what is sure to be an intense battle that could go either way?

Windows version

Linux/Mac version

Source Code

The game is written in Java, so you need to make sure you download and install Java 8 if you don’t already have it installed. Be warned, Oracle apparently has a shady deal with Yahoo! where they try to trick you into making Yahoo! your default search engine, so keep an eye out when installing Java.

 

The game’s code is licensed under the GNU GPL-v3, while the content of the game (events, characters, etc) is released under the CC-BY-SA. What this means is that you are free to take my work and do whatever you want with it (release a slightly modified version of my game, write stories featuring my characters, etc.) and release them so long as you:

  1. Give me proper credit
  2. Release your work under the same or a compatible license

Edited

I’ve uploaded a new release that fixes an issue that may have caused the game to crash when attempting to save.

I’ve uploaded a new release that fixes an issue where the player will not learn the skills they are supposed to if you change the font size on the character creation screen.

I’ve uploaded a new release that fixes several issues: Character skills are now properly loaded when loading a game, so skills don’t bleed over from one game to another. The player can now defend at the distant range. The option where you defeat Buzzsaw and spare them a spanking now transitions to the correct event. Struggling during a grapple no longer automatically breaks you out of it. It now reduces the duration based on your grapple skill. Buzzsaw now knows the skill Soaring Leap, where she jumps at you, which puts both you them at armslength. So you can’t just move to distant and spam Scarlet Beam until she falls over. Well, you can but she now has a way of getting close to you.

41 thoughts on “The Scandalous Scarlet Moon

  1. I’m afraid I’m getting an error out the gate. After putting in all character changes for my Scarlette, the game immediately closes out when I hit Enter for (Next).

    The error I’m getting is:

    INFO: Changing screens from com.spankingrpgs.view.screens.CharacterDisplayScreen@2b5a9dd5 to com.spankingrpgs.view.screens.OptionsScreen@3674028f
    Jun 05, 2016 8:06:52 PM com.spankingrpgs.ScarletMoon lambda$main$0
    SEVERE: Encountered an unhandled error.
    java.lang.NoSuchMethodError: javafx.scene.control.ToggleGroup.setUserData(Ljava/lang/Object;)V
    at com.spankingrpgs.view.screens.OptionsScreen.lambda$buildButtonLines$5(OptionsScreen.java:120)
    at com.spankingrpgs.view.screens.OptionsScreen$$Lambda$608/1602312184.apply(Unknown Source)
    […]
    at java.lang.Thread.run(Thread.java:745)

      1. The really weird thing is that that kind of error should be caught by the compiler, which says to me that we may have incompatible bytecode…

        What version of Java are you using? The game is only compatible with Java 8.

        1. I’m currently running on Windows 7, all of the Potion Wars worked fine on the OS before, this is an unusual new error.

          I just downloaded and finished installing Java 8’s latest version (had Java 8 but an earlier version than the one Java’s site just installed), went in to try the game again but experienced the same issue, will try restarting the computer (it mentioned that might be needed) but if Java 8 was the issue would I even be able to successfully run the .bat and get to character creation?

          1. Update, I’m afraid the restart didn’t help the issue either, still crashes with the ‘NoSuchMethod’ error after hitting Enter on the character creation screen.

          2. I’ve tweaked the game so that it now no longer uses the method `ToggleGroup::setUserData`. Apparently that method is very very new, and may not be in all distributions of Java.

            I’ve updated the links in the blog post accordingly.

          3. Just tried .16 and that seems to work fine so far, thanks a ton! I will give it more playtime tonight and see if I can catch any more bugs.

  2. Uploaded a new version that fixes some saving issues I stumbled across while messing around with the game some more on my Windows box. If you’re having saving issues, please make sure to download the most recent release.

    1. Cheeky bastard. I know several very scary, domly women, and I _will_ sic them on you if you keep it up. 😛

  3. I once asked Aska if his last game was a virus, he never replied me (which annoyed me because I thought we were friends on anime otk we shared ideas!)

    I downloaded this game, scanned it passed the scan check, (though it took an unusually long time) also that java site, are you sure it is official?

    Also wasn’t there a security issue with Java?

    Download at your own risk, don’t mean to shit stir! Why can’t spanking games be browser based? Without having to go on shady share sites XD

    1. Not accusing you Aka, your last game was good, just wish spanking games were more accessible, especially on the mine field of the net.

      1. Is Aska a typo referring to me? Because I never received a message from anyone asking if my last game was a virus.

        Also, making games browser based does not protect you. At all. Especially since most browser based games are written in Flash, and Flash has more security holes than a wall made out of swiss cheese and manned by drunk monkeys. Browsers are also rife with security holes, and exploited quite a bit because they’re such popular programs.

        I will edit the Java link to be the https link (I should have done that from the beginning, sorry). With the https link, the java.com will give the browser a certificate that says “Hey, I’m totally legit!” and the browser will verify it. You will be able to tell that the browser verified the certificate because there will be a green “Oracle Corporation” in front of the URL.

        Java doesn’t have any more security issues than anything else. Java applets can cause problems (basically Java programs that are meant to run over the web), but nobody uses those anymore, and my game is not a Java applet.

        Also, shady download sites? Really? You can’t get any less shady than github or java.com. Java.com is owned and operated by the Oracle Corporation, the company that manages MySQL, which is one of the (if not the most) popular database systems in the world, and Java which is the one of the (if not the most) popular programming language in the world.

        Github meanwhile is one of the most popular hosting platform for open source projects (and internal corporate projects) in the world.

        So downloading something from java.com or github.com isn’t any shadier than buying something from Wal-Mart.

        As far as verifying that my game is not a virus, I don’t know what to tell you. I wrote the whole thing, and all of my dependencies are very common and popular open source dependencies in the (corporate!) Java programming world, so if any of those contained malicious code, you better believe there would have been a shitstorm throughout the Internet. The game itself doesn’t connect to the internet in any way (to verify this, just turn off your internet and run the game). So it can’t serve as an attack vector for malicious users.

        The source code is available (though it looks like I forgot to post the link to the code. That will be remedied shortly), so if you don’t believe me feel free to take a look at it, or see if you can find someone with a programming background to look through it if you aren’t a programmer.

        1. Well I am sorry for accusing you of anything, I think I am probably just paranoid, and yeah you’re right, flash is a pain, especially after their last issue, I use google chrome because they tend to keep everything working. I am also paranoid about various sites, I’ve had friends send me virus before :S

          Anyway I am sorry for being a jerk about it, I think I had some kind of issue around the time I downloaded potion wars, but I had previously downloaded before that issue and I had more problems.

          1. It’s ok. I came off a bit too defensive, and I’m sorry about that.

            Honestly, a bit of paranoia is a good thing to have on the internet. Just keep in mind that if you are interacting with a program, some part of it (however) small is executing on your computer, which means you are trusting the people who wrote that program (and the security features your OS has) not to infect your machine with malicious code.

            The only truly secure machine is the one that you built yourself from scratch, wrote all the software for, and never hooked up to the internet.

            (There’s no such thing as a secure machine).

            That being said there are steps you can take to be safer. If you’re really concerned about that, encrypt all of your personal information, and keep it on a separate harddrive. Run virus scanners periodically, reformat your harddrive and do a fresh install of your OS every couple of years, and only hook up your personal information to your machine when you need to, and only after doing a virus scan.

            Also, periodically run a virus scan on your external hard drive.

            You still won’t be completely safe, but you will be safer.

          2. Steve, I can assure you this is no virus. I used to feel a similar way, but I haven’t had a virus for years now and I download things from all over the Internet all the time. My process:
            1) Don’t use Internet Explorer, or whatever fancy name the microsoft marketing idiots want to call it
            2) Don’t click on obviously virusy links (such as the random “download manager. Exe” type trash on some sharing sites)
            3) Run a virus scan periodically, even if it IS just Windows Defender
            4) Keep your OS updated, even if the name of it IS “10” and there’s no good reason it’s not called “9”

  4. When I try to run the game it always immediately freezes and I get this message.

    Java platform SE binary is not responding

    I have updated to the newest version of Java and my OS is windows 8.1

        1. Ok, first, let’s verify that you have the latest version of Java installed: https://www.java.com/en/download/installed.jsp

          Click the big green button (you may need to activate the browser plugin for Java, but the page will guide you through that), and give Oracle permission to run the Java program that pops up.

          If you don’t, try again to update to the latest version.

          Otherwise, it’s possible that you have an older version of Java floating around, this page should help you uninstall older versions: http://www.java.com/en/download/uninstallapplet.jsp

          This page has some additional information about uninstalling older versions: http://www.java.com/en/download/faq/remove_olderversions.xml

      1. My computer is 64-bit but java is 32-bit because of this.

        Why do I only get the 32-bit Java when I go to Java.com?
        Java.com provides a Java version based on your browser and operating system (OS). If you are running a 64-bit version of Windows 8, you have access to 32-bit and 64-bit versions of Internet Explorer 10 on your system. The desktop version of the Windows 8 OS does not run in a full 64-bit mode (unless you have Enhanced Protected Mode in Internet Explorer 10 turned on), thus 32-bit Java is the default.

        1. Ok. Are there any files in that folder with the .log extension, and do they have anything in them?

          1. Yes there is a file titled Log with the .log extension and there is lot of text that looks kind of like code. It is 33KB.

            There is a second file titled log.log and has the .lck ile extension, it is 2KB and the text is mostly gibberish with the exception of the words R o o t E n t r y

          2. Could you send me the `Log.log` file? I’ve got a gmail account sprpgs.

          3. Also, you may want to consider upgrading to Windows 10, and see if that fixes the issue. From what I’ve read, running a 32-bit JVM on a 64-bit machine is less than ideal, so if only 32-bit JVM’s are really supported on Windows 8, that may be the cause of your issue.

          4. I updated my pc to windows 10, removed the 32-bt java and installed 64-bit java and downloaded the v0.1.18 version of scarletmoon, still not working and I emailed you the log.log. file.

          5. I’m assuming you’re still getting the same error about the Java Platform SE binary not responding?

            The log file you sent me doesn’t show any errors. It stops after trying to transition to the TitleScreen, but it looks like it loads the data correctly.

          6. Also, this is probably not the issue, but one thing one you can try is “Run as Administrator.” It’s possible that there are some permissions problems.

  5. Hey aka, congratulations on reaching this release milestone and thank you for all your effort to bring us this game. I quite enjoyed it. An entertaining and dramatic little story and the combat system fit well enough.
    Unfortunately I was at no point able ot select a s(K)ill during combat which made the fight against Buzzsaw pretty buch impossible. Also, I’m pretty sure that when I selected a female character win a sundress the game’s narration still implied me having the default jeans (etc.) clothes.

    1. Have you played the most recent version (the one I uploaded this morning), v0.1.18? Someone else had a similar issue with not being able to use skills, and v0.1.18 fixes their issue.

      Do you know where in the game it implied you were still wearing jeans? I usually played using the leather miniskirt, and I don’t remember anyplace where the game implied I was wearing jeans, though I may have missed something.

  6. Hey, no the skill issue happened with version 0.1.17. I played it again in 0.1.18 both aforementioned bugs disappeared.

    However, I noticed a few other things:

    1. I had a game crash when pressing the one to “Dump them with their buddy Kenny”.
    Here is the stack trace:


    “Nobody cares. Charge!”. State after applying changes: com.spankingrpgs.model.GameState@1c794dc5
    Jun 09, 2016 8:59:21 AM com.spankingrpgs.controller.EventController selectEvent
    INFO: Transitioning to event ep1 creepy factory leave
    Jun 09, 2016 8:59:21 AM com.spankingrpgs.model.story.UniversalEvent applyChanges
    INFO: Applying changes with com.spankingrpgs.model.story.UniversalEvent$$Lambda$216/1151692013@28ee454c
    Jun 09, 2016 8:59:21 AM com.spankingrpgs.controller.EventController selectEvent
    INFO: Transitioning to event ep1 third fight
    Jun 09, 2016 9:00:04 AM com.spankingrpgs.controller.EventController selectEvent
    INFO: Applying changes from event . State before applying changes: com.spankingrpgs.model.GameState@1c794dc5
    Jun 09, 2016 9:00:04 AM com.spankingrpgs.model.story.UniversalEvent applyChanges
    INFO: Applying changes with com.spankingrpgs.scarletmoon.loader.EventLoader$$Lambda$239/2089917737@69fbc063
    Jun 09, 2016 9:00:04 AM com.spankingrpgs.model.story.StateModificationCommands lambda$fight$6
    INFO: Built CombatEvent: CombatEvent{allies={DISTANT=[], GRAPPLE=[], SPANKING=[], ARMSLENGTH=[]}, enemies={DISTANT=[], SPANKING=[], GRAPPLE=[], ARMSLENGTH=[GameCharacter{name=’Whistler(F)’, printedName='{FEMALE=Whistler, MALE=Whistler}’, appearance={skincolor=class com.spankingrpgs.scarletmoon.characters.appearance.SkinColor.TANNED, musculature=class com.spankingrpgs.scarletmoon.characters.appearance.Musculature.MUSCULAR, bodytype=class com.spankingrpgs.scarletmoon.characters.appearance.BodyType.HEAVYSET, eyecolor=class com.spankingrpgs.scarletmoon.characters.appearance.EyeColor.BROWN, haircolor=BROWN, hairstyle=class com.spankingrpgs.scarletmoon.characters.appearance.HairStyle.PONYTAIL, height=class com.spankingrpgs.scarletmoon.characters.appearance.Height.TALL}, description=’A broad-shouldered, muscular individual in a v-necked shirt and baggy jeans, with a ponytail, big knuckles, and a penchant for using them.’, primaryStatistics={STRENGTH=4, SPEED=3, WILLPOWER=0, STRESS=0, FATIGUE=0, GPA=0, ATTRITION=0}, secondaryStatistics={ENERGY=1, MAXIMUM_ENERGY=1, GRAPPLE=8, ARMSLENGTH=7, DISTANT=6, POWER=0, RISQUE=6}, equipSlots={UNDERWEAR=EquipSlot{name=’UNDERWEAR’, equipment=Equipment{risque=5, name=’thong’, description=’A pair of panties whose back is nothing more than a thin strip of cloth.’, type=’underwear’, equipSlotNames=[UNDERWEAR]}}, UPPER=EquipSlot{name=’UPPER’, equipment=Equipment{risque=2, name=’v-necked t-shirt’, description=’A t-shirt with a plunging neckline’, type=’shirt’, equipSlotNames=[UPPER]}}, LOWER=EquipSlot{name=’LOWER’, equipment=Equipment{risque=4, name=’baggy jeans’, description=’A baggy pair of blue jeans that hang so low it makes you wonder how these are better than not wearing pants at all’, type=’pants’, equipSlotNames=[LOWER]}}}, statuses={}}, GameCharacter{name=’Whistler Thug(F)’, printedName='{FEMALE=Whistler Thug, MALE=Whistler Thug}’, appearance={skincolor=class com.spankingrpgs.scarletmoon.characters.appearance.SkinColor.PEACH, musculature=class com.spankingrpgs.scarletmoon.characters.appearance.Musculature.FIT, bodytype=class com.spankingrpgs.scarletmoon.characters.appearance.BodyType.SLIM, eyecolor=class com.spankingrpgs.scarletmoon.characters.appearance.EyeColor.BROWN, haircolor=BROWN, hairstyle=class com.spankingrpgs.scarletmoon.characters.appearance.HairStyle.DOWN, height=class com.spankingrpgs.scarletmoon.characters.appearance.Height.AVERAGE}, description=’A slender individual with short-cut brown hair in skinny jeans and a t-shirt, wielding stun batons.’, primaryStatistics={STRENGTH=3, SPEED=4, WILLPOWER=0, STRESS=0, FATIGUE=0, GPA=0, ATTRITION=0}, secondaryStatistics={ENERGY=1, MAXIMUM_ENERGY=1, GRAPPLE=6, ARMSLENGTH=7, DISTANT=8, POWER=0, RISQUE=2}, equipSlots={UNDERWEAR=EquipSlot{name=’UNDERWEAR’, equipment=Equipment{risque=3, name=’boy shorts’, description=’A pair of underwear that fully covers your bum.’, type=’underwear’, equipSlotNames=[UNDERWEAR]}}, UPPER=EquipSlot{name=’UPPER’, equipment=Equipment{risque=0, name=’t-shirt’, description=’A modest t-shirt.’, type=’shirt’, equipSlotNames=[UPPER]}}, LOWER=EquipSlot{name=’LOWER’, equipment=Equipment{risque=2, name=’skinny jeans’, description=’A pair of painted-on blue jeans without back pockets’, type=’pants’, equipSlotNames=[LOWER]}}}, statuses={}}]}, victoryEvent=’ep1 creepy factory victory’, defeatEvent=’null’, isOptional=false, isBoss=false, originalEnemies=[GameCharacter{name=’whistler thug’, printedName='{FEMALE=Whistler Thug, MALE=Whistler Thug}’, appearance={skincolor=class com.spankingrpgs.scarletmoon.characters.appearance.SkinColor.PEACH, musculature=class com.spankingrpgs.scarletmoon.characters.appearance.Musculature.FIT, bodytype=class com.spankingrpgs.scarletmoon.characters.appearance.BodyType.SLIM, eyecolor=class com.spankingrpgs.scarletmoon.characters.appearance.EyeColor.BROWN, haircolor=BROWN, height=class com.spankingrpgs.scarletmoon.characters.appearance.Height.AVERAGE, hairstyle=class com.spankingrpgs.scarletmoon.characters.appearance.HairStyle.DOWN}, description=’A slender individual with short-cut brown hair in skinny jeans and a t-shirt, wielding stun batons.’, primaryStatistics={STRENGTH=3, SPEED=4, WILLPOWER=0, STRESS=0, FATIGUE=0, GPA=0, ATTRITION=0}, secondaryStatistics={ENERGY=1, MAXIMUM_ENERGY=1, GRAPPLE=6, ARMSLENGTH=7, DISTANT=8, POWER=0, RISQUE=2}, equipSlots={UPPER=EquipSlot{name=’UPPER’, equipment=Equipment{risque=0, name=’t-shirt’, description=’A modest t-shirt.’, type=’shirt’, equipSlotNames=[UPPER]}}, UNDERWEAR=EquipSlot{name=’UNDERWEAR’, equipment=Equipment{risque=3, name=’boy shorts’, description=’A pair of underwear that fully covers your bum.’, type=’underwear’, equipSlotNames=[UNDERWEAR]}}, LOWER=EquipSlot{name=’LOWER’, equipment=Equipment{risque=2, name=’skinny jeans’, description=’A pair of painted-on blue jeans without back pockets’, type=’pants’, equipSlotNames=[LOWER]}}}, statuses={}}, GameCharacter{name=’whistler’, printedName='{FEMALE=Whistler, MALE=Whistler}’, appearance={skincolor=class com.spankingrpgs.scarletmoon.characters.appearance.SkinColor.TANNED, musculature=class com.spankingrpgs.scarletmoon.characters.appearance.Musculature.MUSCULAR, bodytype=class com.spankingrpgs.scarletmoon.characters.appearance.BodyType.HEAVYSET, eyecolor=class com.spankingrpgs.scarletmoon.characters.appearance.EyeColor.BROWN, haircolor=BROWN, height=class com.spankingrpgs.scarletmoon.characters.appearance.Height.TALL, hairstyle=class com.spankingrpgs.scarletmoon.characters.appearance.HairStyle.PONYTAIL}, description=’A broad-shouldered, muscular individual in a v-necked shirt and baggy jeans, with a ponytail, big knuckles, and a penchant for using them.’, primaryStatistics={STRENGTH=4, SPEED=3, WILLPOWER=0, STRESS=0, FATIGUE=0, GPA=0, ATTRITION=0}, secondaryStatistics={ENERGY=1, MAXIMUM_ENERGY=1, GRAPPLE=8, ARMSLENGTH=7, DISTANT=6, POWER=0, RISQUE=6}, equipSlots={UPPER=EquipSlot{name=’UPPER’, equipment=Equipment{risque=2, name=’v-necked t-shirt’, description=’A t-shirt with a plunging neckline’, type=’shirt’, equipSlotNames=[UPPER]}}, UNDERWEAR=EquipSlot{name=’UNDERWEAR’, equipment=Equipment{risque=5, name=’thong’, description=’A pair of panties whose back is nothing more than a thin strip of cloth.’, type=’underwear’, equipSlotNames=[UNDERWEAR]}}, LOWER=EquipSlot{name=’LOWER’, equipment=Equipment{risque=4, name=’baggy jeans’, description=’A baggy pair of blue jeans that hang so low it makes you wonder how these are better than not wearing pants at all’, type=’pants’, equipSlotNames=[LOWER]}}}, statuses={}}], music=’bloodlust’}
    Jun 09, 2016 9:00:04 AM com.spankingrpgs.view.ScreenController changeScreen
    INFO: Changing screens from com.spankingrpgs.view.screens.EventScreen@55091917 to com.spankingrpgs.view.screens.CombatScreen@3daa3b04
    Jun 09, 2016 9:00:04 AM com.spankingrpgs.ScarletMoon lambda$main$0
    SEVERE: Encountered an unhandled error.
    java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:653)
    at java.util.ArrayList.get(ArrayList.java:429)
    at com.spankingrpgs.model.combat.CombatState.getActiveCharacter(CombatState.java:170)
    at com.spankingrpgs.model.combat.CombatMaster.getActiveCharacter(CombatMaster.java:116)
    at com.spankingrpgs.scarletmoon.combat.controller.CombatController.fight(CombatController.java:94)
    at com.spankingrpgs.model.story.StateModificationCommands.lambda$fight$6(StateModificationCommands.java:187)
    at com.spankingrpgs.model.story.StateModificationCommands$$Lambda$244/649260717.accept(Unknown Source)
    at com.spankingrpgs.scarletmoon.loader.EventLoader.lambda$null$3(EventLoader.java:270)
    at com.spankingrpgs.scarletmoon.loader.EventLoader$$Lambda$681/277374897.accept(Unknown Source)
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1374)
    at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
    at com.spankingrpgs.scarletmoon.loader.EventLoader.lambda$hydrateCommands$4(EventLoader.java:270)
    at com.spankingrpgs.scarletmoon.loader.EventLoader$$Lambda$239/2089917737.accept(Unknown Source)
    at com.spankingrpgs.model.story.UniversalEvent.applyChanges(UniversalEvent.java:104)
    at com.spankingrpgs.controller.EventController.selectEvent(EventController.java:104)
    at com.spankingrpgs.controller.EventController.selectEvent(EventController.java:76)
    at com.spankingrpgs.view.screens.EventScreen.lambda$buildChoicesDisplay$10(EventScreen.java:244)
    at com.spankingrpgs.view.screens.EventScreen$$Lambda$673/1307861295.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
    at javafx.event.Event.fireEvent(Event.java:198)
    at javafx.scene.Scene$KeyHandler.process(Scene.java:3965)
    at javafx.scene.Scene$KeyHandler.access$1800(Scene.java:3911)
    at javafx.scene.Scene.impl_processKeyEvent(Scene.java:2040)
    at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2502)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:197)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:147)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$349(GlassViewEventHandler.java:228)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$$Lambda$520/325909677.get(Unknown Source)
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:404)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:227)
    at com.sun.glass.ui.View.handleKeyEvent(View.java:546)
    at com.sun.glass.ui.View.notifyKey(View.java:956)

    2016-06-09 09:00:04.640 java[1522:67493] 09:00:04.640 WARNING: 140: This application, or a library it uses, is using the deprecated Carbon Component Manager for hosting Audio Units. Support for this will be removed in a future release. Also, this makes the host incompatible with version 3 audio units. Please transition to the API’s in AudioComponent.h.

    I was not able to reproduce the error by reloading an earlier save and making the same decisions as before.

    2. I was able to use skills in the fight with buzzsaw that I shouldn’t have access to. This happened when I fought against her, played it out until the point where I could drive back home, and then reloaded a save before fighting her. The new skills (cord and speed) were in memory and usable.

    3. Not really a bug, but I found the boss fight almost unbeatably hard. I tried it over and over with different tactics (only taking few damage on the fights before), but the only thing that worked was the real cheap tactic of moving to distant on turn one and then cyclops-blasting her over and over. Even though I took literally 0 damage in that fight from Buzzsaw, I survived that with only 3 energy left. She could do nothing but move back and forth while I was standing at “distant” which seems like an issue to me as well.

    4. When trying to defend yourself while standing at distant it says “character out of range” – which is both strange and doesn’t seem to apply to NPCs. I saw Buzzsw standing at distant and “bracing for an attack”.

    5. Getting spanked during the buzzsaw fight (after grappling), when the “try to kick her with the knee” description is chosen, it seems weird that you also repeatedly try to knee ram her when you are choosing to “endure” the spanking.

    6. If you decide to spare Buzzsaw on the roof after a won fight it’s strange that Juliana just appears out of nowhere to run away with you. In just about every other description she had an intro of somehow rejoining you.

    Still, a very enjoyable episode.

    1. 1. It looks like for some reason your character wasn’t added to the battle. My guess is that somehow you ended up with an empty party. Do you have the full log file? Had you saved at all (and reloaded, or exited and reloaded) before that battle?

      If you don’t, and it happens again, please send me the full log file. Something weird happened, and I can’t figure out what it is from what bits of the log file you gave me, and I haven’t had any luck reproducing it.

      2. Good catch! That’ll be fixed in the next release.

      3. Thanks for the criticism! I should probably give Buzzsaw a Crimson Cord like skill that allows her to pull people into range, or maybe a jump skill that basically brings anyone who is distant into armslength…

      As far as tactics remember that Crimson Flare and Crimson Armor are your friends. Also, Crimson Slap is affected primarily by Strength, which just so happens to be the stat improved by Crimson Armor, and one of the stats reduced by Crimson Flare…

      4. Will be fixed in the next release.

      5. I’ve rewritten it to be a bit less “struggly.” If we really wanted to have it make the most sense, we should have two different blocks of text for continuing a spanking, one for enduring and one for struggling. But I don’t really want to write all that (rather than writing 9 blocks per villain, I’d have to write 12).

      6. There is supposed to be a scene where you go off and find Juliana, but I guess for some the “get the hell out of there” options, I was pointing at the wrong event. That will be fixed in the next release.

      1. 1. I do have a massive bash_history, I’ll see if I can find the relevant part and send it to you via email. It’ll be a fairly large log.

        3. A chain pull or jump would really fit Buzzsaw’s kit. But maybe consider creating a general solution – because the same tactic could be used against minions. (Even though you generally don’t need to) Or by enemies against the player for that matter. Could become relevant if there are ranged enemies in future episodes.
        Possibly a general “run towards” action in the move category that allows anyone to close the gap with a distant enemy.

        I did in fact try Crimson Flare & Armor, but I didn’t realize their effects can stack. I thought enemies are either blinded or not. So… maybe this needs a bit more in-game explanation for DAUs like me 😉

        1. Well, the two don’t really stack. Rather, Scarlet Flare reduces your enemy’s strength and speed, while Scarlet Armor increases your Strength at a cost of Speed and Willpower. So the two skills are affecting different people.

          Also, while you can’t inflict the same status multiple times (it resets the duration, but won’t apply the stat again), different statuses will stack with each other. So for example Scarlet Flare stacks with Humiliated. But you can’t spam Scarlet Flare to get your enemy down to -100 strength or something.

          As far as the more “general solution,” it was a conscious decision to make it impossible to reach a distant enemy without using a skill. That’s part of the trade-off of distant: it makes it harder for enemies to hit you, but it also means you can’t attack except with your own skills.

          Also thanks for the log file. After looking at it, I have a hypothesis for the cause, so I’m going to see if I can replicate it tomorrow.

  7. I’ve uploaded a new release that fixes the issues pointed out by Konstantin. I’m working on embedding the JRE to try to fix No One’s problem, but that’s gonna take a bit of time, mostly because I’m learning some new tools, and today has been really busy. Hopefully I’ll be able to get that figured out tomorrow.

    Though I haven’t been able to duplicate the crash he got that one time in combat, where his party was empty for whatever reason. However, I did cleanup a bit of tech debt that may protect against the issue. We’ll just have to see.

Leave a Reply to aka_russell Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.