Final changes

This commit is contained in:
Sam 2017-06-15 01:33:20 +01:00
parent 4978f924a7
commit 29d5a80a67
46 changed files with 356 additions and 188 deletions

View File

@ -69,6 +69,16 @@ public class SkinData
public final static SkinData SLENDERMAN = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTA0NzUyNzk4NTUsInByb2ZpbGVJZCI6IjlmY2FlZDhiMTRiNTRmN2ZhNjRjYjYwNDBlNzA1MjcyIiwicHJvZmlsZU5hbWUiOiJMQ2FzdHIxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hMWNkOTI5OTFmYTRjZGQ2MGVlZDNhZTM3ZmI5NWRmZjFkNWNkOGNiZmYwYWFjMzE4MmQ0ODU2NDU5NTIzYyJ9fX0=", "OVqWFLCekyZcdGli6kPBKNh8/VYPhKZGNqlAvSOKc3RLgh4pIkI6TDPr/Y+VQdhz1wZozARFYSeoDJJJ4nZTi7gi3rVPG2rL1ZnKo7so5hdT8caEzSTRmgwPKzo03ZhEEsW9AEJo9mpiUxGSJdBlgEb9UgodpYFW1IjRC09CcBUqzRWP8QGZTSFSN5x9emQ97DyiFmt0NFWubHCKHdb7CExhchPRtbahL3hOEzPY8/Y+Irl9OZjx7jONE7O/sYItCuZoXc3FaTgCV0riiXHCgH2eA54s5TQVWumtp3FU7VIcKR6pm/o61+GusvqhNgdFNk9XSHWMUyp+HNU0R8sConZQN/eaVx9laJmUUb4zNZ7hX/hLYV+r9LFU1NXOeIZWJPShD+bYfZgEorIpD+EAL4BHht/f5e6a1IZUDBWb001PFibby2t9WWjoDVKz4McbxZ2Xui7EHKFG1K3biPibhWx6fvnOeJ2xW6UDIZcD+TCXwlW/knkFt44Xpyv3oNHk3UNkyrQgghd6qkc3gZHxP8PQCNvKIyK1I+pHR6JMZvSStp7ZQRDpvsvIUyOJvq+7Bs7lFYs8hcJHMzEB+8PYlH2k7P7iLuA6ZYFUmvOW1LLq0+hvxK96ZdNEsJdmMkVVTZBRw7vsZ4GPbkdp2cMOFH2lHcQj80xKqVbd43IqFDA="); public final static SkinData SLENDERMAN = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTA0NzUyNzk4NTUsInByb2ZpbGVJZCI6IjlmY2FlZDhiMTRiNTRmN2ZhNjRjYjYwNDBlNzA1MjcyIiwicHJvZmlsZU5hbWUiOiJMQ2FzdHIxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hMWNkOTI5OTFmYTRjZGQ2MGVlZDNhZTM3ZmI5NWRmZjFkNWNkOGNiZmYwYWFjMzE4MmQ0ODU2NDU5NTIzYyJ9fX0=", "OVqWFLCekyZcdGli6kPBKNh8/VYPhKZGNqlAvSOKc3RLgh4pIkI6TDPr/Y+VQdhz1wZozARFYSeoDJJJ4nZTi7gi3rVPG2rL1ZnKo7so5hdT8caEzSTRmgwPKzo03ZhEEsW9AEJo9mpiUxGSJdBlgEb9UgodpYFW1IjRC09CcBUqzRWP8QGZTSFSN5x9emQ97DyiFmt0NFWubHCKHdb7CExhchPRtbahL3hOEzPY8/Y+Irl9OZjx7jONE7O/sYItCuZoXc3FaTgCV0riiXHCgH2eA54s5TQVWumtp3FU7VIcKR6pm/o61+GusvqhNgdFNk9XSHWMUyp+HNU0R8sConZQN/eaVx9laJmUUb4zNZ7hX/hLYV+r9LFU1NXOeIZWJPShD+bYfZgEorIpD+EAL4BHht/f5e6a1IZUDBWb001PFibby2t9WWjoDVKz4McbxZ2Xui7EHKFG1K3biPibhWx6fvnOeJ2xW6UDIZcD+TCXwlW/knkFt44Xpyv3oNHk3UNkyrQgghd6qkc3gZHxP8PQCNvKIyK1I+pHR6JMZvSStp7ZQRDpvsvIUyOJvq+7Bs7lFYs8hcJHMzEB+8PYlH2k7P7iLuA6ZYFUmvOW1LLq0+hvxK96ZdNEsJdmMkVVTZBRw7vsZ4GPbkdp2cMOFH2lHcQj80xKqVbd43IqFDA=");
public final static SkinData BOB_ROSS = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTU2NjEyOTc2NTcsInByb2ZpbGVJZCI6IjdkYTJhYjNhOTNjYTQ4ZWU4MzA0OGFmYzNiODBlNjhlIiwicHJvZmlsZU5hbWUiOiJHb2xkYXBmZWwiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVhNzZhN2NlMzZlZGRiYmZhNWMzMmJhZmVhYmUyNmQ3ZWJlNWRlOTBkNzYyYzJmNWY3OTQ1ZTQ1ODUxOTU2ZDYifX19", "b7pUQSZ1UkMZJNSqdaBPGWfm+rfvFkEh58pBvYTG2RBPwVju1kKinb1LfsyYhFKlyPvL1jfqi30udmb0302QvE0SKg7p3txxULa3Hr94+eCJWFxrOxUNorRT9E+TurJxH6jimu6KW1p6goPn77/kgNaWb9xn3+E84+vH0z9ETjgc5G0aYLT+cSzThUorhvOQ7DRLfRgSWiFxfm3Er0g+waLfDEeNNAd6OJ5k3X+kgM/+V6QTIFofnZZ6NdZZInTARAVol2H0pRfQfAuVYfJyVyvA0uF+ZX+wlMuBTG1MeyWjZgI1iUKmGaQADXsAV796kT+Z+tAXpbRYYYZnxil5jx5P4druiHvaQfV2KK3lbKm2uH9M3SZr5d57C3V24BKRRWGS4C9INzgO8ORIIomes7kp0gECS4MnSMI6hcl0JsXVlaAy88BgmT/PKxM+3q4PCQE1N9fTCuhoil7vVYIU3uBXwFUE7NTAOUdBee+3TtMstIu2WP8rtEZBVpGH9CmomaLTCzPZSdXGY31goOFXSRYMNi8j4ykuBgP0qJqimipWH0rBF1bMdHqMu359h62tTLRKipHWXPxj4N8c/n1CVPYjuXH9X3f1HAU4DnET+v93Vb/uzbx8rXFrz6jLPwAjSlJ8Th3VE+4ey/ZBHWPB+SuHetN+e0r/LYxiqwwlnwI="); public final static SkinData BOB_ROSS = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTU2NjEyOTc2NTcsInByb2ZpbGVJZCI6IjdkYTJhYjNhOTNjYTQ4ZWU4MzA0OGFmYzNiODBlNjhlIiwicHJvZmlsZU5hbWUiOiJHb2xkYXBmZWwiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzVhNzZhN2NlMzZlZGRiYmZhNWMzMmJhZmVhYmUyNmQ3ZWJlNWRlOTBkNzYyYzJmNWY3OTQ1ZTQ1ODUxOTU2ZDYifX19", "b7pUQSZ1UkMZJNSqdaBPGWfm+rfvFkEh58pBvYTG2RBPwVju1kKinb1LfsyYhFKlyPvL1jfqi30udmb0302QvE0SKg7p3txxULa3Hr94+eCJWFxrOxUNorRT9E+TurJxH6jimu6KW1p6goPn77/kgNaWb9xn3+E84+vH0z9ETjgc5G0aYLT+cSzThUorhvOQ7DRLfRgSWiFxfm3Er0g+waLfDEeNNAd6OJ5k3X+kgM/+V6QTIFofnZZ6NdZZInTARAVol2H0pRfQfAuVYfJyVyvA0uF+ZX+wlMuBTG1MeyWjZgI1iUKmGaQADXsAV796kT+Z+tAXpbRYYYZnxil5jx5P4druiHvaQfV2KK3lbKm2uH9M3SZr5d57C3V24BKRRWGS4C9INzgO8ORIIomes7kp0gECS4MnSMI6hcl0JsXVlaAy88BgmT/PKxM+3q4PCQE1N9fTCuhoil7vVYIU3uBXwFUE7NTAOUdBee+3TtMstIu2WP8rtEZBVpGH9CmomaLTCzPZSdXGY31goOFXSRYMNi8j4ykuBgP0qJqimipWH0rBF1bMdHqMu359h62tTLRKipHWXPxj4N8c/n1CVPYjuXH9X3f1HAU4DnET+v93Vb/uzbx8rXFrz6jLPwAjSlJ8Th3VE+4ey/ZBHWPB+SuHetN+e0r/LYxiqwwlnwI=");
public static final SkinData HATTORI = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjEyMTczMDgsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83MjczMTBiMzlhMTIzOWI3ZTI4Y2JjNTkzMWY1MzlkNGVlNmQxOTc3ODhjNWI1YTY3YWY1NDJlYzk0MmZkMyJ9fX0=", "aHfFqPOZmcQkUqFPjVa27h27k5gyvkZMCOyIaIdIZfqVDg/69/hakkDQazvKg/U8KTlYaDSRyOp9ZD5qOUSCPvRtRDMhuX/Tn68KD9BdW5jYKsXo0puOa7IJDKAE47z7YQ8AvfOtxuOAg6S0ihjYEQqRA56UQ+gPbkd+pxpMxvXoLyAx7IEIKWmlkibG/rmaX8J7OEgq8Wi9s6BhtPVNMaLoznzdzOiiYkcza/zEG5zMXnj/hFHHUpWrYff0Oj7/SUB+krLsiMficASzzs/9HZq81V0ketqUhJYX66HL8F5fQniP8kYu9LbNNcVJmtlER03QaEqP/H8udemlVskFkOYLkTmhxfSetL46N+ZVf0Sxp2xYcFOH3djH/Q26IIXtzEqVyUW5Gun/ZJp8B8zYMOXbXSmaALAYPoX9cs91ZilNX/W7zn7b5Kb9kUBGt58eUpKoXjgK7rSvmH0X2JOZGFVji5QKzp/eOQAqMhkBOU8sEm9AT6mfZjjlyIDOZxSX6hjEJXRVVzFFlzTiRPTcAtaHWRnlRFywsDDSgVBGvQMPNMNa6CFeo0ajnhmfHWa4Ga77kpfQ75PzOoJ/j6Z/2sSIHfQFWE6INAGAyypX/x0Fd/AH6SmYfilnX6lhtd7OsDlxS01QGoRLPBh/ol+wY6rHSM1N6Qta0ulpQZLYIms=");
public static final SkinData ANATH = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0Njg4NjM4MTYsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS81NGI5NGQ4NzE5ZWFhYjc0YjVhMzhjN2Q5NDliM2FkMmIyYzA0ODIxZGY4OWM1ZDA0YjY5ZjNjZmExYmJhNjUifX19", "IKlnXzQ2k57XyTHge5V2ttnV1AqbRKrV0JktZS4+nLXx+ROM77/HRuf3/bYTqg48SB8npXy+c6nLYTCY1fTZOl3t2puS6BpZMBXuTV//A0OMQ1pJKzDb8vW6CwPYw2Nu6o0QX3J/FeUIaBj16GZAPxXOtSekkeOw9qsdh57GyqSmzODlEA/7CnJWqX2Ani5DACzo6j5rzfsz2qRgOzVlnbVlVzpXicRuYYLxKvT4nMS+B3HpQdsyFKAx8nTO/GmCHDzW97jck6w/VDlW9x+J39tPDEaKPLbDz1YV59yJt6hjNAcnwgbf3KvHSAbGZNLqRegq/Rk20ZI2J5GYT5ipiyf+p8rHfkRTxIsVCMyVecnSKaz59YQ7AleiWVGzYHDETU702UyigAZFHGHQ/0Kj9UyyZ4ew228FQuGo7iGY4dS/PKq40d1v3fq+czwBhcXR+Msi1Zqg/4dTh+QwwwWsIS3CKtOInpJgZ3U/tkn4STB3o+oKBbmBWvpJk8SrA6DVKKJMjHQig+67hXKSbdcRUWAoGc/iuRhRXgILkC99Ot4PHohEbwbEW8MsKxm49OFqzP4zptaUaiQpMK4YCxENhLrI7X+w51tt2XTjroIHu4oLYS4pG16ZnhUmd/RFg8Ar7mBVOv/2lUtOO5aMAv88CpyD+XXNcCQB4G5pv4c0F14=");
public static final SkinData DEVON = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0Njk0NDE1MDYsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85N2FkNjY1MjFmNzNjOWFmYzE4MzliZGExYzE5ZDNkMjg3YjNmMjRmY2EwZTBlMTE1NzhiOTE0ZTNiNWIwZDIifX19", "BNIc7N3SGIXOEUKFe3hrQp4YmniPxkiL5aKAUNkTmYqbygAQlrCCrwJTuK6JrzkWmD5AzMSzMDKkmoMWOikgulhSmDyC88lQz/LQH3co7WldPHaPL6kk27ZirmIIZEm5WKcvWhQ7ChNWQd2KsZuFqxZSdLSQmsbujF9vpuVbhlU4hajsUwbdiOJRZ18fOAFoJYq/g3RlvqC9VtAA/IAAN7jIpXf9Pn5+vjLqN+AdKm27YknCpqMtBfkYaIhMrpTBe2gP+o50TmH0xm0IZPCS+ORYNGwFdCsg6DzEU7a0rtcUdcZgdInc09mS8tMY9eeMAISYYq5MpyliHQ/areGKk0RJEYg7muc9r/N6vBUpxZtZH8BioDj2dNj4JOoH/58cwU3+hv/Woykc9o5NUPyz0nndiOtTUp1SaDXleKyHryoYnIkPyaDPyuA7qTbIKZQHxyAdrRsnknb0PYku6T8RA4kWNK2jlOH+R9D4eiKFcbLRU2Zl6L57lJTZFFI6GUvzDsyD/vBb59gjvXYzRmvguX9CHUc1aLDeUKhV8NFXeaonoYM9VPIUBQRWNdMery9OlBiQvg4VXy1w2yKLvlHRhJZJpDm/IDdsfg27o8+BUOZ0xHF9iXPBDkOiLXXZ02X4IonLcopVNImCMRZJ1dKHwgu9qnFqVTEKH4mwXUz2Zq8=");
public static final SkinData DANA = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjkyMzgxMDAsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hOWRhYTg5OGVkN2E0N2YyOGFkMjVmNjk5Y2Y4MzQyODFmMTVkZTY5OWM1MWVhMTRkOWRlYzVhM2VlNzY1MiJ9fX0=", "KUI3h0MDUNWQ3avjozkw0KnZf1UAMkRHzRKY9yGS/iUh9EMmDbfLcRfBhUvR5Dd6//75Yw2tElBrvPx+VqfJk0LqMACQc71n0lDY1NzqnXbpf6vNGyuhyumjhMSjJTG3BJ8Qtdd1yCsPK2x5ym+cGPS1FevJj4Vcu6rxg9HXZokgfjD11NXEwulFuPIiWHpJlnd8NlBw4a3txlrVwDnaHo7GqYSJeM1uOCrdICdpThSA2N2mOUEmOHvH9rHUhQvkKHipbsQMIxIX4oiXDWeK6P/GtT+Iv0DIeJfQdDkhDiIG5/zUyxmpC2mma1FQIsFsQOaJfgYZLfcOXGdhwlL/OcZ9ULBIKhgSx7Ozwzsc+JKonqlaBOuaietq5z/XvMClgFG9U2a1LXc5BIgaN/ClsO0uTksuoA8H0SDx9k3EmOjaPdrJOsQ/fgWQSkWN2XniLLFiEtSOEOI58vw6ORVXDgjbP+TqD0b6/d10z0jUzS2FD7AO51LHzTw+BjqoyVef4fszNNSqMi5QEgfBl++EAolZBAMHgN7hq6k52ry2LPlO5L8sm6NoZ4DrLyrx1oFNtXZZgYvNVy7rtEpIDdQczwAZkJFV0fuz8tRH3CkW/roA5HbfX3Fv19mQoteoemrSUrOwLlQsyVPxsFsn8uX94Cw88Q5KgBCGmGY2vpXHuiI=");
public static final SkinData BARDOLF = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjkxMTE4NjEsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84MjUxNjZmNzc0ZjcyNmZmMDE3NTQ3OTk0NDc0MGYxNjRmMTZmYmI2M2I3NGI3NmNmNzk0NDMxZGZkNzUyIn19fQ==", "W8TO4M/IQ4rQ91627EaudboKwR8TuKTp5mAYOCyOJLCD0vyyEJmnZFy1Hv9HlXKiXsEm9iC36+cmQ8JfSE0JlIfU2vRH5qbXUL4HUHZi20SHVA5YKM2ztxI9uouc14ctv8pxlhT/huKxYNgB/eJR+ckT1gyc78RBoJj5YLwUTsptO87KE/vFg9hbHVo5lVSdk//jhfDsMRyf0RXp/wKZ1KGxaRA5hWQUc86mLJTiQU1EBVh3Lfb2zUq2w/gpLCoxdwiX8KnNuX1a1iC8pFCZm4VJ20yvNPaIgzFYDFfNQO6Vwv9fcLsdxVH819cEkjxg5do9MpZBj1OVmaWnTmQ4w4r3iKFzL6LMae4eOEyA/vJ8e7mbWUNrxM3+EPUPlxpG/NKr2VsR2ihIIF9GTduBZa2ayj7BJAkL9UK5PEGh/UxG6jf0YS7RjQ9ROaRgmTLMFsOVnQlFlp2UFRTe+heh/woD8/QSpd9MELdWFzeKRAlo7+hvo5AfWyjBI/3e9PIJfCXp+nF3Z92HKoR5V0m9QoYu2WGzbkhU49DJF7n+Bnd3ur0qefHFVl3USdVU2DJLcdcKU+Qn5G6E8NSy/3TVkjDg6u/o38b203b0tUBZNftAYYmCCpx/HVMEoNC03orIBPrwGYD6g//RC1TZ2ZxkLDU4QxeaM6neWq1xryXbvS4=");
public static final SkinData BARDOLF_WEREWOLF = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjkxODMxOTAsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9kNzc0ZGY3OWU1OGFiNDQ5OGQ2YzY3ZTdlMjY2NWFjZmE2OTViOWNjOWNkZTE1MmQ3ZTVlM2NjMTUyNzM5In19fQ==", "nqc7IdRVa2RF2SZXRli/HVhw7q5NfY7rnZFWbDyzjQ90Y/H6NWhb+9gwDDdnh7B1WolyptyUnukzTOQmrAcSecVO5vblhCTYY8PEOfcwUKznjpCmL/BgXdzBoYJHs43HFbtvzt3yhshcQ8Wvh7mtdmNu0MEYKbIX7lTqcfSoUbDk+A1PZDINuOF5RM8disGCrkq6WTdLij+k7pd3e7MJhtf8vJbtSoo5TjfzyzJyFvEvZqa+3lxobbPA9Z4cels0DVWVU8I/FEJhB29aSVXDVAZps3vWUr1sLMM9+PRaZdxHPZfNHx6q9R3oHXgjAlqzJwkljtJGExyOV+vOHEUuxrytdwMcW0XGjalukHVJ1A9DCgNMZqAXEbfYKk+BsN2BzOwT/+dtGfsOU+Rq7Kzp1/iit9saQy1QEG8Bynj6A2Vmg9XZsvbYsXZXsE+qNG6TOADEV0yrS9icEhLhOnO0re/+wE4Zsd5WDF51e87+ugvoH3iM4zrzvaWQb6McgxD/wlYlJyVHD+2f5VYCIw2yacNXp6LaZuXpfQyyDCqpHAosTYNLxWwjinl05C/TprQw+sZoLHFCGbVFQjTPEkDhQzG73PHecnO5Px3USBVleDoTb1kZfq6J2wJ1B1/7MTBW21Din3j2DmmuAVUNJYe6kifaNOhY1ghG2WVRNdIf1b4=");
public static final SkinData LARISSA = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjE0MTUxMzQsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jYThjNDRhOWVmZTY3NzExMDYzMjM5ODEwNDRmOTdjYmM1OWJmZmRlOGI1ODdlMGQzMWE4N2ViMDhhMmExZiJ9fX0=", "Lyac51CrnMK/CI2dWgGQLowAm/ZnQMpf0Ict/gqVrUgJVlGWDIVG77Rd1JyMQDEeESvTmoyivH+usiO0ePW95qjisqT3R43YEmLi85CqctGYqLKeSYpGYwYRz8Euw57LwJAALKOMLhVc2s4h2Or9nTecunG8KSmkCuZc4H1qh3frU+ltuV4HLqgdFUULbIHTggyvqiINov2tBqkkXeEjT7sOcTJCJNgNYU2O7//qg5kJmhso2CKHlRLpmy9LsaUK/Z+BzUmoRbwQgSwr3mz7dFAdlVWWKvKNcgX3nt1et0DIig3JKYmrnQX2Fprg+kWcr3nuizzLgjVwAlADC48P3DN0s/VBty2AYoWie16VNPIM+CV4BF2JRQ34GxZ8XceXbCKURrOjoCBgLGHvIhRW35eicoh26xp3/mwLvk5anPi5StJ/qEuzWJALeWcNbLsnt21m2MZp9h/MxaY6ftWOTzjTr5CYVd/teJyscMnGK4+lcV1dlt12lhbDMv6I+iz8iG9NIzuW5OvGkax90dA/Gq+Cd9FXVThPY4ufxWttHcTqgPB64GfMn6rywRm1B0eO1pJpYc/KlJZlW/PuaO8L1assyJs5KkOypBSy3zc6TO6pzgeOZv+VpQfA/UWpogv6ofmTpgdtwpjLFGSzIKTDXvF6FftALKVlYypG0fYbssA=");
public static final SkinData ROWENA = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0Njk1MTcxOTgsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jNDY1OGExODY4YzNhNjhhZWVhZmZkOTUxZDQyYmZkN2QxYTRjNGZjNDJjZDI2YTlmYzhkNTNmOTkxMTM1ZCJ9fX0=", "OqXMyH9SMmQ/Pwmb21In29YnCxbsN6yqUxfudN6KNgDwRUK6y072XhW6TIoTh9JQLAUKftpeVB53tk0LxHIxnsuBMrIHvETPDQFysIc/6xq3ABogs+zqFzcp5jk6S73HiD78JxLq5pzfUzhgDPMPuZP5Q/u2q1rYbe6B9lVEJ5sUcxBLUTossgucoR4qXYAlWVQdHRhq85Ol8a+OU7ruw3HackNGto6wt6u2MigCtiHVTt9XhJ/AJE4ScodQ3XwW4L6urpl/lV2OMCsr3mCjjjEz2EMhDbCWxrAorQ9aPpMbDkHBS+4TC1tbMGUlKhj5n+EZBYVaeLr4NGPACPSdT35p/2Zra49+DXn9Xn+681yNEB0ghTdsnsgwXg76+HVPHPqRHQMuTBQGQyGZaaTX/zE0tFjH+osMElLdb8dmz3dC7kQA4A13B2phj3YbMSF1FoU4GvnPKIQn6JIuEd6hd+pRLUW7Y+mgYIHHX1FT0ihrXAyVO6lQQ6rs92gSQr7sxC7tnhPSMFcmh7OcJYcbRpn97GMubthPLanOhVy7CKqjmwIkEVtYgP28idigKwNJ+sJuUONrOu7nMKl1UTD5EEapOacc/np6UhdSw8yW+LnWD/x9ueYz9ksnyRrJgcOa41izo/WCbjPK/j3JVezr9Q3x1yveWuFmdl7CGYdXngw=");
public static final SkinData BIFF = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjEzMDQzNjYsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9mOWMyMTE3ZDY0ZWE0ZmUxMWZiY2NhZmE2YzU5YzhlZjY3NDVkZjVkMTZjM2QwMmI4NmI2OTlmZWJjNTA0OGI1In19fQ==", "mJMpEvQ4A02z0S/chgLm5bKrrrd+zmp7A0012AB7b3KlyIHoLKEDDz+ZJgJtvN6skOqed3P+yNVqkxitugXaZZP8Af9J+/TseHn+vOy6CTK5tykRSY3Zb8Zmw1kn36v/SARAVtDIHD53yuPgJayYSAbVB7aknj1Q8XBQGUmZRMRxWWxeD7rQTOwgRYI4YJeKFf4UL9i6zxvOJuHsOAouJ7scu7VohG8vgR77Js/Z8rSu8/aSG+O9AQdzP6h9ixYNFkkQOHm7DseK/5tsWKHM4FYBgjIDKt3ApQokSbhThzGB55BA1qjXZkfCoOb13y1nOMC8WoIL6Ees1qzxG3VloGx2WAZLh+Q+/irwrFDMxk1zeU5fIRuj1c/UIM2HKdxxWgoRdrZ8ww/Jrll6maiOBx7geMn/0aOUbJ2U7gkTif6RG6YNS5YN9ZQDLh72l/akJMxF3SlmuAPmLs2kBghQ6eD2YQKuxWR/Hf1yS1YXtogFVNsGnzC1nda7F48EGL3zI+kCajbDlAGQ32aRt0btbEQ+Gj575kir3Aa53qiZ0YOIYQlhgZdOsTN2NE2s8uuy/15Rgc6K3ydgEmSZfdqyMyW0Dy7pE5TfVL8DumKRVRXdOceT5WfnW7MyqSmdorP5ab1fw2wLOnAVzhJmW8oXXNSs77WJ1/PURclxOWB4IF8=");
// Comments this out for now, so it doesn't load the player profile // Comments this out for now, so it doesn't load the player profile
// A better way to do this would check for the properties when getting the skull or the skin // A better way to do this would check for the properties when getting the skull or the skin
// Might change on the next version // Might change on the next version

