· 6 years ago · Sep 24, 2019, 01:00 AM
1$ git diff head
2diff --git a/scripts/npc/betarewards.js b/scripts/npc/betarewards.js
3index cd3dc8ac2..e12de9de2 100644
4--- a/scripts/npc/betarewards.js
5+++ b/scripts/npc/betarewards.js
6@@ -49,6 +49,7 @@ function action(mode, type, selection) {
7 state = selection;
8 if(selection == 1) {
9 var text = "Beta rewards are tracked/distributed on a #rper-HWID#k basis.\r\n";
10+ text += "All tiers include the previous tiers.\r\n"
11 text += "Tier 1 (Level 70) :\r\n#bName reservation#k\r\n#i1003999#\r\n";
12 text += "Tier 2 (Level 120) :\r\n#i5000256#\r\n";
13 text += "Tier 3 (Level 140) :\r\n#i3015227#\r\n";
14diff --git a/sql/db_database.sql b/sql/db_database.sql
15index 7f49b6bb9..c258e9f95 100644
16--- a/sql/db_database.sql
17+++ b/sql/db_database.sql
18@@ -12835,6 +12835,15 @@ CREATE TABLE IF NOT EXISTS `dailyaccountpurchase` (
19 INDEX (accid)
20:...skipping...
21diff --git a/scripts/npc/betarewards.js b/scripts/npc/betarewards.js
22index cd3dc8ac2..e12de9de2 100644
23--- a/scripts/npc/betarewards.js
24+++ b/scripts/npc/betarewards.js
25@@ -49,6 +49,7 @@ function action(mode, type, selection) {
26 state = selection;
27 if(selection == 1) {
28 var text = "Beta rewards are tracked/distributed on a #rper-HWID#k basis.\r\n";
29+ text += "All tiers include the previous tiers.\r\n"
30 text += "Tier 1 (Level 70) :\r\n#bName reservation#k\r\n#i1003999#\r\n";
31 text += "Tier 2 (Level 120) :\r\n#i5000256#\r\n";
32 text += "Tier 3 (Level 140) :\r\n#i3015227#\r\n";
33diff --git a/sql/db_database.sql b/sql/db_database.sql
34index 7f49b6bb9..c258e9f95 100644
35--- a/sql/db_database.sql
36+++ b/sql/db_database.sql
37@@ -12835,6 +12835,15 @@ CREATE TABLE IF NOT EXISTS `dailyaccountpurchase` (
38 INDEX (accid)
39 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20047 ;
40
41+CREATE TABLE IF NOT EXISTS `dailyhwidreward` (
42+ `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
43+ `hwid` varchar(9) NOT NULL,
44+ `type` int(11) NOT NULL,
45+ `timestamp` bigint(20) NOT NULL,
46+ PRIMARY KEY (`id`),
47+ INDEX (`hwid`, `type`)
48+) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=20047 ;
49+
50 CREATE TABLE IF NOT EXISTS `dailyshoppurchase` (
51 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
52 `charid` int(11) NOT NULL,
53diff --git a/src/client/AbstractMapleCharacterObject.java b/src/client/AbstractMapleCharacterObject.java
54index 960547747..aa57b70a5 100644
55--- a/src/client/AbstractMapleCharacterObject.java
56+++ b/src/client/AbstractMapleCharacterObject.java
57@@ -510,7 +510,9 @@ public abstract class AbstractMapleCharacterObject extends AbstractAnimatedMaple
58 effLock.lock();
59 statWlock.lock();
60 try {
61- updateHpMp(hp + hpDelta, mp + mpDelta);
62+ int newHp = hp + hpDelta;
63+ if(newHp < 0) newHp = 0;
64+ updateHpMp(newHp, mp + mpDelta);
65 } finally {
66 statWlock.unlock();
67 effLock.unlock();
68diff --git a/src/client/MapleCharacter.java b/src/client/MapleCharacter.java
69index 2268e0411..84dc54fe0 100644
70--- a/src/client/MapleCharacter.java
71+++ b/src/client/MapleCharacter.java
72@@ -138,6 +138,8 @@ import client.inventory.manipulator.MapleCashidGenerator;
73 import client.inventory.manipulator.MapleInventoryManipulator;
74 import client.newyear.NewYearCardRecord;
75 import constants.Achievement;
76+import constants.HWIDReward;
77+import constants.Jewels;
78 import constants.LoginStreakRewards;
79 import client.processor.npc.FredrickProcessor;
80 import constants.game.ExpTable;
81@@ -353,6 +355,7 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
82 private volatile Runnable damageTracker;
83 private Map<Integer, Map<Integer, Integer>> dailyShopPurchased = new HashMap<Integer, Map<Integer, Integer>>();
84 private Map<Integer, Integer> dailyAccountPurchased = new HashMap<>();
85+ private Set<HWIDReward> dailyHWIDRewards = EnumSet.noneOf(HWIDReward.class);
86 private Set<Achievement> achievements = EnumSet.noneOf(Achievement.class);
87 private volatile int dailyAchievementPoints, weeklyAchievementPoints;
88 private final AtomicInteger completedQuestCounter = new AtomicInteger();
89@@ -3093,9 +3096,15 @@ public class MapleCharacter extends AbstractMapleCharacterObject {
90 } else {
91 if (ItemConstants.isExpirablePet(item.getItemId())) {
92: