Final changes
This commit is contained in:
parent
4978f924a7
commit
29d5a80a67
@ -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 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
|
||||
// A better way to do this would check for the properties when getting the skull or the skin
|
||||
// Might change on the next version
|
||||
|
@ -217,7 +217,11 @@ public enum AchievementCategory
|
||||
|
||||
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")},
|
||||
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[] _statsToPull;
|
||||
|
@ -51,7 +51,7 @@ public class AchievementMainPage extends ShopPageBase<AchievementManager, Achiev
|
||||
protected void buildPage()
|
||||
{
|
||||
ArrayList<Integer> pageLayout = new ItemLayout(
|
||||
"XXOXOXOXO",
|
||||
"OXOXOXOXO",
|
||||
"OXOXOXOXO",
|
||||
"OXOXOXOXO",
|
||||
"OXOXOXOXO",
|
||||
|
@ -1,11 +1,17 @@
|
||||
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.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
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 nautilus.game.arcade.ArcadeManager;
|
||||
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.fountain.MobaFountain;
|
||||
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.MobaDamageManager;
|
||||
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.compass.CompassModule;
|
||||
import nautilus.game.arcade.kit.Kit;
|
||||
import nautilus.game.arcade.managers.lobby.current.NewGameLobbyManager;
|
||||
import nautilus.game.arcade.scoreboard.GameScoreboard;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
@ -151,6 +160,9 @@ public class Moba extends TeamGame
|
||||
// Buffs
|
||||
_buffs = registerManager(new BuffManager());
|
||||
|
||||
// Beta Message
|
||||
registerManager(new BetaManager(this));
|
||||
|
||||
new CompassModule()
|
||||
.setGiveCompass(true)
|
||||
.setGiveCompassToSpecs(true)
|
||||
@ -268,6 +280,44 @@ public class Moba extends TeamGame
|
||||
}
|
||||
|
||||
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)
|
||||
@ -442,11 +492,21 @@ public class Moba extends TeamGame
|
||||
// Get the other team
|
||||
for (GameTeam otherTeam : GetTeamList())
|
||||
{
|
||||
for (Player player : otherTeam.GetPlayers(true))
|
||||
{
|
||||
AddGems(player, 10, "Participation", true, true);
|
||||
}
|
||||
|
||||
if (team.equals(otherTeam))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for (Player player : otherTeam.GetPlayers(true))
|
||||
{
|
||||
AddGems(player, 20, "Winning", true, true);
|
||||
}
|
||||
|
||||
AnnounceEnd(otherTeam);
|
||||
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)
|
||||
{
|
||||
Map<String, Location> map = new HashMap<>();
|
||||
|
@ -128,6 +128,14 @@ public class WitherBoss extends MobaBoss
|
||||
// If not 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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
@ -157,9 +157,11 @@ public class GoldManager implements Listener
|
||||
public void addGold(Player player, int amount, String reason)
|
||||
{
|
||||
_playerGold.put(player, _playerGold.get(player) + amount);
|
||||
_host.getArcadeManager().GetStatsManager().incrementStat(player, _host.GetName() + ".GoldEarned", amount);
|
||||
|
||||
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 + "."));
|
||||
}
|
||||
}
|
||||
|
@ -1,15 +1,19 @@
|
||||
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.F;
|
||||
import mineplex.core.common.util.UtilGear;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.disguise.disguises.DisguisePlayer;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.utils.UtilGameProfile;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.game.games.moba.Moba;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
@ -35,6 +39,7 @@ public class HeroKit extends Kit
|
||||
private ItemStack _ammo;
|
||||
private long _giveTime;
|
||||
private int _maxAmmo;
|
||||
private SkinData _skin;
|
||||
|
||||
private static final int RECALL_SLOT = 8;
|
||||
private static final ItemStack RECALL_ITEM = new ItemBuilder(Material.BED)
|
||||
@ -48,12 +53,13 @@ public class HeroKit extends Kit
|
||||
|
||||
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);
|
||||
|
||||
_role = role;
|
||||
_maxAmmo = 64;
|
||||
_skin = skin;
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
return _visible;
|
||||
|
@ -31,16 +31,14 @@ import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public class HeroSkill extends Perk
|
||||
{
|
||||
|
||||
protected List<ItemStack> _items;
|
||||
private ItemStack _item;
|
||||
private ItemStack _cooldownItem;
|
||||
private final int _slot;
|
||||
private final ActionType _actionType;
|
||||
@ -61,8 +59,7 @@ public class HeroSkill extends Perk
|
||||
{
|
||||
super(name, perkDesc);
|
||||
|
||||
_items = new ArrayList<>(2);
|
||||
_items.add(itemStack);
|
||||
_item = itemStack;
|
||||
_slot = slot;
|
||||
_actionType = actionType;
|
||||
}
|
||||
@ -109,18 +106,12 @@ public class HeroSkill extends Perk
|
||||
action += "/Drop Item";
|
||||
}
|
||||
|
||||
List<ItemStack> items = new ArrayList<>(2);
|
||||
_item = new ItemBuilder(_item)
|
||||
.setTitle((action != null ? C.cYellowB + action + C.cGray + " - " : "") + C.cGreenB + GetName())
|
||||
.addLore(GetDesc())
|
||||
.setUnbreakable(true)
|
||||
.build();
|
||||
|
||||
for (ItemStack itemStack : _items)
|
||||
{
|
||||
items.add(new ItemBuilder(itemStack)
|
||||
.setTitle((action != null ? C.cYellowB + action + C.cGray + " - " : "") + C.cGreenB + GetName())
|
||||
.addLore(GetDesc())
|
||||
.setUnbreakable(true)
|
||||
.build());
|
||||
}
|
||||
|
||||
_items = items;
|
||||
_cooldownItem = new ItemBuilder(Material.INK_SACK, (byte) 8)
|
||||
.setTitle(C.cRed + GetName())
|
||||
.addLore(GetDesc())
|
||||
@ -128,12 +119,6 @@ public class HeroSkill extends Perk
|
||||
.build();
|
||||
}
|
||||
|
||||
protected void addSkillItem(ItemStack itemStack)
|
||||
{
|
||||
_items.add(itemStack);
|
||||
prettifyItems();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void SetHost(Kit kit)
|
||||
{
|
||||
@ -199,15 +184,8 @@ public class HeroSkill extends Perk
|
||||
return false;
|
||||
}
|
||||
|
||||
for (ItemStack correctItem : _items)
|
||||
{
|
||||
if (itemStack.isSimilar(correctItem))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return itemStack.isSimilar(_item);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean isSkillSneak(PlayerToggleSneakEvent event)
|
||||
@ -225,15 +203,8 @@ public class HeroSkill extends Perk
|
||||
return false;
|
||||
}
|
||||
|
||||
for (ItemStack correctItem : _items)
|
||||
{
|
||||
if (itemStack.isSimilar(correctItem))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return itemStack.isSimilar(_item);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -282,7 +253,7 @@ public class HeroSkill extends Perk
|
||||
@EventHandler
|
||||
public void updateCooldowns(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTEST || _items == null)
|
||||
if (event.getType() != UpdateType.FASTEST || _item == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -341,12 +312,7 @@ public class HeroSkill extends Perk
|
||||
|
||||
public void giveItem(Player player)
|
||||
{
|
||||
if (_items.isEmpty())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.getInventory().setItem(_slot, _items.get(0));
|
||||
player.getInventory().setItem(_slot, _item);
|
||||
}
|
||||
|
||||
public void useActiveSkill(Player player, long time)
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.anath;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
@ -25,7 +26,7 @@ public class HeroAnath extends HeroKit
|
||||
|
||||
public HeroAnath(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Anath", PERKS, MobaRole.MAGE);
|
||||
super(manager, "Anath", PERKS, MobaRole.MAGE, SkinData.ANATH);
|
||||
|
||||
setAmmo(AMMO, 1000);
|
||||
setMaxAmmo(4);
|
||||
|
@ -25,8 +25,9 @@ public class SkillBurnBeam extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Fires a single, vertical beam of Flames which move forward in a straight.",
|
||||
"It passes through enemies and structures dealing damage",
|
||||
"to anything it passes through."
|
||||
};
|
||||
|
||||
private static final ItemStack SKILL_ITEM = new ItemStack(Material.FIREBALL);
|
||||
|
@ -39,7 +39,9 @@ public class SkillMeteor extends HeroSkill implements IThrown
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.UtilMath;
|
||||
import mineplex.core.common.util.UtilPlayer;
|
||||
@ -34,6 +35,7 @@ import java.util.Map;
|
||||
public class HeroBardolf extends HeroKit
|
||||
{
|
||||
|
||||
private static final int MIN_DIST_SQUARED = 2;
|
||||
private static final int MAX_DIST_SQUARED = 100;
|
||||
|
||||
private final List<WolfData> _data;
|
||||
@ -47,7 +49,7 @@ public class HeroBardolf extends HeroKit
|
||||
|
||||
public HeroBardolf(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Bardolf", PERKS, MobaRole.ASSASSIN);
|
||||
super(manager, "Bardolf", PERKS, MobaRole.ASSASSIN, SkinData.BARDOLF);
|
||||
|
||||
_data = new ArrayList<>(2);
|
||||
}
|
||||
@ -101,7 +103,7 @@ public class HeroBardolf extends HeroKit
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.bardolf;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
|
||||
@ -21,8 +22,11 @@ public class SkillFullMoon extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Turns the character into a Werewolf.",
|
||||
"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 long DURATION = TimeUnit.SECONDS.toMillis(10);
|
||||
@ -49,15 +53,18 @@ public class SkillFullMoon extends HeroSkill
|
||||
return;
|
||||
}
|
||||
|
||||
WolfData data = ((HeroBardolf) Kit).getWolfData(player);
|
||||
HeroBardolf kit = (HeroBardolf) Kit;
|
||||
WolfData data = kit.getWolfData(player);
|
||||
|
||||
if (data == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_active.add(player);
|
||||
Manager.GetGame().WorldTimeSet = 18000;
|
||||
player.getWorld().strikeLightningEffect(player.getLocation());
|
||||
kit.disguise(player, SkinData.BARDOLF_WEREWOLF);
|
||||
data.setUltimate(true);
|
||||
|
||||
float speedIncrease = (float) data.getWolves().size() * SPEED_FACTOR;
|
||||
@ -79,6 +86,7 @@ public class SkillFullMoon extends HeroSkill
|
||||
_active.remove(player);
|
||||
Manager.GetGame().WorldTimeSet = 12000;
|
||||
data.setUltimate(false);
|
||||
kit.disguise(player);
|
||||
player.setWalkSpeed(player.getWalkSpeed() - data.getLastSpeedIncrease());
|
||||
|
||||
for (Wolf wolf : data.getWolves())
|
||||
|
@ -25,8 +25,10 @@ public class SkillSummonWolf extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Click to summon a Wolf to your pack.",
|
||||
"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 int MAX_WOLVES = 5;
|
||||
|
@ -34,7 +34,8 @@ public class SkillWolfPounce extends HeroSkill
|
||||
{
|
||||
|
||||
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 int COOLDOWN = 7000;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.biff;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
@ -18,6 +19,6 @@ public class HeroBiff extends HeroKit
|
||||
|
||||
public HeroBiff(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Biff", PERKS, MobaRole.WARRIOR);
|
||||
super(manager, "Biff", PERKS, MobaRole.WARRIOR, SkinData.BIFF);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.biff;
|
||||
|
||||
import mineplex.core.common.util.UtilAction;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilEnt;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
@ -13,7 +12,6 @@ import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroSkill;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
@ -36,7 +34,9 @@ public class SkillBiffDash extends HeroSkill
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
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.UtilAction;
|
||||
import mineplex.core.common.util.UtilEvent.ActionType;
|
||||
@ -29,8 +28,9 @@ public class SkillLeash extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Enemy heroes near to Biff are hooked with a leash to you.",
|
||||
"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);
|
||||
|
@ -34,8 +34,9 @@ public class SkillWarHorse extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Mounts you on a horse.",
|
||||
"Any nearby enemy heroes are rooted and will be",
|
||||
"unable to move."
|
||||
};
|
||||
|
||||
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.bob;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
@ -25,7 +26,7 @@ public class HeroBob extends HeroKit
|
||||
|
||||
public HeroBob(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Bob Ross", PERKS, MobaRole.MAGE);
|
||||
super(manager, "Bob Ross", PERKS, MobaRole.MAGE, SkinData.BOB_ROSS);
|
||||
|
||||
setAmmo(AMMO, 500);
|
||||
setMaxAmmo(8);
|
||||
|
@ -18,7 +18,7 @@ public class SkillBeatTheDevil extends DashSkill
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
|
@ -153,7 +153,7 @@ public class SkillHappyTrees extends HeroSkill
|
||||
continue;
|
||||
}
|
||||
|
||||
MobaUtil.heal(entity, 2);
|
||||
MobaUtil.heal(entity, owner, 2);
|
||||
MobaParticles.healing(entity, 1);
|
||||
}
|
||||
}
|
||||
|
@ -16,10 +16,6 @@ import java.util.List;
|
||||
public class SkillSword extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Please work"
|
||||
};
|
||||
|
||||
private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.WOOD_SWORD)
|
||||
.setTitle(C.cGreenB + "Sword")
|
||||
.setUnbreakable(true)
|
||||
@ -27,7 +23,7 @@ public class SkillSword extends HeroSkill
|
||||
|
||||
public SkillSword(int slot)
|
||||
{
|
||||
super("Sword", DESCRIPTION, SKILL_ITEM, slot, null);
|
||||
super("Sword", new String[0], SKILL_ITEM, slot, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.dana;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
@ -18,6 +19,6 @@ public class HeroDana extends HeroKit
|
||||
|
||||
public HeroDana(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Dana", PERKS, MobaRole.WARRIOR);
|
||||
super(manager, "Dana", PERKS, MobaRole.WARRIOR, SkinData.DANA);
|
||||
}
|
||||
}
|
||||
|
@ -23,7 +23,8 @@ public class SkillDanaDash extends DashSkill
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
|
@ -21,8 +21,7 @@ public class SkillPulseHeal extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Heals nearby allies and minions."
|
||||
};
|
||||
|
||||
private static final ItemStack SKILL_ITEM = new ItemBuilder(Material.INK_SACK, (byte) 10).build();
|
||||
@ -52,7 +51,7 @@ public class SkillPulseHeal extends HeroSkill
|
||||
continue;
|
||||
}
|
||||
|
||||
MobaUtil.heal(entity, 4);
|
||||
MobaUtil.heal(entity, player, 4);
|
||||
}
|
||||
|
||||
displayPulse(player.getLocation().add(0, 0.5, 0));
|
||||
|
@ -33,8 +33,9 @@ public class SkillRally extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"You leap up into the air, and upon landing",
|
||||
"you plant a banner that heals nearby allies",
|
||||
"and minions."
|
||||
};
|
||||
|
||||
private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.devon;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
@ -27,7 +28,7 @@ public class HeroDevon extends HeroKit
|
||||
|
||||
public HeroDevon(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Devon", PERKS, MobaRole.HUNTER);
|
||||
super(manager, "Devon", PERKS, MobaRole.HUNTER, SkinData.DEVON);
|
||||
|
||||
setAmmo(AMMO, 3000);
|
||||
setMaxAmmo(3);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.hattori;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
import nautilus.game.arcade.game.games.moba.MobaRole;
|
||||
import nautilus.game.arcade.game.games.moba.kit.HeroKit;
|
||||
@ -20,6 +21,6 @@ public class HeroHattori extends HeroKit
|
||||
|
||||
public HeroHattori(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Hattori", PERKS, MobaRole.ASSASSIN);
|
||||
super(manager, "Hattori", PERKS, MobaRole.ASSASSIN, SkinData.HATTORI);
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ public class SkillSnowball extends HeroSkill implements IThrown
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"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 ItemStack SKILL_ITEM = new ItemStack(Material.SNOW_BALL);
|
||||
|
@ -42,7 +42,7 @@ public class HPManager implements Listener
|
||||
continue;
|
||||
}
|
||||
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, HP5, true);
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent(player, null, HP5, true);
|
||||
UtilServer.CallEvent(regenEvent);
|
||||
|
||||
if (regenEvent.isCancelled())
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.larissa;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
@ -26,7 +27,7 @@ public class HeroLarissa extends HeroKit
|
||||
|
||||
public HeroLarissa(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Larissa", PERKS, MobaRole.MAGE);
|
||||
super(manager, "Larissa", PERKS, MobaRole.MAGE, SkinData.LARISSA);
|
||||
|
||||
setAmmo(AMMO, 3000);
|
||||
setMaxAmmo(5);
|
||||
|
@ -44,8 +44,9 @@ public class SkillAOEHeal extends HeroSkill implements IThrown
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Throws a water bucket which upon coming into",
|
||||
"contact with the ground will heal nearby",
|
||||
"players and minions."
|
||||
};
|
||||
private static final long DURATION = TimeUnit.SECONDS.toMillis(6);
|
||||
private static final int RADIUS = 3;
|
||||
@ -127,7 +128,7 @@ public class SkillAOEHeal extends HeroSkill implements IThrown
|
||||
if (isTeamDamage(entity, owner))
|
||||
{
|
||||
MobaParticles.healing(entity, HEALTH_PER_SECOND);
|
||||
MobaUtil.heal(entity, HEALTH_PER_SECOND);
|
||||
MobaUtil.heal(entity, owner, HEALTH_PER_SECOND);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -26,8 +26,8 @@ public class SkillAquaCannon extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"Fires a beam of water that deals damage",
|
||||
"to the first enemy it comes in contact with."
|
||||
};
|
||||
private static final int DAMAGE = 6;
|
||||
private static final ItemStack SKILL_ITEM = new ItemStack(Material.DIAMOND_HOE);
|
||||
|
@ -1,6 +1,5 @@
|
||||
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.UtilParticle;
|
||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
@ -30,8 +29,8 @@ public class SkillStormHeal extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Fires an Ember at high speed in front of you.",
|
||||
"Any enemies it collides with take damage and are set on fire."
|
||||
"All team members are consistently healed",
|
||||
"over the next 7 seconds."
|
||||
};
|
||||
private static final long DURATION = TimeUnit.SECONDS.toMillis(7);
|
||||
private static final int HEALTH_PER_SECOND = 2;
|
||||
@ -86,7 +85,7 @@ public class SkillStormHeal extends HeroSkill
|
||||
|
||||
for (Player teamMember : team.GetPlayers(true))
|
||||
{
|
||||
MobaUtil.heal(teamMember, HEALTH_PER_SECOND);
|
||||
MobaUtil.heal(teamMember, player, HEALTH_PER_SECOND);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -18,7 +18,8 @@ public class SkillWaterDash extends DashSkill
|
||||
{
|
||||
|
||||
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 long CRIPPLE_DURATION = TimeUnit.SECONDS.toMillis(3);
|
||||
|
@ -1,5 +1,6 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.rowena;
|
||||
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import nautilus.game.arcade.ArcadeManager;
|
||||
@ -27,7 +28,7 @@ public class HeroRowena extends HeroKit
|
||||
|
||||
public HeroRowena(ArcadeManager manager)
|
||||
{
|
||||
super(manager, "Rowena", PERKS, MobaRole.HUNTER);
|
||||
super(manager, "Rowena", PERKS, MobaRole.HUNTER, SkinData.ROWENA);
|
||||
|
||||
setAmmo(AMMO, 2000);
|
||||
setMaxAmmo(2);
|
||||
|
@ -1,30 +1,32 @@
|
||||
package nautilus.game.arcade.game.games.moba.kit.rowena;
|
||||
|
||||
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.UtilParticle;
|
||||
import mineplex.core.common.util.UtilParticle.ParticleType;
|
||||
import mineplex.core.common.util.UtilParticle.ViewDist;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
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.event.UpdateEvent;
|
||||
import mineplex.minecraft.game.core.damage.CustomDamageEvent;
|
||||
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.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
@ -34,13 +36,16 @@ public class SkillBombardment extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Turns into a Diamond Sword that deals extreme",
|
||||
"damage to any player hit by it."
|
||||
"Take to the sky!",
|
||||
"Your shots become fast high power explosive shots."
|
||||
};
|
||||
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 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<>();
|
||||
|
||||
@ -71,20 +76,54 @@ public class SkillBombardment extends HeroSkill
|
||||
}
|
||||
}
|
||||
|
||||
for (Perk perk : Kit.GetPerks())
|
||||
{
|
||||
if (perk instanceof SkillLightArrows)
|
||||
{
|
||||
SkillLightArrows skill = (SkillLightArrows) perk;
|
||||
Location toTeleport = player.getLocation().add(0, 15, 0);
|
||||
|
||||
skill.resetCooldown(player);
|
||||
skill.setPlayerArrows(player, SHOTS);
|
||||
}
|
||||
player.teleport(toTeleport);
|
||||
player.getInventory().setItem(0, ACTIVE_ITEM);
|
||||
player.getInventory().setHeldItemSlot(0);
|
||||
broadcast(player);
|
||||
_data.add(new BombardmentData(player));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void interactActive(PlayerInteractEvent event)
|
||||
{
|
||||
if (event.getItem() == null || !event.getItem().isSimilar(ACTIVE_ITEM))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
broadcast(player);
|
||||
UtilAction.velocity(player, new Vector(0, 2, 0));
|
||||
_data.add(new BombardmentData(player));
|
||||
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
|
||||
@ -102,21 +141,10 @@ public class SkillBombardment extends HeroSkill
|
||||
BombardmentData data = iterator.next();
|
||||
Player player = data.Shooter;
|
||||
|
||||
if (data.Block == null && player.getVelocity().getY() <= 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)
|
||||
if (UtilTime.elapsed(data.Start, MAX_TIME) || data.Shots == 0)
|
||||
{
|
||||
useSkill(player);
|
||||
Kit.GiveItems(player);
|
||||
data.Block.setType(Material.AIR);
|
||||
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
|
||||
public void playerMove(PlayerMoveEvent event)
|
||||
{
|
||||
@ -212,6 +200,8 @@ public class SkillBombardment extends HeroSkill
|
||||
{
|
||||
Shooter = shooter;
|
||||
Shots = SHOTS;
|
||||
Block = shooter.getLocation().getBlock().getRelative(BlockFace.DOWN);
|
||||
Block.setType(Material.BARRIER);
|
||||
Start = System.currentTimeMillis();
|
||||
}
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ public class SkillCombatDash extends DashSkill
|
||||
{
|
||||
|
||||
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);
|
||||
|
||||
@ -25,7 +25,6 @@ public class SkillCombatDash extends DashSkill
|
||||
|
||||
_collide = false;
|
||||
_velocityTime = 250;
|
||||
_velocityStopOnEnd = true;
|
||||
_velocityMagnitude = 1.5;
|
||||
_horizontial = true;
|
||||
}
|
||||
|
@ -38,8 +38,8 @@ public class SkillLightArrows extends HeroSkill
|
||||
{
|
||||
|
||||
private static final String[] DESCRIPTION = {
|
||||
"Your next 3 arrows are infused with TNT.",
|
||||
"They explode on contact dealing damage and knockback."
|
||||
"Your next 5 arrows become light infused.",
|
||||
"They pass through blocks and deal high damage."
|
||||
};
|
||||
private static final ItemStack SKILL_ITEM = new ItemStack(Material.GOLD_NUGGET);
|
||||
|
||||
@ -170,10 +170,5 @@ public class SkillLightArrows extends HeroSkill
|
||||
_playerArrows.remove(event.getPlayer());
|
||||
_arrows.remove(event.getPlayer());
|
||||
}
|
||||
|
||||
void setPlayerArrows(Player player, int amount)
|
||||
{
|
||||
_playerArrows.put(player, amount);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -143,6 +143,11 @@ public class MinionManager implements Listener
|
||||
|
||||
public void unregisterWave(MinionWave wave)
|
||||
{
|
||||
for (Minion minion : wave.getMinions())
|
||||
{
|
||||
minion.getEntity().remove();
|
||||
}
|
||||
|
||||
_waves.remove(wave);
|
||||
}
|
||||
|
||||
|
@ -33,6 +33,7 @@ import org.jooq.util.derby.sys.Sys;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -163,7 +164,23 @@ public class MinionWave implements Listener
|
||||
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
|
||||
if (_minions.isEmpty() && UtilTime.elapsed(_startTime, 10000))
|
||||
|
@ -19,12 +19,12 @@ public class MobaKillHealEffect extends MobaItemEffect
|
||||
@Override
|
||||
public void onDeath(Player killed, Player killer)
|
||||
{
|
||||
MobaUtil.heal(killer, _health);
|
||||
MobaUtil.heal(killer, killer, _health);
|
||||
}
|
||||
|
||||
@Override
|
||||
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 + ".";
|
||||
}
|
||||
}
|
||||
|
@ -125,6 +125,11 @@ public class TowerManager implements Listener
|
||||
@EventHandler
|
||||
public void updateTower(UpdateEvent event)
|
||||
{
|
||||
if (!_host.IsLive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.getType() == UpdateType.FASTEST)
|
||||
{
|
||||
for (Tower tower : _towers)
|
||||
@ -166,7 +171,7 @@ public class TowerManager implements Listener
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void crystalDamage(EntityDamageByEntityEvent event)
|
||||
{
|
||||
if (!(event.getEntity() instanceof EnderCrystal))
|
||||
if (!(event.getEntity() instanceof EnderCrystal) || !_host.IsLive())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -198,11 +198,11 @@ public class MobaUtil
|
||||
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)
|
||||
{
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent((Player) entity, health, false);
|
||||
MobaHPRegenEvent regenEvent = new MobaHPRegenEvent((Player) entity, source, health, false);
|
||||
UtilServer.CallEvent(regenEvent);
|
||||
|
||||
if (regenEvent.isCancelled())
|
||||
|
Loading…
Reference in New Issue
Block a user