View File

@ -217,7 +217,11 @@ public enum AchievementCategory
GEM_HUNTERS("Gem Hunters", null, GEM_HUNTERS("Gem Hunters", null,
new StatDisplay[] {StatDisplay.KILLS, StatDisplay.GEMS_EARNED, StatDisplay.fromGame("Quests Completed", GameDisplay.GemHunters, "QuestsCompleted"), StatDisplay.fromGame("Chests Opened", GameDisplay.GemHunters, "ChestsOpened")}, new StatDisplay[] {StatDisplay.KILLS, StatDisplay.GEMS_EARNED, StatDisplay.fromGame("Quests Completed", GameDisplay.GemHunters, "QuestsCompleted"), StatDisplay.fromGame("Chests Opened", GameDisplay.GemHunters, "ChestsOpened")},
Material.EMERALD, 0, GameCategory.SURVIVAL, null, false, GameDisplay.GemHunters.getGameId()); Material.EMERALD, 0, GameCategory.SURVIVAL, null, false, GameDisplay.GemHunters.getGameId()),
MOBA("Heroes Of Gwen", null,
new StatDisplay[] {StatDisplay.WINS, StatDisplay.GAMES_PLAYED, StatDisplay.GEMS_EARNED, null, StatDisplay.fromGame("Gold Earned", GameDisplay.MOBA, "GoldEarned")},
Material.PRISMARINE_SHARD, 0, GameCategory.CLASSICS, null, false, GameDisplay.MOBA.getGameId());
private String _name; private String _name;
private String[] _statsToPull; private String[] _statsToPull;

