Mafia Theme Checker

Discussion in 'Review' started by IceKirby, Jul 4, 2012.

  1. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    URL for Theme Checker changed (please update your bookmarks).
    And 2 3 new features: Sides List generator, Priority List generator and Spawn List generator. Roles summary coming soon (or not).

    If you don't see those features, try reloading the page.
    If you see them, don't worry, I'm going to make it more organized soon :3
     
    Last edited: Sep 25, 2012
  2. TheUnknownOne

    TheUnknownOne Member

    Joined:
    Mar 28, 2011
    Messages:
    988
    Likes Received:
    3
    Can't see them in Chrome :|
     
  3. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Works fine for me with any browser. Remember that those new features will only show if no Fatal Error was found in your theme.
     
  4. Crystal Moogle

    Crystal Moogle Ayaya~ Administrator Administrator

    Joined:
    Jul 19, 2010
    Messages:
    3,205
    Likes Received:
    531
    PO Trainer Name:
    Hanako
    Works fine for me in Chrome and Nightly now. It might be a cache issue.
     
  5. TheUnknownOne

    TheUnknownOne Member

    Joined:
    Mar 28, 2011
    Messages:
    988
    Likes Received:
    3
    Fatal errors found in your script:
    Role JScript.NET's voteshield must be a valid number.


    Totally legit error :| (voteshield as array is unsupported)
     
  6. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Oh, I didn't update with that yet.
     
  7. Yttrium

    Yttrium Well-Known Member Developer Developer

    Joined:
    Sep 29, 2010
    Messages:
    619
    Likes Received:
    283
    PO Trainer Name:
    Yttrium
    Perhaps an alphabetical list of the roles that appear at a certain amount of players would be helpful?
     
  8. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    That would mean 30 lists would be needed. Is the Spawn Lists section not enough?
     
  9. Yttrium

    Yttrium Well-Known Member Developer Developer

    Joined:
    Sep 29, 2010
    Messages:
    619
    Likes Received:
    283
    PO Trainer Name:
    Yttrium
    Well, it would be easier to keep track of them that way... it probably wouldn't be a priority, but would be nice.

    EDIT: Something like that "(01:02:06) ±Game: 2-35 Players" in /roles in Mafia would also be helpful, I'd think.
     
    Last edited: Sep 27, 2012
  10. Shiny Rayquaza

    Shiny Rayquaza Your nightmare!

    Joined:
    Jan 20, 2012
    Messages:
    398
    Likes Received:
    0
    Apperantly, the "lynch" feature needs the attributes: target, common and priority...

    Role ancientground's night action "lynch" is missing the attribute "target".
    Role ancientground's night action "lynch" is missing the attribute "common".
    Role ancientground's night action "lynch" is missing the attribute "priority".[/HIDE]
     
  11. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Lynch shouldn't be under Night Actions.
     
  12. Shiny Rayquaza

    Shiny Rayquaza Your nightmare!

    Joined:
    Jan 20, 2012
    Messages:
    398
    Likes Received:
    0
    It isn't under night actions.

    "role": "ancientground",
    "translation": "Groudon",
    "side": "mafia3",
    "help": "The ancient pokemon, said to have raised the landmass. You can type /erupt [name] to kill an enemy, but you can only use this 3 times during the entire game, so use it with care. Also, if you get lynched, you powers will increase, turning you into Empowered Groudon!",
    "actions": {
    "night": {
    "erupt": {
    "target": "AnyButTeam",
    "common": "Self",
    "priority": 36,
    "command": "kill",
    "charges": 3,
    "chargesmsg": "You have ~Charges~ eruptions left to use!"
    },
    "lynch": {
    "convertTo": "egroudon",
    "convertmsg": "Groudon received ~Count~ votes, and so became Empowered Groudon!"
    }
    },
    "startup": "team-reveal-with-roles"
    }
    },
    {[/HIDE]
     
  13. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    It is. You need to add another } after the "erupt" block.

    Edit: Roles Summary just added. It's not that great, but it can be useful.
    If you can't see the new tab, reload the page (skip cache if needed).
     
    Last edited: Sep 27, 2012
  14. Trosh

    Trosh Lolarising since 2011.

    Joined:
    Mar 2, 2012
    Messages:
    130
    Likes Received:
    0
    Error found while running analysis tools. The following error has occured: TypeError: Cannot read property 'translation' of undefined
    ---
    I got this when running my altered version of Pikmin 2 through the checker. It didnt show any errors in the theme (neither fatal nor minor) so I assume it's the checker. Always blame the checker. ;P I ran Default to see if that had the same problem, but it didn't, and neither did my original Pikmin theme. Even though this might mean my code has a flaw, I just feel like blaming the checker is and remains the best option. The code can be found here http://pastebin.com/1n2Xm7eX
     
  15. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Yeah, it was a Theme Checker error. Already fixed.
     
  16. TheUnknownOne

    TheUnknownOne Member

    Joined:
    Mar 28, 2011
    Messages:
    988
    Likes Received:
    3
    Tiny grammar error: Kill anyone that distract this role (action is canceled). ("Kill" should be "Kills")
     
  17. chippymunk

    chippymunk Bran-ed

    Joined:
    Apr 17, 2012
    Messages:
    240
    Likes Received:
    0
    This checker randomly deletes part of my theme. I get
    [Secret]Role jell2's night action "kill" is missing the attribute "target".
    Role jell2's night action "kill" is missing the attribute "common".
    Role jell2's night action "kill" is missing the attribute "priority".
    Role jell3's night action "kill" is missing the attribute "target".
    Role jell3's night action "kill" is missing the attribute "common".
    Role jell3's night action "kill" is missing the attribute "priority".
    Role jell4's night action "kill" is missing the attribute "target".
    Role jell4's night action "kill" is missing the attribute "common".
    Role jell4's night action "kill" is missing the attribute "priority".
    (Yes I know its alot)[/Secret]

    But in this pastebin (which is what I am C+P -ing) I get that.
    http://pastebin.com/980Kzh3u
     
  18. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Actually, your JSON syntax is messed.
    Code (text):
    1. "actions": {
    2.                 "night": {
    3.                     "kill": {
    4.                         "target": "Any",
    5.                         "common": "Team",
    6.                         "priority": 11,
    7.                         "broadcast": "team"
    8.                     },
    9.                     "kill": {
    10.                         "mode": {
    11.                             "evadeChance": 1
    12.                         }
    13.                     }
    14.                 }
    15.             }
    You have 2 "kill" attributes under "night". The 2nd kill shouldn't be under "night".
     
  19. Demonic Cake

    Demonic Cake The cake is not a lie...

    Joined:
    Dec 30, 2011
    Messages:
    506
    Likes Received:
    0
    Role lightning has an extra attribute "ChangeTarget".

    Is this normal? I'm trying to get Dark Nebula to avoid being killed when distracting Kirby who kills distractors. x:
     
  20. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Yes, that's normal. ChangeTarget: ignore does not exist.

    If you want to have that, add a "distract": { "mode": { "killif": ["distractor1", "distractor2"], "ignore": ["darknebula"] } } to Kirby (where "distractor1" and "distractor2" are all other distractors that Kirby can kill). If you want Kirby to ignore the distraction from Dark Nebula, add that ignore part. Otherwise, just remove it.
     
  21. Demonic Cake

    Demonic Cake The cake is not a lie...

    Joined:
    Dec 30, 2011
    Messages:
    506
    Likes Received:
    0
    ...now I'm confused. o.o
    I need Dark Nebula's distract on Kirby to go through the changetarget. (It's 1am, bear with me)
    So...I'm sure someplace else had that, otherwise where'd I get it?
     
  22. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Tidus had that code, but that never worked (some people think it did because of another distract bug that existed at that time).

    If you want that ability, the only way to do it is to have Kirby having specific ChangeTarget (That Distract:killif is a specific ChangeTarget) and have Dark Nebula not in that list.
     
  23. Demonic Cake

    Demonic Cake The cake is not a lie...

    Joined:
    Dec 30, 2011
    Messages:
    506
    Likes Received:
    0
    That explains it, then...alright, which theme has that coding so I can look later?
    (This is going to get annoying; I have what, 11 Kirbies to give it to?)
     
  24. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Kirby Theme's Sword Kirby and Rainbow Sword Kirby has that code (they only kill evil distractors).
     
  25. Fegelein

    Fegelein The Mechanic

    Joined:
    Feb 6, 2012
    Messages:
    1,068
    Likes Received:
    53
    PO Trainer Name:
    Fegelein
    The website has 404'd with me
     
  26. DatXFire

    DatXFire Never gonna use an avatar

    Joined:
    Sep 4, 2012
    Messages:
    89
    Likes Received:
    9
    RK, your theme checker seems to be not working. The page will not load for anyone. Either the link has changed or you have moved it. Please return this if you can on your own time as it as requirement for submission.
     
  27. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    GitHub Pages seems to be down. I can't do anything about that.

    Meanwhile, you can use the temporary Dropbox link: http://dl.dropbox.com/u/10065307/Mafia/mafiachecktabs.html
    Use this link only while the other is down, since I try stuff on that temporary pages and it could break at any time.
     
  28. TheUnknownOne

    TheUnknownOne Member

    Joined:
    Mar 28, 2011
    Messages:
    988
    Likes Received:
    3
    GH pages should be functional again
     
  29. Fuzzysqurl

    Fuzzysqurl baa baa mareep I do what I want Server Owner Developer I do what I want Server Owner Developer

    Joined:
    Sep 12, 2012
    Messages:
    2,096
    Likes Received:
    967
    Fatal errors found in your script:
    No fatal errors found. Good job.
    Minor errors found in your script:
    No minor errors found. Good job.

    (20:52:02) Error occurred in mafia while handling the end of 'night' phase: TypeError: Result of expression 'targetMode.msg' [undefined] is not an object.

    It didn't pick up I was missing the "msg" in

    "kill": {
    "mode": {
    "killif": ["greatwhite"]
    }
    },
     
  30. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Oh, you are right, although you could also say it's an error in the script (having the msg as mandatory, since it's optional for all other modes). Will fix the checker because faster.
     
  31. Fuzzysqurl

    Fuzzysqurl baa baa mareep I do what I want Server Owner Developer I do what I want Server Owner Developer

    Joined:
    Sep 12, 2012
    Messages:
    2,096
    Likes Received:
    967
    Fatal errors found in your script:
    Role orca's kill mode is missing the attribute "msg".

    "kill": {
    "mode": {
    "killif": ["greatwhite"],
    "msg": "±Neptune: Duuun-dun duuun-dun dun dun dun dun dun dun... SHAMU!",
    "targetmsg": "±Neptune: What's black and white, and red all over? I don't know, but you just fought to the death with an Orca."
    }

    Something didn't take right in the checker.
     
  32. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    msg and targetmsg shouldn't be under mode (kill.msg instead of kill.mode.msg).
     
  33. Fuzzysqurl

    Fuzzysqurl baa baa mareep I do what I want Server Owner Developer I do what I want Server Owner Developer

    Joined:
    Sep 12, 2012
    Messages:
    2,096
    Likes Received:
    967
    So then where do they go? Does the msg have to be the same as the /kill msg then?
     
  34. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Code (text):
    1. "kill": {
    2.    "mode": {
    3.       "killif": ["role1"]
    4.    },
    5.    "msg": "Blablabla"
    6. }
     
  35. Sky Sentinel

    Sky Sentinel You see?

    Joined:
    Oct 21, 2012
    Messages:
    814
    Likes Received:
    24
    PO Trainer Name:
    Sky Sentinel
    Everything's fine and valid, then I enter:
    Code (text):
    1. {
    2.             "role": "tmiller",
    3.             "translation": "Werewolf",
    4.             "side": "village",
    5.             "help": "You're a citizen of Weyard... Nothing more, nothing less. Or are you?",
    6.             "actions": {
    7.                 "inspect": {
    8.                     "revealAs": {"godfather1": 0.5, "vigilante": 0.4, "tmiller": 0.2}
    9.                 },
    10.                 "lynch": {
    11.                     "revealAs": "tmiller"
    12.                 },
    13.                 "startup": {
    14.                     "revealAs": "villager"
    15.                 },
    16.                 "onlist": "godfather1"
    17.             }
    18.         }
    and get:
     
  36. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Could you post or PM me the full code so I can find the error?
     
  37. Sky Sentinel

    Sky Sentinel You see?

    Joined:
    Oct 21, 2012
    Messages:
    814
    Likes Received:
    24
    PO Trainer Name:
    Sky Sentinel
    Code (text):
    1. {
    2.     "author": "Sky Sentinel",
    3.     "name": "Golden Sun",
    4.     "summary": "Help the Adepts stop the antagonists from restoring Alchemy to Weyard! PM sky sentinel with feedback. (also, no idea why I made this support so many players-- I felt like it.) Sadly, the best roles hide in the much higher numbers, so if you want to see a specific role earlier in the game just let me know and I'll consider it :)",
    5.     "sides": [
    6.         {
    7.             "side": "village",
    8.             "translation": "Adepts",
    9.             "winmsg": "±Kraden: ~Players~ have prevented the bad guys from restoring Alchemy and Chaos to Weyard!"
    10.         },
    11.         {
    12.             "side": "mafia1",
    13.             "translation": "Prox",
    14.             "winmsg": "±Kraden: ~Players~ have successfully defeated the opposition, lit the Lighthouses, and taken over Weyard!"
    15.         },
    16.         {
    17.             "side": "mafia2",
    18.             "translation": "Tuaparang",
    19.             "winmsg": "±Kraden: ~Players~ have defeated the Adepts!"
    20.         },
    21.         {
    22.             "side": "mafia3",
    23.             "translation": "Monsters",
    24.             "winmsg": "±Kraden: The Bosses, ~Players~, are not to be taken lightly!"
    25.         },
    26.         {
    27.             "side": "godfather1",
    28.             "translation": "Volecheck",
    29.             "winmsg": "±Kraden: ~Players~ has completely wiped out the Adepts and begun the destruction of Weyard!"
    30.         },
    31.         {
    32.             "side": "godfather2",
    33.             "translation": "Alex",
    34.             "winmsg": "±Kraden: Alex (~Players~) has overcome the Adepts and restored Alchemy to Weyard!"
    35.         },
    36.         {
    37.             "side": "godfather3",
    38.             "translation": "The Wise One",
    39.             "winmsg": "±Kraden: The Wise One, ~Players~, has successfully stopped the Proxians from unleashing Alchemy! He returns to Mt. Aleph in peace."
    40.         },
    41.         {
    42.             "side": "nature",
    43.             "translation": "Fairy Trees",
    44.             "winmsg": "~Players~ turned the entire world into trees... How unfortunate."
    45.         }
    46.     ],
    47.     "roles": [
    48.         {
    49.             "role": "villager",
    50.             "translation": "Villager",
    51.             "side": "village",
    52.             "help": "You're a citizen of Weyard... Nothing more, nothing less. Basically, /vote during the day to help your team."
    53.         },
    54.         {
    55.             "role": "felix",
    56.             "translation": "Felix",
    57.             "side": "village",
    58.             "help": "You're the Venus Adept, Felix. Once thought to be dead, you were discovered working with Saturos and Menardi in order to keep your sister, Jenna, safe. Since you spent so long travelling with Jenna, you know who she is! You can /sol during the night to kill with your Sol Blade, which has a 35% chance of unleashing Megiddo for a kill, or you can /sol during the standby once every four nights to unleash your Sol Blade's Megiddo automatically! This will not reveal you.",
    59.             "actions": {
    60.                 "startup": {
    61.                     "revealRole": [
    62.                         "jenna"
    63.                     ]
    64.                 },
    65.                 "standby": {
    66.                     "sol": {
    67.                         "command": "kill",
    68.                         "target": "AnyButSelf",
    69.                         "msg": "Type /sol [name] to unleash Megiddo!",
    70.                         "killmsg": "Felix's Sol Blade lets out a howl! Megiddo!",
    71.                         "recharge": 4
    72.                     }
    73.                 },
    74.                 "night": {
    75.                     "sol": {
    76.                         "command": "kill",
    77.                         "failChance": 0.65,
    78.                         "target": "AnyButSelf",
    79.                         "priority": 12,
    80.                         "common": "Self"
    81.                     }
    82.                 }
    83.             }
    84.         },
    85.         {
    86.             "role": "jenna",
    87.             "translation": "Jenna",
    88.             "side": "village",
    89.             "help": "Being Felix's sister, you travelled with him and Saturos and Menardi in order to lure the Heroes of Vale into their clutches. However, you're a powerful Mars Adept and can /shine light on someone to either stalk or inspect them (random)! This may fail. You also know Felix.",
    90.             "actions": {
    91.                 "startup": {
    92.                     "revealRole": [
    93.                         "felix"
    94.                     ]
    95.                 },
    96.                 "night": {
    97.                     "shine": {
    98.                         "command": {
    99.                             "inspect": 0.2,
    100.                             "stalk": 0.6
    101.                         },
    102.                         "common": "Self",
    103.                         "target": "AnyButSelf",
    104.                         "priority": 2000,
    105.                         "failChance": 0.3
    106.                     }
    107.                 }
    108.             }
    109.         },
    110.         {
    111.             "role": "samurai",
    112.             "translation": "Isaac",
    113.             "side": "village",
    114.             "help": "You are Isaac! You're a Venus Adept who is very skilled with attacking spells, such as Ragnarok, Potent Cure, and Mother Gaia! Type /ragna [name] during the standby to kill someone! Be careful, you'll be revealed. Your vote counts as two due to your amazing skill!",
    115.             "actions": {
    116.                 "vote": 2,
    117.                 "standby": {
    118.                     "ragna": {
    119.                         "command": "kill",
    120.                         "target": "AnyButSelf",
    121.                         "msg": "Type /ragna [name] to cast Ragnarok!",
    122.                         "killmsg": "~Self~ lifts up his Gaia Blade and casts Ragnarok! A giant spiritual sword is thrust through ~Target~!"
    123.                     }
    124.                 }
    125.             }
    126.         },
    127.         {
    128.             "role": "buffsamurai",
    129.             "translation": "Empowered Isaac",
    130.             "side": "village",
    131.             "help": "A Djinn has been set to you, allowing you to summon Flint as well as use your daykill and two votes! /flint allows you to have a single, second kill during the night! The next night, you will convert back to regular Isaac. Your Flint kill will not let you kill a teammate.",
    132.             "actions": {
    133.                 "onlist": "samurai",
    134.                 "vote": 2,
    135.                 "standby": {
    136.                     "ragna": {
    137.                         "command": "kill",
    138.                         "target": "AnyButSelf",
    139.                         "msg": "Type /ragna [name] to cast Ragnarok! Then, type /flint [name] to kill again!",
    140.                         "killmsg": "~Self~ lifts up his Gaia Blade and casts Ragnarok! A giant spiritual sword is thrust through ~Target~!"
    141.                     },
    142.                     "flint": {
    143.                         "command": "kill",
    144.                         "target": "AnyButTeam",
    145.                         "killmsg": "~Self~ unleashes Flint!  ~Target~ takes 999999 damage!",
    146.                         "recharge": 999
    147.                     }
    148.                 },
    149.                 "initialCondition": {
    150.                     "curse": {
    151.                         "cursedRole": "samurai",
    152.                         "curseCount": 2,
    153.                         "curseConvertMessage": "Flint was put on standby!"
    154.                     }
    155.                 }
    156.             }
    157.         },
    158.         {
    159.             "role": "safeguard",
    160.             "translation": "Mia",
    161.             "side": "village",
    162.             "help": "You are the Mercury Adept Mia! You know a lot about healing, and therefore can revive someone if they fall or are sick! Your potency in healing people makes you the safeguarder. Type /heal during the night to protect someone from poison up to 2 times! If you ever find Tret, you can also /hermes him once to make him good-hearted and win with the Village!",
    163.             "actions": {
    164.                 "night": {
    165.                     "heal": {
    166.                         "command": "safeguard",
    167.                         "target": "AnyButSelf",
    168.                         "priority": 5,
    169.                         "common": "Self",
    170.                         "limit": 2
    171.                     },
    172.                     "hermes": {
    173.                         "command": "convert",
    174.                         "priority": 92,
    175.                         "charges": 1,
    176.                         "canConvert": [
    177.                             "converter"
    178.                         ],
    179.                         "newRole": "converter2",
    180.                         "common": "Self",
    181.                         "target": "AnyButTeam"
    182.                     }
    183.                 }
    184.             }
    185.         },
    186.         {
    187.             "role": "buffsafeguard",
    188.             "translation": "Empowered Mia",
    189.             "side": "village",
    190.             "help": "With Tonic's power, you can now /heal TWENTY times for this night only! You can also /heal yourself! Your vote counts as ten.",
    191.             "actions": {
    192.                 "onlist": "safeguard",
    193.                 "vote": 10,
    194.                 "night": {
    195.                     "heal": {
    196.                         "command": "safeguard",
    197.                         "target": "Any",
    198.                         "priority": 5,
    199.                         "common": "Self",
    200.                         "limit": 20,
    201.                         "recharge": 2
    202.                     }
    203.                 },
    204.                 "initialCondition": {
    205.                     "curse": {
    206.                         "cursedRole": "safeguard",
    207.                         "curseCount": 2,
    208.                         "curseConvertMessage": "Tonic was put on standby!"
    209.                     }
    210.                 }
    211.             }
    212.         },
    213.         {
    214.             "role": "vigilante",
    215.             "translation": "Sveta",
    216.             "side": "village",
    217.             "help": "You're the beastwoman Sveta! You're a shapeshifter, and until you /shift [yourname], you have a vote of 3, which can be helpful; but you can convert so you have a kill. You avoid nightkills, but when you die, you convert Volecheck to the Chaos Hound!",
    218.             "actions": {
    219.                 "kill": {
    220.                     "mode": "ignore"
    221.                 },
    222.                 "vote": 3,
    223.                 "night": {
    224.                     "shift": {
    225.                         "command": "convert",
    226.                         "priority": 99,
    227.                         "target": "OnlySelf",
    228.                         "newRole": "buffvigilante",
    229.                         "convertmsg": "Sveta shifted forms!",
    230.                         "common": "Self"
    231.                     }
    232.                 },
    233.                 "onDeath": {
    234.                     "convertRoles": {
    235.                         "godfather1": "godfather12"
    236.                     },
    237.                     "convertmsg": "Volecheck is enraged upon the death of Sveta! He transforms into the Chaos Hound!"
    238.                 }
    239.             }
    240.         },
    241.         {
    242.             "role": "buffvigilante",
    243.             "translation": "Sveta",
    244.             "side": "village",
    245.             "help": "You're the beastwoman Sveta! Your strength and prowess on the battlefield now allow you to /kill at night! Be careful not to kill your partners! If you die, Volecheck will become the Chaos Hound, so be really cautious. To help you with that, you can't be daykilled.",
    246.             "actions": {
    247.                 "daykill": "evade",
    248.                 "night": {
    249.                     "kill": {
    250.                         "target": "AnyButSelf",
    251.                         "priority": 21,
    252.                         "common": "Self",
    253.                         "msg": "Sveta's claws ripped through you like a hot knife through butter!"
    254.                     }
    255.                 },
    256.                 "onDeath": {
    257.                     "convertRoles": {
    258.                         "godfather1": "godfather12"
    259.                     },
    260.                     "convertmsg": "Volecheck is enraged upon the death of Sveta! He transforms into the Chaos Hound!"
    261.                 }
    262.             }
    263.         },
    264.         {
    265.             "role": "hooker",
    266.             "translation": "Karis",
    267.             "side": "village",
    268.             "help": "You are the beautiful Karis, Ivan's daughter! You're also a Mercury Adept. Because of your abilities with illusions, you can stop someone in their tracks at night with /distract [name]!",
    269.             "actions": {
    270.                 "night": {
    271.                     "distract": {
    272.                         "priority": 4,
    273.                         "target": "AnyButSelf",
    274.                         "common": "Self",
    275.                         "distractmsg": "Karis' illusions distracted you from your actions!"
    276.                     }
    277.                 }
    278.             }
    279.         },
    280.         {
    281.             "role": "inspector",
    282.             "translation": "Ivan",
    283.             "side": "village",
    284.             "help": "You're Ivan, the Jupiter Adept who is capable of reading minds! Because of this, you can type /read [name] during the night to inspect someone.",
    285.             "actions": {
    286.                 "night": {
    287.                     "read": {
    288.                         "command": "inspect",
    289.                         "priority": 30,
    290.                         "target": "AnyButSelf",
    291.                         "common": "Self"
    292.                     }
    293.                 }
    294.             }
    295.         },
    296.         {
    297.             "role": "buffinspector",
    298.             "translation": "Empowered Ivan",
    299.             "side": "village",
    300.             "help": "With Kite set to you, you can now /read someone during the day as well as /read twice during the night! You will lose this ability tomorrow.",
    301.             "actions": {
    302.                 "onlist": "inspector",
    303.                 "night": {
    304.                     "read": {
    305.                         "command": "inspect",
    306.                         "priority": 30,
    307.                         "target": "AnyButSelf",
    308.                         "common": "Self",
    309.                         "limit": 2
    310.                     }
    311.                 },
    312.                 "standby": {
    313.                     "read": {
    314.                         "command": "expose",
    315.                         "target": "AnyButTeam",
    316.                         "msg": "You can /read someone's mind tonight!",
    317.                         "exposemsg": "Ivan focuses on ~Target~. ~Role~ is thinking, 'Why is this nutcase staring at me?'",
    318.                         "recharge": 999
    319.                     }
    320.                 },
    321.                 "initialCondition": {
    322.                     "curse": {
    323.                         "cursedRole": "inspector",
    324.                         "curseCount": 2,
    325.                         "curseConvertMessage": "Kite was put on standby!"
    326.                     }
    327.                 }
    328.             }
    329.         },
    330.         {
    331.             "role": "spy",
    332.             "translation": "Sheba",
    333.             "side": "village",
    334.             "help": "You're Sheba, the Jupiter Adept who is capable of seeing the future! Because of this, you get hax on kills during the night! There is no command for this. /vote to remove people during the day!",
    335.             "actions": {
    336.                 "hax": {
    337.                     "kill": {
    338.                         "revealTeam": 0.39,
    339.                         "revealRole": 0.05
    340.                     },
    341.                     "sol": {
    342.                         "revealTeam": 0.5,
    343.                         "revealPlayer": 0.2
    344.                     },
    345.                     "kill2": {
    346.                         "revealTeam": 0.2,
    347.                         "revealPlayer": 0.02
    348.                     }
    349.                 }
    350.             }
    351.         },
    352.         {
    353.             "role": "bodyguard",
    354.             "translation": "Tyrell",
    355.             "side": "village",
    356.             "help": "You're the Mars Adept, Tyrell, Garet's son! Your bulky frame and brute strength allows you to /protect someone from harm at night.",
    357.             "actions": {
    358.                 "night": {
    359.                     "protect": {
    360.                         "priority": 5,
    361.                         "common": "Self",
    362.                         "target": "AnyButSelf"
    363.                     }
    364.                 }
    365.             }
    366.         },
    367.         {
    368.             "role": "bodyguard2",
    369.             "translation": "Garet",
    370.             "side": "village",
    371.             "help": "You're the Mars Adept, Garet. Your bulky frame and brute strength allows you to /protect two people from harm at night.",
    372.             "actions": {
    373.                 "night": {
    374.                     "protect": {
    375.                         "priority": 5,
    376.                         "common": "Self",
    377.                         "target": "AnyButSelf",
    378.                         "limit": 2
    379.                     }
    380.                 }
    381.             }
    382.         },
    383.         {
    384.             "role": "buffbodyguard",
    385.             "translation": "Empowered Garet",
    386.             "side": "village",
    387.             "help": "With Scorch set to you, you now avoid nightkills, daykills, and have a massive votshield for one night! You also have a third protect.",
    388.             "actions": {
    389.                 "voteshield": -99999,
    390.                 "onlist": "bodyguard2",
    391.                 "daykill": "evade",
    392.                 "kill": {
    393.                     "mode": "ignore",
    394.                     "msg": "Scorch raised Garet's Defense!"
    395.                 },
    396.                 "night": {
    397.                     "protect": {
    398.                         "priority": 5,
    399.                         "common": "Self",
    400.                         "target": "AnyButSelf",
    401.                         "limit": 3
    402.                     }
    403.                 },
    404.                 "initialCondition": {
    405.                     "curse": {
    406.                         "cursedRole": "bodyguard2",
    407.                         "curseCount": 2,
    408.                         "curseConvertMessage": "Scorch was put on standby!"
    409.                     }
    410.                 }
    411.             }
    412.         },
    413.         {
    414.             "role": "godfather1",
    415.             "translation": "Volecheck",
    416.             "side": "godfather1",
    417.             "help": "You're Volecheck, brother of Sveta and the ruler of the beastman nation of Morgal. Your speed and power allows you to /kill someone during the night. If Sveta dies, you will be converted to a Chaos Hound, which gives you a non-revealing daykill as well as your nightkill and a vote of 10! Stay alive longer than her! You can't be distracted.",
    418.             "actions": {
    419.                 "night": {
    420.                     "kill": {
    421.                         "target": "AnyButTeam",
    422.                         "common": "Self",
    423.                         "priority": 13
    424.                     }
    425.                 },
    426.                 "distract": {
    427.                     "mode": "ChangeTarget",
    428.                     "hookermsg": "Volecheck smiled as you smiled at him, then ate you!",
    429.                     "msg": "The ~Distracter~ came to you last night! You had a good feast!"
    430.                 }
    431.             }
    432.         },
    433.         {
    434.             "role": "godfather12",
    435.             "translation": "Chaos Hound",
    436.             "side": "godfather1",
    437.             "help": "ROAAAAAR! YOU ARE THE CHAOS HOUND! You're uncannily strong and fast, and your skill allows you to /kill during the night, outspeeding bodyguards, and /kill during the day!",
    438.             "actions": {
    439.                 "vote": 10,
    440.                 "night": {
    441.                     "kill": {
    442.                         "target": "AnyButSelf",
    443.                         "common": "Self",
    444.                         "priority": 2
    445.                     }
    446.                 },
    447.                 "standby": {
    448.                     "kill": {
    449.                         "target": "AnyButSelf",
    450.                         "msg": "Type /kill [name] to destroy someone!",
    451.                         "killmsg": "ROOOOOOOOAR! The Chaos Hound tears open ~Target~! They are immediately killed!"
    452.                     }
    453.                 }
    454.             }
    455.         },
    456.         {
    457.             "role": "godfather2",
    458.             "translation": "Alex",
    459.             "side": "godfather2",
    460.             "help": "You're the Mercury Adept, Alex! You and Mia are the only surviving members of your clan. You can type /poison twice during the night to poison someone, OR you can /kill twice (you cannot be haxed doing this). You get hax on kills and converts, as well as poisons and distracts.",
    461.             "info": "Gets hax on Kills, converts, curses, poisons, and distracts. Can kill 2 times OR poison 2 times in one night. Cannot be haxed.",
    462.             "actions": {
    463.                 "avoidHax": [
    464.                     "kill"
    465.                 ],
    466.                 "hax": {
    467.                     "kill": {
    468.                         "revealTeam": 0.2,
    469.                         "revealPlayer": 0.02
    470.                     },
    471.                     "poison": {
    472.                         "revealTeam": 0.2,
    473.                         "revealPlayer": 0.02
    474.                     },
    475.                     "enchant": {
    476.                         "revealTeam": 0.2,
    477.                         "revealPlayer": 0.02
    478.                     },
    479.                     "set": {
    480.                         "revealTeam": 0.2,
    481.                         "revealPlayer": 0.02
    482.                     },
    483.                     "illusion": {
    484.                         "revealTeam": 0.2,
    485.                         "revealPlayer": 0.02
    486.                     },
    487.                     "shift": {
    488.                         "revealTeam": 0.2,
    489.                         "revealPlayer": 0.02
    490.                     },
    491.                     "distract": {
    492.                         "revealTeam": 0.2,
    493.                         "revealPlayer": 0.02
    494.                     },
    495.                     "hermes": {
    496.                         "revealTeam": 0.2,
    497.                         "revealPlayer": 0.02
    498.                     },
    499.                     "giveup": {
    500.                         "revealTeam": 0.2,
    501.                         "revealPlayer": 0.02
    502.                     }
    503.                 },
    504.                 "night": {
    505.                     "kill": {
    506.                         "target": "AnyButSelf",
    507.                         "common": "Self",
    508.                         "priority": 17,
    509.                         "limit": 2,
    510.                         "restrict": [
    511.                             "poison"
    512.                         ]
    513.                     },
    514.                     "poison": {
    515.                         "target": "AnyButSelf",
    516.                         "common": "Self",
    517.                         "priority": 17,
    518.                         "limit": 2,
    519.                         "count": 3,
    520.                         "restrict": [
    521.                             "kill"
    522.                         ]
    523.                     }
    524.                 }
    525.             }
    526.         },
    527.         {
    528.             "role": "godfather3",
    529.             "translation": "The Wise One",
    530.             "side": "godfather3",
    531.             "winningSides": [
    532.                 "village"
    533.             ],
    534.             "help": "You are the almighty Wise One! Due to the recent disruption in the Alchemic balance of Weyard, you've been awakened! Due to the fact that YOU'RE A GOD, your vote counts as 777. You win with the Adepts, since they're fighting for your cause.",
    535.             "actions": {
    536.                 "vote": 777
    537.             }
    538.         },
    539.         {
    540.             "role": "mafia11",
    541.             "translation": "Agatio",
    542.             "side": "mafia1",
    543.             "help": "You are the Proxian Agatio, aligned with the Mars clan! Your goal is to defeat the adepts and take the Elemental Stars in order to light the Lighthouses and unleash Alchemy! You share a kill with Menardi.",
    544.             "actions": {
    545.                 "night": {
    546.                     "kill": {
    547.                         "target": "AnyButTeam",
    548.                         "common": "Team",
    549.                         "priority": 15,
    550.                         "broadcast": "team"
    551.                     }
    552.                 },
    553.                 "startup": "team-reveal-with-roles"
    554.             }
    555.         },
    556.         {
    557.             "role": "mafia112",
    558.             "translation": "Agatio",
    559.             "side": "mafia1",
    560.             "help": "You are the Proxian Agatio, aligned with the Mars clan! Your goal is to defeat the adepts and take the Elemental Stars in order to light the Lighthouses and unleash Alchemy! You also have an /inspect during the night, as your great knowledge of battle allows you to analyze people. You share a kill with Menardi.",
    561.             "actions": {
    562.                 "night": {
    563.                     "kill": {
    564.                         "target": "AnyButTeam",
    565.                         "common": "Team",
    566.                         "priority": 15,
    567.                         "broadcast": "team"
    568.                     },
    569.                     "inspect": {
    570.                         "target": "AnyButTeam",
    571.                         "common": "Team",
    572.                         "priority": 100,
    573.                         "broadcast": "team"
    574.                     }
    575.                 },
    576.                 "startup": "team-reveal-with-roles"
    577.             }
    578.         },
    579.         {
    580.             "role": "mafia122",
    581.             "translation": "Menardi",
    582.             "side": "mafia1",
    583.             "help": "You are the Proxian Menardi, aligned with the Mars clan! Your goal is to defeat the adepts and take the Elemental Stars in order to light the Lighthouses and unleash Alchemy! You share a kill with Agatio. When you're lynched, you become Karst! Saturos can sacrifice himself to fuse with you so you become the Fusion Dragon.",
    584.             "actions": {
    585.                 "night": {
    586.                     "kill": {
    587.                         "target": "AnyButTeam",
    588.                         "common": "Team",
    589.                         "priority": 15,
    590.                         "broadcast": "team"
    591.                     }
    592.                 },
    593.                 "startup": "team-reveal-with-roles",
    594.                 "lynch": {
    595.                     "convertTo": "mafia13",
    596.                     "convertmsg": "Menardi has been removed from the game! Karst's eyes light up with fury as she takes her dead sister's place."
    597.                 }
    598.             }
    599.         },
    600.         {
    601.             "role": "mafia12",
    602.             "translation": "Menardi",
    603.             "side": "mafia1",
    604.             "help": "You are the Proxian Menardi, aligned with the Mars clan! Your goal is to defeat the adepts and take the Elemental Stars in order to light the Lighthouses and unleash Alchemy! You share a kill with Agatio!",
    605.             "actions": {
    606.                 "night": {
    607.                     "kill": {
    608.                         "target": "AnyButTeam",
    609.                         "common": "Team",
    610.                         "priority": 15,
    611.                         "broadcast": "team"
    612.                     }
    613.                 },
    614.                 "startup": "team-reveal-with-roles"
    615.             }
    616.         },
    617.         {
    618.             "role": "mafia13",
    619.             "translation": "Karst",
    620.             "side": "mafia1",
    621.             "help": "You are the Proxian Karst. Sister of Menardi, you want to avenge her death! During the night, you cannot be killed. You can type /kill during the day. Try to outspeed Isaac's kill if he's alive and you know who he is! You can also /distract during the night.",
    622.             "actions": {
    623.                 "startup": "team-reveal-with-roles",
    624.                 "kill": {
    625.                     "mode": "ignore"
    626.                 },
    627.                 "night": {
    628.                     "distract": {
    629.                         "target": "AnyButTeam",
    630.                         "common": "Team",
    631.                         "priority": 3,
    632.                         "broadcast": "team",
    633.                         "distractmsg": "Karst came to you last night. You were too stunned by her beauty to move."
    634.                     }
    635.                 },
    636.                 "standby": {
    637.                     "kill": {
    638.                         "target": "AnyButTeam",
    639.                         "msg": "Take revenge on your fallen sister by typing /kill to kill someone!",
    640.                         "killmsg": "~Target~ watches in horror as ~Self~ casts Death Scythe! ~Target~ loses his HP instantly!"
    641.                     }
    642.                 }
    643.             }
    644.         },
    645.         {
    646.             "role": "mafia14",
    647.             "translation": "Saturos",
    648.             "side": "mafia1",
    649.             "help": "You're the Proxian Saturos! You can /kill during the night! This is not shared with Menardi and Agatio. You can also ignore distractions (and kill the distractor) and can't be haxed! After the fifth night, if Menardi is in the game, you can /fuse with her to power her up-- at the cost of your life.",
    650.             "actions": {
    651.                 "startup": "team-reveal-with-roles",
    652.                 "night": {
    653.                     "kill": {
    654.                         "command": "kill",
    655.                         "target": "AnyButTeam",
    656.                         "common": "Self",
    657.                         "priority": 18,
    658.                         "broadcast": "Team"
    659.                     },
    660.                     "fuse": {
    661.                         "command": "convert",
    662.                         "target": "AnyButSelf",
    663.                         "common": "Self",
    664.                         "priority": 666,
    665.                         "broadcast": "Team",
    666.                         "convertmsg": "Saturos: Hya ha ha! It's too late to run!",
    667.                         "newRole": "fdragon",
    668.                         "suicideChance": 1,
    669.                         "canConvert": [
    670.                             "mafia122"
    671.                         ],
    672.                         "initialrecharge": 5
    673.                     }
    674.                 },
    675.                 "distract": {
    676.                     "mode": "killattacker",
    677.                     "hookermsg": "Saturos doesn't have time for your petty distractions-- begone!",
    678.                     "msg": "The ~Distracter~ came to you last night! You murdered her!"
    679.                 },
    680.                 "avoidHax": [
    681.                     "kill"
    682.                 ]
    683.             }
    684.         },
    685.         {
    686.             "role": "fdragon",
    687.             "side": "mafia1",
    688.             "translation": "Fusion Dragon",
    689.             "help": "Saturos and Menardi have fused, and become the all-powerful Fusion Dragon! You can use Dragon Driver to kill during the day with /driver. This will not reveal you. Then. you can use /outerspace to kill a second person in the day, but this WILL reveal you! Finally, one time per game, you can use Severe Blow with /severe in the day to kill a third time, but this will reveal you, too.",
    690.             "actions": {
    691.                 "standby": {
    692.                     "driver": {
    693.                         "command": "kill",
    694.                         "target": "AnyButTeam",
    695.                         "msg": "Use /driver, /outerspace, or /severe to kill someone!",
    696.                         "killmsg": "The Fusion Dragon sets the field on fire, before blasting ~Target~ with a stream of white-hot purple fire from its mouth. Dragon Driver!"
    697.                     },
    698.                     "outerspace": {
    699.                         "command": "kill",
    700.                         "target": "AnyButTeam",
    701.                         "killmsg": "~Self~ leaps up high into outer space and immediately reenters the atmosphere, surrounded by purple fire, and collides into ~Target~ with immense force and fiery energy bright enough to blind ~Target~."
    702.                     },
    703.                     "severe": {
    704.                         "command": "kill",
    705.                         "target": "AnyButTeam",
    706.                         "killmsg": "~Self~, the Fusion Dragon, crushes ~Target~ with a Severe Blow!",
    707.                         "recharge": 999
    708.                     }
    709.                 }
    710.             }
    711.         },
    712.         {
    713.             "role": "mafia21",
    714.             "translation": "Blados",
    715.             "side": "mafia2",
    716.             "help": "You're the Tuaparang soldier Blados! You're a Dark Adept from the Umbra Clan, and your /punish (kill) outspeeds Garet and other bodyguards and kills anyone who's foolish enough to distract you! Type /punish [name] to use it.",
    717.             "actions": {
    718.                 "startup": "team-reveal-with-roles",
    719.                 "night": {
    720.                     "punish": {
    721.                         "command": "kill",
    722.                         "priority": 1,
    723.                         "common": "Self",
    724.                         "target": "AnyButTeam",
    725.                         "broadcast": "Team"
    726.                     }
    727.                 },
    728.                 "distract": {
    729.                     "mode": "ChangeTarget",
    730.                     "hookermsg": "Blados was waiting for you in the darkness. You gasp as his blade rips through you!",
    731.                     "msg": "The ~Distracter~ came to you last night! You killed her instead!"
    732.                 },
    733.                 "avoidHax": [
    734.                     "punish"
    735.                 ]
    736.             }
    737.         },
    738.         {
    739.             "role": "mafia22",
    740.             "translation": "Chalis",
    741.             "side": "mafia2",
    742.             "help": "You are the Tuaparang soldier Chalis! Your stunning beauty allows you to /illusion [name] (distract) once a night, and you can /kill once during the day--with a chance of being revealed! Your vote counts as two.",
    743.             "actions": {
    744.                 "startup": "team-reveal-with-roles",
    745.                 "vote": 2,
    746.                 "night": {
    747.                     "illusion": {
    748.                         "command": "distract",
    749.                         "priority": 3,
    750.                         "target": "AnyButTeam",
    751.                         "common": "Self",
    752.                         "distractmsg": "A thick haze set around your peripheral vision. You must be seeing things. You did nothing last night. Could this have anything to do with Chalis?"
    753.                     }
    754.                 },
    755.                 "standby": {
    756.                     "kill": {
    757.                         "target": "AnyButTeam",
    758.                         "msg": "Type /kill [name] to kill someone!",
    759.                         "killmsg": "Chalis giggles and raises her hands, revealing sharp claws! She casts Scornful Caress, bringing instant death to ~Target~!",
    760.                         "revealChance": 0.25,
    761.                         "revealmsg": "~Self~ lets out a louder giggle, allowing people to find her. Oops!"
    762.                     }
    763.                 }
    764.             }
    765.         },
    766.         {
    767.             "role": "mafia31",
    768.             "translation": "Kraken",
    769.             "side": "mafia3",
    770.             "help": "RELEASE THE KRAKEN! After attacking the Adepts on their voyage to Tolbi, you roam the seas looking for a victim! Type /poison [name] during the night up to three times, and then type /expose [name] during the standby to expose someone! You will not be revealed. Your vote counts as 5.",
    771.             "actions": {
    772.                 "startup": "team-reveal-with-roles",
    773.                 "vote": 5,
    774.                 "night": {
    775.                     "poison": {
    776.                         "priority": 200,
    777.                         "limit": 3,
    778.                         "count": 9,
    779.                         "target": "AnyButTeam",
    780.                         "common": "Self",
    781.                         "poisonDeadMessage": "The Kraken's poison killed you!"
    782.                     }
    783.                 },
    784.                 "standby": {
    785.                     "expose": {
    786.                         "target": "AnyButTeam",
    787.                         "msg": "Type /expose to reveal someone!",
    788.                         "exposemsg": "The Kraken lifts his arms and casts Dark Blessing on ~Target~! ~Target~ coughs loudly and is revealed to be the ~Role~!"
    789.                     }
    790.                 }
    791.             }
    792.         },
    793.         {
    794.             "role": "mafia33",
    795.             "translation": "Rat",
    796.             "side": "mafia3",
    797.             "help": "You're so unfortunate. You literally got stuck with being the Mafia-sided villager. You have no commands; however, you are plentiful, and you have a voteshield of 1, as well as an extremely high hax rate.",
    798.             "actions": {
    799.                 "startup": "team-reveal-with-roles",
    800.                 "voteshield": -1,
    801.                 "hax": {
    802.                     "kill": {
    803.                         "revealTeam": 0.9,
    804.                         "revealRole": 0.2
    805.                     }
    806.                 }
    807.             }
    808.         },
    809.         {
    810.             "role": "mafia34",
    811.             "translation": "Dullahan",
    812.             "side": "mafia3",
    813.             "info": "Has two nightkills. Sided with Monsters.",
    814.             "help": "You're the dreaded Dullahan! Guardian of the most powerful summon sequence Iris, you've fought many heroes and villains. You can /kill once per night with your great sword! You share this with your team, and you can /kill2 every other night!",
    815.             "actions": {
    816.                 "startup": "team-reveal-with-roles",
    817.                 "night": {
    818.                     "kill": {
    819.                         "priority": 25,
    820.                         "common": "Team",
    821.                         "target": "AnyButTeam",
    822.                         "broadcast": "Team"
    823.                     },
    824.                     "kill2": {
    825.                         "command": "kill",
    826.                         "priority": 13,
    827.                         "common": "Self",
    828.                         "target": "AnyButTeam",
    829.                         "broadcast": "Team",
    830.                         "recharge": 2
    831.                     }
    832.                 }
    833.             }
    834.         },
    835.         {
    836.             "role": "mafia32",
    837.             "translation": "Dying Pirate",
    838.             "side": "mafia3",
    839.             "info": "Converts to Weak Deadbeard in five days if he does not /giveup his life to become the stronger Deadbeard. Sided with Monsters.",
    840.             "help": "You're dying, and you're a pirate. Do I need to say more? ...Oh, yeah. I do. You can /giveup your life and convert to Deadbeard if you survive for three days, and Deadbeard gives you a lot of stuff- but poisons you. For now you have a nightkill. Deadbeard has a daykill and a voteshield of -999, as well as a vote of 999. You can decide for yourself whether you want a nightkill or to be poisoned with day and votekills... Tough decision? Make it within 5 days, because you'll die and convert automatically then-- To a weaker Deadbeard!",
    841.             "actions": {
    842.                 "startup": "team-reveal-with-roles",
    843.                 "night": {
    844.                     "kill": {
    845.                         "priority": 25,
    846.                         "target": "AnyButTeam",
    847.                         "common": "Team"
    848.                     },
    849.                     "giveup": {
    850.                         "command": "convert",
    851.                         "newRole": "mafia323",
    852.                         "priority": 60,
    853.                         "common": "Self",
    854.                         "target": "OnlySelf",
    855.                         "convertmsg": "The Dying Pirate stops struggling to live! He dies... and becomes the fearsome pirate Deadbeard!",
    856.                         "initialrecharge": 3
    857.                     }
    858.                 },
    859.                 "initialCondition": {
    860.                     "curse": {
    861.                         "cursedRole": "mafia322",
    862.                         "curseCount": 5,
    863.                         "curseConvertMessage": "The Dying Pirate stops struggling to live! He dies... and becomes the fearsome pirate Deadbeard!"
    864.                     }
    865.                 }
    866.             }
    867.         },
    868.         {
    869.             "role": "mafia323",
    870.             "translation": "Deadbeard",
    871.             "side": "mafia3",
    872.             "help": "You are the pirate Deadbeard! You're dead! Because of this, you decay in two days. That's a real shame. To compensate, you have a daykill and a voteshield of -999, and a vote of 999. Use them wisely!",
    873.             "actions": {
    874.                 "startup": "team-reveal-with-roles",
    875.                 "voteshield": -999,
    876.                 "vote": 999,
    877.                 "standby": {
    878.                     "kill": {
    879.                         "target": "AnyButTeam",
    880.                         "msg": "Type /kill [name] to kill someone, Captain!",
    881.                         "killmsg": "Deadbeard casts Impact on himself! He slashes his sword at ~Target~!"
    882.                     }
    883.                 },
    884.                 "initialCondition": {
    885.                     "poison": {
    886.                         "count": 2,
    887.                         "poisonDeadMessage": "You decayed!"
    888.                     }
    889.                 }
    890.             }
    891.         },
    892.         {
    893.             "role": "mafia322",
    894.             "translation": "Weak Deadbeard",
    895.             "side": "mafia3",
    896.             "help": "You are the pirate Deadbeard! You're dead! Because of this, you decay in two days. That's a real shame. To compensate, you have a daykill, which will reveal you because you were too lazy to convert before, and a voteshield of -10. Use them wisely!",
    897.             "actions": {
    898.                 "startup": "team-reveal-with-roles",
    899.                 "voteshield": -10,
    900.                 "onlist": "mafia323",
    901.                 "standby": {
    902.                     "kill": {
    903.                         "target": "AnyButTeam",
    904.                         "msg": "Type /kill [name] to kill someone, Captain!",
    905.                         "killmsg": "~Self~ casts Freeze Prism while swinging his sword wildly at ~Target~!"
    906.                     }
    907.                 },
    908.                 "initialCondition": {
    909.                     "poison": {
    910.                         "count": 2,
    911.                         "poisonDeadMessage": "You decayed!"
    912.                     }
    913.                 }
    914.             }
    915.         },
    916.         {
    917.             "role": "vdjinn",
    918.             "translation": "Flint",
    919.             "side": "village",
    920.             "help": "You're the Venus Djinni, Flint! You know who Isaac is, so type /set [hisname] to give him an extra kill for one night! After that, be careful, as you lose the power to vote!",
    921.             "actions": {
    922.                 "startup": {
    923.                     "revealRole": [
    924.                         "samurai"
    925.                     ]
    926.                 },
    927.                 "vote": 0,
    928.                 "night": {
    929.                     "set": {
    930.                         "command": "convert",
    931.                         "target": "AnyButSelf",
    932.                         "common": "Self",
    933.                         "priority": 50,
    934.                         "newRole": "buffsamurai",
    935.                         "canConvert": [
    936.                             "samurai"
    937.                         ],
    938.                         "charges": 1,
    939.                         "broadcast": "Team",
    940.                         "broadcastmsg": "Flint is going to /set!"
    941.                     }
    942.                 }
    943.             }
    944.         },
    945.         {
    946.             "role": "jdjinn",
    947.             "translation": "Kite",
    948.             "side": "village",
    949.             "help": "You're the Jupiter Djinni, Kite! You know who Ivan is, so type /set [hisname] to give him an extra inspect for one night! He can also /read again during the day! After that, be careful, as you lose the power to vote!",
    950.             "actions": {
    951.                 "startup": {
    952.                     "revealRole": [
    953.                         "inspector"
    954.                     ]
    955.                 },
    956.                 "vote": 0,
    957.                 "night": {
    958.                     "set": {
    959.                         "command": "convert",
    960.                         "target": "AnyButSelf",
    961.                         "common": "Self",
    962.                         "priority": 48,
    963.                         "newRole": "buffinspector",
    964.                         "canConvert": [
    965.                             "inspector"
    966.                         ],
    967.                         "charges": 1,
    968.                         "broadcast": "Team",
    969.                         "broadcastmsg": "Kite is going to /set!"
    970.                     }
    971.                 }
    972.             }
    973.         },
    974.         {
    975.             "role": "mdjinn",
    976.             "translation": "Flash",
    977.             "side": "village",
    978.             "help": "You're the Mars Djinni, Flash! You know who Garet is, so type /set [hisname] to give him an immunity to kills and voting for one night and day! After that, be careful, as you lose the power to vote!",
    979.             "actions": {
    980.                 "startup": {
    981.                     "revealRole": [
    982.                         "bodyguard2"
    983.                     ]
    984.                 },
    985.                 "vote": 0,
    986.                 "night": {
    987.                     "set": {
    988.                         "command": "convert",
    989.                         "target": "AnyButSelf",
    990.                         "common": "Self",
    991.                         "priority": 49,
    992.                         "newRole": "buffbodyguard",
    993.                         "canConvert": [
    994.                             "bodyguard2"
    995.                         ],
    996.                         "charges": 1,
    997.                         "broadcast": "Team",
    998.                         "broadcastmsg": "Flash is going to /set!"
    999.                     }
    1000.                 }
    1001.             }
    1002.         },
    1003.         {
    1004.             "role": "medjinn",
    1005.             "translation": "Tonic",
    1006.             "side": "village",
    1007.             "help": "You're the Mercury Djinni, Tonic! You know who Mia is, so type /set [hername] to give her the ability to safeguard up to 20 people! After that, be careful, as you lose the power to vote!",
    1008.             "actions": {
    1009.                 "startup": {
    1010.                     "revealRole": [
    1011.                         "safeguard"
    1012.                     ]
    1013.                 },
    1014.                 "vote": 0,
    1015.                 "night": {
    1016.                     "set": {
    1017.                         "command": "convert",
    1018.                         "target": "AnyButSelf",
    1019.                         "common": "Self",
    1020.                         "priority": 51,
    1021.                         "newRole": "buffsafeguard",
    1022.                         "canConvert": [
    1023.                             "safeguard"
    1024.                         ],
    1025.                         "charges": 1,
    1026.                         "broadcast": "Team",
    1027.                         "broadcastmsg": "Tonic is going to /set!"
    1028.                     }
    1029.                 }
    1030.             }
    1031.         },
    1032.         {
    1033.             "role": "tmiller",
    1034.             "translation": "Lycanthrope",
    1035.             "side": "village",
    1036.             "help": "You're a citizen of Weyard... Nothing more, nothing less. Or are you?",
    1037.             "actions": {
    1038.                 "inspect": {
    1039.                     "revealAs": {"godfather1": 0.5, "vigilante": 0.4, "tmiller": 0.2}
    1040.                 },
    1041.                 "lynch": {
    1042.                     "revealAs": "tmiller"
    1043.                 },
    1044.                 "startup": {
    1045.                     "revealAs": "villager"
    1046.                 },
    1047.                 "onlist": "godfather1"
    1048.             }
    1049.         },
    1050.         {
    1051.             "role": "miller",
    1052.             "translation": "Dwarf",
    1053.             "side": "village",
    1054.             "help": "You're a citizen of Weyard... Nothing more, nothing less. Basically, /vote during the day to help your team.",
    1055.             "actions": {
    1056.                 "voteshield": -1,
    1057.                 "inspect": {
    1058.                     "revealAs": "mafia33"
    1059.                 },
    1060.                 "lynch": {
    1061.                     "revealAs": "miller"
    1062.                 },
    1063.                 "startup": {
    1064.                     "revealAs": "villager"
    1065.                 },
    1066.                 "onlist": "mafia33"
    1067.             }
    1068.         },
    1069.  
    1070.         {
    1071.             "role": "converter",
    1072.             "side": "nature",
    1073.             "translation": "Tret",
    1074.             "help": "HROOM! You're the Waelda, or fairy tree, Tret! The people of Kolima have tried to chop you down, and you're growing weaker. Your revenge is... to turn people into trees! Yeah, sounds ridiculous. But you can /enchant most people to turn them into your tree slaves within three days! Your army will die with you.",
    1075.             "actions": {
    1076.                 "startup": "team-reveal",
    1077.                 "night": {
    1078.                     "enchant": {
    1079.                         "command": "curse",
    1080.                         "target": "AnyButTeam",
    1081.                         "common": "Self",
    1082.                         "priority": 33,
    1083.                         "canCurse": [
    1084.                             "villager",
    1085.                             "mafia33",
    1086.                             "felix",
    1087.                             "jenna",
    1088.                             "hooker",
    1089.                             "spy",
    1090.                             "vigilante",
    1091.                             "bodyguard",
    1092.                             "mafia112",
    1093.                             "mafia122",
    1094.                             "miller",
    1095.                             "mafia21",
    1096.                             "mafia22",
    1097.                             "mafia32"
    1098.                         ],
    1099.                         "cursedRole": "tree",
    1100.                         "curseCount": 3,
    1101.                         "curseConvertMessage": "~Old~'s enchantment took over and they were turned into a tree!"
    1102.                     }
    1103.                 },
    1104.                 "onDeath": {
    1105.                     "killRoles": [
    1106.                         "tree"
    1107.                     ]
    1108.                 }
    1109.             }
    1110.         },
    1111.         {
    1112.             "role": "tree",
    1113.             "side": "nature",
    1114.             "translation": "Enchanted Tree",
    1115.             "help": "Your curse took hold... You're now just a simple tree. Vote to remove people during the day.",
    1116.             "actions": {
    1117.                 "startup": "team-reveal"
    1118.             }
    1119.         },
    1120.         {
    1121.             "role": "converter2",
    1122.             "side": "nature",
    1123.             "translation": "Tret",
    1124.             "winningSides": [
    1125.                 "village"
    1126.             ],
    1127.             "help": "Now cured from your rage by Mia, you owe the village your life! You can still win by yourself with your tree army, but you're in debt to the heroes so you win with them too! You can still /enchant some bad guys and villagers. Your army will convert to villagers upon your death.",
    1128.             "actions": {
    1129.                 "startup": "team-reveal",
    1130.                 "night": {
    1131.                     "enchant": {
    1132.                         "command": "curse",
    1133.                         "target": "AnyButTeam",
    1134.                         "common": "Self",
    1135.                         "priority": 33,
    1136.                         "canCurse": [
    1137.                             "villager",
    1138.                             "mafia33",
    1139.                             "mafia112",
    1140.                             "mafia122",
    1141.                             "miller",
    1142.                             "mafia21",
    1143.                             "mafia22",
    1144.                             "mafia32"
    1145.                         ],
    1146.                         "cursedRole": "tree",
    1147.                         "curseCount": 3,
    1148.                         "curseConvertMessage": "~Old~'s enchantment took over and they were turned into a tree!"
    1149.                     }
    1150.                 },
    1151.                 "onDeath": {
    1152.                     "convertRoles": {
    1153.                         "tree": "villager"
    1154.                     }
    1155.                 }
    1156.             }
    1157.         }
    1158.     ],
    1159.     "roles1": [
    1160.         "bodyguard",
    1161.         "inspector",
    1162.         {
    1163.             "mafia11": 0.5,
    1164.             "mafia12": 0.5
    1165.         },
    1166.         "villager",
    1167.         "godfather1",
    1168.         "villager",
    1169.         "hooker"
    1170.     ],
    1171.     "roles2": [
    1172.         "inspector",
    1173.         "mafia11",
    1174.         "villager",
    1175.         "godfather1",
    1176.         "mafia12",
    1177.         "bodyguard",
    1178.         "hooker",
    1179.         "villager",
    1180.         "mafia21",
    1181.         "villager",
    1182.         "spy",
    1183.         "mafia33",
    1184.         "miller",
    1185.         "safeguard"
    1186.     ],
    1187.     "roles3": [
    1188.         "inspector",
    1189.         "mafia112",
    1190.         "villager",
    1191.         "godfather1",
    1192.         "mafia122",
    1193.         "bodyguard2",
    1194.         "hooker",
    1195.         "villager",
    1196.         "mafia21",
    1197.         "jenna",
    1198.         "felix",
    1199.         "spy",
    1200.         "mafia33",
    1201.         "samurai",
    1202.         "miller",
    1203.         "safeguard",
    1204.         "godfather2",
    1205.         "villager",
    1206.         "vdjinn",
    1207.         "vigilante",
    1208.         "mafia33",
    1209.         "converter",
    1210.         "jdjinn",
    1211.         "mafia14",
    1212.         "mafia22",
    1213.         "godfather3",
    1214.         "mafia31",
    1215.         "medjinn",
    1216.         "mafia32",
    1217.         "mdjinn",
    1218.         "villager",
    1219.         "mafia34",
    1220.         "villager",
    1221.         "miller",
    1222.         "villager",
    1223.         "mafia33",
    1224.         "miller"
    1225.     ],
    1226.     "villageCantLoseRoles": [
    1227.         "samurai",
    1228.         "buffsamurai",
    1229.         "buffbodyguard",
    1230.         "felix",
    1231.         "vigilante",
    1232.         "buffvigilante",
    1233.         "buffsafeguard"
    1234.     ],
    1235.     "killmsg": "±Kraden: ~Role~ (~Player~) goes down...",
    1236.     "killusermsg": "You have fallen.",
    1237.     "lynchmsg": "±Kraden: You felled ~Player~ (~Role~)!",
    1238.     "drawmsg": "TO BE CONTINUED..."
    1239. }
    It's near the bottom.
    ...lol 35000 characters over the PM limit
     
  38. IceKirby

    IceKirby A.K.A. RiceKirby

    Joined:
    Apr 26, 2011
    Messages:
    2,176
    Likes Received:
    635
    PO Trainer Name:
    RiceKirby
    Oh, how I didn't notice it before?
    Code (text):
    1. "inspect": {
    2.     "revealAs": {"godfather1": 0.5, "vigilante": 0.4, "tmiller": 0.2}
    3. }
    This is not possible. For inspect.revealAs, you can only have a role name, "*" or an array with roles names. You can't directly set chances.

    If you want to set chances, you can have repeated roles in the array. In this case, it would be this:
    "revealAs": ["godfather1", "godfather1", "godfather1","godfather1","godfather1", "vigilante", "vigilante", "vigilante", "vigilante","tmiller","tmiller"]

    I updated the checker to detect that error.
     
  39. Sky Sentinel

    Sky Sentinel You see?

    Joined:
    Oct 21, 2012
    Messages:
    814
    Likes Received:
    24
    PO Trainer Name:
    Sky Sentinel
    Oh, thank you :)
     
  40. Tesla Elesa

    Tesla Elesa Almost Quality

    Joined:
    Aug 12, 2011
    Messages:
    530
    Likes Received:
    0
    Think I found a bug with the code itself, as opposed to the checker.

    Apparently not putting a "msg" into "ChangeTarget" or "killattacker" for a command borks mafia. Here's what I got:
    Based on the log from that night, it seems like tobyfant dashing BlackOni (Zecora) resulted in mafia not finding the supposedly optional but actually mandatory "msg" for the role with the "ChangeTarget".

    Fuzzysqurl seems to have had the same issue (cutting out irrelevant parts):