summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/map/clif.c6
-rw-r--r--src/map/clif.h1
-rw-r--r--src/map/skill.c5
3 files changed, 12 insertions, 0 deletions
diff --git a/src/map/clif.c b/src/map/clif.c
index 50d6e00a7..cfbc3d252 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -21467,6 +21467,9 @@ static bool clif_stylist_read_db_libconfig_sub(struct config_setting_t *it, int
if (itemdb->lookup_const(it, "BoxItemID", &i32))
entry.boxid = i32;
+ if (libconfig->setting_lookup_bool(it, "AllowDoram", &i32))
+ entry.allow_doram = (i32 == 0) ? false : true;
+
VECTOR_ENSURE(stylist_data[type], 1, 1);
VECTOR_PUSH(stylist_data[type], entry);
return true;
@@ -21483,6 +21486,9 @@ static bool clif_style_change_validate_requirements(struct map_session_data *sd,
entry = &VECTOR_INDEX(stylist_data[type], idx);
+ if (sd->status.class == JOB_SUMMONER && (entry->allow_doram == false))
+ return false;
+
if (entry->id >= 0) {
if (entry->zeny != 0) {
if (sd->status.zeny < entry->zeny)
diff --git a/src/map/clif.h b/src/map/clif.h
index 4467eb690..3ed9b96ae 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -646,6 +646,7 @@ struct stylist_data_entry {
int32 zeny;
int itemid;
int boxid;
+ bool allow_doram;
};
VECTOR_DECL(struct stylist_data_entry) stylist_data[MAX_STYLIST_TYPE];
diff --git a/src/map/skill.c b/src/map/skill.c
index 745cdb7bc..a4ebff9f1 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -4649,6 +4649,11 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
// recursive invocation of skill->castend_damage_id() with flag|1
map->foreachinrange(skill->area_sub, bl, skill->get_splash(skill_id, skill_lv), skill->splash_target(src), src, skill_id, skill_lv, tick, flag|BCT_ENEMY|SD_SPLASH|1, skill->castend_damage_id);
+ if (skill_id == AS_SPLASHER) {
+ // Prevent double item consumption when the target explodes (item requirements have already been processed in skill_castend_nodamage_id)
+ flag |= 1;
+ }
+
if (sd && skill_id == SU_LUNATICCARROTBEAT) {
short item_idx = pc->search_inventory(sd, ITEMID_CARROT);