View File

@ -51,7 +51,7 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
protected void buildPage() protected void buildPage()
{ {
ArrayList<Integer> pageLayout = new ItemLayout( ArrayList<Integer> pageLayout = new ItemLayout(
"XXOXOXOXO", "OXOXOXOXO",
"OXOXOXOXO", "OXOXOXOXO",
"OXOXOXOXO", "OXOXOXOXO",
"OXOXOXOXO", "OXOXOXOXO",

View File

@ -1,11 +1,17 @@
package nautilus.game.arcade.game.games.moba; package nautilus.game.arcade.game.games.moba;
import mineplex.core.Managers;
import mineplex.core.common.Pair;
import mineplex.core.common.Rank; import mineplex.core.common.Rank;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilTime;
import mineplex.core.disguise.disguises.DisguiseBase;
import mineplex.core.leaderboard.Leaderboard;
import mineplex.core.leaderboard.LeaderboardManager;
import mineplex.core.leaderboard.LeaderboardRepository.LeaderboardSQLType;
import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.combat.DeathMessageType;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType; import nautilus.game.arcade.GameType;
@ -19,6 +25,7 @@ import nautilus.game.arcade.game.games.moba.boss.wither.WitherBoss;
import nautilus.game.arcade.game.games.moba.buff.BuffManager; import nautilus.game.arcade.game.games.moba.buff.BuffManager;
import nautilus.game.arcade.game.games.moba.fountain.MobaFountain; import nautilus.game.arcade.game.games.moba.fountain.MobaFountain;
import nautilus.game.arcade.game.games.moba.general.ArrowKBManager; import nautilus.game.arcade.game.games.moba.general.ArrowKBManager;
import nautilus.game.arcade.game.games.moba.general.BetaManager;
import nautilus.game.arcade.game.games.moba.general.EnderPearlManager; import nautilus.game.arcade.game.games.moba.general.EnderPearlManager;
import nautilus.game.arcade.game.games.moba.general.MobaDamageManager; import nautilus.game.arcade.game.games.moba.general.MobaDamageManager;
import nautilus.game.arcade.game.games.moba.gold.GoldManager; import nautilus.game.arcade.game.games.moba.gold.GoldManager;
@ -45,7 +52,9 @@ import nautilus.game.arcade.game.games.moba.util.MobaUtil;
import nautilus.game.arcade.game.modules.CustomScoreboardModule; import nautilus.game.arcade.game.modules.CustomScoreboardModule;
import nautilus.game.arcade.game.modules.compass.CompassModule; import nautilus.game.arcade.game.modules.compass.CompassModule;
import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.managers.lobby.current.NewGameLobbyManager;
import nautilus.game.arcade.scoreboard.GameScoreboard; import nautilus.game.arcade.scoreboard.GameScoreboard;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
@ -151,6 +160,9 @@ public class Moba extends TeamGame
// Buffs // Buffs
_buffs = registerManager(new BuffManager()); _buffs = registerManager(new BuffManager());
// Beta Message
registerManager(new BetaManager(this));
new CompassModule() new CompassModule()
.setGiveCompass(true) .setGiveCompass(true)
.setGiveCompassToSpecs(true) .setGiveCompassToSpecs(true)
@ -268,6 +280,44 @@ public class Moba extends TeamGame
} }
SpectatorSpawn = WorldData.GetCustomLocs("CENTER").get(0); SpectatorSpawn = WorldData.GetCustomLocs("CENTER").get(0);
// Leaderboards
if (Manager.IsRewardStats())
{
if (Manager.GetLobby() instanceof NewGameLobbyManager)
{
Map<String, List<Location>> lobbyCustomLocs = ((NewGameLobbyManager) Manager.GetLobby()).getCustomLocs();
LeaderboardManager leaderboard = Managers.get(LeaderboardManager.class);
Pair<String, String> winPair = Pair.create("Win", "Wins");
Pair<String, String> killPair = Pair.create("Kill", "Kills");
Pair<String, String> goldPair = Pair.create("Gold", "Gold");
{
Location location = lobbyCustomLocs.get("TOP_DAILY_WINS").get(0);
leaderboard.registerLeaderboard("TOP_HOG_DAILY_WINS", new Leaderboard("Top Daily Wins", winPair, new String[]{GetName() + ".Wins"}, LeaderboardSQLType.DAILY, location, 10));
}
{
Location location = lobbyCustomLocs.get("TOP_DAILY_KILLS").get(0);
leaderboard.registerLeaderboard("TOP_HOG_DAILY_KILLS", new Leaderboard("Top Daily Kills", killPair, new String[]{GetName() + ".Kills"}, LeaderboardSQLType.DAILY, location, 10));
}
{
Location location = lobbyCustomLocs.get("TOP_DAILY_GOLD").get(0);
leaderboard.registerLeaderboard("TOP_HOG_DAILY_GOLD", new Leaderboard("Top Daily Gold Earned", goldPair, new String[]{GetName() + ".GoldEarned"}, LeaderboardSQLType.DAILY, location, 10));
}
{
Location location = lobbyCustomLocs.get("TOP_WINS").get(0);
leaderboard.registerLeaderboard("TOP_HOG_WINS", new Leaderboard("Top Wins", winPair, new String[]{GetName() + ".Wins"}, LeaderboardSQLType.ALL, location, 10));
}
{
Location location = lobbyCustomLocs.get("TOP_KILLS").get(0);
leaderboard.registerLeaderboard("TOP_HOG_KILLS", new Leaderboard("Top Kills", killPair, new String[]{GetName() + ".Kills"}, LeaderboardSQLType.ALL, location, 10));
}
{
Location location = lobbyCustomLocs.get("TOP_GOLD").get(0);
leaderboard.registerLeaderboard("TOP_HOG_GOLD", new Leaderboard("Top Gold Earned", goldPair, new String[]{GetName() + ".GoldEarned"}, LeaderboardSQLType.ALL, location, 10));
}
}
}
} }
private void writePrepare(Player player, GameScoreboard scoreboard) private void writePrepare(Player player, GameScoreboard scoreboard)
@ -442,11 +492,21 @@ public class Moba extends TeamGame
// Get the other team // Get the other team
for (GameTeam otherTeam : GetTeamList()) for (GameTeam otherTeam : GetTeamList())
{ {
for (Player player : otherTeam.GetPlayers(true))
{
AddGems(player, 10, "Participation", true, true);
}
if (team.equals(otherTeam)) if (team.equals(otherTeam))
{ {
continue; continue;
} }
for (Player player : otherTeam.GetPlayers(true))
{
AddGems(player, 20, "Winning", true, true);
}
AnnounceEnd(otherTeam); AnnounceEnd(otherTeam);
SetState(GameState.End); SetState(GameState.End);
} }
@ -505,6 +565,26 @@ public class Moba extends TeamGame
} }
} }
// Undisguise everyone upon game end
@EventHandler
public void end(GameStateChangeEvent event)
{
if (event.GetState() != GameState.End)
{
return;
}
for (Player player : Bukkit.getOnlinePlayers())
{
DisguiseBase disguise = Manager.GetDisguise().getActiveDisguise(player);
if (disguise != null)
{
Manager.GetDisguise().undisguise(disguise);
}
}
}
public Map<String, Location> getLocationStartsWith(String s) public Map<String, Location> getLocationStartsWith(String s)
{ {
Map<String, Location> map = new HashMap<>(); Map<String, Location> map = new HashMap<>();

View File

@ -128,6 +128,14 @@ public class WitherBoss extends MobaBoss
// If not damageable // If not damageable
if (!_damageable) if (!_damageable)
{ {
Player damager = event.GetDamagerPlayer(true);
if (damager != null)
{
damager.sendMessage(F.main("Game", "You must destroy both towers before attacking the Wither!"));
damager.playSound(damager.getLocation(), Sound.NOTE_BASS, 1, 0.8F);
}
return; return;
} }

View File

@ -0,0 +1,34 @@
package nautilus.game.arcade.game.games.moba.general;
import mineplex.core.common.util.C;
import mineplex.core.common.util.F;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.games.moba.Moba;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
public class BetaManager implements Listener
{
private static final String MESSAGE = F.main("Game", "You can suggest improvements for the game on our Trello here ") + C.cYellow + "https://trello.com/b/MrxWVhlI/mineplex-heroes-of-gwen-feedback-update";
private final Moba _host;
public BetaManager(Moba host)
{
_host = host;
}
@EventHandler
public void update(UpdateEvent event)
{
if (event.getType() != UpdateType.MIN_02 || _host.GetState() != GameState.Recruit)
{
return;
}
Bukkit.broadcastMessage(MESSAGE);
}
}

View File

@ -157,9 +157,11 @@ public class GoldManager implements Listener
public void addGold(Player player, int amount, String reason) public void addGold(Player player, int amount, String reason)
{ {
_playerGold.put(player, _playerGold.get(player) + amount); _playerGold.put(player, _playerGold.get(player) + amount);
_host.getArcadeManager().GetStatsManager().incrementStat(player, _host.GetName() + ".GoldEarned", amount);
if (amount > 20 && reason != null) if (amount > 20 && reason != null)
{ {
_host.AddGems(player, (double) amount / 2D, reason, true, true);
player.sendMessage(F.main("Game", C.cGold + "+" + amount + " gold (" + reason + ")" + C.cGray + ".")); player.sendMessage(F.main("Game", C.cGold + "+" + amount + " gold (" + reason + ")" + C.cGray + "."));
} }
} }

View File

@ -1,15 +1,19 @@
package nautilus.game.arcade.game.games.moba.kit; package nautilus.game.arcade.game.games.moba.kit;
import com.mojang.authlib.GameProfile;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilGear;
import mineplex.core.common.util.UtilItem; import mineplex.core.common.util.UtilItem;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilServer;
import mineplex.core.disguise.disguises.DisguisePlayer;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.recharge.Recharge; import mineplex.core.recharge.Recharge;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.core.utils.UtilGameProfile;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.moba.Moba; import nautilus.game.arcade.game.games.moba.Moba;
import nautilus.game.arcade.game.games.moba.MobaRole; import nautilus.game.arcade.game.games.moba.MobaRole;
@ -35,6 +39,7 @@ public class HeroKit extends Kit
private ItemStack _ammo; private ItemStack _ammo;
private long _giveTime; private long _giveTime;
private int _maxAmmo; private int _maxAmmo;
private SkinData _skin;
private static final int RECALL_SLOT = 8; private static final int RECALL_SLOT = 8;
private static final ItemStack RECALL_ITEM = new ItemBuilder(Material.BED) private static final ItemStack RECALL_ITEM = new ItemBuilder(Material.BED)
@ -48,12 +53,13 @@ public class HeroKit extends Kit
private boolean _visible = true; private boolean _visible = true;
public HeroKit(ArcadeManager manager, String name, Perk[] kitPerks, MobaRole role) public HeroKit(ArcadeManager manager, String name, Perk[] kitPerks, MobaRole role, SkinData skin)
{ {
super(manager, name, KitAvailability.Free, new String[0], kitPerks, null, null); super(manager, name, KitAvailability.Free, new String[0], kitPerks, null, null);
_role = role; _role = role;
_maxAmmo = 64; _maxAmmo = 64;
_skin = skin;
} }
public MobaRole getRole() public MobaRole getRole()
@ -231,6 +237,30 @@ public class HeroKit extends Kit
} }
} }
@Override
public void GiveItemsCall(Player player)
{
super.GiveItemsCall(player);
disguise(player);
}
public void disguise(Player player)
{
disguise(player, _skin);
}
public void disguise(Player player, SkinData skin)
{
GameProfile profile = UtilGameProfile.getGameProfile(player);
profile.getProperties().clear();
profile.getProperties().put("textures", skin.getProperty());
DisguisePlayer disguise = new DisguisePlayer(player, profile);
disguise.showInTabList(true, 0);
Manager.GetDisguise().disguise(disguise);
}
public boolean isVisible() public boolean isVisible()
{ {
return _visible; return _visible;

View File

@ -31,16 +31,14 @@ import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
public class HeroSkill extends Perk public class HeroSkill extends Perk
{ {
protected List<ItemStack> _items; private ItemStack _item;
private ItemStack _cooldownItem; private ItemStack _cooldownItem;
private final int _slot; private final int _slot;
private final ActionType _actionType; private final ActionType _actionType;
@ -61,8 +59,7 @@ public class HeroSkill extends Perk
{ {
super(name, perkDesc); super(name, perkDesc);
_items = new ArrayList<>(2); _item = itemStack;
_items.add(itemStack);
_slot = slot; _slot = slot;
_actionType = actionType; _actionType = actionType;
} }
@ -109,18 +106,12 @@ public class HeroSkill extends Perk
action += "/Drop Item"; action += "/Drop Item";
} }
List<ItemStack> items = new ArrayList<>(2); _item = new ItemBuilder(_item)
for (ItemStack itemStack : _items)
{
items.add(new ItemBuilder(itemStack)
.setTitle((action != null ? C.cYellowB + action + C.cGray + " - " : "") + C.cGreenB + GetName()) .setTitle((action != null ? C.cYellowB + action + C.cGray + " - " : "") + C.cGreenB + GetName())
.addLore(GetDesc()) .addLore(GetDesc())
.setUnbreakable(true) .setUnbreakable(true)
.build()); .build();
}
_items = items;
_cooldownItem = new ItemBuilder(Material.INK_SACK, (byte) 8) _cooldownItem = new ItemBuilder(Material.INK_SACK, (byte) 8)
.setTitle(C.cRed + GetName()) .setTitle(C.cRed + GetName())
.addLore(GetDesc()) .addLore(GetDesc())
@ -128,12 +119,6 @@ public class HeroSkill extends Perk
.build(); .build();
} }
protected void addSkillItem(ItemStack itemStack)
{
_items.add(itemStack);
prettifyItems();
}
@Override @Override
public void SetHost(Kit kit) public void SetHost(Kit kit)
{ {
@ -199,15 +184,8 @@ public class HeroSkill extends Perk
return false; return false;
} }
for (ItemStack correctItem : _items) return itemStack.isSimilar(_item);
{
if (itemStack.isSimilar(correctItem))
{
return true;
}
}
return false;
} }
protected boolean isSkillSneak(PlayerToggleSneakEvent event) protected boolean isSkillSneak(PlayerToggleSneakEvent event)
@ -225,15 +203,8 @@ public class HeroSkill extends Perk
return false; return false;
} }
for (ItemStack correctItem : _items) return itemStack.isSimilar(_item);
{
if (itemStack.isSimilar(correctItem))
{
return true;
}
}
return false;
} }
@EventHandler @EventHandler
@ -282,7 +253,7 @@ public class HeroSkill extends Perk
@EventHandler @EventHandler
public void updateCooldowns(UpdateEvent event) public void updateCooldowns(UpdateEvent event)
{ {
if (event.getType() != UpdateType.FASTEST || _items == null) if (event.getType() != UpdateType.FASTEST || _item == null)
{ {
return; return;
} }
@ -341,12 +312,7 @@ public class HeroSkill extends Perk
public void giveItem(Player player) public void giveItem(Player player)
{ {
if (_items.isEmpty()) player.getInventory().setItem(_slot, _item);
{
return;
}
player.getInventory().setItem(_slot, _items.get(0));
} }
public void useActiveSkill(Player player, long time) public void useActiveSkill(Player player, long time)

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.anath; package nautilus.game.arcade.game.games.moba.kit.anath;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
@ -25,7 +26,7 @@ public class HeroAnath extends HeroKit
public HeroAnath(ArcadeManager manager) public HeroAnath(ArcadeManager manager)
{ {
super(manager, "Anath", PERKS, MobaRole.MAGE); super(manager, "Anath", PERKS, MobaRole.MAGE, SkinData.ANATH);
setAmmo(AMMO, 1000); setAmmo(AMMO, 1000);
setMaxAmmo(4); setMaxAmmo(4);

View File

@ -25,8 +25,9 @@ public class SkillBurnBeam extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Fires a single, vertical beam of Flames which move forward in a straight.",
"Any enemies it collides with take damage and are set on fire." "It passes through enemies and structures dealing damage",
"to anything it passes through."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FIREBALL); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FIREBALL);

View File

@ -39,7 +39,9 @@ public class SkillMeteor extends HeroSkill implements IThrown
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"It doesn't blow up the map :)", "Shoot out a Block of Netherrack which is placed where it lands.",
"Meteors rain from the sky around the block.",
"Enemies within the area are damaged.",
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.bardolf; package nautilus.game.arcade.game.games.moba.kit.bardolf;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilPlayer;
@ -34,6 +35,7 @@ import java.util.Map;
public class HeroBardolf extends HeroKit public class HeroBardolf extends HeroKit
{ {
private static final int MIN_DIST_SQUARED = 2;
private static final int MAX_DIST_SQUARED = 100; private static final int MAX_DIST_SQUARED = 100;
private final List<WolfData> _data; private final List<WolfData> _data;
@ -47,7 +49,7 @@ public class HeroBardolf extends HeroKit
public HeroBardolf(ArcadeManager manager) public HeroBardolf(ArcadeManager manager)
{ {
super(manager, "Bardolf", PERKS, MobaRole.ASSASSIN); super(manager, "Bardolf", PERKS, MobaRole.ASSASSIN, SkinData.BARDOLF);
_data = new ArrayList<>(2); _data = new ArrayList<>(2);
} }
@ -101,7 +103,7 @@ public class HeroBardolf extends HeroKit
{ {
wolf.teleport(data.getOwner()); wolf.teleport(data.getOwner());
} }
else if (ownerOffset > 4) else if (ownerOffset > MIN_DIST_SQUARED)
{ {
UtilEnt.CreatureMoveFast(wolf, data.getOwner().getLocation(), data.isUltimate() ? 2F : 1.5F); UtilEnt.CreatureMoveFast(wolf, data.getOwner().getLocation(), data.isUltimate() ? 2F : 1.5F);
} }

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.bardolf; package nautilus.game.arcade.game.games.moba.kit.bardolf;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.minecraft.game.core.damage.CustomDamageEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.games.moba.kit.HeroSkill; import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
@ -21,8 +22,11 @@ public class SkillFullMoon extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Turns the character into a Werewolf.",
"Any enemies it collides with take damage and are set on fire." "He gains +1 attack Damage and +5% Movement speed for each Wolf alive in his pack.",
"The Wolves gain movement speed to catch up and are healed to their full HP.",
"As wolves die his power decreases.",
"All Wolves in the pack die after the ultimate ends"
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);
private static final long DURATION = TimeUnit.SECONDS.toMillis(10); private static final long DURATION = TimeUnit.SECONDS.toMillis(10);
@ -49,15 +53,18 @@ public class SkillFullMoon extends HeroSkill
return; return;
} }
WolfData data = ((HeroBardolf) Kit).getWolfData(player); HeroBardolf kit = (HeroBardolf) Kit;
WolfData data = kit.getWolfData(player);
if (data == null) if (data == null)
{ {
return; return;
} }
_active.add(player); _active.add(player);
Manager.GetGame().WorldTimeSet = 18000; Manager.GetGame().WorldTimeSet = 18000;
player.getWorld().strikeLightningEffect(player.getLocation()); player.getWorld().strikeLightningEffect(player.getLocation());
kit.disguise(player, SkinData.BARDOLF_WEREWOLF);
data.setUltimate(true); data.setUltimate(true);
float speedIncrease = (float) data.getWolves().size() * SPEED_FACTOR; float speedIncrease = (float) data.getWolves().size() * SPEED_FACTOR;
@ -79,6 +86,7 @@ public class SkillFullMoon extends HeroSkill
_active.remove(player); _active.remove(player);
Manager.GetGame().WorldTimeSet = 12000; Manager.GetGame().WorldTimeSet = 12000;
data.setUltimate(false); data.setUltimate(false);
kit.disguise(player);
player.setWalkSpeed(player.getWalkSpeed() - data.getLastSpeedIncrease()); player.setWalkSpeed(player.getWalkSpeed() - data.getLastSpeedIncrease());
for (Wolf wolf : data.getWolves()) for (Wolf wolf : data.getWolves())

View File

@ -25,8 +25,10 @@ public class SkillSummonWolf extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Click to summon a Wolf to your pack.",
"Any enemies it collides with take damage and are set on fire." "Wolves are tamed and will attack your target or people who damage you.",
"Wolves are weak and can be killed.",
"Maximum of 5."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.BONE); private static final ItemStack SKILL_ITEM = new ItemStack(Material.BONE);
private static final int MAX_WOLVES = 5; private static final int MAX_WOLVES = 5;

