diff --git a/design/conditions.py b/design/conditions.py index c7a509d..079e0f8 100644 --- a/design/conditions.py +++ b/design/conditions.py @@ -197,6 +197,22 @@ conditions={ "buff":True, "ui":True, }, + "massexchange":{ + "skin":"skill_massexchange", + "name":"Mass exchange", + "explanation": "Reduces the time of your next exchange or compound by 50%.", + "duration":10*1000, + "buff":True, + "ui":True, + }, + "massexchangepp":{ + "skin":"skill_massexchangepp", + "name":"Mass exchange++", + "explanation": "Reduces the time of your next exchange or compound by 90%.", + "duration":10*1000, + "buff":True, + "ui":True, + }, "darkblessing":{ "skin":"skill_dbuff", "name":"Dark Blessing", diff --git a/design/dimensions.py b/design/dimensions.py index 7be5546..4136a22 100644 --- a/design/dimensions.py +++ b/design/dimensions.py @@ -472,6 +472,8 @@ positions={ "skill_throw":["skills",1,5], "skill_massproduction":["skills",2,5], "skill_massproductionpp":["skills",3,5], + "skill_massexchange":["skills",4,5], + "skill_massexchangepp":["skills",5,5], #paladin "skill_mshield":["skills",0,11], diff --git a/design/skills.py b/design/skills.py index 72d26a4..dbe999d 100644 --- a/design/skills.py +++ b/design/skills.py @@ -373,6 +373,28 @@ skills={ "mp":200, "cooldown":50, }, + "massexchange":{ + "type":"skill", + "skin":"skill_massexchange", + "condition":"massexchange", + "class":["merchant"], + "name":"Mass Exchange", + "explanation":"Adds a 1-time use buff that speeds up the next exchange by 50%. The buff expires in 10 seconds if not used.", + "level":40, + "mp":30, + "cooldown":50, + }, + "massexchangepp":{ + "type":"skill", + "skin":"skill_massexchangepp", + "condition":"massexchangepp", + "class":["merchant"], + "name":"Mass Exchange++", + "explanation":"Adds a 1-time use buff that speeds up the next exchange by 90%. The buff expires in 10 seconds if not used.", + "level":70, + "mp":200, + "cooldown":50, + }, "throw":{ "type":"skill", "skin":"skill_throw", @@ -1192,4 +1214,4 @@ for name in skills: skills[name]["duration"]=conditions[skills[name]["condition"]]["duration"] except: import logging - logging.error("%s has no duration"%conditions[skills[name]["condition"]]) \ No newline at end of file + logging.error("%s has no duration"%conditions[skills[name]["condition"]]) diff --git a/images/tiles/items/skills_20v6.png b/images/tiles/items/skills_20v6.png index caef730..fc7441c 100644 Binary files a/images/tiles/items/skills_20v6.png and b/images/tiles/items/skills_20v6.png differ diff --git a/node/server.js b/node/server.js index 1119147..583bfce 100644 --- a/node/server.js +++ b/node/server.js @@ -5602,7 +5602,17 @@ function init_io() { player.p.stats.exchanges[dropId] = (player.p.stats.exchanges[dropId] || 0) + 1; consume(player, data.item_num, def.e); const num = add_item(player, "placeholder"); - const ms = gameplay === "hardcore" ? 400 : 3000 + Math.floor(Math.random() * 3000); + let ms = gameplay === "hardcore" ? 400 : 3000 + Math.floor(Math.random() * 3000); + if (player.s.massexchange) { + ms /= 2; + delete player.s.massexchange; + ex = "+u+cid"; + } + if (player.s.massexchangepp) { + ms /= 10; + delete player.s.massexchangepp; + ex = "+u+cid"; + } player.q.exchange = { ms: ms, len: ms, name: item.name, id: dropId, q: def.e, num: num }; if (suffix) { player.q.exchange.s = suffix; @@ -8647,7 +8657,9 @@ function init_io() { data.name == "mcourage" || data.name == "mfrenzy" || data.name == "massproduction" || - data.name == "massproductionpp" + data.name == "massproductionpp" || + data.name == "massexchange" || + data.name == "massexchangepp" ) { consume_mp(player, gSkill.mp); player.s[gSkill.condition] = { ms: G.conditions[gSkill.condition].duration };