View File

@ -34,7 +34,8 @@ public class SkillWolfPounce extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving fire behind you.", "Dash into the air",
"Your wolves will follow you."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);
private static final int COOLDOWN = 7000; private static final int COOLDOWN = 7000;

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.biff; package nautilus.game.arcade.game.games.moba.kit.biff;
import mineplex.core.common.skin.SkinData;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.moba.MobaRole; import nautilus.game.arcade.game.games.moba.MobaRole;
import nautilus.game.arcade.game.games.moba.kit.HeroKit; import nautilus.game.arcade.game.games.moba.kit.HeroKit;
@ -18,6 +19,6 @@ public class HeroBiff extends HeroKit
public HeroBiff(ArcadeManager manager) public HeroBiff(ArcadeManager manager)
{ {
super(manager, "Biff", PERKS, MobaRole.WARRIOR); super(manager, "Biff", PERKS, MobaRole.WARRIOR, SkinData.BIFF);
} }
} }

View File

@ -1,7 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.biff; package nautilus.game.arcade.game.games.moba.kit.biff;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilBlock;
import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
@ -13,7 +12,6 @@ import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import nautilus.game.arcade.game.games.moba.kit.HeroSkill; import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.block.Block; import org.bukkit.block.Block;
@ -36,7 +34,9 @@ public class SkillBiffDash extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving fire behind you.", "Dash into the air.",
"When you land any enemies near you are damaged",
"and thrown up into the air."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);

View File

@ -1,6 +1,5 @@
package nautilus.game.arcade.game.games.moba.kit.biff; package nautilus.game.arcade.game.games.moba.kit.biff;
import mineplex.core.common.events.EntityVelocityChangeEvent;
import mineplex.core.common.util.F; import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAction;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
@ -29,8 +28,9 @@ public class SkillLeash extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Enemy heroes near to Biff are hooked with a leash to you.",
"Any enemies it collides with take damage and are set on fire." "Leashed players are slowed and it breaks if the leashed player moves",
"too far away."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.LEASH); private static final ItemStack SKILL_ITEM = new ItemStack(Material.LEASH);

View File

@ -34,8 +34,9 @@ public class SkillWarHorse extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Mounts you on a horse.",
"Any enemies it collides with take damage and are set on fire." "Any nearby enemy heroes are rooted and will be",
"unable to move."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.bob; package nautilus.game.arcade.game.games.moba.kit.bob;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
@ -25,7 +26,7 @@ public class HeroBob extends HeroKit
public HeroBob(ArcadeManager manager) public HeroBob(ArcadeManager manager)
{ {
super(manager, "Bob Ross", PERKS, MobaRole.MAGE); super(manager, "Bob Ross", PERKS, MobaRole.MAGE, SkinData.BOB_ROSS);
setAmmo(AMMO, 500); setAmmo(AMMO, 500);
setMaxAmmo(8); setMaxAmmo(8);

View File

@ -18,7 +18,7 @@ public class SkillBeatTheDevil extends DashSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving fire behind you.", "Bob Ross"
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);

View File

@ -153,7 +153,7 @@ public class SkillHappyTrees extends HeroSkill
continue; continue;
} }
MobaUtil.heal(entity, 2); MobaUtil.heal(entity, owner, 2);
MobaParticles.healing(entity, 1); MobaParticles.healing(entity, 1);
} }
} }

View File

@ -16,10 +16,6 @@ import java.util.List;
public class SkillSword extends HeroSkill public class SkillSword extends HeroSkill
{ {
private static final String[] DESCRIPTION = {
"Please work"
};
private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.WOOD_SWORD) private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.WOOD_SWORD)
.setTitle(C.cGreenB + "Sword") .setTitle(C.cGreenB + "Sword")
.setUnbreakable(true) .setUnbreakable(true)
@ -27,7 +23,7 @@ public class SkillSword extends HeroSkill
public SkillSword(int slot) public SkillSword(int slot)
{ {
super("Sword", DESCRIPTION, SKILL_ITEM, slot, null); super("Sword", new String[0], SKILL_ITEM, slot, null);
} }
@Override @Override

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.dana; package nautilus.game.arcade.game.games.moba.kit.dana;
import mineplex.core.common.skin.SkinData;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.moba.MobaRole; import nautilus.game.arcade.game.games.moba.MobaRole;
import nautilus.game.arcade.game.games.moba.kit.HeroKit; import nautilus.game.arcade.game.games.moba.kit.HeroKit;
@ -18,6 +19,6 @@ public class HeroDana extends HeroKit
public HeroDana(ArcadeManager manager) public HeroDana(ArcadeManager manager)
{ {
super(manager, "Dana", PERKS, MobaRole.WARRIOR); super(manager, "Dana", PERKS, MobaRole.WARRIOR, SkinData.DANA);
} }
} }

View File

@ -23,7 +23,8 @@ public class SkillDanaDash extends DashSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving fire behind you.", "Dash along the ground.",
"Nearby enemies are thrown up into the air."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);

View File

@ -21,8 +21,7 @@ public class SkillPulseHeal extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Heals nearby allies and minions."
"Any enemies it collides with take damage and are set on fire."
}; };
private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.INK_SACK, (byte) 10).build(); private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.INK_SACK, (byte) 10).build();
@ -52,7 +51,7 @@ public class SkillPulseHeal extends HeroSkill
continue; continue;
} }
MobaUtil.heal(entity, 4); MobaUtil.heal(entity, player, 4);
} }
displayPulse(player.getLocation().add(0, 0.5, 0)); displayPulse(player.getLocation().add(0, 0.5, 0));

View File

@ -33,8 +33,9 @@ public class SkillRally extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "You leap up into the air, and upon landing",
"Any enemies it collides with take damage and are set on fire." "you plant a banner that heals nearby allies",
"and minions."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.devon; package nautilus.game.arcade.game.games.moba.kit.devon;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
@ -27,7 +28,7 @@ public class HeroDevon extends HeroKit
public HeroDevon(ArcadeManager manager) public HeroDevon(ArcadeManager manager)
{ {
super(manager, "Devon", PERKS, MobaRole.HUNTER); super(manager, "Devon", PERKS, MobaRole.HUNTER, SkinData.DEVON);
setAmmo(AMMO, 3000); setAmmo(AMMO, 3000);
setMaxAmmo(3); setMaxAmmo(3);

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.hattori; package nautilus.game.arcade.game.games.moba.kit.hattori;
import mineplex.core.common.skin.SkinData;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.games.moba.MobaRole; import nautilus.game.arcade.game.games.moba.MobaRole;
import nautilus.game.arcade.game.games.moba.kit.HeroKit; import nautilus.game.arcade.game.games.moba.kit.HeroKit;
@ -20,6 +21,6 @@ public class HeroHattori extends HeroKit
public HeroHattori(ArcadeManager manager) public HeroHattori(ArcadeManager manager)
{ {
super(manager, "Hattori", PERKS, MobaRole.ASSASSIN); super(manager, "Hattori", PERKS, MobaRole.ASSASSIN, SkinData.HATTORI);
} }
} }

View File

@ -24,7 +24,7 @@ public class SkillSnowball extends HeroSkill implements IThrown
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires 3 snowballs, one after another.", "Fires 3 snowballs, one after another.",
"Each snowball deals 3 damage to any enemy it hits." "Each snowball deals damage to any enemy it hits."
}; };
private static final int DAMAGE = 3; private static final int DAMAGE = 3;
private static final ItemStack SKILL_ITEM = new ItemStack(Material.SNOW_BALL); private static final ItemStack SKILL_ITEM = new ItemStack(Material.SNOW_BALL);

View File

@ -42,7 +42,7 @@ public class HPManager implements Listener
continue; continue;
} }
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, HP5, true); MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, null, HP5, true);
UtilServer.CallEvent(regenEvent); UtilServer.CallEvent(regenEvent);
if (regenEvent.isCancelled()) if (regenEvent.isCancelled())

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.larissa; package nautilus.game.arcade.game.games.moba.kit.larissa;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
@ -26,7 +27,7 @@ public class HeroLarissa extends HeroKit
public HeroLarissa(ArcadeManager manager) public HeroLarissa(ArcadeManager manager)
{ {
super(manager, "Larissa", PERKS, MobaRole.MAGE); super(manager, "Larissa", PERKS, MobaRole.MAGE, SkinData.LARISSA);
setAmmo(AMMO, 3000); setAmmo(AMMO, 3000);
setMaxAmmo(5); setMaxAmmo(5);

View File

@ -44,8 +44,9 @@ public class SkillAOEHeal extends HeroSkill implements IThrown
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Throws a water bucket which upon coming into",
"Any enemies it collides with take damage and are set on fire." "contact with the ground will heal nearby",
"players and minions."
}; };
private static final long DURATION = TimeUnit.SECONDS.toMillis(6); private static final long DURATION = TimeUnit.SECONDS.toMillis(6);
private static final int RADIUS = 3; private static final int RADIUS = 3;
@ -127,7 +128,7 @@ public class SkillAOEHeal extends HeroSkill implements IThrown
if (isTeamDamage(entity, owner)) if (isTeamDamage(entity, owner))
{ {
MobaParticles.healing(entity, HEALTH_PER_SECOND); MobaParticles.healing(entity, HEALTH_PER_SECOND);
MobaUtil.heal(entity, HEALTH_PER_SECOND); MobaUtil.heal(entity, owner, HEALTH_PER_SECOND);
} }
else else
{ {

View File

@ -26,8 +26,8 @@ public class SkillAquaCannon extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "Fires a beam of water that deals damage",
"Any enemies it collides with take damage and are set on fire." "to the first enemy it comes in contact with."
}; };
private static final int DAMAGE = 6; private static final int DAMAGE = 6;
private static final ItemStack SKILL_ITEM = new ItemStack(Material.DIAMOND_HOE); private static final ItemStack SKILL_ITEM = new ItemStack(Material.DIAMOND_HOE);

View File

@ -1,6 +1,5 @@
package nautilus.game.arcade.game.games.moba.kit.larissa; package nautilus.game.arcade.game.games.moba.kit.larissa;
import mineplex.core.Managers;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ParticleType;
@ -30,8 +29,8 @@ public class SkillStormHeal extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Fires an Ember at high speed in front of you.", "All team members are consistently healed",
"Any enemies it collides with take damage and are set on fire." "over the next 7 seconds."
}; };
private static final long DURATION = TimeUnit.SECONDS.toMillis(7); private static final long DURATION = TimeUnit.SECONDS.toMillis(7);
private static final int HEALTH_PER_SECOND = 2; private static final int HEALTH_PER_SECOND = 2;
@ -86,7 +85,7 @@ public class SkillStormHeal extends HeroSkill
for (Player teamMember : team.GetPlayers(true)) for (Player teamMember : team.GetPlayers(true))
{ {
MobaUtil.heal(teamMember, HEALTH_PER_SECOND); MobaUtil.heal(teamMember, player, HEALTH_PER_SECOND);
} }
}); });
} }

View File

@ -18,7 +18,8 @@ public class SkillWaterDash extends DashSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving water behind you.", "Dash along the ground, crippling enemies you",
"come into contact with."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);
private static final long CRIPPLE_DURATION = TimeUnit.SECONDS.toMillis(3); private static final long CRIPPLE_DURATION = TimeUnit.SECONDS.toMillis(3);

View File

@ -1,5 +1,6 @@
package nautilus.game.arcade.game.games.moba.kit.rowena; package nautilus.game.arcade.game.games.moba.kit.rowena;
import mineplex.core.common.skin.SkinData;
import mineplex.core.common.util.C; import mineplex.core.common.util.C;
import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemBuilder;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
@ -27,7 +28,7 @@ public class HeroRowena extends HeroKit
public HeroRowena(ArcadeManager manager) public HeroRowena(ArcadeManager manager)
{ {
super(manager, "Rowena", PERKS, MobaRole.HUNTER); super(manager, "Rowena", PERKS, MobaRole.HUNTER, SkinData.ROWENA);
setAmmo(AMMO, 2000); setAmmo(AMMO, 2000);
setMaxAmmo(2); setMaxAmmo(2);

View File

@ -1,30 +1,32 @@
package nautilus.game.arcade.game.games.moba.kit.rowena; package nautilus.game.arcade.game.games.moba.kit.rowena;
import mineplex.core.common.events.EntityVelocityChangeEvent; import mineplex.core.common.events.EntityVelocityChangeEvent;
import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.C;
import mineplex.core.common.util.UtilEnt;
import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilEvent.ActionType;
import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilTime;
import mineplex.core.common.util.particles.effects.LineParticle;
import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
import nautilus.game.arcade.game.games.moba.kit.HeroSkill; import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.game.games.moba.util.MobaUtil;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace; import org.bukkit.block.BlockFace;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
import org.bukkit.event.entity.EntityShootBowEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator; import java.util.Iterator;
@ -34,13 +36,16 @@ public class SkillBombardment extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Turns into a Diamond Sword that deals extreme", "Take to the sky!",
"damage to any player hit by it." "Your shots become fast high power explosive shots."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);
private static final int DAMAGE_FACTOR = 2;
private static final int SHOTS = 3; private static final int SHOTS = 3;
private static final int MAX_TIME = 10000; private static final int MAX_TIME = 10000;
private static final int DAMAGE_INCREASE = 5; private static final ItemStack ACTIVE_ITEM = new ItemBuilder(Material.DIAMOND_BARDING)
.setTitle(C.cDRedB + "Bombardment")
.build();
private Set<BombardmentData> _data = new HashSet<>(); private Set<BombardmentData> _data = new HashSet<>();
@ -71,22 +76,56 @@ public class SkillBombardment extends HeroSkill
} }
} }
for (Perk perk : Kit.GetPerks()) Location toTeleport = player.getLocation().add(0, 15, 0);
{
if (perk instanceof SkillLightArrows)
{
SkillLightArrows skill = (SkillLightArrows) perk;
skill.resetCooldown(player);
skill.setPlayerArrows(player, SHOTS);
}
}
player.teleport(toTeleport);
player.getInventory().setItem(0, ACTIVE_ITEM);
player.getInventory().setHeldItemSlot(0);
broadcast(player); broadcast(player);
UtilAction.velocity(player, new Vector(0, 2, 0));
_data.add(new BombardmentData(player)); _data.add(new BombardmentData(player));
} }
@EventHandler
public void interactActive(PlayerInteractEvent event)
{
if (event.getItem() == null || !event.getItem().isSimilar(ACTIVE_ITEM))
{
return;
}
Player player = event.getPlayer();
for (BombardmentData data : _data)
{
if (data.Shooter.equals(player))
{
Location location = player.getEyeLocation();
LineParticle lineParticle = new LineParticle(location, location.getDirection(), 0.4, 40, ParticleType.FIREWORKS_SPARK, UtilServer.getPlayers());
double damage = MobaUtil.scaleDamageWithBow(player.getInventory().getItem(0), 0) * DAMAGE_FACTOR;
while (!lineParticle.update())
{
}
player.playSound(player.getLocation(), Sound.EXPLODE, 1, 0.8F);
UtilParticle.PlayParticleToAll(ParticleType.HUGE_EXPLOSION, lineParticle.getDestination(), 0, 0, 0, 0.1F, 1, ViewDist.LONG);
for (LivingEntity entity : UtilEnt.getInRadius(lineParticle.getLastLocation(), 5).keySet())
{
if (isTeamDamage(entity, player))
{
continue;
}
Manager.GetDamage().NewDamageEvent(entity, player, null, DamageCause.CUSTOM, damage, true, true, false, player.getName(), GetName());
}
data.Shots--;
return;
}
}
}
@EventHandler @EventHandler
public void update(UpdateEvent event) public void update(UpdateEvent event)
{ {
@ -102,21 +141,10 @@ public class SkillBombardment extends HeroSkill
BombardmentData data = iterator.next(); BombardmentData data = iterator.next();
Player player = data.Shooter; Player player = data.Shooter;
if (data.Block == null && player.getVelocity().getY() <= 0) if (UtilTime.elapsed(data.Start, MAX_TIME) || data.Shots == 0)
{
data.Block = player.getLocation().getBlock().getRelative(BlockFace.DOWN);
data.Block.setType(Material.BARRIER);
Location playerLocation = player.getLocation();
Location toTeleport = data.Block.getLocation();
toTeleport.setYaw(playerLocation.getYaw());
toTeleport.setPitch(playerLocation.getPitch());
player.getInventory().setHeldItemSlot(0);
}
else if (UtilTime.elapsed(data.Start, MAX_TIME) || data.Shots == 0)
{ {
useSkill(player); useSkill(player);
Kit.GiveItems(player);
data.Block.setType(Material.AIR); data.Block.setType(Material.AIR);
iterator.remove(); iterator.remove();
} }
@ -127,46 +155,6 @@ public class SkillBombardment extends HeroSkill
} }
} }
@EventHandler
public void shootArrow(EntityShootBowEvent event)
{
if (!(event.getEntity() instanceof Player))
{
return;
}
Player player = (Player) event.getEntity();
for (BombardmentData data : _data)
{
if (data.Shooter.equals(player))
{
data.Shots--;
return;
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void increaseDamage(CustomDamageEvent event)
{
if (event.isCancelled())
{
return;
}
Player damager = event.GetDamagerPlayer(true);
if (damager == null || event.GetReason() == null || !event.GetReason().contains("Light Arrows"))
{
return;
}
damager.playSound(event.GetDamageeEntity().getLocation(), Sound.EXPLODE, 1, 0.6F);
UtilParticle.PlayParticleToAll(ParticleType.LARGE_EXPLODE, event.GetDamageeEntity().getLocation().add(0, 1, 0), 0, 0, 0, 0.1F, 1, ViewDist.LONG);
event.AddMod(GetName(), DAMAGE_INCREASE);
}
@EventHandler @EventHandler
public void playerMove(PlayerMoveEvent event) public void playerMove(PlayerMoveEvent event)
{ {
@ -212,6 +200,8 @@ public class SkillBombardment extends HeroSkill
{ {
Shooter = shooter; Shooter = shooter;
Shots = SHOTS; Shots = SHOTS;
Block = shooter.getLocation().getBlock().getRelative(BlockFace.DOWN);
Block.setType(Material.BARRIER);
Start = System.currentTimeMillis(); Start = System.currentTimeMillis();
} }
} }

View File

@ -13,7 +13,7 @@ public class SkillCombatDash extends DashSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Dash along the ground, leaving fire behind you.", "Dash very fast along the ground.",
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER); private static final ItemStack SKILL_ITEM = new ItemStack(Material.FEATHER);
@ -25,7 +25,6 @@ public class SkillCombatDash extends DashSkill
_collide = false; _collide = false;
_velocityTime = 250; _velocityTime = 250;
_velocityStopOnEnd = true;
_velocityMagnitude = 1.5; _velocityMagnitude = 1.5;
_horizontial = true; _horizontial = true;
} }

View File

@ -38,8 +38,8 @@ public class SkillLightArrows extends HeroSkill
{ {
private static final String[] DESCRIPTION = { private static final String[] DESCRIPTION = {
"Your next 3 arrows are infused with TNT.", "Your next 5 arrows become light infused.",
"They explode on contact dealing damage and knockback." "They pass through blocks and deal high damage."
}; };
private static final ItemStack SKILL_ITEM = new ItemStack(Material.GOLD_NUGGET); private static final ItemStack SKILL_ITEM = new ItemStack(Material.GOLD_NUGGET);
@ -170,10 +170,5 @@ public class SkillLightArrows extends HeroSkill
_playerArrows.remove(event.getPlayer()); _playerArrows.remove(event.getPlayer());
_arrows.remove(event.getPlayer()); _arrows.remove(event.getPlayer());
} }
void setPlayerArrows(Player player, int amount)
{
_playerArrows.put(player, amount);
}
} }

View File

@ -143,6 +143,11 @@ public class MinionManager implements Listener
public void unregisterWave(MinionWave wave) public void unregisterWave(MinionWave wave)
{ {
for (Minion minion : wave.getMinions())
{
minion.getEntity().remove();
}
_waves.remove(wave); _waves.remove(wave);
} }

View File

@ -33,6 +33,7 @@ import org.jooq.util.derby.sys.Sys;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -163,7 +164,23 @@ public class MinionWave implements Listener
return; return;
} }
_minions.removeIf(minion -> minion.getEntity() == null || minion.getEntity().isDead() || !minion.getEntity().isValid()); Iterator<Minion> iterator = _minions.iterator();
while (iterator.hasNext())
{
Minion minion = iterator.next();
LivingEntity entity = minion.getEntity();
if (entity == null || entity.isDead() || !entity.isValid())
{
if (entity != null && entity.getKiller() != null)
{
_host.AddGems(entity.getKiller(), 0.1, "Minion Kills", true, true);
}
iterator.remove();
}
}
// Only should unregister the wave after all entities have spawned // Only should unregister the wave after all entities have spawned
if (_minions.isEmpty() && UtilTime.elapsed(_startTime, 10000)) if (_minions.isEmpty() && UtilTime.elapsed(_startTime, 10000))

View File

@ -19,12 +19,12 @@ public class MobaKillHealEffect extends MobaItemEffect
@Override @Override
public void onDeath(Player killed, Player killer) public void onDeath(Player killed, Player killer)
{ {
MobaUtil.heal(killer, _health); MobaUtil.heal(killer, killer, _health);
} }
@Override @Override
public String getDescription() public String getDescription()
{ {
return "Killing a player heals for " + F.greenElem(format(_health / 2)) + C.cRed + "" + C.cGray + "."; return "Killing a player heals for an additional " + F.greenElem(format(_health / 2)) + C.cRed + "" + C.cGray + ".";
} }
} }

View File

@ -125,6 +125,11 @@ public class TowerManager implements Listener
@EventHandler @EventHandler
public void updateTower(UpdateEvent event) public void updateTower(UpdateEvent event)
{ {
if (!_host.IsLive())
{
return;
}
if (event.getType() == UpdateType.FASTEST) if (event.getType() == UpdateType.FASTEST)
{ {
for (Tower tower : _towers) for (Tower tower : _towers)
@ -166,7 +171,7 @@ public class TowerManager implements Listener
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void crystalDamage(EntityDamageByEntityEvent event) public void crystalDamage(EntityDamageByEntityEvent event)
{ {
if (!(event.getEntity() instanceof EnderCrystal)) if (!(event.getEntity() instanceof EnderCrystal) || !_host.IsLive())
{ {
return; return;
} }

View File

@ -198,11 +198,11 @@ public class MobaUtil
return entity.hasMetadata(MobaConstants.TEAM_METADATA) && entity.getMetadata(MobaConstants.TEAM_METADATA).get(0).asString().equals(team.GetName()); return entity.hasMetadata(MobaConstants.TEAM_METADATA) && entity.getMetadata(MobaConstants.TEAM_METADATA).get(0).asString().equals(team.GetName());
} }
public static void heal(LivingEntity entity, double health) public static void heal(LivingEntity entity, Player source, double health)
{ {
if (entity instanceof Player) if (entity instanceof Player)
{ {
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent((Player) entity, health, false); MobaHPRegenEvent regenEvent = new MobaHPRegenEvent((Player) entity, source, health, false);
UtilServer.CallEvent(regenEvent); UtilServer.CallEvent(regenEvent);
if (regenEvent.isCancelled()) if (regenEvent.isCancelled())