summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/achievement.c4
-rw-r--r--src/map/atcommand.c2
-rw-r--r--src/map/battle.c10
-rw-r--r--src/map/clif.c128
-rw-r--r--src/map/clif.h18
-rw-r--r--src/map/constants.inc1029
-rw-r--r--src/map/guild.c2
-rw-r--r--src/map/guild.h2
-rw-r--r--src/map/log.c3
-rw-r--r--src/map/log.h4
-rw-r--r--src/map/map.c2
-rw-r--r--src/map/messages_main.h497
-rw-r--r--src/map/messages_re.h501
-rw-r--r--src/map/messages_zero.h497
-rw-r--r--src/map/mob.c21
-rw-r--r--src/map/mob.h1
-rw-r--r--src/map/packets.h26
-rw-r--r--src/map/packets_keys_main.h14
-rw-r--r--src/map/packets_keys_zero.h10
-rw-r--r--src/map/packets_shuffle_main.h14
-rw-r--r--src/map/packets_shuffle_re.h13
-rw-r--r--src/map/packets_shuffle_zero.h10
-rw-r--r--src/map/packets_struct.h47
-rw-r--r--src/map/pc.c32
-rw-r--r--src/map/script.c181
-rw-r--r--src/map/skill.c66
-rw-r--r--src/map/skill.h1
-rw-r--r--src/map/status.c1099
-rw-r--r--src/map/status.h1058
-rw-r--r--src/map/unit.c8
30 files changed, 2321 insertions, 2979 deletions
diff --git a/src/map/achievement.c b/src/map/achievement.c
index c2ebb5fdd..5215526a9 100644
--- a/src/map/achievement.c
+++ b/src/map/achievement.c
@@ -1051,10 +1051,10 @@ static void achievement_get_rewards_items(struct map_session_data *sd, const str
if (!itemdb->isstackable(it.nameid)) {
it.amount = 1;
for (int j = 0; j < total; ++j)
- pc->additem(sd, &it, 1, LOG_TYPE_SCRIPT);
+ pc->additem(sd, &it, 1, LOG_TYPE_ACHIEVEMENT);
} else {
it.amount = total;
- pc->additem(sd, &it, total, LOG_TYPE_SCRIPT);
+ pc->additem(sd, &it, total, LOG_TYPE_ACHIEVEMENT);
}
}
}
diff --git a/src/map/atcommand.c b/src/map/atcommand.c
index f57583cfc..3684c1d9f 100644
--- a/src/map/atcommand.c
+++ b/src/map/atcommand.c
@@ -2477,7 +2477,7 @@ ACMD(displaystatus)
if( flag == 0 )
clif->sc_end(&sd->bl,sd->bl.id,AREA,type);
else
- clif->status_change(&sd->bl, type, flag, tick, val1, val2, val3);
+ clif->status_change(&sd->bl, type, BL_PC, flag, tick, val1, val2, val3);
return true;
}
diff --git a/src/map/battle.c b/src/map/battle.c
index 7fb5355e6..9413076fb 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -4661,13 +4661,17 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src, struct bl
{
short cri = sstatus->cri;
if (sd != NULL) {
+ // Racial crit bonuses are affected by katar's crit bonus.
+ if (battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR)
+ cri += sd->critaddrace[tstatus->race] * 2;
+ else
+ cri += sd->critaddrace[tstatus->race];
+
// if show_katar_crit_bonus is enabled, it already done the calculation in status.c
if (!battle_config.show_katar_crit_bonus && sd->weapontype == W_KATAR) {
cri <<= 1;
}
- cri+= sd->critaddrace[tstatus->race];
-
if (flag.arrow) {
cri += sd->bonus.arrow_cri;
}
@@ -6457,7 +6461,7 @@ static enum damage_lv battle_weapon_attack(struct block_list *src, struct block_
skill->castend_type(type, src, target, r_skill, r_lv, tick, flag);
sd->state.autocast = 0;
sd->ud.canact_tick = tick + skill->delay_fix(src, r_skill, r_lv);
- clif->status_change(src, SI_POSTDELAY, 1, skill->delay_fix(src, r_skill, r_lv), 0, 0, 1);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, r_skill, r_lv), 0, 0, 1);
}
}
diff --git a/src/map/clif.c b/src/map/clif.c
index 9f30408e4..31fb00c37 100644
--- a/src/map/clif.c
+++ b/src/map/clif.c
@@ -1586,7 +1586,8 @@ static bool clif_spawn(struct block_list *bl)
if (sd->bg_id != 0 && map->list[sd->bl.m].flag.battleground)
clif->sendbgemblem_area(sd);
for (i = 0; i < sd->sc_display_count; i++) {
- clif->sc_continue(&sd->bl, sd->bl.id,AREA,status->dbs->IconChangeTable[sd->sc_display[i]->type],sd->sc_display[i]->val1,sd->sc_display[i]->val2,sd->sc_display[i]->val3);
+ clif->sc_continue(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(sd->sc_display[i]->type), sd->sc_display[i]->val1, sd->sc_display[i]->val2, sd->sc_display[i]->val3);
+
}
if (sd->charm_type != CHARM_TYPE_NONE && sd->charm_count > 0)
clif->spiritcharm(sd);
@@ -1612,7 +1613,7 @@ static bool clif_spawn(struct block_list *bl)
else if (nd->size == SZ_MEDIUM)
clif->specialeffect(&nd->bl,421,AREA);
if (nd->clan_id > 0)
- clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0);
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->get_sc_icon(SC_CLAN_INFO), 0, nd->clan_id, 0);
}
break;
case BL_PET:
@@ -3873,7 +3874,7 @@ static void clif_arrowequip(struct map_session_data *sd, int val)
nullpo_retv(sd);
#if PACKETVER >= 20121128
- clif->status_change(&sd->bl, SI_CLIENT_ONLY_EQUIP_ARROW, 1, INVALID_TIMER, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_CLIENT_ONLY_EQUIP_ARROW), status->get_sc_relevant_bl_types(SC_CLIENT_ONLY_EQUIP_ARROW), 1, INVALID_TIMER, 0, 0, 0);
#endif
fd=sd->fd;
WFIFOHEAD(fd, packet_len(0x013c));
@@ -4676,7 +4677,7 @@ static void clif_getareachar_pc(struct map_session_data *sd, struct map_session_
clif->charm_single(sd->fd, dstsd);
for( i = 0; i < dstsd->sc_display_count; i++ ) {
- clif->sc_continue(&sd->bl,dstsd->bl.id,SELF,status->dbs->IconChangeTable[dstsd->sc_display[i]->type],dstsd->sc_display[i]->val1,dstsd->sc_display[i]->val2,dstsd->sc_display[i]->val3);
+ clif->sc_continue(&sd->bl, dstsd->bl.id, SELF, status->get_sc_icon(dstsd->sc_display[i]->type), dstsd->sc_display[i]->val1, dstsd->sc_display[i]->val2, dstsd->sc_display[i]->val3);
}
if( (sd->status.party_id && dstsd->status.party_id == sd->status.party_id) || //Party-mate, or hpdisp setting.
(sd->bg_id && sd->bg_id == dstsd->bg_id) || //BattleGround
@@ -4757,7 +4758,7 @@ static void clif_getareachar_unit(struct map_session_data *sd, struct block_list
else if (nd->size == SZ_MEDIUM)
clif->specialeffect_single(bl,421,sd->fd);
if (nd->clan_id > 0)
- clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, nd->clan_id, 0);
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->get_sc_icon(SC_CLAN_INFO), 0, nd->clan_id, 0);
}
break;
case BL_MOB:
@@ -6041,7 +6042,7 @@ static void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 s
}
}
-static void clif_status_change_notick(struct block_list *bl, int type, int flag, int tick, int total_tick, int val1, int val2, int val3)
+static void clif_status_change_notick(struct block_list *bl, int type, int relevant_bl, int flag, int tick, int total_tick, int val1, int val2, int val3)
{
struct packet_sc_notick p;
struct map_session_data *sd;
@@ -6051,7 +6052,7 @@ static void clif_status_change_notick(struct block_list *bl, int type, int flag,
if (type == SI_BLANK) //It shows nothing on the client...
return;
- if (!(status->type2relevant_bl_types(type)&bl->type)) // only send status changes that actually matter to the client
+ if (!(relevant_bl & bl->type)) // only send status changes that actually matter to the client
return;
sd = BL_CAST(BL_PC, bl);
@@ -6070,7 +6071,7 @@ static void clif_status_change_notick(struct block_list *bl, int type, int flag,
/// 08ff <id>.L <index>.W <remain msec>.L { <val>.L }*3 (PACKETVER >= 20111108)
/// 0983 <index>.W <id>.L <state>.B <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
/// 0984 <id>.L <index>.W <total msec>.L <remain msec>.L { <val>.L }*3 (PACKETVER >= 20120618)
-static void clif_status_change_sub(struct block_list *bl, int type, int flag, int tick, int total_tick, int val1, int val2, int val3)
+static void clif_status_change_sub(struct block_list *bl, int type, int relevant_bl, int flag, int tick, int total_tick, int val1, int val2, int val3)
{
struct packet_status_change p;
struct map_session_data *sd;
@@ -6080,7 +6081,7 @@ static void clif_status_change_sub(struct block_list *bl, int type, int flag, in
nullpo_retv(bl);
- if (!(status->type2relevant_bl_types(type)&bl->type)) // only send status changes that actually matter to the client
+ if (!(relevant_bl & bl->type)) // only send status changes that actually matter to the client
return;
if ( tick < 0 )
@@ -6107,9 +6108,9 @@ static void clif_status_change_sub(struct block_list *bl, int type, int flag, in
/// Notifies clients of a status change.
/// @see clif_status_change_sub
-static void clif_status_change(struct block_list *bl, int type, int flag, int total_tick, int val1, int val2, int val3)
+static void clif_status_change(struct block_list *bl, int type, int relevant_bl, int flag, int total_tick, int val1, int val2, int val3)
{
- clif->status_change_sub(bl, type, flag, total_tick, total_tick, val1, val2, val3);
+ clif->status_change_sub(bl, type, relevant_bl, flag, total_tick, total_tick, val1, val2, val3);
}
/// Send message (modified by [Yor]) (ZC_NOTIFY_PLAYERCHAT).
@@ -9086,21 +9087,44 @@ static void clif_specialeffect_single(struct block_list *bl, int type, int fd)
/// @see doc/effect_list.txt
/// num data:
/// effect-dependent value
-static void clif_specialeffect_value(struct block_list *bl, int effect_id, int num, send_target target)
-{
- uint8 buf[14];
-
- WBUFW(buf,0) = 0x284;
- WBUFL(buf,2) = bl->id;
- WBUFL(buf,6) = effect_id;
- WBUFL(buf,10) = num;
+static void clif_specialeffect_value(struct block_list *bl, int effect_id, uint64 num, send_target target)
+{
+#if PACKETVER_MAIN_NUM >= 20060911 || PACKETVER_AD_NUM >= 20060911 || PACKETVER_SAK_NUM >= 20060911 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO)
+ struct PACKET_ZC_NOTIFY_EFFECT3 packet;
+ packet.packetType = HEADER_ZC_NOTIFY_EFFECT3;
+ packet.aid = bl->id;
+ packet.effectId = effect_id;
+#if PACKETVER >= 20191127
+ packet.num = num;
+#else
+ packet.num = (uint32)num;
+#endif
- clif->send(buf, packet_len(0x284), bl, target);
+ clif->send(&packet, sizeof(struct PACKET_ZC_NOTIFY_EFFECT3), bl, target);
if (clif->isdisguised(bl)) {
- WBUFL(buf,2) = -bl->id;
- clif->send(buf, packet_len(0x284), bl, SELF);
+ packet.aid = -bl->id;
+ clif->send(&packet, sizeof(struct PACKET_ZC_NOTIFY_EFFECT3), bl, SELF);
}
+#endif
+}
+
+static void clif_specialeffect_value_single(struct block_list *bl, int effect_id, uint64 num, int fd)
+{
+#if PACKETVER_MAIN_NUM >= 20060911 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO)
+ WFIFOHEAD(fd, sizeof(struct PACKET_ZC_NOTIFY_EFFECT3));
+
+ struct PACKET_ZC_NOTIFY_EFFECT3 *packet = WFIFOP(fd, 0);
+ packet->packetType = HEADER_ZC_NOTIFY_EFFECT3;
+ packet->aid = bl->id;
+ packet->effectId = effect_id;
+#if PACKETVER >= 20191127
+ packet->num = num;
+#else
+ packet->num = (uint32)num;
+#endif
+ WFIFOSET(fd, sizeof(struct PACKET_ZC_NOTIFY_EFFECT3));
+#endif
}
/// Remove special effects (ZC_REMOVE_EFFECT).
@@ -9314,6 +9338,8 @@ static void clif_refresh(struct map_session_data *sd)
mail->clear(sd);
+ clif->loadConfirm(sd);
+
if (clif->isdisguised(&sd->bl)) {/* refresh-da */
short disguise = sd->disguise;
pc->disguise(sd, -1);
@@ -9354,7 +9380,7 @@ static void clif_pcname_ack(int fd, struct block_list *bl)
const struct map_session_data *ssd = BL_UCCAST(BL_PC, bl);
- if (ssd->fakename[0] != '\0' && ssd->disguise != -1) {
+ if (ssd->fakename[0] != '\0') {
packet.packet_id = reqName;
len = sizeof(struct packet_reqname_ack);
} else {
@@ -9367,7 +9393,7 @@ static void clif_pcname_ack(int fd, struct block_list *bl)
packet.gid = -bl->id;
}
- if (ssd->fakename[0] != '\0' && ssd->disguise != -1) {
+ if (ssd->fakename[0] != '\0') {
memcpy(packet.name, ssd->fakename, NAME_LENGTH);
} else {
#if PACKETVER_MAIN_NUM >= 20150225 || PACKETVER_RE_NUM >= 20141126 || defined(PACKETVER_ZERO)
@@ -10681,11 +10707,11 @@ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
clif->initialstatus(sd);
if (pc_isfalcon(sd))
- clif->status_change(&sd->bl, SI_FALCON, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_FALCON), status->get_sc_relevant_bl_types(SC_FALCON), 1, 0, 0, 0, 0);
if (pc_isridingpeco(sd) || pc_isridingdragon(sd))
- clif->status_change(&sd->bl, SI_RIDING, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_RIDING), status->get_sc_relevant_bl_types(SC_RIDING), 1, 0, 0, 0, 0);
else if (pc_isridingwug(sd))
- clif->status_change(&sd->bl, SI_WUGRIDER, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_WUGRIDER), status->get_sc_relevant_bl_types(SC_WUGRIDER), 1, 0, 0, 0, 0);
if(sd->status.manner < 0)
sc_start(NULL,&sd->bl,SC_NOCHAT,100,0,0);
@@ -10709,7 +10735,7 @@ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
if (map->night_flag && map->list[sd->bl.m].flag.nightenabled) {
sd->state.night = 1;
- clif->status_change(&sd->bl, SI_SKE, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0);
}
// Notify everyone that this char logged in [Skotlex].
@@ -10761,11 +10787,11 @@ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
//Display night.
if( !sd->state.night ) {
sd->state.night = 1;
- clif->status_change(&sd->bl, SI_SKE, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), 1, 0, 0, 0, 0);
}
} else if( sd->state.night ) { //Clear night display.
sd->state.night = 0;
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_SKE);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SKE));
}
if( map->list[sd->bl.m].flag.battleground ) {
@@ -10813,7 +10839,7 @@ static void clif_parse_LoadEndAck(int fd, struct map_session_data *sd)
npc->script_event(sd, NPCE_LOADMAP);
if (pc->checkskill(sd, SG_DEVIL) && !pc->nextjobexp(sd)) //blindness [Komurka]
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_DEVIL1);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_DEVIL1));
if (sd->sc.opt2) //Client loses these on warp.
clif->changeoption(&sd->bl);
@@ -12377,6 +12403,42 @@ static void clif_parse_RemoveOption(int fd, struct map_session_data *sd)
}
}
+static void clif_parse_reqGearOff(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
+static void clif_parse_reqGearOff(int fd, struct map_session_data *sd)
+{
+#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709
+ const struct PACKET_CZ_REQ_MOUNTOFF *p = RFIFOP(fd, 0);
+ switch (p->action) {
+ case REMOVE_MOUNT_DRAGON:
+ if (pc_isridingdragon(sd))
+ pc->setoption(sd, sd->sc.option &~ OPTION_DRAGON);
+ break;
+ case REMOVE_MOUNT_MADO:
+ if (pc_ismadogear(sd))
+ pc->setoption(sd, sd->sc.option &~ OPTION_MADOGEAR);
+ break;
+ case REMOVE_MOUNT_PECO:
+ if (pc_isridingpeco(sd))
+ pc->setoption(sd, sd->sc.option &~ OPTION_RIDING);
+ break;
+ case REMOVE_MOUNT_FALCON:
+ if (pc_isfalcon(sd))
+ pc->setoption(sd, sd->sc.option &~ OPTION_FALCON);
+ break;
+ case REMOVE_MOUNT_CART:
+ // this packet exists in clients with only new carts [4144]
+ if (sd->sc.data[SC_PUSH_CART])
+ pc->setcart(sd, 0);
+ break;
+ case REMOVE_MOUNT_0:
+ case REMOVE_MOUNT_2:
+ default:
+ ShowError("Unknown action in remove mount packet: %d\n", p->action);
+ break;
+ }
+#endif
+}
+
static void clif_parse_ChangeCart(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
/// Request to change cart's visual look (CZ_REQ_CHANGECART).
/// 01af <num>.W
@@ -19923,6 +19985,7 @@ static void clif_parse_dull(int fd, struct map_session_data *sd)
static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd)
{
+#if PACKETVER >= 20100824
if (sd->state.trading || pc_isdead(sd) || pc_isvending(sd))
return;
@@ -19936,6 +19999,7 @@ static void clif_parse_CashShopOpen(int fd, struct map_session_data *sd)
WFIFOL(fd, 2) = sd->cashPoints; //[Ryuuzaki] - switched positions to reflect proper values
WFIFOL(fd, 6) = sd->kafraPoints;
WFIFOSET(fd, 10);
+#endif
}
static void clif_parse_CashShopClose(int fd, struct map_session_data *sd) __attribute__((nonnull (2)));
@@ -24027,6 +24091,7 @@ void clif_defaults(void)
clif->specialeffect = clif_specialeffect;
clif->specialeffect_single = clif_specialeffect_single;
clif->specialeffect_value = clif_specialeffect_value;
+ clif->specialeffect_value_single = clif_specialeffect_value_single;
clif->removeSpecialEffect = clif_removeSpecialEffect;
clif->removeSpecialEffect_single = clif_removeSpecialEffect_single;
clif->millenniumshield = clif_millenniumshield;
@@ -24683,4 +24748,5 @@ void clif_defaults(void)
clif->lapineDdukDdak_result = clif_lapineDdukDdak_result;
clif->plapineDdukDdak_ack = clif_parse_lapineDdukDdak_ack;
clif->plapineDdukDdak_close = clif_parse_lapineDdukDdak_close;
+ clif->pReqGearOff = clif_parse_reqGearOff;
}
diff --git a/src/map/clif.h b/src/map/clif.h
index 0dfc00c01..14a7997a1 100644
--- a/src/map/clif.h
+++ b/src/map/clif.h
@@ -733,6 +733,16 @@ enum lapineddukddak_result {
LAPINEDDKUKDDAK_INVALID_ITEM = 7,
};
+enum removeGear_flag {
+ REMOVE_MOUNT_0 = 0, // unused
+ REMOVE_MOUNT_DRAGON = 1,
+ REMOVE_MOUNT_2 = 2, // unused
+ REMOVE_MOUNT_MADO = 3,
+ REMOVE_MOUNT_PECO = 4,
+ REMOVE_MOUNT_FALCON = 5,
+ REMOVE_MOUNT_CART = 6,
+};
+
/**
* Clif.c Interface
**/
@@ -902,8 +912,8 @@ struct clif_interface {
void (*cooking_list) (struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type);
void (*autospell) (struct map_session_data *sd,uint16 skill_lv);
void (*combo_delay) (struct block_list *bl,int wait);
- void (*status_change) (struct block_list *bl, int type, int flag, int total_tick, int val1, int val2, int val3);
- void (*status_change_sub) (struct block_list *bl, int type, int flag, int tick, int total_tick, int val1, int val2, int val3);
+ void (*status_change) (struct block_list *bl, int relevant_bl, int type, int flag, int total_tick, int val1, int val2, int val3);
+ void (*status_change_sub) (struct block_list *bl, int type, int relevant_bl, int flag, int tick, int total_tick, int val1, int val2, int val3);
void (*insert_card) (struct map_session_data *sd,int idx_equip,int idx_card,int flag);
void (*inventoryList) (struct map_session_data *sd);
void (*inventoryItems) (struct map_session_data *sd, enum inventory_type type);
@@ -1020,7 +1030,8 @@ struct clif_interface {
void (*weather) (int16 m);
void (*specialeffect) (struct block_list* bl, int type, enum send_target target);
void (*specialeffect_single) (struct block_list* bl, int type, int fd);
- void (*specialeffect_value) (struct block_list* bl, int effect_id, int num, send_target target);
+ void (*specialeffect_value) (struct block_list* bl, int effect_id, uint64 num, send_target target);
+ void (*specialeffect_value_single) (struct block_list *bl, int effect_id, uint64 num, int fd);
void (*removeSpecialEffect) (struct block_list *bl, int effectId, enum send_target target);
void (*removeSpecialEffect_single) (struct block_list *bl, int effectId, struct block_list *targetBl);
void (*millenniumshield) (struct block_list *bl, short shields );
@@ -1670,6 +1681,7 @@ struct clif_interface {
bool (*lapineDdukDdak_result) (struct map_session_data *sd, enum lapineddukddak_result result);
void (*plapineDdukDdak_ack) (int fd, struct map_session_data *sd);
void (*plapineDdukDdak_close) (int fd, struct map_session_data *sd);
+ void (*pReqGearOff) (int fd, struct map_session_data *sd);
};
#ifdef HERCULES_CORE
diff --git a/src/map/constants.inc b/src/map/constants.inc
deleted file mode 100644
index 355e2a825..000000000
--- a/src/map/constants.inc
+++ /dev/null
@@ -1,1029 +0,0 @@
- script->constdb_comment("Status Icons");
-
- script->set_constant("SI_BLANK", SI_BLANK, false, false);
-
- script->set_constant("SI_PROVOKE", SI_PROVOKE, false, false);
- script->set_constant("SI_ENDURE", SI_ENDURE, false, false);
- script->set_constant("SI_TWOHANDQUICKEN", SI_TWOHANDQUICKEN, false, false);
- script->set_constant("SI_CONCENTRATION", SI_CONCENTRATION, false, false);
- script->set_constant("SI_HIDING", SI_HIDING, false, false);
- script->set_constant("SI_CLOAKING", SI_CLOAKING, false, false);
- script->set_constant("SI_ENCHANTPOISON", SI_ENCHANTPOISON, false, false);
- script->set_constant("SI_POISONREACT", SI_POISONREACT, false, false);
- script->set_constant("SI_QUAGMIRE", SI_QUAGMIRE, false, false);
- script->set_constant("SI_ANGELUS", SI_ANGELUS, false, false);
- script->set_constant("SI_BLESSING", SI_BLESSING, false, false);
- script->set_constant("SI_CRUCIS", SI_CRUCIS, false, false);
- script->set_constant("SI_INC_AGI", SI_INC_AGI, false, false);
- script->set_constant("SI_DEC_AGI", SI_DEC_AGI, false, false);
- script->set_constant("SI_SLOWPOISON", SI_SLOWPOISON, false, false);
- script->set_constant("SI_IMPOSITIO", SI_IMPOSITIO, false, false);
- script->set_constant("SI_SUFFRAGIUM", SI_SUFFRAGIUM, false, false);
- script->set_constant("SI_ASPERSIO", SI_ASPERSIO, false, false);
- script->set_constant("SI_BENEDICTIO", SI_BENEDICTIO, false, false);
- script->set_constant("SI_KYRIE", SI_KYRIE, false, false);
- script->set_constant("SI_MAGNIFICAT", SI_MAGNIFICAT, false, false);
- script->set_constant("SI_GLORIA", SI_GLORIA, false, false);
- script->set_constant("SI_LEXAETERNA", SI_LEXAETERNA, false, false);
- script->set_constant("SI_ADRENALINE", SI_ADRENALINE, false, false);
- script->set_constant("SI_WEAPONPERFECT", SI_WEAPONPERFECT, false, false);
- script->set_constant("SI_OVERTHRUST", SI_OVERTHRUST, false, false);
- script->set_constant("SI_MAXIMIZE", SI_MAXIMIZE, false, false);
- script->set_constant("SI_RIDING", SI_RIDING, false, false);
- script->set_constant("SI_FALCON", SI_FALCON, false, false);
- script->set_constant("SI_TRICKDEAD", SI_TRICKDEAD, false, false);
- script->set_constant("SI_SHOUT", SI_SHOUT, false, false);
- script->set_constant("SI_ENERGYCOAT", SI_ENERGYCOAT, false, false);
- script->set_constant("SI_BROKENARMOR", SI_BROKENARMOR, false, false);
- script->set_constant("SI_BROKENWEAPON", SI_BROKENWEAPON, false, false);
- script->set_constant("SI_ILLUSION", SI_ILLUSION, false, false);
- script->set_constant("SI_WEIGHTOVER50", SI_WEIGHTOVER50, false, false);
- script->set_constant("SI_WEIGHTOVER90", SI_WEIGHTOVER90, false, false);
- script->set_constant("SI_ATTHASTE_POTION1", SI_ATTHASTE_POTION1, false, false);
- script->set_constant("SI_ATTHASTE_POTION2", SI_ATTHASTE_POTION2, false, false);
- script->set_constant("SI_ATTHASTE_POTION3", SI_ATTHASTE_POTION3, false, false);
- script->set_constant("SI_ATTHASTE_INFINITY", SI_ATTHASTE_INFINITY, false, false);
- script->set_constant("SI_MOVHASTE_POTION", SI_MOVHASTE_POTION, false, false);
- script->set_constant("SI_MOVHASTE_INFINITY", SI_MOVHASTE_INFINITY, false, false);
- //script->set_constant("SI_AUTOCOUNTER", SI_AUTOCOUNTER, false, false);
- //script->set_constant("SI_SPLASHER", SI_SPLASHER, false, false);
- script->set_constant("SI_ANKLESNARE", SI_ANKLESNARE, false, false);
- script->set_constant("SI_POSTDELAY", SI_POSTDELAY, false, false);
- //script->set_constant("SI_NOACTION", SI_NOACTION, false, false);
- //script->set_constant("SI_IMPOSSIBLEPICKUP", SI_IMPOSSIBLEPICKUP, false, false);
- //script->set_constant("SI_BARRIER", SI_BARRIER, false, false);
-
- script->set_constant("SI_NOEQUIPWEAPON", SI_NOEQUIPWEAPON, false, false);
- script->set_constant("SI_NOEQUIPSHIELD", SI_NOEQUIPSHIELD, false, false);
- script->set_constant("SI_NOEQUIPARMOR", SI_NOEQUIPARMOR, false, false);
- script->set_constant("SI_NOEQUIPHELM", SI_NOEQUIPHELM, false, false);
- script->set_constant("SI_PROTECTWEAPON", SI_PROTECTWEAPON, false, false);
- script->set_constant("SI_PROTECTSHIELD", SI_PROTECTSHIELD, false, false);
- script->set_constant("SI_PROTECTARMOR", SI_PROTECTARMOR, false, false);
- script->set_constant("SI_PROTECTHELM", SI_PROTECTHELM, false, false);
- script->set_constant("SI_AUTOGUARD", SI_AUTOGUARD, false, false);
- script->set_constant("SI_REFLECTSHIELD", SI_REFLECTSHIELD, false, false);
- //script->set_constant("SI_DEVOTION", SI_DEVOTION, false, false);
- script->set_constant("SI_PROVIDENCE", SI_PROVIDENCE, false, false);
- script->set_constant("SI_DEFENDER", SI_DEFENDER, false, false);
- //script->set_constant("SI_MAGICROD", SI_MAGICROD, false, false);
- //script->set_constant("SI_WEAPONPROPERTY", SI_WEAPONPROPERTY, false, false);
- script->set_constant("SI_AUTOSPELL", SI_AUTOSPELL, false, false);
- //script->set_constant("SI_SPECIALZONE", SI_SPECIALZONE, false, false);
- //script->set_constant("SI_MASK", SI_MASK, false, false);
- script->set_constant("SI_SPEARQUICKEN", SI_SPEARQUICKEN, false, false);
- //script->set_constant("SI_BDPLAYING", SI_BDPLAYING, false, false);
- //script->set_constant("SI_WHISTLE", SI_WHISTLE, false, false);
- //script->set_constant("SI_ASSASSINCROSS", SI_ASSASSINCROSS, false, false);
- //script->set_constant("SI_POEMBRAGI", SI_POEMBRAGI, false, false);
- //script->set_constant("SI_APPLEIDUN", SI_APPLEIDUN, false, false);
- //script->set_constant("SI_HUMMING", SI_HUMMING, false, false);
- //script->set_constant("SI_DONTFORGETME", SI_DONTFORGETME, false, false);
- //script->set_constant("SI_FORTUNEKISS", SI_FORTUNEKISS, false, false);
- //script->set_constant("SI_SERVICEFORYOU", SI_SERVICEFORYOU, false, false);
- //script->set_constant("SI_RICHMANKIM", SI_RICHMANKIM, false, false);
- //script->set_constant("SI_ETERNALCHAOS", SI_ETERNALCHAOS, false, false);
- //script->set_constant("SI_DRUMBATTLEFIELD", SI_DRUMBATTLEFIELD, false, false);
- //script->set_constant("SI_RINGNIBELUNGEN", SI_RINGNIBELUNGEN, false, false);
- //script->set_constant("SI_ROKISWEIL", SI_ROKISWEIL, false, false);
- //script->set_constant("SI_INTOABYSS", SI_INTOABYSS, false, false);
- //script->set_constant("SI_SIEGFRIED", SI_SIEGFRIED, false, false);
- //script->set_constant("SI_BLADESTOP", SI_BLADESTOP, false, false);
- script->set_constant("SI_EXPLOSIONSPIRITS", SI_EXPLOSIONSPIRITS, false, false);
- script->set_constant("SI_STEELBODY", SI_STEELBODY, false, false);
- script->set_constant("SI_EXTREMITYFIST", SI_EXTREMITYFIST, false, false);
- //script->set_constant("SI_COMBOATTACK", SI_COMBOATTACK, false, false);
- script->set_constant("SI_PROPERTYFIRE", SI_PROPERTYFIRE, false, false);
- script->set_constant("SI_PROPERTYWATER", SI_PROPERTYWATER, false, false);
- script->set_constant("SI_PROPERTYWIND", SI_PROPERTYWIND, false, false);
- script->set_constant("SI_PROPERTYGROUND", SI_PROPERTYGROUND, false, false);
- //script->set_constant("SI_MAGICATTACK", SI_MAGICATTACK, false, false);
- script->set_constant("SI_STOP", SI_STOP, false, false);
- //script->set_constant("SI_WEAPONBRAKER", SI_WEAPONBRAKER, false, false);
- script->set_constant("SI_PROPERTYUNDEAD", SI_PROPERTYUNDEAD, false, false);
- //script->set_constant("SI_POWERUP", SI_POWERUP, false, false);
- //script->set_constant("SI_AGIUP", SI_AGIUP, false, false);
-
- //script->set_constant("SI_SIEGEMODE", SI_SIEGEMODE, false, false);
- //script->set_constant("SI_INVISIBLE", SI_INVISIBLE, false, false);
- //script->set_constant("SI_STATUSONE", SI_STATUSONE, false, false);
- script->set_constant("SI_AURABLADE", SI_AURABLADE, false, false);
- script->set_constant("SI_PARRYING", SI_PARRYING, false, false);
- script->set_constant("SI_LKCONCENTRATION", SI_LKCONCENTRATION, false, false);
- script->set_constant("SI_TENSIONRELAX", SI_TENSIONRELAX, false, false);
- script->set_constant("SI_BERSERK", SI_BERSERK, false, false);
- //script->set_constant("SI_SACRIFICE", SI_SACRIFICE, false, false);
- //script->set_constant("SI_GOSPEL", SI_GOSPEL, false, false);
- script->set_constant("SI_ASSUMPTIO", SI_ASSUMPTIO, false, false);
- //script->set_constant("SI_BASILICA", SI_BASILICA, false, false);
- script->set_constant("SI_GROUNDMAGIC", SI_GROUNDMAGIC, false, false);
- script->set_constant("SI_MAGICPOWER", SI_MAGICPOWER, false, false);
- script->set_constant("SI_EDP", SI_EDP, false, false);
- script->set_constant("SI_TRUESIGHT", SI_TRUESIGHT, false, false);
- script->set_constant("SI_WINDWALK", SI_WINDWALK, false, false);
- script->set_constant("SI_MELTDOWN", SI_MELTDOWN, false, false);
- script->set_constant("SI_CARTBOOST", SI_CARTBOOST, false, false);
- //script->set_constant("SI_CHASEWALK", SI_CHASEWALK, false, false);
- script->set_constant("SI_SWORDREJECT", SI_SWORDREJECT, false, false);
- script->set_constant("SI_MARIONETTE_MASTER", SI_MARIONETTE_MASTER, false, false);
- script->set_constant("SI_MARIONETTE", SI_MARIONETTE, false, false);
- script->set_constant("SI_MOON", SI_MOON, false, false);
- script->set_constant("SI_BLOODING", SI_BLOODING, false, false);
- script->set_constant("SI_JOINTBEAT", SI_JOINTBEAT, false, false);
- //script->set_constant("SI_MINDBREAKER", SI_MINDBREAKER, false, false);
- //script->set_constant("SI_MEMORIZE", SI_MEMORIZE, false, false);
- //script->set_constant("SI_FOGWALL", SI_FOGWALL, false, false);
- //script->set_constant("SI_SPIDERWEB", SI_SPIDERWEB, false, false);
- script->set_constant("SI_PROTECTEXP", SI_PROTECTEXP, false, false);
- //script->set_constant("SI_SUB_WEAPONPROPERTY", SI_SUB_WEAPONPROPERTY, false, false);
- script->set_constant("SI_AUTOBERSERK", SI_AUTOBERSERK, false, false);
- script->set_constant("SI_RUN", SI_RUN, false, false);
- script->set_constant("SI_TING", SI_TING, false, false);
- script->set_constant("SI_STORMKICK_ON", SI_STORMKICK_ON, false, false);
- script->set_constant("SI_STORMKICK_READY", SI_STORMKICK_READY, false, false);
- script->set_constant("SI_DOWNKICK_ON", SI_DOWNKICK_ON, false, false);
- script->set_constant("SI_DOWNKICK_READY", SI_DOWNKICK_READY, false, false);
- script->set_constant("SI_TURNKICK_ON", SI_TURNKICK_ON, false, false);
- script->set_constant("SI_TURNKICK_READY", SI_TURNKICK_READY, false, false);
- script->set_constant("SI_COUNTER_ON", SI_COUNTER_ON, false, false);
- script->set_constant("SI_COUNTER_READY", SI_COUNTER_READY, false, false);
- script->set_constant("SI_DODGE_ON", SI_DODGE_ON, false, false);
- script->set_constant("SI_DODGE_READY", SI_DODGE_READY, false, false);
- script->set_constant("SI_STRUP", SI_STRUP, false, false);
- script->set_constant("SI_PROPERTYDARK", SI_PROPERTYDARK, false, false);
- script->set_constant("SI_ADRENALINE2", SI_ADRENALINE2, false, false);
- script->set_constant("SI_PROPERTYTELEKINESIS", SI_PROPERTYTELEKINESIS, false, false);
- script->set_constant("SI_SOULLINK", SI_SOULLINK, false, false);
-
- script->set_constant("SI_PLUSATTACKPOWER", SI_PLUSATTACKPOWER, false, false);
- script->set_constant("SI_PLUSMAGICPOWER", SI_PLUSMAGICPOWER, false, false);
- script->set_constant("SI_DEVIL1", SI_DEVIL1, false, false);
- script->set_constant("SI_KAITE", SI_KAITE, false, false);
- //script->set_constant("SI_SWOO", SI_SWOO, false, false);
- //script->set_constant("SI_STAR2", SI_STAR2, false, false);
- script->set_constant("SI_KAIZEL", SI_KAIZEL, false, false);
- script->set_constant("SI_KAAHI", SI_KAAHI, false, false);
- script->set_constant("SI_KAUPE", SI_KAUPE, false, false);
- script->set_constant("SI_SMA_READY", SI_SMA_READY, false, false);
- script->set_constant("SI_SKE", SI_SKE, false, false);
- script->set_constant("SI_ONEHANDQUICKEN", SI_ONEHANDQUICKEN, false, false);
- //script->set_constant("SI_FRIEND", SI_FRIEND, false, false);
- //script->set_constant("SI_FRIENDUP", SI_FRIENDUP, false, false);
- //script->set_constant("SI_SG_WARM", SI_SG_WARM, false, false);
- script->set_constant("SI_SG_SUN_WARM", SI_SG_SUN_WARM, false, false);
- //script->set_constant("SI_SG_MOON_WARM", SI_SG_MOON_WARM, false, false);
- //script->set_constant("SI_SG_STAR_WARM", SI_SG_STAR_WARM, false, false);
- //script->set_constant("SI_EMOTION", SI_EMOTION, false, false);
- script->set_constant("SI_SUN_COMFORT", SI_SUN_COMFORT, false, false);
- script->set_constant("SI_MOON_COMFORT", SI_MOON_COMFORT, false, false);
- script->set_constant("SI_STAR_COMFORT", SI_STAR_COMFORT, false, false);
- //script->set_constant("SI_EXPUP", SI_EXPUP, false, false);
- //script->set_constant("SI_GDSKILL_BATTLEORDER", SI_GDSKILL_BATTLEORDER, false, false);
- //script->set_constant("SI_GDSKILL_REGENERATION", SI_GDSKILL_REGENERATION, false, false);
- //script->set_constant("SI_GDSKILL_POSTDELAY", SI_GDSKILL_POSTDELAY, false, false);
- //script->set_constant("SI_RESISTHANDICAP", SI_RESISTHANDICAP, false, false);
- //script->set_constant("SI_MAXHPPERCENT", SI_MAXHPPERCENT, false, false);
- //script->set_constant("SI_MAXSPPERCENT", SI_MAXSPPERCENT, false, false);
- //script->set_constant("SI_DEFENCE", SI_DEFENCE, false, false);
- //script->set_constant("SI_SLOWDOWN", SI_SLOWDOWN, false, false);
- script->set_constant("SI_PRESERVE", SI_PRESERVE, false, false);
- script->set_constant("SI_INCSTR", SI_INCSTR, false, false);
- //script->set_constant("SI_NOT_EXTREMITYFIST", SI_NOT_EXTREMITYFIST, false, false);
- script->set_constant("SI_CLAIRVOYANCE", SI_CLAIRVOYANCE, false, false);
- script->set_constant("SI_MOVESLOW_POTION", SI_MOVESLOW_POTION, false, false);
- script->set_constant("SI_DOUBLECASTING", SI_DOUBLECASTING, false, false);
- //script->set_constant("SI_GRAVITATION", SI_GRAVITATION, false, false);
- script->set_constant("SI_OVERTHRUSTMAX", SI_OVERTHRUSTMAX, false, false);
- //script->set_constant("SI_LONGING", SI_LONGING, false, false);
- //script->set_constant("SI_HERMODE", SI_HERMODE, false, false);
- script->set_constant("SI_TAROTCARD", SI_TAROTCARD, false, false);
- //script->set_constant("SI_HLIF_AVOID", SI_HLIF_AVOID, false, false);
- //script->set_constant("SI_HFLI_FLEET", SI_HFLI_FLEET, false, false);
- //script->set_constant("SI_HFLI_SPEED", SI_HFLI_SPEED, false, false);
- //script->set_constant("SI_HLIF_CHANGE", SI_HLIF_CHANGE, false, false);
- //script->set_constant("SI_HAMI_BLOODLUST", SI_HAMI_BLOODLUST, false, false);
- script->set_constant("SI_CR_SHRINK", SI_CR_SHRINK, false, false);
- script->set_constant("SI_WZ_SIGHTBLASTER", SI_WZ_SIGHTBLASTER, false, false);
- script->set_constant("SI_DC_WINKCHARM", SI_DC_WINKCHARM, false, false);
-
- script->set_constant("SI_RG_CCONFINE_M", SI_RG_CCONFINE_M, false, false);
- script->set_constant("SI_RG_CCONFINE_S", SI_RG_CCONFINE_S, false, false);
- //script->set_constant("SI_DISABLEMOVE", SI_DISABLEMOVE, false, false);
- script->set_constant("SI_GS_MADNESSCANCEL", SI_GS_MADNESSCANCEL, false, false);
- script->set_constant("SI_GS_GATLINGFEVER", SI_GS_GATLINGFEVER, false, false);
- script->set_constant("SI_EARTHSCROLL", SI_EARTHSCROLL, false, false);
- script->set_constant("SI_NJ_UTSUSEMI", SI_NJ_UTSUSEMI, false, false);
- script->set_constant("SI_NJ_BUNSINJYUTSU", SI_NJ_BUNSINJYUTSU, false, false);
- script->set_constant("SI_NJ_NEN", SI_NJ_NEN, false, false);
- script->set_constant("SI_GS_ADJUSTMENT", SI_GS_ADJUSTMENT, false, false);
- script->set_constant("SI_GS_ACCURACY", SI_GS_ACCURACY, false, false);
- script->set_constant("SI_NJ_SUITON", SI_NJ_SUITON, false, false);
- //script->set_constant("SI_PET", SI_PET, false, false);
- //script->set_constant("SI_MENTAL", SI_MENTAL, false, false);
- //script->set_constant("SI_EXPMEMORY", SI_EXPMEMORY, false, false);
- //script->set_constant("SI_PERFORMANCE", SI_PERFORMANCE, false, false);
- //script->set_constant("SI_GAIN", SI_GAIN, false, false);
- //script->set_constant("SI_GRIFFON", SI_GRIFFON, false, false);
- //script->set_constant("SI_DRIFT", SI_DRIFT, false, false);
- //script->set_constant("SI_WALLSHIFT", SI_WALLSHIFT, false, false);
- //script->set_constant("SI_REINCARNATION", SI_REINCARNATION, false, false);
- //script->set_constant("SI_PATTACK", SI_PATTACK, false, false);
- //script->set_constant("SI_PSPEED", SI_PSPEED, false, false);
- //script->set_constant("SI_PDEFENSE", SI_PDEFENSE, false, false);
- //script->set_constant("SI_PCRITICAL", SI_PCRITICAL, false, false);
- //script->set_constant("SI_RANKING", SI_RANKING, false, false);
- //script->set_constant("SI_PTRIPLE", SI_PTRIPLE, false, false);
- //script->set_constant("SI_DENERGY", SI_DENERGY, false, false);
- //script->set_constant("SI_WAVE1", SI_WAVE1, false, false);
- //script->set_constant("SI_WAVE2", SI_WAVE2, false, false);
- //script->set_constant("SI_WAVE3", SI_WAVE3, false, false);
- //script->set_constant("SI_WAVE4", SI_WAVE4, false, false);
- //script->set_constant("SI_DAURA", SI_DAURA, false, false);
- //script->set_constant("SI_DFREEZER", SI_DFREEZER, false, false);
- //script->set_constant("SI_DPUNISH", SI_DPUNISH, false, false);
- //script->set_constant("SI_DBARRIER", SI_DBARRIER, false, false);
- //script->set_constant("SI_DWARNING", SI_DWARNING, false, false);
- //script->set_constant("SI_MOUSEWHEEL", SI_MOUSEWHEEL, false, false);
- //script->set_constant("SI_DGAUGE", SI_DGAUGE, false, false);
- //script->set_constant("SI_DACCEL", SI_DACCEL, false, false);
- //script->set_constant("SI_DBLOCK", SI_DBLOCK, false, false);
- script->set_constant("SI_FOOD_STR", SI_FOOD_STR, false, false);
- script->set_constant("SI_FOOD_AGI", SI_FOOD_AGI, false, false);
- script->set_constant("SI_FOOD_VIT", SI_FOOD_VIT, false, false);
- script->set_constant("SI_FOOD_DEX", SI_FOOD_DEX, false, false);
- script->set_constant("SI_FOOD_INT", SI_FOOD_INT, false, false);
- script->set_constant("SI_FOOD_LUK", SI_FOOD_LUK, false, false);
- script->set_constant("SI_FOOD_BASICAVOIDANCE", SI_FOOD_BASICAVOIDANCE, false, false);
- script->set_constant("SI_FOOD_BASICHIT", SI_FOOD_BASICHIT, false, false);
- script->set_constant("SI_FOOD_CRITICALSUCCESSVALUE", SI_FOOD_CRITICALSUCCESSVALUE, false, false);
-
- script->set_constant("SI_CASH_PLUSEXP", SI_CASH_PLUSEXP, false, false);
- script->set_constant("SI_CASH_DEATHPENALTY", SI_CASH_DEATHPENALTY, false, false);
- script->set_constant("SI_CASH_RECEIVEITEM", SI_CASH_RECEIVEITEM, false, false);
- script->set_constant("SI_CASH_BOSS_ALARM", SI_CASH_BOSS_ALARM, false, false);
- //script->set_constant("SI_DA_ENERGY", SI_DA_ENERGY, false, false);
- //script->set_constant("SI_DA_FIRSTSLOT", SI_DA_FIRSTSLOT, false, false);
- //script->set_constant("SI_DA_HEADDEF", SI_DA_HEADDEF, false, false);
- //script->set_constant("SI_DA_SPACE", SI_DA_SPACE, false, false);
- //script->set_constant("SI_DA_TRANSFORM", SI_DA_TRANSFORM, false, false);
- //script->set_constant("SI_DA_ITEMREBUILD", SI_DA_ITEMREBUILD, false, false);
- //script->set_constant("SI_DA_ILLUSION", SI_DA_ILLUSION, false, false);
- //script->set_constant("SI_DA_DARKPOWER", SI_DA_DARKPOWER, false, false);
- //script->set_constant("SI_DA_EARPLUG", SI_DA_EARPLUG, false, false);
- //script->set_constant("SI_DA_CONTRACT", SI_DA_CONTRACT, false, false);
- //script->set_constant("SI_DA_BLACK", SI_DA_BLACK, false, false);
- //script->set_constant("SI_DA_MAGICCART", SI_DA_MAGICCART, false, false);
- //script->set_constant("SI_CRYSTAL", SI_CRYSTAL, false, false);
- //script->set_constant("SI_DA_REBUILD", SI_DA_REBUILD, false, false);
- //script->set_constant("SI_DA_EDARKNESS", SI_DA_EDARKNESS, false, false);
- //script->set_constant("SI_DA_EGUARDIAN", SI_DA_EGUARDIAN, false, false);
- //script->set_constant("SI_DA_TIMEOUT", SI_DA_TIMEOUT, false, false);
- script->set_constant("SI_FOOD_STR_CASH", SI_FOOD_STR_CASH, false, false);
- script->set_constant("SI_FOOD_AGI_CASH", SI_FOOD_AGI_CASH, false, false);
- script->set_constant("SI_FOOD_VIT_CASH", SI_FOOD_VIT_CASH, false, false);
- script->set_constant("SI_FOOD_DEX_CASH", SI_FOOD_DEX_CASH, false, false);
- script->set_constant("SI_FOOD_INT_CASH", SI_FOOD_INT_CASH, false, false);
- script->set_constant("SI_FOOD_LUK_CASH", SI_FOOD_LUK_CASH, false, false);
- script->set_constant("SI_MER_FLEE", SI_MER_FLEE, false, false);
- script->set_constant("SI_MER_ATK", SI_MER_ATK, false, false);
- script->set_constant("SI_MER_HP", SI_MER_HP, false, false);
- script->set_constant("SI_MER_SP", SI_MER_SP, false, false);
- script->set_constant("SI_MER_HIT", SI_MER_HIT, false, false);
- script->set_constant("SI_SLOWCAST", SI_SLOWCAST, false, false);
- //script->set_constant("SI_MAGICMIRROR", SI_MAGICMIRROR, false, false);
- //script->set_constant("SI_STONESKIN", SI_STONESKIN, false, false);
- //script->set_constant("SI_ANTIMAGIC", SI_ANTIMAGIC, false, false);
- script->set_constant("SI_CRITICALWOUND", SI_CRITICALWOUND, false, false);
- //script->set_constant("SI_NPC_DEFENDER", SI_NPC_DEFENDER, false, false);
- //script->set_constant("SI_NOACTION_WAIT", SI_NOACTION_WAIT, false, false);
- script->set_constant("SI_MOVHASTE_HORSE", SI_MOVHASTE_HORSE, false, false);
- script->set_constant("SI_PROTECT_DEF", SI_PROTECT_DEF, false, false);
- script->set_constant("SI_PROTECT_MDEF", SI_PROTECT_MDEF, false, false);
- script->set_constant("SI_HEALPLUS", SI_HEALPLUS, false, false);
- script->set_constant("SI_S_LIFEPOTION", SI_S_LIFEPOTION, false, false);
- script->set_constant("SI_L_LIFEPOTION", SI_L_LIFEPOTION, false, false);
- script->set_constant("SI_CRITICALPERCENT", SI_CRITICALPERCENT, false, false);
- script->set_constant("SI_PLUSAVOIDVALUE", SI_PLUSAVOIDVALUE, false, false);
- script->set_constant("SI_ATKER_ASPD", SI_ATKER_ASPD, false, false);
- script->set_constant("SI_TARGET_ASPD", SI_TARGET_ASPD, false, false);
- script->set_constant("SI_ATKER_MOVESPEED", SI_ATKER_MOVESPEED, false, false);
-
- script->set_constant("SI_ATKER_BLOOD", SI_ATKER_BLOOD, false, false);
- script->set_constant("SI_TARGET_BLOOD", SI_TARGET_BLOOD, false, false);
- script->set_constant("SI_ARMOR_PROPERTY", SI_ARMOR_PROPERTY, false, false);
- //script->set_constant("SI_REUSE_LIMIT_A", SI_REUSE_LIMIT_A, false, false);
- script->set_constant("SI_HELLPOWER", SI_HELLPOWER, false, false);
- script->set_constant("SI_STEAMPACK", SI_STEAMPACK, false, false);
- //script->set_constant("SI_REUSE_LIMIT_B", SI_REUSE_LIMIT_B, false, false);
- //script->set_constant("SI_REUSE_LIMIT_C", SI_REUSE_LIMIT_C, false, false);
- //script->set_constant("SI_REUSE_LIMIT_D", SI_REUSE_LIMIT_D, false, false);
- //script->set_constant("SI_REUSE_LIMIT_E", SI_REUSE_LIMIT_E, false, false);
- //script->set_constant("SI_REUSE_LIMIT_F", SI_REUSE_LIMIT_F, false, false);
- script->set_constant("SI_INVINCIBLE", SI_INVINCIBLE, false, false);
- script->set_constant("SI_CASH_PLUSONLYJOBEXP", SI_CASH_PLUSONLYJOBEXP, false, false);
- script->set_constant("SI_PARTYFLEE", SI_PARTYFLEE, false, false);
- script->set_constant("SI_ANGEL_PROTECT", SI_ANGEL_PROTECT, false, false);
- //script->set_constant("SI_ENDURE_MDEF", SI_ENDURE_MDEF, false, false);
- script->set_constant("SI_ENCHANTBLADE", SI_ENCHANTBLADE, false, false);
- script->set_constant("SI_DEATHBOUND", SI_DEATHBOUND, false, false);
- script->set_constant("SI_REFRESH", SI_REFRESH, false, false);
- script->set_constant("SI_GIANTGROWTH", SI_GIANTGROWTH, false, false);
- script->set_constant("SI_STONEHARDSKIN", SI_STONEHARDSKIN, false, false);
- script->set_constant("SI_VITALITYACTIVATION", SI_VITALITYACTIVATION, false, false);
- script->set_constant("SI_FIGHTINGSPIRIT", SI_FIGHTINGSPIRIT, false, false);
- script->set_constant("SI_ABUNDANCE", SI_ABUNDANCE, false, false);
- script->set_constant("SI_REUSE_MILLENNIUMSHIELD", SI_REUSE_MILLENNIUMSHIELD, false, false);
- script->set_constant("SI_REUSE_CRUSHSTRIKE", SI_REUSE_CRUSHSTRIKE, false, false);
- script->set_constant("SI_REUSE_REFRESH", SI_REUSE_REFRESH, false, false);
- script->set_constant("SI_REUSE_STORMBLAST", SI_REUSE_STORMBLAST, false, false);
- script->set_constant("SI_VENOMIMPRESS", SI_VENOMIMPRESS, false, false);
- script->set_constant("SI_EPICLESIS", SI_EPICLESIS, false, false);
- script->set_constant("SI_ORATIO", SI_ORATIO, false, false);
- script->set_constant("SI_LAUDAAGNUS", SI_LAUDAAGNUS, false, false);
- script->set_constant("SI_LAUDARAMUS", SI_LAUDARAMUS, false, false);
- script->set_constant("SI_CLOAKINGEXCEED", SI_CLOAKINGEXCEED, false, false);
- script->set_constant("SI_HALLUCINATIONWALK", SI_HALLUCINATIONWALK, false, false);
- script->set_constant("SI_HALLUCINATIONWALK_POSTDELAY", SI_HALLUCINATIONWALK_POSTDELAY, false, false);
- script->set_constant("SI_RENOVATIO", SI_RENOVATIO, false, false);
- script->set_constant("SI_WEAPONBLOCKING", SI_WEAPONBLOCKING, false, false);
- script->set_constant("SI_WEAPONBLOCKING_POSTDELAY", SI_WEAPONBLOCKING_POSTDELAY, false, false);
- script->set_constant("SI_ROLLINGCUTTER", SI_ROLLINGCUTTER, false, false);
- script->set_constant("SI_EXPIATIO", SI_EXPIATIO, false, false);
- script->set_constant("SI_POISONINGWEAPON", SI_POISONINGWEAPON, false, false);
- script->set_constant("SI_TOXIN", SI_TOXIN, false, false);
- script->set_constant("SI_PARALYSE", SI_PARALYSE, false, false);
- script->set_constant("SI_VENOMBLEED", SI_VENOMBLEED, false, false);
- script->set_constant("SI_MAGICMUSHROOM", SI_MAGICMUSHROOM, false, false);
- script->set_constant("SI_DEATHHURT", SI_DEATHHURT, false, false);
- script->set_constant("SI_PYREXIA", SI_PYREXIA, false, false);
- script->set_constant("SI_OBLIVIONCURSE", SI_OBLIVIONCURSE, false, false);
- script->set_constant("SI_LEECHESEND", SI_LEECHESEND, false, false);
-
- script->set_constant("SI_DUPLELIGHT", SI_DUPLELIGHT, false, false);
- script->set_constant("SI_FROSTMISTY", SI_FROSTMISTY, false, false);
- script->set_constant("SI_FEARBREEZE", SI_FEARBREEZE, false, false);
- script->set_constant("SI_ELECTRICSHOCKER", SI_ELECTRICSHOCKER, false, false);
- script->set_constant("SI_MARSHOFABYSS", SI_MARSHOFABYSS, false, false);
- script->set_constant("SI_RECOGNIZEDSPELL", SI_RECOGNIZEDSPELL, false, false);
- script->set_constant("SI_STASIS", SI_STASIS, false, false);
- script->set_constant("SI_WUGRIDER", SI_WUGRIDER, false, false);
- script->set_constant("SI_WUGDASH", SI_WUGDASH, false, false);
- script->set_constant("SI_WUGBITE", SI_WUGBITE, false, false);
- script->set_constant("SI_CAMOUFLAGE", SI_CAMOUFLAGE, false, false);
- script->set_constant("SI_ACCELERATION", SI_ACCELERATION, false, false);
- script->set_constant("SI_HOVERING", SI_HOVERING, false, false);
- script->set_constant("SI_SPHERE_1", SI_SPHERE_1, false, false);
- script->set_constant("SI_SPHERE_2", SI_SPHERE_2, false, false);
- script->set_constant("SI_SPHERE_3", SI_SPHERE_3, false, false);
- script->set_constant("SI_SPHERE_4", SI_SPHERE_4, false, false);
- script->set_constant("SI_SPHERE_5", SI_SPHERE_5, false, false);
- script->set_constant("SI_MVPCARD_TAOGUNKA", SI_MVPCARD_TAOGUNKA, false, false);
- script->set_constant("SI_MVPCARD_MISTRESS", SI_MVPCARD_MISTRESS, false, false);
- script->set_constant("SI_MVPCARD_ORCHERO", SI_MVPCARD_ORCHERO, false, false);
- script->set_constant("SI_MVPCARD_ORCLORD", SI_MVPCARD_ORCLORD, false, false);
- script->set_constant("SI_OVERHEAT_LIMITPOINT", SI_OVERHEAT_LIMITPOINT, false, false);
- script->set_constant("SI_OVERHEAT", SI_OVERHEAT, false, false);
- script->set_constant("SI_SHAPESHIFT", SI_SHAPESHIFT, false, false);
- script->set_constant("SI_INFRAREDSCAN", SI_INFRAREDSCAN, false, false);
- script->set_constant("SI_MAGNETICFIELD", SI_MAGNETICFIELD, false, false);
- script->set_constant("SI_NEUTRALBARRIER", SI_NEUTRALBARRIER, false, false);
- script->set_constant("SI_NEUTRALBARRIER_MASTER", SI_NEUTRALBARRIER_MASTER, false, false);
- script->set_constant("SI_STEALTHFIELD", SI_STEALTHFIELD, false, false);
- script->set_constant("SI_STEALTHFIELD_MASTER", SI_STEALTHFIELD_MASTER, false, false);
- script->set_constant("SI_MANU_ATK", SI_MANU_ATK, false, false);
- script->set_constant("SI_MANU_DEF", SI_MANU_DEF, false, false);
- script->set_constant("SI_SPL_ATK", SI_SPL_ATK, false, false);
- script->set_constant("SI_SPL_DEF", SI_SPL_DEF, false, false);
- script->set_constant("SI_REPRODUCE", SI_REPRODUCE, false, false);
- script->set_constant("SI_MANU_MATK", SI_MANU_MATK, false, false);
- script->set_constant("SI_SPL_MATK", SI_SPL_MATK, false, false);
- script->set_constant("SI_STR_SCROLL", SI_STR_SCROLL, false, false);
- script->set_constant("SI_INT_SCROLL", SI_INT_SCROLL, false, false);
- script->set_constant("SI_LG_REFLECTDAMAGE", SI_LG_REFLECTDAMAGE, false, false);
- script->set_constant("SI_FORCEOFVANGUARD", SI_FORCEOFVANGUARD, false, false);
- script->set_constant("SI_BUCHEDENOEL", SI_BUCHEDENOEL, false, false);
- script->set_constant("SI_AUTOSHADOWSPELL", SI_AUTOSHADOWSPELL, false, false);
- script->set_constant("SI_SHADOWFORM", SI_SHADOWFORM, false, false);
- script->set_constant("SI_RAID", SI_RAID, false, false);
- script->set_constant("SI_SHIELDSPELL_DEF", SI_SHIELDSPELL_DEF, false, false);
- script->set_constant("SI_SHIELDSPELL_MDEF", SI_SHIELDSPELL_MDEF, false, false);
- script->set_constant("SI_SHIELDSPELL_REF", SI_SHIELDSPELL_REF, false, false);
- script->set_constant("SI_BODYPAINT", SI_BODYPAINT, false, false);
-
- script->set_constant("SI_EXEEDBREAK", SI_EXEEDBREAK, false, false);
- script->set_constant("SI_ADORAMUS", SI_ADORAMUS, false, false);
- script->set_constant("SI_PRESTIGE", SI_PRESTIGE, false, false);
- script->set_constant("SI_INVISIBILITY", SI_INVISIBILITY, false, false);
- script->set_constant("SI_DEADLYINFECT", SI_DEADLYINFECT, false, false);
- script->set_constant("SI_BANDING", SI_BANDING, false, false);
- script->set_constant("SI_EARTHDRIVE", SI_EARTHDRIVE, false, false);
- script->set_constant("SI_INSPIRATION", SI_INSPIRATION, false, false);
- script->set_constant("SI_ENERVATION", SI_ENERVATION, false, false);
- script->set_constant("SI_GROOMY", SI_GROOMY, false, false);
- script->set_constant("SI_RAISINGDRAGON", SI_RAISINGDRAGON, false, false);
- script->set_constant("SI_IGNORANCE", SI_IGNORANCE, false, false);
- script->set_constant("SI_LAZINESS", SI_LAZINESS, false, false);
- script->set_constant("SI_LIGHTNINGWALK", SI_LIGHTNINGWALK, false, false);
- script->set_constant("SI_ACARAJE", SI_ACARAJE, false, false);
- script->set_constant("SI_UNLUCKY", SI_UNLUCKY, false, false);
- script->set_constant("SI_CURSEDCIRCLE_ATKER", SI_CURSEDCIRCLE_ATKER, false, false);
- script->set_constant("SI_CURSEDCIRCLE_TARGET", SI_CURSEDCIRCLE_TARGET, false, false);
- script->set_constant("SI_WEAKNESS", SI_WEAKNESS, false, false);
- script->set_constant("SI_CRESCENTELBOW", SI_CRESCENTELBOW, false, false);
- script->set_constant("SI_NOEQUIPACCESSARY", SI_NOEQUIPACCESSARY, false, false);
- script->set_constant("SI_STRIPACCESSARY", SI_STRIPACCESSARY, false, false);
- script->set_constant("SI_MANHOLE", SI_MANHOLE, false, false);
- script->set_constant("SI_POPECOOKIE", SI_POPECOOKIE, false, false);
- script->set_constant("SI_FALLENEMPIRE", SI_FALLENEMPIRE, false, false);
- script->set_constant("SI_GENTLETOUCH_ENERGYGAIN", SI_GENTLETOUCH_ENERGYGAIN, false, false);
- script->set_constant("SI_GENTLETOUCH_CHANGE", SI_GENTLETOUCH_CHANGE, false, false);
- script->set_constant("SI_GENTLETOUCH_REVITALIZE", SI_GENTLETOUCH_REVITALIZE, false, false);
- script->set_constant("SI_BLOODYLUST", SI_BLOODYLUST, false, false);
- script->set_constant("SI_SWINGDANCE", SI_SWINGDANCE, false, false);
- script->set_constant("SI_SYMPHONYOFLOVERS", SI_SYMPHONYOFLOVERS, false, false);
- script->set_constant("SI_PROPERTYWALK", SI_PROPERTYWALK, false, false);
- script->set_constant("SI_SPELLFIST", SI_SPELLFIST, false, false);
- script->set_constant("SI_NETHERWORLD", SI_NETHERWORLD, false, false);
- script->set_constant("SI_SIREN", SI_SIREN, false, false);
- script->set_constant("SI_DEEPSLEEP", SI_DEEPSLEEP, false, false);
- script->set_constant("SI_SIRCLEOFNATURE", SI_SIRCLEOFNATURE, false, false);
- script->set_constant("SI_COLD", SI_COLD, false, false);
- script->set_constant("SI_GLOOMYDAY", SI_GLOOMYDAY, false, false);
- script->set_constant("SI_SONG_OF_MANA", SI_SONG_OF_MANA, false, false);
- script->set_constant("SI_CLOUDKILL", SI_CLOUDKILL, false, false);
- script->set_constant("SI_DANCEWITHWUG", SI_DANCEWITHWUG, false, false);
- script->set_constant("SI_RUSHWINDMILL", SI_RUSHWINDMILL, false, false);
- script->set_constant("SI_ECHOSONG", SI_ECHOSONG, false, false);
- script->set_constant("SI_HARMONIZE", SI_HARMONIZE, false, false);
- script->set_constant("SI_STRIKING", SI_STRIKING, false, false);
- //script->set_constant("SI_WARMER", SI_WARMER, false, false);
- script->set_constant("SI_MOONLITSERENADE", SI_MOONLITSERENADE, false, false);
- script->set_constant("SI_SATURDAYNIGHTFEVER", SI_SATURDAYNIGHTFEVER, false, false);
- script->set_constant("SI_SITDOWN_FORCE", SI_SITDOWN_FORCE, false, false);
-
- script->set_constant("SI_ANALYZE", SI_ANALYZE, false, false);
- script->set_constant("SI_LERADSDEW", SI_LERADSDEW, false, false);
- script->set_constant("SI_MELODYOFSINK", SI_MELODYOFSINK, false, false);
- script->set_constant("SI_WARCRYOFBEYOND", SI_WARCRYOFBEYOND, false, false);
- script->set_constant("SI_UNLIMITEDHUMMINGVOICE", SI_UNLIMITEDHUMMINGVOICE, false, false);
- script->set_constant("SI_SPELLBOOK1", SI_SPELLBOOK1, false, false);
- script->set_constant("SI_SPELLBOOK2", SI_SPELLBOOK2, false, false);
- script->set_constant("SI_SPELLBOOK3", SI_SPELLBOOK3, false, false);
- script->set_constant("SI_FREEZE_SP", SI_FREEZE_SP, false, false);
- script->set_constant("SI_GN_TRAINING_SWORD", SI_GN_TRAINING_SWORD, false, false);
- script->set_constant("SI_GN_REMODELING_CART", SI_GN_REMODELING_CART, false, false);
- script->set_constant("SI_CARTSBOOST", SI_CARTSBOOST, false, false);
- script->set_constant("SI_FIXEDCASTINGTM_REDUCE", SI_FIXEDCASTINGTM_REDUCE, false, false);
- script->set_constant("SI_THORNTRAP", SI_THORNTRAP, false, false);
- script->set_constant("SI_BLOODSUCKER", SI_BLOODSUCKER, false, false);
- script->set_constant("SI_SPORE_EXPLOSION", SI_SPORE_EXPLOSION, false, false);
- script->set_constant("SI_DEMONIC_FIRE", SI_DEMONIC_FIRE, false, false);
- script->set_constant("SI_FIRE_EXPANSION_SMOKE_POWDER", SI_FIRE_EXPANSION_SMOKE_POWDER, false, false);
- script->set_constant("SI_FIRE_EXPANSION_TEAR_GAS", SI_FIRE_EXPANSION_TEAR_GAS, false, false);
- script->set_constant("SI_BLOCKING_PLAY", SI_BLOCKING_PLAY, false, false);
- script->set_constant("SI_MANDRAGORA", SI_MANDRAGORA, false, false);
- script->set_constant("SI_ACTIVATE", SI_ACTIVATE, false, false);
- script->set_constant("SI_SECRAMENT", SI_SECRAMENT, false, false);
- script->set_constant("SI_ASSUMPTIO2", SI_ASSUMPTIO2, false, false);
- script->set_constant("SI_TK_SEVENWIND", SI_TK_SEVENWIND, false, false);
- script->set_constant("SI_LIMIT_ODINS_RECALL", SI_LIMIT_ODINS_RECALL, false, false);
- script->set_constant("SI_STOMACHACHE", SI_STOMACHACHE, false, false);
- script->set_constant("SI_MYSTERIOUS_POWDER", SI_MYSTERIOUS_POWDER, false, false);
- script->set_constant("SI_MELON_BOMB", SI_MELON_BOMB, false, false);
- script->set_constant("SI_BANANA_BOMB_SITDOWN_POSTDELAY", SI_BANANA_BOMB_SITDOWN_POSTDELAY, false, false);
- script->set_constant("SI_PROMOTE_HEALTH_RESERCH", SI_PROMOTE_HEALTH_RESERCH, false, false);
- script->set_constant("SI_ENERGY_DRINK_RESERCH", SI_ENERGY_DRINK_RESERCH, false, false);
- script->set_constant("SI_EXTRACT_WHITE_POTION_Z", SI_EXTRACT_WHITE_POTION_Z, false, false);
- script->set_constant("SI_VITATA_500", SI_VITATA_500, false, false);
- script->set_constant("SI_EXTRACT_SALAMINE_JUICE", SI_EXTRACT_SALAMINE_JUICE, false, false);
- script->set_constant("SI_BOOST500", SI_BOOST500, false, false);
- script->set_constant("SI_FULL_SWING_K", SI_FULL_SWING_K, false, false);
- script->set_constant("SI_MANA_PLUS", SI_MANA_PLUS, false, false);
- script->set_constant("SI_MUSTLE_M", SI_MUSTLE_M, false, false);
- script->set_constant("SI_LIFE_FORCE_F", SI_LIFE_FORCE_F, false, false);
- script->set_constant("SI_VACUUM_EXTREME", SI_VACUUM_EXTREME, false, false);
- script->set_constant("SI_SAVAGE_STEAK", SI_SAVAGE_STEAK, false, false);
- script->set_constant("SI_COCKTAIL_WARG_BLOOD", SI_COCKTAIL_WARG_BLOOD, false, false);
- script->set_constant("SI_MINOR_BBQ", SI_MINOR_BBQ, false, false);
- script->set_constant("SI_SIROMA_ICE_TEA", SI_SIROMA_ICE_TEA, false, false);
- script->set_constant("SI_DROCERA_HERB_STEAMED", SI_DROCERA_HERB_STEAMED, false, false);
- script->set_constant("SI_PUTTI_TAILS_NOODLES", SI_PUTTI_TAILS_NOODLES, false, false);
- script->set_constant("SI_BANANA_BOMB", SI_BANANA_BOMB, false, false);
- script->set_constant("SI_SUMMON_AGNI", SI_SUMMON_AGNI, false, false);
- script->set_constant("SI_SPELLBOOK4", SI_SPELLBOOK4, false, false);
-
- script->set_constant("SI_SPELLBOOK5", SI_SPELLBOOK5, false, false);
- script->set_constant("SI_SPELLBOOK6", SI_SPELLBOOK6, false, false);
- script->set_constant("SI_SPELLBOOK7", SI_SPELLBOOK7, false, false);
- script->set_constant("SI_ELEMENTAL_AGGRESSIVE", SI_ELEMENTAL_AGGRESSIVE, false, false);
- script->set_constant("SI_RETURN_TO_ELDICASTES", SI_RETURN_TO_ELDICASTES, false, false);
- script->set_constant("SI_BANDING_DEFENCE", SI_BANDING_DEFENCE, false, false);
- script->set_constant("SI_SKELSCROLL", SI_SKELSCROLL, false, false);
- script->set_constant("SI_DISTRUCTIONSCROLL", SI_DISTRUCTIONSCROLL, false, false);
- script->set_constant("SI_ROYALSCROLL", SI_ROYALSCROLL, false, false);
- script->set_constant("SI_IMMUNITYSCROLL", SI_IMMUNITYSCROLL, false, false);
- script->set_constant("SI_MYSTICSCROLL", SI_MYSTICSCROLL, false, false);
- script->set_constant("SI_BATTLESCROLL", SI_BATTLESCROLL, false, false);
- script->set_constant("SI_ARMORSCROLL", SI_ARMORSCROLL, false, false);
- script->set_constant("SI_FREYJASCROLL", SI_FREYJASCROLL, false, false);
- script->set_constant("SI_SOULSCROLL", SI_SOULSCROLL, false, false);
- script->set_constant("SI_CIRCLE_OF_FIRE", SI_CIRCLE_OF_FIRE, false, false);
- script->set_constant("SI_CIRCLE_OF_FIRE_OPTION", SI_CIRCLE_OF_FIRE_OPTION, false, false);
- script->set_constant("SI_FIRE_CLOAK", SI_FIRE_CLOAK, false, false);
- script->set_constant("SI_FIRE_CLOAK_OPTION", SI_FIRE_CLOAK_OPTION, false, false);
- script->set_constant("SI_WATER_SCREEN", SI_WATER_SCREEN, false, false);
- script->set_constant("SI_WATER_SCREEN_OPTION", SI_WATER_SCREEN_OPTION, false, false);
- script->set_constant("SI_WATER_DROP", SI_WATER_DROP, false, false);
- script->set_constant("SI_WATER_DROP_OPTION", SI_WATER_DROP_OPTION, false, false);
- script->set_constant("SI_WIND_STEP", SI_WIND_STEP, false, false);
- script->set_constant("SI_WIND_STEP_OPTION", SI_WIND_STEP_OPTION, false, false);
- script->set_constant("SI_WIND_CURTAIN", SI_WIND_CURTAIN, false, false);
- script->set_constant("SI_WIND_CURTAIN_OPTION", SI_WIND_CURTAIN_OPTION, false, false);
- script->set_constant("SI_WATER_BARRIER", SI_WATER_BARRIER, false, false);
- script->set_constant("SI_ZEPHYR", SI_ZEPHYR, false, false);
- script->set_constant("SI_SOLID_SKIN", SI_SOLID_SKIN, false, false);
- script->set_constant("SI_SOLID_SKIN_OPTION", SI_SOLID_SKIN_OPTION, false, false);
- script->set_constant("SI_STONE_SHIELD", SI_STONE_SHIELD, false, false);
- script->set_constant("SI_STONE_SHIELD_OPTION", SI_STONE_SHIELD_OPTION, false, false);
- script->set_constant("SI_POWER_OF_GAIA", SI_POWER_OF_GAIA, false, false);
- //script->set_constant("SI_EL_WAIT", SI_EL_WAIT, false, false);
- //script->set_constant("SI_EL_PASSIVE", SI_EL_PASSIVE, false, false);
- //script->set_constant("SI_EL_DEFENSIVE", SI_EL_DEFENSIVE, false, false);
- //script->set_constant("SI_EL_OFFENSIVE", SI_EL_OFFENSIVE, false, false);
- //script->set_constant("SI_EL_COST", SI_EL_COST, false, false);
- script->set_constant("SI_PYROTECHNIC", SI_PYROTECHNIC, false, false);
- script->set_constant("SI_PYROTECHNIC_OPTION", SI_PYROTECHNIC_OPTION, false, false);
- script->set_constant("SI_HEATER", SI_HEATER, false, false);
- script->set_constant("SI_HEATER_OPTION", SI_HEATER_OPTION, false, false);
- script->set_constant("SI_TROPIC", SI_TROPIC, false, false);
- script->set_constant("SI_TROPIC_OPTION", SI_TROPIC_OPTION, false, false);
- script->set_constant("SI_AQUAPLAY", SI_AQUAPLAY, false, false);
- script->set_constant("SI_AQUAPLAY_OPTION", SI_AQUAPLAY_OPTION, false, false);
- script->set_constant("SI_COOLER", SI_COOLER, false, false);
- script->set_constant("SI_COOLER_OPTION", SI_COOLER_OPTION, false, false);
- script->set_constant("SI_CHILLY_AIR", SI_CHILLY_AIR, false, false);
-
- script->set_constant("SI_CHILLY_AIR_OPTION", SI_CHILLY_AIR_OPTION, false, false);
- script->set_constant("SI_GUST", SI_GUST, false, false);
- script->set_constant("SI_GUST_OPTION", SI_GUST_OPTION, false, false);
- script->set_constant("SI_BLAST", SI_BLAST, false, false);
- script->set_constant("SI_BLAST_OPTION", SI_BLAST_OPTION, false, false);
- script->set_constant("SI_WILD_STORM", SI_WILD_STORM, false, false);
- script->set_constant("SI_WILD_STORM_OPTION", SI_WILD_STORM_OPTION, false, false);
- script->set_constant("SI_PETROLOGY", SI_PETROLOGY, false, false);
- script->set_constant("SI_PETROLOGY_OPTION", SI_PETROLOGY_OPTION, false, false);
- script->set_constant("SI_CURSED_SOIL", SI_CURSED_SOIL, false, false);
- script->set_constant("SI_CURSED_SOIL_OPTION", SI_CURSED_SOIL_OPTION, false, false);
- script->set_constant("SI_UPHEAVAL", SI_UPHEAVAL, false, false);
- script->set_constant("SI_UPHEAVAL_OPTION", SI_UPHEAVAL_OPTION, false, false);
- script->set_constant("SI_TIDAL_WEAPON", SI_TIDAL_WEAPON, false, false);
- script->set_constant("SI_TIDAL_WEAPON_OPTION", SI_TIDAL_WEAPON_OPTION, false, false);
- script->set_constant("SI_ROCK_CRUSHER", SI_ROCK_CRUSHER, false, false);
- script->set_constant("SI_ROCK_CRUSHER_ATK", SI_ROCK_CRUSHER_ATK, false, false);
- script->set_constant("SI_FIRE_INSIGNIA", SI_FIRE_INSIGNIA, false, false);
- script->set_constant("SI_WATER_INSIGNIA", SI_WATER_INSIGNIA, false, false);
- script->set_constant("SI_WIND_INSIGNIA", SI_WIND_INSIGNIA, false, false);
- script->set_constant("SI_EARTH_INSIGNIA", SI_EARTH_INSIGNIA, false, false);
- script->set_constant("SI_EQUIPED_FLOOR", SI_EQUIPED_FLOOR, false, false);
- script->set_constant("SI_GUARDIAN_RECALL", SI_GUARDIAN_RECALL, false, false);
- script->set_constant("SI_MORA_BUFF", SI_MORA_BUFF, false, false);
- script->set_constant("SI_REUSE_LIMIT_G", SI_REUSE_LIMIT_G, false, false);
- script->set_constant("SI_REUSE_LIMIT_H", SI_REUSE_LIMIT_H, false, false);
- script->set_constant("SI_NEEDLE_OF_PARALYZE", SI_NEEDLE_OF_PARALYZE, false, false);
- script->set_constant("SI_PAIN_KILLER", SI_PAIN_KILLER, false, false);
- script->set_constant("SI_G_LIFEPOTION", SI_G_LIFEPOTION, false, false);
- script->set_constant("SI_VITALIZE_POTION", SI_VITALIZE_POTION, false, false);
- script->set_constant("SI_LIGHT_OF_REGENE", SI_LIGHT_OF_REGENE, false, false);
- script->set_constant("SI_OVERED_BOOST", SI_OVERED_BOOST, false, false);
- script->set_constant("SI_SILENT_BREEZE", SI_SILENT_BREEZE, false, false);
- script->set_constant("SI_ODINS_POWER", SI_ODINS_POWER, false, false);
- script->set_constant("SI_STYLE_CHANGE", SI_STYLE_CHANGE, false, false);
- script->set_constant("SI_SONIC_CLAW_POSTDELAY", SI_SONIC_CLAW_POSTDELAY, false, false);
- // 586
- // 587
- // 588
- // 589
- // 590
- // 591
- // 592
- // 593
- // 594
- // 595
- script->set_constant("SI_SILVERVEIN_RUSH_POSTDELAY", SI_SILVERVEIN_RUSH_POSTDELAY, false, false);
- script->set_constant("SI_MIDNIGHT_FRENZY_POSTDELAY", SI_MIDNIGHT_FRENZY_POSTDELAY, false, false);
- script->set_constant("SI_GOLDENE_FERSE", SI_GOLDENE_FERSE, false, false);
- script->set_constant("SI_ANGRIFFS_MODUS", SI_ANGRIFFS_MODUS, false, false);
-
- script->set_constant("SI_TINDER_BREAKER", SI_TINDER_BREAKER, false, false);
- script->set_constant("SI_TINDER_BREAKER_POSTDELAY", SI_TINDER_BREAKER_POSTDELAY, false, false);
- script->set_constant("SI_CBC", SI_CBC, false, false);
- script->set_constant("SI_CBC_POSTDELAY", SI_CBC_POSTDELAY, false, false);
- script->set_constant("SI_EQC", SI_EQC, false, false);
- script->set_constant("SI_MAGMA_FLOW", SI_MAGMA_FLOW, false, false);
- script->set_constant("SI_GRANITIC_ARMOR", SI_GRANITIC_ARMOR, false, false);
- script->set_constant("SI_PYROCLASTIC", SI_PYROCLASTIC, false, false);
- script->set_constant("SI_VOLCANIC_ASH", SI_VOLCANIC_ASH, false, false);
- script->set_constant("SI_SPIRITS_SAVEINFO1", SI_SPIRITS_SAVEINFO1, false, false);
- script->set_constant("SI_SPIRITS_SAVEINFO2", SI_SPIRITS_SAVEINFO2, false, false);
- script->set_constant("SI_MAGIC_CANDY", SI_MAGIC_CANDY, false, false);
- script->set_constant("SI_SEARCH_STORE_INFO", SI_SEARCH_STORE_INFO, false, false);
- script->set_constant("SI_ALL_RIDING", SI_ALL_RIDING, false, false);
- script->set_constant("SI_ALL_RIDING_REUSE_LIMIT", SI_ALL_RIDING_REUSE_LIMIT, false, false);
- script->set_constant("SI_MACRO", SI_MACRO, false, false);
- script->set_constant("SI_MACRO_POSTDELAY", SI_MACRO_POSTDELAY, false, false);
- script->set_constant("SI_BEER_BOTTLE_CAP", SI_BEER_BOTTLE_CAP, false, false);
- script->set_constant("SI_OVERLAPEXPUP", SI_OVERLAPEXPUP, false, false);
- script->set_constant("SI_PC_IZ_DUN05", SI_PC_IZ_DUN05, false, false);
- script->set_constant("SI_CRUSHSTRIKE", SI_CRUSHSTRIKE, false, false);
- script->set_constant("SI_MONSTER_TRANSFORM", SI_MONSTER_TRANSFORM, false, false);
- script->set_constant("SI_SIT", SI_SIT, false, false);
- script->set_constant("SI_ONAIR", SI_ONAIR, false, false);
- script->set_constant("SI_MTF_ASPD", SI_MTF_ASPD, false, false);
- script->set_constant("SI_MTF_RANGEATK", SI_MTF_RANGEATK, false, false);
- script->set_constant("SI_MTF_MATK", SI_MTF_MATK, false, false);
- script->set_constant("SI_MTF_MLEATKED", SI_MTF_MLEATKED, false, false);
- script->set_constant("SI_MTF_CRIDAMAGE", SI_MTF_CRIDAMAGE, false, false);
- script->set_constant("SI_REUSE_LIMIT_MTF", SI_REUSE_LIMIT_MTF, false, false);
- script->set_constant("SI_MACRO_PERMIT", SI_MACRO_PERMIT, false, false);
- script->set_constant("SI_MACRO_PLAY", SI_MACRO_PLAY, false, false);
- script->set_constant("SI_SKF_CAST", SI_SKF_CAST, false, false);
- script->set_constant("SI_SKF_ASPD", SI_SKF_ASPD, false, false);
- script->set_constant("SI_SKF_ATK", SI_SKF_ATK, false, false);
- script->set_constant("SI_SKF_MATK", SI_SKF_MATK, false, false);
- script->set_constant("SI_REWARD_PLUSONLYJOBEXP", SI_REWARD_PLUSONLYJOBEXP, false, false);
- script->set_constant("SI_HANDICAPSTATE_NORECOVER", SI_HANDICAPSTATE_NORECOVER, false, false);
- script->set_constant("SI_SET_NUM_DEF", SI_SET_NUM_DEF, false, false);
- script->set_constant("SI_SET_NUM_MDEF", SI_SET_NUM_MDEF, false, false);
- script->set_constant("SI_SET_PER_DEF", SI_SET_PER_DEF, false, false);
- script->set_constant("SI_SET_PER_MDEF", SI_SET_PER_MDEF, false, false);
- script->set_constant("SI_PARTYBOOKING_SEARCH_DEALY", SI_PARTYBOOKING_SEARCH_DEALY, false, false);
- script->set_constant("SI_PARTYBOOKING_REGISTER_DEALY", SI_PARTYBOOKING_REGISTER_DEALY, false, false);
- script->set_constant("SI_PERIOD_TIME_CHECK_DETECT_SKILL", SI_PERIOD_TIME_CHECK_DETECT_SKILL, false, false);
- script->set_constant("SI_KO_JYUMONJIKIRI", SI_KO_JYUMONJIKIRI, false, false);
- script->set_constant("SI_MEIKYOUSISUI", SI_MEIKYOUSISUI, false, false);
- script->set_constant("SI_ATTHASTE_CASH", SI_ATTHASTE_CASH, false, false);
- script->set_constant("SI_EQUIPPED_DIVINE_ARMOR", SI_EQUIPPED_DIVINE_ARMOR, false, false);
- script->set_constant("SI_EQUIPPED_HOLY_ARMOR", SI_EQUIPPED_HOLY_ARMOR, false, false);
-
- script->set_constant("SI_2011RWC", SI_2011RWC, false, false);
- script->set_constant("SI_KYOUGAKU", SI_KYOUGAKU, false, false);
- script->set_constant("SI_IZAYOI", SI_IZAYOI, false, false);
- script->set_constant("SI_ZENKAI", SI_ZENKAI, false, false);
- script->set_constant("SI_KG_KAGEHUMI", SI_KG_KAGEHUMI, false, false);
- script->set_constant("SI_KYOMU", SI_KYOMU, false, false);
- script->set_constant("SI_KAGEMUSYA", SI_KAGEMUSYA, false, false);
- script->set_constant("SI_ZANGETSU", SI_ZANGETSU, false, false);
- script->set_constant("SI_PHI_DEMON", SI_PHI_DEMON, false, false);
- script->set_constant("SI_GENSOU", SI_GENSOU, false, false);
- script->set_constant("SI_AKAITSUKI", SI_AKAITSUKI, false, false);
- script->set_constant("SI_TETANY", SI_TETANY, false, false);
- script->set_constant("SI_GM_BATTLE", SI_GM_BATTLE, false, false);
- script->set_constant("SI_GM_BATTLE2", SI_GM_BATTLE2, false, false);
- script->set_constant("SI_2011RWC_SCROLL", SI_2011RWC_SCROLL, false, false);
- script->set_constant("SI_ACTIVE_MONSTER_TRANSFORM", SI_ACTIVE_MONSTER_TRANSFORM, false, false);
- script->set_constant("SI_MYSTICPOWDER", SI_MYSTICPOWDER, false, false);
- script->set_constant("SI_ECLAGE_RECALL", SI_ECLAGE_RECALL, false, false);
- script->set_constant("SI_ENTRY_QUEUE_APPLY_DELAY", SI_ENTRY_QUEUE_APPLY_DELAY, false, false);
- script->set_constant("SI_REUSE_LIMIT_ECL", SI_REUSE_LIMIT_ECL, false, false);
- script->set_constant("SI_M_LIFEPOTION", SI_M_LIFEPOTION, false, false);
- script->set_constant("SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT", SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT, false, false);
- script->set_constant("SI_UNKNOWN_NAME", SI_UNKNOWN_NAME, false, false);
- script->set_constant("SI_ON_PUSH_CART", SI_ON_PUSH_CART, false, false);
- script->set_constant("SI_HAT_EFFECT", SI_HAT_EFFECT, false, false);
- script->set_constant("SI_FLOWER_LEAF", SI_FLOWER_LEAF, false, false);
- script->set_constant("SI_RAY_OF_PROTECTION", SI_RAY_OF_PROTECTION, false, false);
- script->set_constant("SI_GLASTHEIM_ATK", SI_GLASTHEIM_ATK, false, false);
- script->set_constant("SI_GLASTHEIM_DEF", SI_GLASTHEIM_DEF, false, false);
- script->set_constant("SI_GLASTHEIM_HEAL", SI_GLASTHEIM_HEAL, false, false);
- script->set_constant("SI_GLASTHEIM_HIDDEN", SI_GLASTHEIM_HIDDEN, false, false);
- script->set_constant("SI_GLASTHEIM_STATE", SI_GLASTHEIM_STATE, false, false);
- script->set_constant("SI_GLASTHEIM_ITEMDEF", SI_GLASTHEIM_ITEMDEF, false, false);
- script->set_constant("SI_GLASTHEIM_HPSP", SI_GLASTHEIM_HPSP, false, false);
- script->set_constant("SI_HOMUN_SKILL_POSTDELAY", SI_HOMUN_SKILL_POSTDELAY, false, false);
- script->set_constant("SI_ALMIGHTY", SI_ALMIGHTY, false, false);
- script->set_constant("SI_GVG_GIANT", SI_GVG_GIANT, false, false);
- script->set_constant("SI_GVG_GOLEM", SI_GVG_GOLEM, false, false);
- script->set_constant("SI_GVG_STUN", SI_GVG_STUN, false, false);
- script->set_constant("SI_GVG_STONE", SI_GVG_STONE, false, false);
- script->set_constant("SI_GVG_FREEZ", SI_GVG_FREEZ, false, false);
- script->set_constant("SI_GVG_SLEEP", SI_GVG_SLEEP, false, false);
- script->set_constant("SI_GVG_CURSE", SI_GVG_CURSE, false, false);
- script->set_constant("SI_GVG_SILENCE", SI_GVG_SILENCE, false, false);
- script->set_constant("SI_GVG_BLIND", SI_GVG_BLIND, false, false);
- script->set_constant("SI_CLIENT_ONLY_EQUIP_ARROW", SI_CLIENT_ONLY_EQUIP_ARROW, false, false);
- script->set_constant("SI_CLAN_INFO", SI_CLAN_INFO, false, false);
- script->set_constant("SI_JP_EVENT01", SI_JP_EVENT01, false, false);
- script->set_constant("SI_JP_EVENT02", SI_JP_EVENT02, false, false);
- script->set_constant("SI_JP_EVENT03", SI_JP_EVENT03, false, false);
-
- script->set_constant("SI_JP_EVENT04", SI_JP_EVENT04, false, false);
- script->set_constant("SI_TELEPORT_FIXEDCASTINGDELAY", SI_TELEPORT_FIXEDCASTINGDELAY, false, false);
- script->set_constant("SI_GEFFEN_MAGIC1", SI_GEFFEN_MAGIC1, false, false);
- script->set_constant("SI_GEFFEN_MAGIC2", SI_GEFFEN_MAGIC2, false, false);
- script->set_constant("SI_GEFFEN_MAGIC3", SI_GEFFEN_MAGIC3, false, false);
- script->set_constant("SI_QUEST_BUFF1", SI_QUEST_BUFF1, false, false);
- script->set_constant("SI_QUEST_BUFF2", SI_QUEST_BUFF2, false, false);
- script->set_constant("SI_QUEST_BUFF3", SI_QUEST_BUFF3, false, false);
- script->set_constant("SI_REUSE_LIMIT_RECALL", SI_REUSE_LIMIT_RECALL, false, false);
- script->set_constant("SI_SAVEPOSITION", SI_SAVEPOSITION, false, false);
- script->set_constant("SI_HANDICAPSTATE_ICEEXPLO", SI_HANDICAPSTATE_ICEEXPLO, false, false);
- script->set_constant("SI_FENRIR_CARD", SI_FENRIR_CARD, false, false);
- script->set_constant("SI_REUSE_LIMIT_ASPD_POTION", SI_REUSE_LIMIT_ASPD_POTION, false, false);
- script->set_constant("SI_MAXPAIN", SI_MAXPAIN, false, false);
- script->set_constant("SI_PC_STOP", SI_PC_STOP, false, false);
- script->set_constant("SI_FRIGG_SONG", SI_FRIGG_SONG, false, false);
- script->set_constant("SI_OFFERTORIUM", SI_OFFERTORIUM, false, false);
- script->set_constant("SI_TELEKINESIS_INTENSE", SI_TELEKINESIS_INTENSE, false, false);
- script->set_constant("SI_MOONSTAR", SI_MOONSTAR, false, false);
- script->set_constant("SI_STRANGELIGHTS", SI_STRANGELIGHTS, false, false);
- script->set_constant("SI_FULL_THROTTLE", SI_FULL_THROTTLE, false, false);
- script->set_constant("SI_REBOUND", SI_REBOUND, false, false);
- script->set_constant("SI_UNLIMIT", SI_UNLIMIT, false, false);
- script->set_constant("SI_KINGS_GRACE", SI_KINGS_GRACE, false, false);
- script->set_constant("SI_ITEM_ATKMAX", SI_ITEM_ATKMAX, false, false);
- script->set_constant("SI_ITEM_ATKMIN", SI_ITEM_ATKMIN, false, false);
- script->set_constant("SI_ITEM_MATKMAX", SI_ITEM_MATKMAX, false, false);
- script->set_constant("SI_ITEM_MATKMIN", SI_ITEM_MATKMIN, false, false);
- script->set_constant("SI_SUPER_STAR", SI_SUPER_STAR, false, false);
- script->set_constant("SI_HIGH_RANKER", SI_HIGH_RANKER, false, false);
- script->set_constant("SI_DARKCROW", SI_DARKCROW, false, false);
- script->set_constant("SI_2013_VALENTINE1", SI_2013_VALENTINE1, false, false);
- script->set_constant("SI_2013_VALENTINE2", SI_2013_VALENTINE2, false, false);
- script->set_constant("SI_2013_VALENTINE3", SI_2013_VALENTINE3, false, false);
- script->set_constant("SI_ILLUSIONDOPING", SI_ILLUSIONDOPING, false, false);
- //script->set_constant("SI_WIDEWEB", SI_WIDEWEB, false, false);
- script->set_constant("SI_CHILL", SI_CHILL, false, false);
- script->set_constant("SI_BURNT", SI_BURNT, false, false);
- //script->set_constant("SI_PCCAFE_PLAY_TIME", SI_PCCAFE_PLAY_TIME, false, false);
- //script->set_constant("SI_TWISTED_TIME", SI_TWISTED_TIME, false, false);
- script->set_constant("SI_FLASHCOMBO", SI_FLASHCOMBO, false, false);
- //script->set_constant("SI_JITTER_BUFF1", SI_JITTER_BUFF1, false, false);
- //script->set_constant("SI_JITTER_BUFF2", SI_JITTER_BUFF2, false, false);
- //script->set_constant("SI_JITTER_BUFF3", SI_JITTER_BUFF3, false, false);
- //script->set_constant("SI_JITTER_BUFF4", SI_JITTER_BUFF4, false, false);
- //script->set_constant("SI_JITTER_BUFF5", SI_JITTER_BUFF5, false, false);
- //script->set_constant("SI_JITTER_BUFF6", SI_JITTER_BUFF6, false, false);
- //script->set_constant("SI_JITTER_BUFF7", SI_JITTER_BUFF7, false, false);
- //script->set_constant("SI_JITTER_BUFF8", SI_JITTER_BUFF8, false, false);
- //script->set_constant("SI_JITTER_BUFF9", SI_JITTER_BUFF9, false, false);
-
- //script->set_constant("SI_JITTER_BUFF10", SI_JITTER_BUFF10, false, false);
- script->set_constant("SI_CUP_OF_BOZA", SI_CUP_OF_BOZA, false, false);
- script->set_constant("SI_B_TRAP", SI_B_TRAP, false, false);
- script->set_constant("SI_E_CHAIN", SI_E_CHAIN, false, false);
- script->set_constant("SI_E_QD_SHOT_READY", SI_E_QD_SHOT_READY, false, false);
- script->set_constant("SI_C_MARKER", SI_C_MARKER, false, false);
- script->set_constant("SI_H_MINE", SI_H_MINE, false, false);
- script->set_constant("SI_H_MINE_SPLASH", SI_H_MINE_SPLASH, false, false);
- script->set_constant("SI_P_ALTER", SI_P_ALTER, false, false);
- script->set_constant("SI_HEAT_BARREL", SI_HEAT_BARREL, false, false);
- script->set_constant("SI_ANTI_M_BLAST", SI_ANTI_M_BLAST, false, false);
- script->set_constant("SI_SLUGSHOT", SI_SLUGSHOT, false, false);
- script->set_constant("SI_SWORDCLAN", SI_SWORDCLAN, false, false);
- script->set_constant("SI_ARCWANDCLAN", SI_ARCWANDCLAN, false, false);
- script->set_constant("SI_GOLDENMACECLAN", SI_GOLDENMACECLAN, false, false);
- script->set_constant("SI_CROSSBOWCLAN", SI_CROSSBOWCLAN, false, false);
- script->set_constant("SI_PACKING_ENVELOPE1", SI_PACKING_ENVELOPE1, false, false);
- script->set_constant("SI_PACKING_ENVELOPE2", SI_PACKING_ENVELOPE2, false, false);
- script->set_constant("SI_PACKING_ENVELOPE3", SI_PACKING_ENVELOPE3, false, false);
- script->set_constant("SI_PACKING_ENVELOPE4", SI_PACKING_ENVELOPE4, false, false);
- script->set_constant("SI_PACKING_ENVELOPE5", SI_PACKING_ENVELOPE5, false, false);
- script->set_constant("SI_PACKING_ENVELOPE6", SI_PACKING_ENVELOPE6, false, false);
- script->set_constant("SI_PACKING_ENVELOPE7", SI_PACKING_ENVELOPE7, false, false);
- script->set_constant("SI_PACKING_ENVELOPE8", SI_PACKING_ENVELOPE8, false, false);
- script->set_constant("SI_PACKING_ENVELOPE9", SI_PACKING_ENVELOPE9, false, false);
- script->set_constant("SI_PACKING_ENVELOPE10", SI_PACKING_ENVELOPE10, false, false);
- script->set_constant("SI_GLASTHEIM_TRANS", SI_GLASTHEIM_TRANS, false, false);
- //script->set_constant("SI_ZONGZI_POUCH_TRANS", SI_ZONGZI_POUCH_TRANS, false, false);
- script->set_constant("SI_HEAT_BARREL_AFTER", SI_HEAT_BARREL_AFTER, false, false);
- script->set_constant("SI_DECORATION_OF_MUSIC", SI_DECORATION_OF_MUSIC, false, false);
- //script->set_constant("SI_OVERSEAEXPUP", SI_OVERSEAEXPUP, false, false);
- //script->set_constant("SI_CLOWN_N_GYPSY_CARD", SI_CLOWN_N_GYPSY_CARD, false, false);
- //script->set_constant("SI_OPEN_NPC_MARKET", SI_OPEN_NPC_MARKET, false, false);
- //script->set_constant("SI_BEEF_RIB_STEW", SI_BEEF_RIB_STEW, false, false);
- //script->set_constant("SI_PORK_RIB_STEW", SI_PORK_RIB_STEW, false, false);
- //script->set_constant("SI_CHUSEOK_MONDAY", SI_CHUSEOK_MONDAY, false, false);
- //script->set_constant("SI_CHUSEOK_TUESDAY", SI_CHUSEOK_TUESDAY, false, false);
- //script->set_constant("SI_CHUSEOK_WEDNESDAY", SI_CHUSEOK_WEDNESDAY, false, false);
- //script->set_constant("SI_CHUSEOK_THURSDAY", SI_CHUSEOK_THURSDAY, false, false);
- //script->set_constant("SI_CHUSEOK_FRIDAY", SI_CHUSEOK_FRIDAY, false, false);
- //script->set_constant("SI_CHUSEOK_WEEKEND", SI_CHUSEOK_WEEKEND, false, false);
- //script->set_constant("SI_ALL_LIGHTGUARD", SI_ALL_LIGHTGUARD, false, false);
- //script->set_constant("SI_ALL_LIGHTGUARD_COOL_TIME", SI_ALL_LIGHTGUARD_COOL_TIME, false, false);
- script->set_constant("SI_MTF_MHP", SI_MTF_MHP, false, false);
- script->set_constant("SI_MTF_MSP", SI_MTF_MSP, false, false);
- script->set_constant("SI_MTF_PUMPKIN", SI_MTF_PUMPKIN, false, false);
- script->set_constant("SI_MTF_HITFLEE", SI_MTF_HITFLEE, false, false);
- //script->set_constant("SI_MTF_CRIDAMAGE2", SI_MTF_CRIDAMAGE2, false, false);
- //script->set_constant("SI_MTF_SPDRAIN", SI_MTF_SPDRAIN, false, false);
- //script->set_constant("SI_ACUO_MINT_GUM", SI_ACUO_MINT_GUM, false, false);
-
- //script->set_constant("SI_S_HEALPOTION", SI_S_HEALPOTION, false, false);
- //script->set_constant("SI_REUSE_LIMIT_S_HEAL_POTION", SI_REUSE_LIMIT_S_HEAL_POTION, false, false);
- //script->set_constant("SI_PLAYTIME_STATISTICS", SI_PLAYTIME_STATISTICS, false, false);
- //script->set_constant("SI_GN_CHANGEMATERIAL_OPERATOR", SI_GN_CHANGEMATERIAL_OPERATOR, false, false);
- //script->set_constant("SI_GN_MIX_COOKING_OPERATOR", SI_GN_MIX_COOKING_OPERATOR, false, false);
- //script->set_constant("SI_GN_MAKEBOMB_OPERATOR", SI_GN_MAKEBOMB_OPERATOR, false, false);
- //script->set_constant("SI_GN_S_PHARMACY_OPERATOR", SI_GN_S_PHARMACY_OPERATOR, false, false);
- //script->set_constant("SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR", SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR, false, false);
- //script->set_constant("SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR", SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR, false, false);
- //script->set_constant("SI_NC_MAGICDECOY_OPERATOR", SI_NC_MAGICDECOY_OPERATOR, false, false);
- //script->set_constant("SI_GUILD_STORAGE", SI_GUILD_STORAGE, false, false);
- //script->set_constant("SI_GC_POISONINGWEAPON_OPERATOR", SI_GC_POISONINGWEAPON_OPERATOR, false, false);
- //script->set_constant("SI_WS_WEAPONREFINE_OPERATOR", SI_WS_WEAPONREFINE_OPERATOR, false, false);
- //script->set_constant("SI_BS_REPAIRWEAPON_OPERATOR", SI_BS_REPAIRWEAPON_OPERATOR, false, false);
- //script->set_constant("SI_GET_MAILBOX", SI_GET_MAILBOX, false, false);
- //script->set_constant("SI_JUMPINGCLAN", SI_JUMPINGCLAN, false, false);
- //script->set_constant("SI_JP_OTP", SI_JP_OTP, false, false);
- //script->set_constant("SI_HANDICAPTOLERANCE_LEVELGAP", SI_HANDICAPTOLERANCE_LEVELGAP, false, false);
- //script->set_constant("SI_MTF_RANGEATK2", SI_MTF_RANGEATK2, false, false);
- //script->set_constant("SI_MTF_ASPD2", SI_MTF_ASPD2, false, false);
- //script->set_constant("SI_MTF_MATK2", SI_MTF_MATK2, false, false);
- //script->set_constant("SI_SHOW_NPCHPBAR", SI_SHOW_NPCHPBAR, false, false);
- script->set_constant("SI_FLOWERSMOKE", SI_FLOWERSMOKE, false, false);
- script->set_constant("SI_FSTONE", SI_FSTONE, false, false);
- //script->set_constant("SI_DAILYSENDMAILCNT", SI_DAILYSENDMAILCNT, false, false);
- //script->set_constant("SI_QSCARABA", SI_QSCARABA, false, false);
- script->set_constant("SI_LJOSALFAR", SI_LJOSALFAR, false, false);
- //script->set_constant("SI_PAD_READER_KNIGHT", SI_PAD_READER_KNIGHT, false, false);
- //script->set_constant("SI_PAD_READER_CRUSADER", SI_PAD_READER_CRUSADER, false, false);
- //script->set_constant("SI_PAD_READER_BLACKSMITH", SI_PAD_READER_BLACKSMITH, false, false);
- //script->set_constant("SI_PAD_READER_ALCHEMIST", SI_PAD_READER_ALCHEMIST, false, false);
- //script->set_constant("SI_PAD_READER_ASSASSIN", SI_PAD_READER_ASSASSIN, false, false);
- //script->set_constant("SI_PAD_READER_ROGUE", SI_PAD_READER_ROGUE, false, false);
- //script->set_constant("SI_PAD_READER_WIZARD", SI_PAD_READER_WIZARD, false, false);
- //script->set_constant("SI_PAD_READER_SAGE", SI_PAD_READER_SAGE, false, false);
- //script->set_constant("SI_PAD_READER_PRIEST", SI_PAD_READER_PRIEST, false, false);
- //script->set_constant("SI_PAD_READER_MONK", SI_PAD_READER_MONK, false, false);
- //script->set_constant("SI_PAD_READER_HUNTER", SI_PAD_READER_HUNTER, false, false);
- //script->set_constant("SI_PAD_READER_BARD", SI_PAD_READER_BARD, false, false);
- //script->set_constant("SI_PAD_READER_DANCER", SI_PAD_READER_DANCER, false, false);
- //script->set_constant("SI_PAD_READER_TAEKWON", SI_PAD_READER_TAEKWON, false, false);
- //script->set_constant("SI_PAD_READER_NINJA", SI_PAD_READER_NINJA, false, false);
- //script->set_constant("SI_PAD_READER_GUNSLINGER", SI_PAD_READER_GUNSLINGER, false, false);
- //script->set_constant("SI_PAD_READER_SUPERNOVICE", SI_PAD_READER_SUPERNOVICE, false, false);
- //script->set_constant("SI_ESSENCE_OF_TIME", SI_ESSENCE_OF_TIME, false, false);
- //script->set_constant("SI_MINIGAME_ROULETTE", SI_MINIGAME_ROULETTE, false, false);
- //script->set_constant("SI_MINIGAME_GOLD_POINT", SI_MINIGAME_GOLD_POINT, false, false);
- //script->set_constant("SI_MINIGAME_SILVER_POINT", SI_MINIGAME_SILVER_POINT, false, false);
- //script->set_constant("SI_MINIGAME_BRONZE_POINT", SI_MINIGAME_BRONZE_POINT, false, false);
- script->set_constant("SI_HAPPINESS_STAR", SI_HAPPINESS_STAR, false, false);
-
- //script->set_constant("SI_SUMMEREVENT01", SI_SUMMEREVENT01, false, false);
- //script->set_constant("SI_SUMMEREVENT02", SI_SUMMEREVENT02, false, false);
- //script->set_constant("SI_SUMMEREVENT03", SI_SUMMEREVENT03, false, false);
- //script->set_constant("SI_SUMMEREVENT04", SI_SUMMEREVENT04, false, false);
- //script->set_constant("SI_SUMMEREVENT05", SI_SUMMEREVENT05, false, false);
- //script->set_constant("SI_MINIGAME_ROULETTE_BONUS_ITEM", SI_MINIGAME_ROULETTE_BONUS_ITEM, false, false);
- //script->set_constant("SI_DRESS_UP", SI_DRESS_UP, false, false);
- script->set_constant("SI_MAPLE_FALLS", SI_MAPLE_FALLS, false, false);
- //script->set_constant("SI_ALL_NIFLHEIM_RECALL", SI_ALL_NIFLHEIM_RECALL, false, false);
- // 859
- //script->set_constant("SI_MTF_MARIONETTE", SI_MTF_MARIONETTE, false, false);
- //script->set_constant("SI_MTF_LUDE", SI_MTF_LUDE, false, false);
- //script->set_constant("SI_MTF_CRUISER", SI_MTF_CRUISER, false, false);
- script->set_constant("SI_MERMAID_LONGING", SI_MERMAID_LONGING, false, false);
- script->set_constant("SI_MAGICAL_FEATHER", SI_MAGICAL_FEATHER, false, false);
- //script->set_constant("SI_DRACULA_CARD", SI_DRACULA_CARD, false, false);
- // 866
- //script->set_constant("SI_LIMIT_POWER_BOOSTER", SI_LIMIT_POWER_BOOSTER, false, false);
- // 868
- // 869
- // 870
- // 871
- script->set_constant("SI_TIME_ACCESSORY", SI_TIME_ACCESSORY, false, false);
- //script->set_constant("SI_EP16_DEF", SI_EP16_DEF, false, false);
- //script->set_constant("SI_NORMAL_ATKED_SP", SI_NORMAL_ATKED_SP, false, false);
- //script->set_constant("SI_BODYSTATE_STONECURSE", SI_BODYSTATE_STONECURSE, false, false);
- //script->set_constant("SI_BODYSTATE_FREEZING", SI_BODYSTATE_FREEZING, false, false);
- //script->set_constant("SI_BODYSTATE_STUN", SI_BODYSTATE_STUN, false, false);
- //script->set_constant("SI_BODYSTATE_SLEEP", SI_BODYSTATE_SLEEP, false, false);
- //script->set_constant("SI_BODYSTATE_UNDEAD", SI_BODYSTATE_UNDEAD, false, false);
- //script->set_constant("SI_BODYSTATE_STONECURSE_ING", SI_BODYSTATE_STONECURSE_ING, false, false);
- //script->set_constant("SI_BODYSTATE_BURNNING", SI_BODYSTATE_BURNNING, false, false);
- //script->set_constant("SI_BODYSTATE_IMPRISON", SI_BODYSTATE_IMPRISON, false, false);
- //script->set_constant("SI_HEALTHSTATE_POISON", SI_HEALTHSTATE_POISON, false, false);
- //script->set_constant("SI_HEALTHSTATE_CURSE", SI_HEALTHSTATE_CURSE, false, false);
- //script->set_constant("SI_HEALTHSTATE_SILENCE", SI_HEALTHSTATE_SILENCE, false, false);
- //script->set_constant("SI_HEALTHSTATE_CONFUSION", SI_HEALTHSTATE_CONFUSION, false, false);
- //script->set_constant("SI_HEALTHSTATE_BLIND", SI_HEALTHSTATE_BLIND, false, false);
- //script->set_constant("SI_HEALTHSTATE_ANGELUS", SI_HEALTHSTATE_ANGELUS, false, false);
- //script->set_constant("SI_HEALTHSTATE_BLOODING", SI_HEALTHSTATE_BLOODING, false, false);
- //script->set_constant("SI_HEALTHSTATE_HEAVYPOISON", SI_HEALTHSTATE_HEAVYPOISON, false, false);
- //script->set_constant("SI_HEALTHSTATE_FEAR", SI_HEALTHSTATE_FEAR, false, false);
- //script->set_constant("SI_CHERRY_BLOSSOM_CAKE", SI_CHERRY_BLOSSOM_CAKE, false, false);
- script->set_constant("SI_SU_STOOP", SI_SU_STOOP, false, false);
- script->set_constant("SI_CATNIPPOWDER", SI_CATNIPPOWDER, false, false);
- script->set_constant("SI_BLOSSOM_FLUTTERING", SI_BLOSSOM_FLUTTERING, false, false);
- script->set_constant("SI_SV_ROOTTWIST", SI_SV_ROOTTWIST, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_NOTHING", SI_ATTACK_PROPERTY_NOTHING, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_WATER", SI_ATTACK_PROPERTY_WATER, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_GROUND", SI_ATTACK_PROPERTY_GROUND, false, false);
-
- //script->set_constant("SI_ATTACK_PROPERTY_FIRE", SI_ATTACK_PROPERTY_FIRE, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_WIND", SI_ATTACK_PROPERTY_WIND, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_POISON", SI_ATTACK_PROPERTY_POISON, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_SAINT", SI_ATTACK_PROPERTY_SAINT, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_DARKNESS", SI_ATTACK_PROPERTY_DARKNESS, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_TELEKINESIS", SI_ATTACK_PROPERTY_TELEKINESIS, false, false);
- //script->set_constant("SI_ATTACK_PROPERTY_UNDEAD", SI_ATTACK_PROPERTY_UNDEAD, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_NOTHING", SI_RESIST_PROPERTY_NOTHING, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_WATER", SI_RESIST_PROPERTY_WATER, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_GROUND", SI_RESIST_PROPERTY_GROUND, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_FIRE", SI_RESIST_PROPERTY_FIRE, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_WIND", SI_RESIST_PROPERTY_WIND, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_POISON", SI_RESIST_PROPERTY_POISON, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_SAINT", SI_RESIST_PROPERTY_SAINT, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_DARKNESS", SI_RESIST_PROPERTY_DARKNESS, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_TELEKINESIS", SI_RESIST_PROPERTY_TELEKINESIS, false, false);
- //script->set_constant("SI_RESIST_PROPERTY_UNDEAD", SI_RESIST_PROPERTY_UNDEAD, false, false);
- script->set_constant("SI_BITESCAR", SI_BITESCAR, false, false);
- script->set_constant("SI_ARCLOUSEDASH", SI_ARCLOUSEDASH, false, false);
- script->set_constant("SI_TUNAPARTY", SI_TUNAPARTY, false, false);
- script->set_constant("SI_SHRIMP", SI_SHRIMP, false, false);
- script->set_constant("SI_FRESHSHRIMP", SI_FRESHSHRIMP, false, false);
- //script->set_constant("SI_PERIOD_RECEIVEITEM", SI_PERIOD_RECEIVEITEM, false, false);
- //script->set_constant("SI_PERIOD_PLUSEXP", SI_PERIOD_PLUSEXP, false, false);
- //script->set_constant("SI_PERIOD_PLUSJOBEXP", SI_PERIOD_PLUSJOBEXP, false, false);
- //script->set_constant("SI_RUNEHELM", SI_RUNEHELM, false, false);
- //script->set_constant("SI_HELM_VERKANA", SI_HELM_VERKANA, false, false);
- //script->set_constant("SI_HELM_RHYDO", SI_HELM_RHYDO, false, false);
- //script->set_constant("SI_HELM_TURISUS", SI_HELM_TURISUS, false, false);
- //script->set_constant("SI_HELM_HAGALAS", SI_HELM_HAGALAS, false, false);
- //script->set_constant("SI_HELM_ISIA", SI_HELM_ISIA, false, false);
- //script->set_constant("SI_HELM_ASIR", SI_HELM_ASIR, false, false);
- //script->set_constant("SI_HELM_URJ", SI_HELM_URJ, false, false);
- script->set_constant("SI_SUHIDE", SI_SUHIDE, false, false);
- // 934
- //script->set_constant("SI_DORAM_BUF_01", SI_DORAM_BUF_01, false, false);
- //script->set_constant("SI_DORAM_BUF_02", SI_DORAM_BUF_02, false, false);
- script->set_constant("SI_SPRITEMABLE", SI_SPRITEMABLE, false, false);
- //script->set_constant("SI_AID_PERIOD_RECEIVEITEM", SI_AID_PERIOD_RECEIVEITEM, false, false);
- //script->set_constant("SI_AID_PERIOD_PLUSEXP", SI_AID_PERIOD_PLUSEXP, false, false);
- //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP", SI_AID_PERIOD_PLUSJOBEXP, false, false);
- //script->set_constant("SI_AID_PERIOD_DEADPENALTY", SI_AID_PERIOD_DEADPENALTY, false, false);
- //script->set_constant("SI_AID_PERIOD_ADDSTOREITEMCOUNT", SI_AID_PERIOD_ADDSTOREITEMCOUNT, false, false);
- // 943
- // 944
- // 945
- // 946
- // 947
- // 948
- // 949
- //script->set_constant("SI_HISS", SI_HISS, false, false);
- // 951
- //script->set_constant("SI_NYANGGRASS", SI_NYANGGRASS, false, false);
- //script->set_constant("SI_CHATTERING", SI_CHATTERING, false, false);
- // 954
- // 955
- // 956
- // 957
- // 958
- // 959
- // 960
- //script->set_constant("SI_GROOMING", SI_GROOMING, false, false);
- //script->set_constant("SI_PROTECTIONOFSHRIMP", SI_PROTECTIONOFSHRIMP, false, false);
- //script->set_constant("SI_EP16_2_BUFF_SS", SI_EP16_2_BUFF_SS, false, false);
- //script->set_constant("SI_EP16_2_BUFF_SC", SI_EP16_2_BUFF_SC, false, false);
- //script->set_constant("SI_EP16_2_BUFF_AC", SI_EP16_2_BUFF_AC, false, false);
- //script->set_constant("SI_GS_MAGICAL_BULLET", SI_GS_MAGICAL_BULLET, false, false);
- // 967
- // 968
- // 969
- // 970
- // 971
- // 972
- // 973
- // 974
- // 975
- //script->set_constant("SI_FALLEN_ANGEL", SI_FALLEN_ANGEL, false, false);
- // 977
- // 978
- //script->set_constant("SI_BLAZE_BEAD", SI_BLAZE_BEAD, false, false);
- //script->set_constant("SI_FROZEN_BEAD", SI_FROZEN_BEAD, false, false);
- //script->set_constant("SI_BREEZE_BEAD", SI_BREEZE_BEAD, false, false);
- // 982
- //script->set_constant("SI_AID_PERIOD_RECEIVEITEM_2ND", SI_AID_PERIOD_RECEIVEITEM_2ND, false, false);
- //script->set_constant("SI_AID_PERIOD_PLUSEXP_2ND", SI_AID_PERIOD_PLUSEXP_2ND, false, false);
- //script->set_constant("SI_AID_PERIOD_PLUSJOBEXP_2ND", SI_AID_PERIOD_PLUSJOBEXP_2ND, false, false);
- //script->set_constant("SI_PRONTERA_JP", SI_PRONTERA_JP, false, false);
- // 987
- //script->set_constant("SI_GLOOM_CARD", SI_GLOOM_CARD, false, false);
- //script->set_constant("SI_PHARAOH_CARD", SI_PHARAOH_CARD, false, false);
- //script->set_constant("SI_KIEL_CARD", SI_KIEL_CARD, false, false);
- // 991
- //script->set_constant("SI_CHEERUP", SI_CHEERUP, false, false);
- // 993
- // 994
- //script->set_constant("SI_S_MANAPOTION", SI_S_MANAPOTION, false, false);
- //script->set_constant("SI_M_DEFSCROLL", SI_M_DEFSCROLL, false, false);
- // 997
- // 998
- // 999
- //script->set_constant("SI_AS_RAGGED_GOLEM_CARD", SI_AS_RAGGED_GOLEM_CARD, false, false);
- //script->set_constant("SI_LHZ_DUN_N1", SI_LHZ_DUN_N1, false, false);
- //script->set_constant("SI_LHZ_DUN_N2", SI_LHZ_DUN_N2, false, false);
- //script->set_constant("SI_LHZ_DUN_N3", SI_LHZ_DUN_N3, false, false);
- //script->set_constant("SI_LHZ_DUN_N4", SI_LHZ_DUN_N4, false, false);
-
- script->set_constant("SI_MAX", SI_MAX, false, false);
diff --git a/src/map/guild.c b/src/map/guild.c
index dbfe03d3e..2fcbe02e7 100644
--- a/src/map/guild.c
+++ b/src/map/guild.c
@@ -278,7 +278,7 @@ static struct guild *guild_search(int guild_id)
}
/// lookup: guild name -> guild*
-static struct guild *guild_searchname(char *str)
+static struct guild *guild_searchname(const char *str)
{
struct guild* g;
struct DBIterator *iter = db_iterator(guild->db);
diff --git a/src/map/guild.h b/src/map/guild.h
index 41f52711d..5a14b8a34 100644
--- a/src/map/guild.h
+++ b/src/map/guild.h
@@ -91,7 +91,7 @@ struct guild_interface {
bool (*isallied) (int guild_id, int guild_id2); //Checks alliance based on guild Ids. [Skotlex]
/* */
struct guild *(*search) (int guild_id);
- struct guild *(*searchname) (char *str);
+ struct guild *(*searchname) (const char *str);
struct guild_castle *(*castle_search) (int gcid);
/* */
struct guild_castle *(*mapname2gc) (const char* mapname);
diff --git a/src/map/log.c b/src/map/log.c
index aa2f5f8f3..45335b16a 100644
--- a/src/map/log.c
+++ b/src/map/log.c
@@ -48,7 +48,7 @@ static char log_picktype2char(e_log_pick_type type)
switch( type ) {
case LOG_TYPE_TRADE: return 'T'; // (T)rade
case LOG_TYPE_VENDING: return 'V'; // (V)ending
- case LOG_TYPE_PICKDROP_PLAYER: return 'P'; // (P)player
+ case LOG_TYPE_PICKDROP_PLAYER: return 'P'; // (P)layer
case LOG_TYPE_PICKDROP_MONSTER: return 'M'; // (M)onster
case LOG_TYPE_NPC: return 'S'; // NPC (S)hop
case LOG_TYPE_SCRIPT: return 'N'; // (N)PC Script
@@ -75,6 +75,7 @@ static char log_picktype2char(e_log_pick_type type)
case LOG_TYPE_SKILL: return '1'; // Skill
case LOG_TYPE_REFINE: return '2'; // Refine
case LOG_TYPE_OTHER: return 'X'; // Other
+ case LOG_TYPE_ACHIEVEMENT: return '3'; // Achievement
}
// should not get here, fallback
diff --git a/src/map/log.h b/src/map/log.h
index 116d99bfd..5035e9526 100644
--- a/src/map/log.h
+++ b/src/map/log.h
@@ -87,9 +87,9 @@ typedef enum e_log_pick_type {
LOG_TYPE_QUEST = 0x02000000,
LOG_TYPE_SKILL = 0x04000000,
LOG_TYPE_REFINE = 0x08000000,
+ LOG_TYPE_LOOT = 0x10000000,
+ LOG_TYPE_ACHIEVEMENT = 0x20000000,
- // combinations
- LOG_TYPE_LOOT = LOG_TYPE_PICKDROP_MONSTER|LOG_TYPE_CONSUME,
// all
LOG_TYPE_ALL = 0xFFFFFFFF,
} e_log_pick_type;
diff --git a/src/map/map.c b/src/map/map.c
index 50ad9a5cd..8d60d1672 100644
--- a/src/map/map.c
+++ b/src/map/map.c
@@ -6701,13 +6701,13 @@ int do_init(int argc, char *argv[])
elemental->init(minimal);
quest->init(minimal);
achievement->init(minimal);
+ stylist->init(minimal);
npc->init(minimal);
unit->init(minimal);
bg->init(minimal);
duel->init(minimal);
vending->init(minimal);
rodex->init(minimal);
- stylist->init(minimal);
if (map->scriptcheck) {
bool failed = map->extra_scripts_count > 0 ? false : true;
diff --git a/src/map/messages_main.h b/src/map/messages_main.h
index 69fc34ee9..e369d6c56 100644
--- a/src/map/messages_main.h
+++ b/src/map/messages_main.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20191016
+Latest version: 20191211
*/
enum clif_messages {
@@ -632,9 +632,11 @@ Fire
Wind
*/
MSG_WIND = 0x76,
-/*20031028 to latest
+/*20031028 to 20191023
같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
Please avoid buying 2 of the same items at one time.
+20191030 to latest
+같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
/*20031028 to latest
@@ -1238,9 +1240,11 @@ Cart Items [Alt+W]
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20031028 to latest
+/*20031028 to 20191204
이무기로는 이스킬을 사용할수 없습니다.
The skill cannot be used with this weapon.
+20191211 to latest
+현재 무기로는 스킬을 사용할 수 없습니다.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
/*20031028 to latest
@@ -20438,92 +20442,143 @@ MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주
모험가 중개소 등록
*/
MSG_ID_D1C = 0xd1c,
-/*20171108 to latest
+/*20171108 to 20191120
모집 중단
+20191127 to latest
+모험가 중개소 등록하기
*/
MSG_ID_D1D = 0xd1d,
-/*20171108 to latest
+/*20171108 to 20191120
모험가 중개소 설정
+20191127 to latest
+모집 중단
*/
MSG_ID_D1E = 0xd1e,
-/*20171108 to latest
+/*20171108 to 20191120
전 지역
+20191127 to latest
+메모
+Note
*/
MSG_ID_D1F = 0xd1f,
-/*20171108 to latest
+/*20171108 to 20191120
직접기재
+20191127 to latest
+퀘스트
+Quest
*/
MSG_ID_D20 = 0xd20,
-/*20171108 to latest
+/*20171108 to 20191120
검사계열
+20191127 to latest
+필드
*/
MSG_ID_D21 = 0xd21,
-/*20171108 to latest
+/*20171108 to 20191120
법사계열
+20191127 to latest
+던전
+Dungeon
*/
MSG_ID_D22 = 0xd22,
-/*20171108 to latest
+/*20171108 to 20191120
궁수계열
+20191127 to latest
+MD
*/
MSG_ID_D23 = 0xd23,
-/*20171108 to latest
+/*20171108 to 20191120
복사계열
+20191127 to latest
+낙원단
*/
MSG_ID_D24 = 0xd24,
-/*20171108 to latest
+/*20171108 to 20191120
상인계열
+20191127 to latest
+기타
+Other
*/
MSG_ID_D25 = 0xd25,
-/*20171108 to latest
+/*20171108 to 20191120
도둑계열
+20191127 to latest
+검색
+Search
*/
MSG_ID_D26 = 0xd26,
-/*20171108 to latest
+/*20171108 to 20191120
태권계열
+20191127 to latest
+초기화
*/
MSG_ID_D27 = 0xd27,
-/*20171108 to latest
+/*20171108 to 20191120
닌자계열
+20191127 to latest
+파티가입신청
*/
MSG_ID_D28 = 0xd28,
-/*20171108 to latest
+/*20171108 to 20191120
건슬링거계열
+20191127 to latest
+목적
*/
MSG_ID_D29 = 0xd29,
-/*20171108 to latest
+/*20171108 to 20191120
도람족계열
+20191127 to latest
+※욕설, 현거래등 운영 규칙에 위배되는 목적으로 사용 시 처벌 받을 수 있습니다.
*/
MSG_ID_D2A = 0xd2a,
-/*20171108 to latest
+/*20171108 to 20191120
지역명
+20191127 to latest
+등록하기
+Register
*/
MSG_ID_D2B = 0xd2b,
-/*20171108 to latest
+/*20171108 to 20191120
지역명 검색
+20191127 to latest
+사용할 수 없는 단어가 포함되어 있습니다.
*/
MSG_ID_D2C = 0xd2c,
-/*20171108 to latest
+/*20171108 to 20191120
가입 요청하기
+20191127 to latest
+파티가입
*/
MSG_ID_D2D = 0xd2d,
-/*20171108 to latest
+/*20171108 to 20191120
신고하기
+20191127 to latest
+1:1대화
*/
MSG_ID_D2E = 0xd2e,
-/*20171108 to latest
+/*20171108 to 20191120
파티 모집 중단
+20191127 to latest
+모집 중지
*/
MSG_ID_D2F = 0xd2f,
-/*20171108 to latest
+/*20171108 to 20191120
지역명을 입력해주세요.
+20191127 to latest
+수정하기
*/
MSG_ID_D30 = 0xd30,
-/*20171108 to latest
+/*20171108 to 20191120
지역
+20191127 to latest
+전체
+All
*/
MSG_ID_D31 = 0xd31,
-/*20171108 to latest
+/*20171108 to 20191120
전 직업
+20191127 to latest
+[%s] 님이 파티가입을 신청했습니다.
*/
MSG_ID_D32 = 0xd32,
/*20171108 to latest
@@ -20696,12 +20751,17 @@ Password
회원가입
*/
MSG_ID_D56 = 0xd56,
-/*20171122 to latest
+/*20171122 to 20191120
노비스계열
+20191127 to latest
+파티장
+Leader
*/
MSG_ID_D57 = 0xd57,
-/*20171122 to latest
+/*20171122 to 20191120
슈퍼노비스계열
+20191127 to latest
+파티에 가입할 수 있는 레벨이 아닙니다.
*/
MSG_ID_D58 = 0xd58,
/*20171122 to latest
@@ -20714,12 +20774,16 @@ Password
MSG_ID_D5A = 0xd5a,
/*20171122 to 20180328
직업을 한 개 이상 선택해주세요.
-20180404 to latest
+20180404 to 20191120
모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+20191127 to latest
+검색내용입력
*/
MSG_ID_D5B = 0xd5b,
-/*20171122 to latest
+/*20171122 to 20191127
지역명을 두 글자 이상 입력해주세요.
+20191204 to latest
+탱커
*/
MSG_ID_D5C = 0xd5c,
/*20171122 to latest
@@ -20810,8 +20874,10 @@ Password
불량 단어가 포함된 이름은 검색할 수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to latest
+/*20171213 to 20191127
파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+20191204 to latest
+파티 마스터가 요청을 받을 수 없는 상태입니다.
*/
MSG_ID_D72 = 0xd72,
/*20171213 to latest
@@ -20820,8 +20886,10 @@ Password
MSG_ID_D73 = 0xd73,
/*20171213 to 20180328
님의 파티요청입니다.
-20180404 to latest
+20180404 to 20191127
님의 파티 가입 요청입니다.
+20191204 to latest
+딜러
*/
MSG_ID_D74 = 0xd74,
#endif
@@ -21036,8 +21104,10 @@ Enter 4 english words and 2 chinese words
The guild tax rate can't be set to more than 50%.
*/
MSG_ID_D9E = 0xd9e,
-/*20180404 to latest
+/*20180404 to 20191204
파티 가입 요청을 보냈습니다.
+20191211 to latest
+파티가 모험가 중개소에 등록되어, 파티장을 변경 할 수 없습니다.
*/
MSG_ID_D9F = 0xd9f,
/*20180404 to latest
@@ -21052,8 +21122,10 @@ The guild tax rate can't be set to more than 50%.
거절
*/
MSG_ID_DA2 = 0xda2,
-/*20180404 to latest
+/*20180404 to 20191127
설정 권한은 파티장에게 있습니다.
+20191204 to latest
+힐러
*/
MSG_ID_DA3 = 0xda3,
/*20180404 to latest
@@ -21112,8 +21184,10 @@ The guild tax rate can't be set to more than 50%.
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180404 to latest
+/*20180404 to 20191120
파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+20191127 to latest
+파티장이 아닌 경우 모험가 중개소에 파티를 등록할 수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
/*20180404 to 20180404
@@ -21124,8 +21198,11 @@ The guild tax rate can't be set to more than 50%.
MSG_ID_DB3 = 0xdb3,
#endif
#if PACKETVER >= 20180418
-/*20180418 to latest
+/*20180418 to 20191127
존재하지 않는 파티 글입니다.
+20191204 to latest
+보조
+Support
*/
MSG_ID_DB4 = 0xdb4,
/*20180418 to 20180418
@@ -21174,8 +21251,10 @@ Zoom Out 기능을 해제합니다 (Off)
더 이상 직업을 선택할 수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180418 to latest
+/*20180418 to 20191120
게임 중 해당 유저의 가입 요청을 받지 않습니다.
+20191127 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.(클라이언트 종료 전까지 유효)
*/
MSG_ID_DBE = 0xdbe,
#endif
@@ -21793,8 +21872,10 @@ AP가 부족합니다.
제련도가 조합에 필요한 요구치보다 높습니다.
*/
MSG_ID_E3D = 0xe3d,
-/*20190731 to latest
+/*20190731 to 20191107
'카드가 끼워져있거나 인챈트 되어 있습니다.
+20191113 to latest
+카드가 끼워져있거나 인챈트 되어 있습니다.
*/
MSG_ID_E3E = 0xe3e,
/*20190731 to latest
@@ -22010,6 +22091,348 @@ VTC 인증에 실패하였습니다.
*/
MSG_ID_E6A = 0xe6a,
#endif
+#if PACKETVER >= 20191030
+/*20191030 to latest
+같은 아이템은 %d개까지 소유할 수 있습니다.
+*/
+ MSG_ID_E6B = 0xe6b,
+/*20191030 to latest
+같은 아이템은 한 번에 %d개까지 교환할 수 있습니다.
+*/
+ MSG_ID_E6C = 0xe6c,
+/*20191030 to latest
+해당 로덱스는 "%s"서버에서 열 수 있습니다.
+*/
+ MSG_ID_E6D = 0xe6d,
+/*20191030 to latest
+[공지]편지함의 모든 메일을 삭제하시겠습니까 ?
+(해당 "%s"서버의 메일만 삭제됩니다.)
+*/
+ MSG_ID_E6E = 0xe6e,
+/*20191030 to latest
+[공지]편지함의 모든 첨부 물품을 받으시겠습니까?
+(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.)
+*/
+ MSG_ID_E6F = 0xe6f,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 삭제 가능합니다.
+*/
+ MSG_ID_E70 = 0xe70,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 물품 받기가 가능합니다.
+*/
+ MSG_ID_E71 = 0xe71,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 내용읽기가 가능합니다.
+*/
+ MSG_ID_E72 = 0xe72,
+/*20191030 to latest
+합계 : %d z
+*/
+ MSG_ID_E73 = 0xe73,
+/*20191030 to latest
+메세지
+*/
+ MSG_ID_E74 = 0xe74,
+#endif
+#if PACKETVER >= 20191106
+/*20191106 to latest
+구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다.
+*/
+ MSG_ID_E75 = 0xe75,
+#endif
+#if PACKETVER >= 20191113
+/*20191113 to latest
+등급강화가 성공적으로 되었습니다.
+*/
+ MSG_ID_E76 = 0xe76,
+/*20191113 to latest
+등급강화가 실패하였습니다.
+*/
+ MSG_ID_E77 = 0xe77,
+/*20191113 to latest
+등급 수치가 하향 조정 되었습니다.
+*/
+ MSG_ID_E78 = 0xe78,
+/*20191113 to latest
+장비가 파괴되었습니다.
+*/
+ MSG_ID_E79 = 0xe79,
+/*20191113 to latest
+장비가 보호되었습니다.
+*/
+ MSG_ID_E7A = 0xe7a,
+/*20191113 to latest
+재료가 선택되지 않았습니다.
+*/
+ MSG_ID_E7B = 0xe7b,
+/*20191113 to latest
+재료가 부족합니다.
+*/
+ MSG_ID_E7C = 0xe7c,
+/*20191113 to latest
+소지 금액이 부족합니다.
+*/
+ MSG_ID_E7D = 0xe7d,
+/*20191113 to latest
+아이템 공간이 부족합니다.
+*/
+ MSG_ID_E7E = 0xe7e,
+/*20191113 to latest
+장비가 보호되고 있습니다.
+*/
+ MSG_ID_E7F = 0xe7f,
+/*20191113 to latest
+장비가 파괴될 수 있습니다.
+*/
+ MSG_ID_E80 = 0xe80,
+/*20191113 to latest
+등급강화 실패 시 등급이 내려갑니다.
+*/
+ MSG_ID_E81 = 0xe81,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+*/
+ MSG_ID_E82 = 0xe82,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다.
+*/
+ MSG_ID_E83 = 0xe83,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+*/
+ MSG_ID_E84 = 0xe84,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다.
+*/
+ MSG_ID_E85 = 0xe85,
+/*20191113 to latest
+[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_E86 = 0xe86,
+/*20191113 to latest
+[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다.
+*/
+ MSG_ID_E87 = 0xe87,
+/*20191113 to latest
+등급 강화가 불가능한 장비입니다.
+*/
+ MSG_ID_E88 = 0xe88,
+/*20191113 to latest
+체인지 메테리얼
+*/
+ MSG_ID_E89 = 0xe89,
+/*20191113 to latest
+가나다 정렬
+*/
+ MSG_ID_E8A = 0xe8a,
+/*20191113 to latest
+기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다.
+*/
+ MSG_ID_E8B = 0xe8b,
+/*20191113 to latest
+성공 %d%%
+*/
+ MSG_ID_E8C = 0xe8c,
+/*20191113 to latest
+아이템 태그는 소지한 아이템만 태그할 수 있습니다.
+*/
+ MSG_ID_E8D = 0xe8d,
+#endif
+#if PACKETVER >= 20191127
+/*20191127 to latest
+공격력 및 특성 공격력이 증가되었습니다.
+*/
+ MSG_ID_E8E = 0xe8e,
+/*20191127 to latest
+강인한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E8F = 0xe8f,
+/*20191127 to latest
+HP 및 물리 저항력이 증가되었습니다.
+*/
+ MSG_ID_E90 = 0xe90,
+/*20191127 to latest
+굳건한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E91 = 0xe91,
+/*20191127 to latest
+공격 속도 및 유도 공격 확률이 증가되었습니다.
+*/
+ MSG_ID_E92 = 0xe92,
+/*20191127 to latest
+신실한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E93 = 0xe93,
+/*20191127 to latest
+POW, CRT 및 CON 이 증가되었습니다.
+*/
+ MSG_ID_E94 = 0xe94,
+/*20191127 to latest
+베네딕툼 효과가 해제되었습니다.
+*/
+ MSG_ID_E95 = 0xe95,
+/*20191127 to latest
+SPL, WIS 및 CRT 가 증가되었습니다.
+*/
+ MSG_ID_E96 = 0xe96,
+/*20191127 to latest
+렐리지오 효과가 해제되었습니다.
+*/
+ MSG_ID_E97 = 0xe97,
+/*20191127 to latest
+특성 공격력 및 특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_E98 = 0xe98,
+/*20191127 to latest
+콤페텐티아 효과가 해제되었습니다.
+*/
+ MSG_ID_E99 = 0xe99,
+/*20191127 to latest
+크리티컬 데미지 비율이 증가되었습니다.
+*/
+ MSG_ID_E9A = 0xe9a,
+/*20191127 to latest
+프레센스 아치에스 효과가 해제되었습니다.
+*/
+ MSG_ID_E9B = 0xe9b,
+/*20191127 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9C = 0xe9c,
+/*20191127 to latest
+아르구투스 텔룸 효과가 해제되었습니다.
+*/
+ MSG_ID_E9D = 0xe9d,
+/*20191127 to latest
+마법 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9E = 0xe9e,
+/*20191127 to latest
+아르구투스 비타 효과가 해제되었습니다.
+*/
+ MSG_ID_E9F = 0xe9f,
+/*20191127 to latest
+Num: %d/%d Weight: %d/%d
+*/
+ MSG_ID_EA0 = 0xea0,
+#endif
+#if PACKETVER >= 20191204
+/*20191204 to latest
+서번트 웨폰 효과가 해제되었습니다.
+*/
+ MSG_ID_EA1 = 0xea1,
+/*20191204 to latest
+챠징 피어스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA2 = 0xea2,
+/*20191204 to latest
+비고르 효과가 해제되었습니다.
+*/
+ MSG_ID_EA3 = 0xea3,
+/*20191204 to latest
+공격력이 증가하고, 방어력이 감소되었습니다.
+*/
+ MSG_ID_EA4 = 0xea4,
+/*20191204 to latest
+어택 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA5 = 0xea5,
+/*20191204 to latest
+방어력이 증가하고, 공격력이 감소되었습니다.
+*/
+ MSG_ID_EA6 = 0xea6,
+/*20191204 to latest
+가드 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA7 = 0xea7,
+/*20191204 to latest
+배리어가 부여되었습니다.
+*/
+ MSG_ID_EA8 = 0xea8,
+/*20191204 to latest
+가디언 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EA9 = 0xea9,
+/*20191204 to latest
+헌신 효과로 받는 데미지가 감소되었습니다.
+*/
+ MSG_ID_EAA = 0xeaa,
+/*20191204 to latest
+리바운드 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAB = 0xeab,
+/*20191204 to latest
+성속성 마법 데미지와 암/불사속성 내성이 증가되었습니다.
+*/
+ MSG_ID_EAC = 0xeac,
+/*20191204 to latest
+홀리 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAD = 0xead,
+/*20191204 to latest
+즉시 부활 효과가 부여되었습니다.
+*/
+ MSG_ID_EAE = 0xeae,
+/*20191204 to latest
+얼티메이트 세크리파이스 효과가 해제되었습니다.
+*/
+ MSG_ID_EAF = 0xeaf,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB0 = 0xeb0,
+/*20191204 to latest
+클라이막스 효과가 해제되었습니다.
+*/
+ MSG_ID_EB1 = 0xeb1,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB2 = 0xeb2,
+/*20191204 to latest
+쉐도우 익시드 효과가 해제되었습니다.
+*/
+ MSG_ID_EB3 = 0xeb3,
+/*20191204 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_EB4 = 0xeb4,
+/*20191204 to latest
+포텐트 베넘 효과가 해제되었습니다.
+*/
+ MSG_ID_EB5 = 0xeb5,
+/*20191204 to latest
+매 공격 시, 일정 확률로 대상이 받는 데미지를 증가시킵니다.
+*/
+ MSG_ID_EB6 = 0xeb6,
+/*20191204 to latest
+인챈팅 쉐도우 효과가 해제되었습니다.
+*/
+ MSG_ID_EB7 = 0xeb7,
+#endif
+#if PACKETVER >= 20191211
+/*20191211 to latest
+토벌 카운트 On
+*/
+ MSG_ID_EB8 = 0xeb8,
+/*20191211 to latest
+토벌 카운트 Off
+*/
+ MSG_ID_EB9 = 0xeb9,
+/*20191211 to latest
+대상의 AP가 최대치입니다
+*/
+ MSG_ID_EBA = 0xeba,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBB = 0xebb,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBC = 0xebc,
+#endif
};
#endif /* MAP_MESSAGES_MAIN_H */
diff --git a/src/map/messages_re.h b/src/map/messages_re.h
index 84ccecc5e..d9f279bfd 100644
--- a/src/map/messages_re.h
+++ b/src/map/messages_re.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20191016
+Latest version: 20191211
*/
enum clif_messages {
@@ -625,9 +625,11 @@ Fire
Wind
*/
MSG_WIND = 0x76,
-/*20080827 to latest
+/*20080827 to 20191023
같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
Please avoid buying 2 of the same items at one time.
+20191030 to latest
+같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
/*20080827 to latest
@@ -1229,9 +1231,11 @@ Cart Items [Alt+W]
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20080827 to latest
+/*20080827 to 20191204
이무기로는 이스킬을 사용할수 없습니다.
The skill cannot be used with this weapon.
+20191211 to latest
+현재 무기로는 스킬을 사용할 수 없습니다.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
/*20080827 to latest
@@ -19917,92 +19921,143 @@ MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주
모험가 중개소 등록
*/
MSG_ID_D1C = 0xd1c,
-/*20171108 to latest
+/*20171108 to 20191120
모집 중단
+20191127 to latest
+모험가 중개소 등록하기
*/
MSG_ID_D1D = 0xd1d,
-/*20171108 to latest
+/*20171108 to 20191120
모험가 중개소 설정
+20191127 to latest
+모집 중단
*/
MSG_ID_D1E = 0xd1e,
-/*20171108 to latest
+/*20171108 to 20191120
전 지역
+20191127 to latest
+메모
+Note
*/
MSG_ID_D1F = 0xd1f,
-/*20171108 to latest
+/*20171108 to 20191120
직접기재
+20191127 to latest
+퀘스트
+Quest
*/
MSG_ID_D20 = 0xd20,
-/*20171108 to latest
+/*20171108 to 20191120
검사계열
+20191127 to latest
+필드
*/
MSG_ID_D21 = 0xd21,
-/*20171108 to latest
+/*20171108 to 20191120
법사계열
+20191127 to latest
+던전
+Dungeon
*/
MSG_ID_D22 = 0xd22,
-/*20171108 to latest
+/*20171108 to 20191120
궁수계열
+20191127 to latest
+MD
*/
MSG_ID_D23 = 0xd23,
-/*20171108 to latest
+/*20171108 to 20191120
복사계열
+20191127 to latest
+낙원단
*/
MSG_ID_D24 = 0xd24,
-/*20171108 to latest
+/*20171108 to 20191120
상인계열
+20191127 to latest
+기타
+Other
*/
MSG_ID_D25 = 0xd25,
-/*20171108 to latest
+/*20171108 to 20191120
도둑계열
+20191127 to latest
+검색
+Search
*/
MSG_ID_D26 = 0xd26,
-/*20171108 to latest
+/*20171108 to 20191120
태권계열
+20191127 to latest
+초기화
*/
MSG_ID_D27 = 0xd27,
-/*20171108 to latest
+/*20171108 to 20191120
닌자계열
+20191127 to latest
+파티가입신청
*/
MSG_ID_D28 = 0xd28,
-/*20171108 to latest
+/*20171108 to 20191120
건슬링거계열
+20191127 to latest
+목적
*/
MSG_ID_D29 = 0xd29,
-/*20171108 to latest
+/*20171108 to 20191120
도람족계열
+20191127 to latest
+※욕설, 현거래등 운영 규칙에 위배되는 목적으로 사용 시 처벌 받을 수 있습니다.
*/
MSG_ID_D2A = 0xd2a,
-/*20171108 to latest
+/*20171108 to 20191120
지역명
+20191127 to latest
+등록하기
+Register
*/
MSG_ID_D2B = 0xd2b,
-/*20171108 to latest
+/*20171108 to 20191120
지역명 검색
+20191127 to latest
+사용할 수 없는 단어가 포함되어 있습니다.
*/
MSG_ID_D2C = 0xd2c,
-/*20171108 to latest
+/*20171108 to 20191120
가입 요청하기
+20191127 to latest
+파티가입
*/
MSG_ID_D2D = 0xd2d,
-/*20171108 to latest
+/*20171108 to 20191120
신고하기
+20191127 to latest
+1:1대화
*/
MSG_ID_D2E = 0xd2e,
-/*20171108 to latest
+/*20171108 to 20191120
파티 모집 중단
+20191127 to latest
+모집 중지
*/
MSG_ID_D2F = 0xd2f,
-/*20171108 to latest
+/*20171108 to 20191120
지역명을 입력해주세요.
+20191127 to latest
+수정하기
*/
MSG_ID_D30 = 0xd30,
-/*20171108 to latest
+/*20171108 to 20191120
지역
+20191127 to latest
+전체
+All
*/
MSG_ID_D31 = 0xd31,
-/*20171108 to latest
+/*20171108 to 20191120
전 직업
+20191127 to latest
+[%s] 님이 파티가입을 신청했습니다.
*/
MSG_ID_D32 = 0xd32,
/*20171108 to latest
@@ -20175,12 +20230,17 @@ Password
회원가입
*/
MSG_ID_D56 = 0xd56,
-/*20171122 to latest
+/*20171122 to 20191120
노비스계열
+20191127 to latest
+파티장
+Leader
*/
MSG_ID_D57 = 0xd57,
-/*20171122 to latest
+/*20171122 to 20191120
슈퍼노비스계열
+20191127 to latest
+파티에 가입할 수 있는 레벨이 아닙니다.
*/
MSG_ID_D58 = 0xd58,
/*20171122 to latest
@@ -20193,12 +20253,16 @@ Password
MSG_ID_D5A = 0xd5a,
/*20171122 to 20180328
직업을 한 개 이상 선택해주세요.
-20180404 to latest
+20180404 to 20191120
모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+20191127 to latest
+검색내용입력
*/
MSG_ID_D5B = 0xd5b,
-/*20171122 to latest
+/*20171122 to 20191127
지역명을 두 글자 이상 입력해주세요.
+20191204 to latest
+탱커
*/
MSG_ID_D5C = 0xd5c,
/*20171122 to latest
@@ -20289,8 +20353,10 @@ Password
불량 단어가 포함된 이름은 검색할 수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to latest
+/*20171213 to 20191127
파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+20191204 to latest
+파티 마스터가 요청을 받을 수 없는 상태입니다.
*/
MSG_ID_D72 = 0xd72,
/*20171213 to latest
@@ -20299,8 +20365,10 @@ Password
MSG_ID_D73 = 0xd73,
/*20171213 to 20180328
님의 파티요청입니다.
-20180404 to latest
+20180404 to 20191127
님의 파티 가입 요청입니다.
+20191204 to latest
+딜러
*/
MSG_ID_D74 = 0xd74,
#endif
@@ -20515,8 +20583,10 @@ Enter 4 english words and 2 chinese words
The guild tax rate can't be set to more than 50%.
*/
MSG_ID_D9E = 0xd9e,
-/*20180404 to latest
+/*20180404 to 20191204
파티 가입 요청을 보냈습니다.
+20191211 to latest
+파티가 모험가 중개소에 등록되어, 파티장을 변경 할 수 없습니다.
*/
MSG_ID_D9F = 0xd9f,
/*20180404 to latest
@@ -20531,8 +20601,10 @@ The guild tax rate can't be set to more than 50%.
거절
*/
MSG_ID_DA2 = 0xda2,
-/*20180404 to latest
+/*20180404 to 20191127
설정 권한은 파티장에게 있습니다.
+20191204 to latest
+힐러
*/
MSG_ID_DA3 = 0xda3,
/*20180404 to latest
@@ -20591,8 +20663,10 @@ The guild tax rate can't be set to more than 50%.
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180404 to latest
+/*20180404 to 20191120
파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+20191127 to latest
+파티장이 아닌 경우 모험가 중개소에 파티를 등록할 수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
/*20180404 to 20180404
@@ -20603,8 +20677,11 @@ The guild tax rate can't be set to more than 50%.
MSG_ID_DB3 = 0xdb3,
#endif
#if PACKETVER >= 20180418
-/*20180418 to latest
+/*20180418 to 20191127
존재하지 않는 파티 글입니다.
+20191204 to latest
+보조
+Support
*/
MSG_ID_DB4 = 0xdb4,
/*20180418 to 20180418
@@ -20645,16 +20722,20 @@ Zoom Out 기능을 해제합니다 (Off)
파티장인 경우, 가입 요청을 할 수 없습니다.
*/
MSG_ID_DBB = 0xdbb,
-/*20180418 to latest
+/*20180418 to 20191204
모험가 중개소에 등록 중입니다. 잠시만 기다려 주세요.
+20191211 to latest
+파티 가입 최대 레벨은 최소 레벨 설정보다 높아야 합니다.
*/
MSG_ID_DBC = 0xdbc,
/*20180418 to latest
더 이상 직업을 선택할 수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180418 to latest
+/*20180418 to 20191120
게임 중 해당 유저의 가입 요청을 받지 않습니다.
+20191127 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.(클라이언트 종료 전까지 유효)
*/
MSG_ID_DBE = 0xdbe,
#endif
@@ -21272,8 +21353,10 @@ AP가 부족합니다.
제련도가 조합에 필요한 요구치보다 높습니다.
*/
MSG_ID_E3D = 0xe3d,
-/*20190731 to latest
+/*20190731 to 20191107
'카드가 끼워져있거나 인챈트 되어 있습니다.
+20191113 to latest
+카드가 끼워져있거나 인챈트 되어 있습니다.
*/
MSG_ID_E3E = 0xe3e,
/*20190731 to latest
@@ -21487,6 +21570,348 @@ VTC 인증에 실패하였습니다.
*/
MSG_ID_E6A = 0xe6a,
#endif
+#if PACKETVER >= 20191030
+/*20191030 to latest
+같은 아이템은 %d개까지 소유할 수 있습니다.
+*/
+ MSG_ID_E6B = 0xe6b,
+/*20191030 to latest
+같은 아이템은 한 번에 %d개까지 교환할 수 있습니다.
+*/
+ MSG_ID_E6C = 0xe6c,
+/*20191030 to latest
+해당 로덱스는 "%s"서버에서 열 수 있습니다.
+*/
+ MSG_ID_E6D = 0xe6d,
+/*20191030 to latest
+[공지]편지함의 모든 메일을 삭제하시겠습니까 ?
+(해당 "%s"서버의 메일만 삭제됩니다.)
+*/
+ MSG_ID_E6E = 0xe6e,
+/*20191030 to latest
+[공지]편지함의 모든 첨부 물품을 받으시겠습니까?
+(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.)
+*/
+ MSG_ID_E6F = 0xe6f,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 삭제 가능합니다.
+*/
+ MSG_ID_E70 = 0xe70,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 물품 받기가 가능합니다.
+*/
+ MSG_ID_E71 = 0xe71,
+/*20191030 to latest
+해당 메일은 "%s"서버에서만 내용읽기가 가능합니다.
+*/
+ MSG_ID_E72 = 0xe72,
+/*20191030 to latest
+합계 : %d z
+*/
+ MSG_ID_E73 = 0xe73,
+/*20191030 to latest
+메세지
+*/
+ MSG_ID_E74 = 0xe74,
+#endif
+#if PACKETVER >= 20191106
+/*20191106 to latest
+구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다.
+*/
+ MSG_ID_E75 = 0xe75,
+#endif
+#if PACKETVER >= 20191113
+/*20191113 to latest
+등급강화가 성공적으로 되었습니다.
+*/
+ MSG_ID_E76 = 0xe76,
+/*20191113 to latest
+등급강화가 실패하였습니다.
+*/
+ MSG_ID_E77 = 0xe77,
+/*20191113 to latest
+등급 수치가 하향 조정 되었습니다.
+*/
+ MSG_ID_E78 = 0xe78,
+/*20191113 to latest
+장비가 파괴되었습니다.
+*/
+ MSG_ID_E79 = 0xe79,
+/*20191113 to latest
+장비가 보호되었습니다.
+*/
+ MSG_ID_E7A = 0xe7a,
+/*20191113 to latest
+재료가 선택되지 않았습니다.
+*/
+ MSG_ID_E7B = 0xe7b,
+/*20191113 to latest
+재료가 부족합니다.
+*/
+ MSG_ID_E7C = 0xe7c,
+/*20191113 to latest
+소지 금액이 부족합니다.
+*/
+ MSG_ID_E7D = 0xe7d,
+/*20191113 to latest
+아이템 공간이 부족합니다.
+*/
+ MSG_ID_E7E = 0xe7e,
+/*20191113 to latest
+장비가 보호되고 있습니다.
+*/
+ MSG_ID_E7F = 0xe7f,
+/*20191113 to latest
+장비가 파괴될 수 있습니다.
+*/
+ MSG_ID_E80 = 0xe80,
+/*20191113 to latest
+등급강화 실패 시 등급이 내려갑니다.
+*/
+ MSG_ID_E81 = 0xe81,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+*/
+ MSG_ID_E82 = 0xe82,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다.
+*/
+ MSG_ID_E83 = 0xe83,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+*/
+ MSG_ID_E84 = 0xe84,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다.
+*/
+ MSG_ID_E85 = 0xe85,
+/*20191113 to latest
+[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_E86 = 0xe86,
+/*20191113 to latest
+[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다.
+*/
+ MSG_ID_E87 = 0xe87,
+/*20191113 to latest
+등급 강화가 불가능한 장비입니다.
+*/
+ MSG_ID_E88 = 0xe88,
+/*20191113 to latest
+체인지 메테리얼
+*/
+ MSG_ID_E89 = 0xe89,
+/*20191113 to latest
+가나다 정렬
+*/
+ MSG_ID_E8A = 0xe8a,
+/*20191113 to latest
+기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다.
+*/
+ MSG_ID_E8B = 0xe8b,
+/*20191113 to latest
+성공 %d%%
+*/
+ MSG_ID_E8C = 0xe8c,
+/*20191113 to latest
+아이템 태그는 소지한 아이템만 태그할 수 있습니다.
+*/
+ MSG_ID_E8D = 0xe8d,
+#endif
+#if PACKETVER >= 20191127
+/*20191127 to latest
+공격력 및 특성 공격력이 증가되었습니다.
+*/
+ MSG_ID_E8E = 0xe8e,
+/*20191127 to latest
+강인한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E8F = 0xe8f,
+/*20191127 to latest
+HP 및 물리 저항력이 증가되었습니다.
+*/
+ MSG_ID_E90 = 0xe90,
+/*20191127 to latest
+굳건한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E91 = 0xe91,
+/*20191127 to latest
+공격 속도 및 유도 공격 확률이 증가되었습니다.
+*/
+ MSG_ID_E92 = 0xe92,
+/*20191127 to latest
+신실한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E93 = 0xe93,
+/*20191127 to latest
+POW, CRT 및 CON 이 증가되었습니다.
+*/
+ MSG_ID_E94 = 0xe94,
+/*20191127 to latest
+베네딕툼 효과가 해제되었습니다.
+*/
+ MSG_ID_E95 = 0xe95,
+/*20191127 to latest
+SPL, WIS 및 CRT 가 증가되었습니다.
+*/
+ MSG_ID_E96 = 0xe96,
+/*20191127 to latest
+렐리지오 효과가 해제되었습니다.
+*/
+ MSG_ID_E97 = 0xe97,
+/*20191127 to latest
+특성 공격력 및 특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_E98 = 0xe98,
+/*20191127 to latest
+콤페텐티아 효과가 해제되었습니다.
+*/
+ MSG_ID_E99 = 0xe99,
+/*20191127 to latest
+크리티컬 데미지 비율이 증가되었습니다.
+*/
+ MSG_ID_E9A = 0xe9a,
+/*20191127 to latest
+프레센스 아치에스 효과가 해제되었습니다.
+*/
+ MSG_ID_E9B = 0xe9b,
+/*20191127 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9C = 0xe9c,
+/*20191127 to latest
+아르구투스 텔룸 효과가 해제되었습니다.
+*/
+ MSG_ID_E9D = 0xe9d,
+/*20191127 to latest
+마법 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9E = 0xe9e,
+/*20191127 to latest
+아르구투스 비타 효과가 해제되었습니다.
+*/
+ MSG_ID_E9F = 0xe9f,
+/*20191127 to latest
+Num: %d/%d Weight: %d/%d
+*/
+ MSG_ID_EA0 = 0xea0,
+#endif
+#if PACKETVER >= 20191204
+/*20191204 to latest
+서번트 웨폰 효과가 해제되었습니다.
+*/
+ MSG_ID_EA1 = 0xea1,
+/*20191204 to latest
+챠징 피어스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA2 = 0xea2,
+/*20191204 to latest
+비고르 효과가 해제되었습니다.
+*/
+ MSG_ID_EA3 = 0xea3,
+/*20191204 to latest
+공격력이 증가하고, 방어력이 감소되었습니다.
+*/
+ MSG_ID_EA4 = 0xea4,
+/*20191204 to latest
+어택 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA5 = 0xea5,
+/*20191204 to latest
+방어력이 증가하고, 공격력이 감소되었습니다.
+*/
+ MSG_ID_EA6 = 0xea6,
+/*20191204 to latest
+가드 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA7 = 0xea7,
+/*20191204 to latest
+배리어가 부여되었습니다.
+*/
+ MSG_ID_EA8 = 0xea8,
+/*20191204 to latest
+가디언 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EA9 = 0xea9,
+/*20191204 to latest
+헌신 효과로 받는 데미지가 감소되었습니다.
+*/
+ MSG_ID_EAA = 0xeaa,
+/*20191204 to latest
+리바운드 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAB = 0xeab,
+/*20191204 to latest
+성속성 마법 데미지와 암/불사속성 내성이 증가되었습니다.
+*/
+ MSG_ID_EAC = 0xeac,
+/*20191204 to latest
+홀리 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAD = 0xead,
+/*20191204 to latest
+즉시 부활 효과가 부여되었습니다.
+*/
+ MSG_ID_EAE = 0xeae,
+/*20191204 to latest
+얼티메이트 세크리파이스 효과가 해제되었습니다.
+*/
+ MSG_ID_EAF = 0xeaf,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB0 = 0xeb0,
+/*20191204 to latest
+클라이막스 효과가 해제되었습니다.
+*/
+ MSG_ID_EB1 = 0xeb1,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB2 = 0xeb2,
+/*20191204 to latest
+쉐도우 익시드 효과가 해제되었습니다.
+*/
+ MSG_ID_EB3 = 0xeb3,
+/*20191204 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_EB4 = 0xeb4,
+/*20191204 to latest
+포텐트 베넘 효과가 해제되었습니다.
+*/
+ MSG_ID_EB5 = 0xeb5,
+/*20191204 to latest
+매 공격 시, 일정 확률로 대상이 받는 데미지를 증가시킵니다.
+*/
+ MSG_ID_EB6 = 0xeb6,
+/*20191204 to latest
+인챈팅 쉐도우 효과가 해제되었습니다.
+*/
+ MSG_ID_EB7 = 0xeb7,
+#endif
+#if PACKETVER >= 20191211
+/*20191211 to latest
+토벌 카운트 On
+*/
+ MSG_ID_EB8 = 0xeb8,
+/*20191211 to latest
+토벌 카운트 Off
+*/
+ MSG_ID_EB9 = 0xeb9,
+/*20191211 to latest
+대상의 AP가 최대치입니다
+*/
+ MSG_ID_EBA = 0xeba,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBB = 0xebb,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBC = 0xebc,
+#endif
};
#endif /* MAP_MESSAGES_RE_H */
diff --git a/src/map/messages_zero.h b/src/map/messages_zero.h
index 80e4c0de0..2c0c6203b 100644
--- a/src/map/messages_zero.h
+++ b/src/map/messages_zero.h
@@ -24,7 +24,7 @@
/* This file is autogenerated, please do not commit manual changes
-Latest version: 20191008
+Latest version: 20191211
*/
enum clif_messages {
@@ -625,9 +625,11 @@ Fire
Wind
*/
MSG_WIND = 0x76,
-/*20171018 to latest
+/*20171018 to 20191008
같은종류의 장비아이템은 한번에 한개만 살 수 있습니다.
Please avoid buying 2 of the same items at one time.
+20191023 to latest
+같은 종류의 장비 아이템은 한 번에 한 개만 살 수 있습니다.
*/
MSG_EQUIPITEM_OLNY_ONE = 0x77,
/*20171018 to latest
@@ -1225,9 +1227,11 @@ Cart Items [Alt+W]
Basic Information
*/
MSG_BASICINFOWND = 0xee,
-/*20171018 to latest
+/*20171018 to 20191204
이무기로는 이스킬을 사용할수 없습니다.
The skill cannot be used with this weapon.
+20191211 to latest
+현재 무기로는 스킬을 사용할 수 없습니다.
*/
MSG_USESKILL_FAIL_NOT_SUITABLE_WEAPON = 0xef,
/*20171018 to latest
@@ -16540,92 +16544,143 @@ MOTP 입력 시간이 초과되었습니다. 처음부터 다시 로그인해주
모험가 중개소 등록
*/
MSG_ID_D1C = 0xd1c,
-/*20171031 to latest
+/*20171031 to 20191113
모집 중단
+20191127 to latest
+모험가 중개소 등록하기
*/
MSG_ID_D1D = 0xd1d,
-/*20171031 to latest
+/*20171031 to 20191113
모험가 중개소 설정
+20191127 to latest
+모집 중단
*/
MSG_ID_D1E = 0xd1e,
-/*20171031 to latest
+/*20171031 to 20191113
전 지역
+20191127 to latest
+메모
+Note
*/
MSG_ID_D1F = 0xd1f,
-/*20171031 to latest
+/*20171031 to 20191113
직접기재
+20191127 to latest
+퀘스트
+Quest
*/
MSG_ID_D20 = 0xd20,
-/*20171031 to latest
+/*20171031 to 20191113
검사계열
+20191127 to latest
+필드
*/
MSG_ID_D21 = 0xd21,
-/*20171031 to latest
+/*20171031 to 20191113
법사계열
+20191127 to latest
+던전
+Dungeon
*/
MSG_ID_D22 = 0xd22,
-/*20171031 to latest
+/*20171031 to 20191113
궁수계열
+20191127 to latest
+MD
*/
MSG_ID_D23 = 0xd23,
-/*20171031 to latest
+/*20171031 to 20191113
복사계열
+20191127 to latest
+낙원단
*/
MSG_ID_D24 = 0xd24,
-/*20171031 to latest
+/*20171031 to 20191113
상인계열
+20191127 to latest
+기타
+Other
*/
MSG_ID_D25 = 0xd25,
-/*20171031 to latest
+/*20171031 to 20191113
도둑계열
+20191127 to latest
+검색
+Search
*/
MSG_ID_D26 = 0xd26,
-/*20171031 to latest
+/*20171031 to 20191113
태권계열
+20191127 to latest
+초기화
*/
MSG_ID_D27 = 0xd27,
-/*20171031 to latest
+/*20171031 to 20191113
닌자계열
+20191127 to latest
+파티가입신청
*/
MSG_ID_D28 = 0xd28,
-/*20171031 to latest
+/*20171031 to 20191113
건슬링거계열
+20191127 to latest
+목적
*/
MSG_ID_D29 = 0xd29,
-/*20171031 to latest
+/*20171031 to 20191113
도람족계열
+20191127 to latest
+※욕설, 현거래등 운영 규칙에 위배되는 목적으로 사용 시 처벌 받을 수 있습니다.
*/
MSG_ID_D2A = 0xd2a,
-/*20171031 to latest
+/*20171031 to 20191113
지역명
+20191127 to latest
+등록하기
+Register
*/
MSG_ID_D2B = 0xd2b,
-/*20171031 to latest
+/*20171031 to 20191113
지역명 검색
+20191127 to latest
+사용할 수 없는 단어가 포함되어 있습니다.
*/
MSG_ID_D2C = 0xd2c,
-/*20171031 to latest
+/*20171031 to 20191113
가입 요청하기
+20191127 to latest
+파티가입
*/
MSG_ID_D2D = 0xd2d,
-/*20171031 to latest
+/*20171031 to 20191113
신고하기
+20191127 to latest
+1:1대화
*/
MSG_ID_D2E = 0xd2e,
-/*20171031 to latest
+/*20171031 to 20191113
파티 모집 중단
+20191127 to latest
+모집 중지
*/
MSG_ID_D2F = 0xd2f,
-/*20171031 to latest
+/*20171031 to 20191113
지역명을 입력해주세요.
+20191127 to latest
+수정하기
*/
MSG_ID_D30 = 0xd30,
-/*20171031 to latest
+/*20171031 to 20191113
지역
+20191127 to latest
+전체
+All
*/
MSG_ID_D31 = 0xd31,
-/*20171031 to latest
+/*20171031 to 20191113
전 직업
+20191127 to latest
+[%s] 님이 파티가입을 신청했습니다.
*/
MSG_ID_D32 = 0xd32,
#endif
@@ -16800,12 +16855,17 @@ Password
회원가입
*/
MSG_ID_D56 = 0xd56,
-/*20171115 to latest
+/*20171115 to 20191113
노비스계열
+20191127 to latest
+파티장
+Leader
*/
MSG_ID_D57 = 0xd57,
-/*20171115 to latest
+/*20171115 to 20191113
슈퍼노비스계열
+20191127 to latest
+파티에 가입할 수 있는 레벨이 아닙니다.
*/
MSG_ID_D58 = 0xd58,
/*20171115 to latest
@@ -16818,12 +16878,16 @@ Password
MSG_ID_D5A = 0xd5a,
/*20171115 to 20180321
직업을 한 개 이상 선택해주세요.
-20180328 to latest
+20180328 to 20191113
모집을 희망하는 파티원의 직업을 한 개 이상 선택해 주세요.
+20191127 to latest
+검색내용입력
*/
MSG_ID_D5B = 0xd5b,
-/*20171115 to latest
+/*20171115 to 20191127
지역명을 두 글자 이상 입력해주세요.
+20191204 to latest
+탱커
*/
MSG_ID_D5C = 0xd5c,
/*20171115 to latest
@@ -16922,8 +16986,10 @@ Password
불량 단어가 포함된 이름은 검색할 수 없습니다.
*/
MSG_ID_D71 = 0xd71,
-/*20171213 to latest
+/*20171213 to 20191127
파티 마스터가 요청을 받을 수 없는 맵에 있습니다.
+20191204 to latest
+파티 마스터가 요청을 받을 수 없는 상태입니다.
*/
MSG_ID_D72 = 0xd72,
/*20171213 to latest
@@ -16932,8 +16998,10 @@ Password
MSG_ID_D73 = 0xd73,
/*20171213 to 20180321
님의 파티요청입니다.
-20180328 to latest
+20180328 to 20191127
님의 파티 가입 요청입니다.
+20191204 to latest
+딜러
*/
MSG_ID_D74 = 0xd74,
/*20171213 to latest
@@ -17146,8 +17214,10 @@ Enter 4 english words and 2 chinese words
The guild tax rate can't be set to more than 50%.
*/
MSG_ID_D9E = 0xd9e,
-/*20180328 to latest
+/*20180328 to 20191204
파티 가입 요청을 보냈습니다.
+20191211 to latest
+파티가 모험가 중개소에 등록되어, 파티장을 변경 할 수 없습니다.
*/
MSG_ID_D9F = 0xd9f,
/*20180328 to latest
@@ -17162,8 +17232,10 @@ The guild tax rate can't be set to more than 50%.
거절
*/
MSG_ID_DA2 = 0xda2,
-/*20180328 to latest
+/*20180328 to 20191127
설정 권한은 파티장에게 있습니다.
+20191204 to latest
+힐러
*/
MSG_ID_DA3 = 0xda3,
/*20180328 to latest
@@ -17224,16 +17296,21 @@ The guild tax rate can't be set to more than 50%.
파티 가입 요청
*/
MSG_ID_DB1 = 0xdb1,
-/*20180411 to latest
+/*20180411 to 20191113
파티장이 아닌 경우, 모험가 중개소에 파티를 등록할 수 없습니다.
+20191127 to latest
+파티장이 아닌 경우 모험가 중개소에 파티를 등록할 수 없습니다.
*/
MSG_ID_DB2 = 0xdb2,
/*20180411 to latest
파티 모집을 중단할 수 없습니다.
*/
MSG_ID_DB3 = 0xdb3,
-/*20180411 to latest
+/*20180411 to 20191127
존재하지 않는 파티 글입니다.
+20191204 to latest
+보조
+Support
*/
MSG_ID_DB4 = 0xdb4,
#endif
@@ -17274,8 +17351,10 @@ Zoom Out 기능을 해제합니다 (Off)
더 이상 직업을 선택할 수 없습니다.
*/
MSG_ID_DBD = 0xdbd,
-/*20180425 to latest
+/*20180425 to 20191113
게임 중 해당 유저의 가입 요청을 받지 않습니다.
+20191127 to latest
+게임 중 해당 유저의 가입 요청을 받지 않습니다.(클라이언트 종료 전까지 유효)
*/
MSG_ID_DBE = 0xdbe,
/*20180425 to latest
@@ -17882,8 +17961,10 @@ AP가 부족합니다.
제련도가 조합에 필요한 요구치보다 높습니다.
*/
MSG_ID_E3D = 0xe3d,
-/*20190724 to latest
+/*20190724 to 20191106
'카드가 끼워져있거나 인챈트 되어 있습니다.
+20191113 to latest
+카드가 끼워져있거나 인챈트 되어 있습니다.
*/
MSG_ID_E3E = 0xe3e,
#endif
@@ -18101,6 +18182,348 @@ VTC 인증에 실패하였습니다.
*/
MSG_ID_E6A = 0xe6a,
#endif
+#if PACKETVER >= 20191023
+/*20191023 to latest
+같은 아이템은 %d개까지 소유할 수 있습니다.
+*/
+ MSG_ID_E6B = 0xe6b,
+/*20191023 to latest
+같은 아이템은 한 번에 %d개까지 교환할 수 있습니다.
+*/
+ MSG_ID_E6C = 0xe6c,
+/*20191023 to latest
+해당 로덱스는 "%s"서버에서 열 수 있습니다.
+*/
+ MSG_ID_E6D = 0xe6d,
+/*20191023 to latest
+[공지]편지함의 모든 메일을 삭제하시겠습니까 ?
+(해당 "%s"서버의 메일만 삭제됩니다.)
+*/
+ MSG_ID_E6E = 0xe6e,
+/*20191023 to latest
+[공지]편지함의 모든 첨부 물품을 받으시겠습니까?
+(해당 "%s"서버의 메일의 물품만 받으실 수 있습니다.)
+*/
+ MSG_ID_E6F = 0xe6f,
+/*20191023 to latest
+해당 메일은 "%s"서버에서만 삭제 가능합니다.
+*/
+ MSG_ID_E70 = 0xe70,
+/*20191023 to latest
+해당 메일은 "%s"서버에서만 물품 받기가 가능합니다.
+*/
+ MSG_ID_E71 = 0xe71,
+/*20191023 to latest
+해당 메일은 "%s"서버에서만 내용읽기가 가능합니다.
+*/
+ MSG_ID_E72 = 0xe72,
+#endif
+#if PACKETVER >= 20191106
+/*20191106 to latest
+합계 : %d z
+*/
+ MSG_ID_E73 = 0xe73,
+/*20191106 to latest
+메세지
+*/
+ MSG_ID_E74 = 0xe74,
+/*20191106 to latest
+구매상점 개설 중에는 개인상점의 물건을 구입할 수 없습니다.
+*/
+ MSG_ID_E75 = 0xe75,
+#endif
+#if PACKETVER >= 20191113
+/*20191113 to latest
+등급강화가 성공적으로 되었습니다.
+*/
+ MSG_ID_E76 = 0xe76,
+/*20191113 to latest
+등급강화가 실패하였습니다.
+*/
+ MSG_ID_E77 = 0xe77,
+/*20191113 to latest
+등급 수치가 하향 조정 되었습니다.
+*/
+ MSG_ID_E78 = 0xe78,
+/*20191113 to latest
+장비가 파괴되었습니다.
+*/
+ MSG_ID_E79 = 0xe79,
+/*20191113 to latest
+장비가 보호되었습니다.
+*/
+ MSG_ID_E7A = 0xe7a,
+/*20191113 to latest
+재료가 선택되지 않았습니다.
+*/
+ MSG_ID_E7B = 0xe7b,
+/*20191113 to latest
+재료가 부족합니다.
+*/
+ MSG_ID_E7C = 0xe7c,
+/*20191113 to latest
+소지 금액이 부족합니다.
+*/
+ MSG_ID_E7D = 0xe7d,
+/*20191113 to latest
+아이템 공간이 부족합니다.
+*/
+ MSG_ID_E7E = 0xe7e,
+/*20191113 to latest
+장비가 보호되고 있습니다.
+*/
+ MSG_ID_E7F = 0xe7f,
+/*20191113 to latest
+장비가 파괴될 수 있습니다.
+*/
+ MSG_ID_E80 = 0xe80,
+/*20191113 to latest
+등급강화 실패 시 등급이 내려갑니다.
+*/
+ MSG_ID_E81 = 0xe81,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다. 로덱스를 강제 종료하였습니다.
+*/
+ MSG_ID_E82 = 0xe82,
+/*20191113 to latest
+등급강화 중에는 로덱스를 사용할 수 없습니다.
+*/
+ MSG_ID_E83 = 0xe83,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다. 은행을 강제 종료하였습니다.
+*/
+ MSG_ID_E84 = 0xe84,
+/*20191113 to latest
+등급강화 중에는 은행을 사용할 수 없습니다.
+*/
+ MSG_ID_E85 = 0xe85,
+/*20191113 to latest
+[%s] 님이 등급강화를 성공하여, [%s등급 %s] 아이템을 획득하였습니다.
+*/
+ MSG_ID_E86 = 0xe86,
+/*20191113 to latest
+[%s] 님이 [%s등급 %s] 아이템의 등급강화에 실패하였습니다.
+*/
+ MSG_ID_E87 = 0xe87,
+/*20191113 to latest
+등급 강화가 불가능한 장비입니다.
+*/
+ MSG_ID_E88 = 0xe88,
+/*20191113 to latest
+체인지 메테리얼
+*/
+ MSG_ID_E89 = 0xe89,
+/*20191113 to latest
+가나다 정렬
+*/
+ MSG_ID_E8A = 0xe8a,
+/*20191113 to latest
+기본 결과물은 %s %d개 이나, 낮은 확률로 최대 %d개까지 생성될 수 있습니다.
+*/
+ MSG_ID_E8B = 0xe8b,
+/*20191113 to latest
+성공 %d%%
+*/
+ MSG_ID_E8C = 0xe8c,
+/*20191113 to latest
+아이템 태그는 소지한 아이템만 태그할 수 있습니다.
+*/
+ MSG_ID_E8D = 0xe8d,
+#endif
+#if PACKETVER >= 20191127
+/*20191127 to latest
+공격력 및 특성 공격력이 증가되었습니다.
+*/
+ MSG_ID_E8E = 0xe8e,
+/*20191127 to latest
+강인한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E8F = 0xe8f,
+/*20191127 to latest
+HP 및 물리 저항력이 증가되었습니다.
+*/
+ MSG_ID_E90 = 0xe90,
+/*20191127 to latest
+굳건한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E91 = 0xe91,
+/*20191127 to latest
+공격 속도 및 유도 공격 확률이 증가되었습니다.
+*/
+ MSG_ID_E92 = 0xe92,
+/*20191127 to latest
+신실한 신념 효과가 해제되었습니다.
+*/
+ MSG_ID_E93 = 0xe93,
+/*20191127 to latest
+POW, CRT 및 CON 이 증가되었습니다.
+*/
+ MSG_ID_E94 = 0xe94,
+/*20191127 to latest
+베네딕툼 효과가 해제되었습니다.
+*/
+ MSG_ID_E95 = 0xe95,
+/*20191127 to latest
+SPL, WIS 및 CRT 가 증가되었습니다.
+*/
+ MSG_ID_E96 = 0xe96,
+/*20191127 to latest
+렐리지오 효과가 해제되었습니다.
+*/
+ MSG_ID_E97 = 0xe97,
+/*20191127 to latest
+특성 공격력 및 특성 마법 공격력이 증가되었습니다.
+*/
+ MSG_ID_E98 = 0xe98,
+/*20191127 to latest
+콤페텐티아 효과가 해제되었습니다.
+*/
+ MSG_ID_E99 = 0xe99,
+/*20191127 to latest
+크리티컬 데미지 비율이 증가되었습니다.
+*/
+ MSG_ID_E9A = 0xe9a,
+/*20191127 to latest
+프레센스 아치에스 효과가 해제되었습니다.
+*/
+ MSG_ID_E9B = 0xe9b,
+/*20191127 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9C = 0xe9c,
+/*20191127 to latest
+아르구투스 텔룸 효과가 해제되었습니다.
+*/
+ MSG_ID_E9D = 0xe9d,
+/*20191127 to latest
+마법 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_E9E = 0xe9e,
+/*20191127 to latest
+아르구투스 비타 효과가 해제되었습니다.
+*/
+ MSG_ID_E9F = 0xe9f,
+/*20191127 to latest
+Num: %d/%d Weight: %d/%d
+*/
+ MSG_ID_EA0 = 0xea0,
+#endif
+#if PACKETVER >= 20191204
+/*20191204 to latest
+서번트 웨폰 효과가 해제되었습니다.
+*/
+ MSG_ID_EA1 = 0xea1,
+/*20191204 to latest
+챠징 피어스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA2 = 0xea2,
+/*20191204 to latest
+비고르 효과가 해제되었습니다.
+*/
+ MSG_ID_EA3 = 0xea3,
+/*20191204 to latest
+공격력이 증가하고, 방어력이 감소되었습니다.
+*/
+ MSG_ID_EA4 = 0xea4,
+/*20191204 to latest
+어택 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA5 = 0xea5,
+/*20191204 to latest
+방어력이 증가하고, 공격력이 감소되었습니다.
+*/
+ MSG_ID_EA6 = 0xea6,
+/*20191204 to latest
+가드 스탠스 효과가 해제되었습니다.
+*/
+ MSG_ID_EA7 = 0xea7,
+/*20191204 to latest
+배리어가 부여되었습니다.
+*/
+ MSG_ID_EA8 = 0xea8,
+/*20191204 to latest
+가디언 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EA9 = 0xea9,
+/*20191204 to latest
+헌신 효과로 받는 데미지가 감소되었습니다.
+*/
+ MSG_ID_EAA = 0xeaa,
+/*20191204 to latest
+리바운드 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAB = 0xeab,
+/*20191204 to latest
+성속성 마법 데미지와 암/불사속성 내성이 증가되었습니다.
+*/
+ MSG_ID_EAC = 0xeac,
+/*20191204 to latest
+홀리 쉴드 효과가 해제되었습니다.
+*/
+ MSG_ID_EAD = 0xead,
+/*20191204 to latest
+즉시 부활 효과가 부여되었습니다.
+*/
+ MSG_ID_EAE = 0xeae,
+/*20191204 to latest
+얼티메이트 세크리파이스 효과가 해제되었습니다.
+*/
+ MSG_ID_EAF = 0xeaf,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB0 = 0xeb0,
+/*20191204 to latest
+클라이막스 효과가 해제되었습니다.
+*/
+ MSG_ID_EB1 = 0xeb1,
+/*20191204 to latest
+특정 스킬의 효능이 변경되었습니다.
+*/
+ MSG_ID_EB2 = 0xeb2,
+/*20191204 to latest
+쉐도우 익시드 효과가 해제되었습니다.
+*/
+ MSG_ID_EB3 = 0xeb3,
+/*20191204 to latest
+물리 저항력 무시 효과가 부여되었습니다.
+*/
+ MSG_ID_EB4 = 0xeb4,
+/*20191204 to latest
+포텐트 베넘 효과가 해제되었습니다.
+*/
+ MSG_ID_EB5 = 0xeb5,
+/*20191204 to latest
+매 공격 시, 일정 확률로 대상이 받는 데미지를 증가시킵니다.
+*/
+ MSG_ID_EB6 = 0xeb6,
+/*20191204 to latest
+인챈팅 쉐도우 효과가 해제되었습니다.
+*/
+ MSG_ID_EB7 = 0xeb7,
+/*20191204 to latest
+토벌 카운트 On
+*/
+ MSG_ID_EB8 = 0xeb8,
+/*20191204 to latest
+토벌 카운트 Off
+*/
+ MSG_ID_EB9 = 0xeb9,
+#endif
+#if PACKETVER >= 20191211
+/*20191211 to latest
+대상의 AP가 최대치입니다
+*/
+ MSG_ID_EBA = 0xeba,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBB = 0xebb,
+/*20191211 to latest
+ ^ff0000본 아이템을 구매 후 7일 이내에는 청약 철회가 가능합니다. 다만, 7일이 지났거나 아이템을 개봉하시면 청약 철회 대상에서 제외 됩니다.또한 구매시 사용된 무료캐시는 청약철회시 반환되지 않습니다.일부(이벤트) 아이템의 경우 이벤트 종료 시 삭제될 수 있으며, 아이템 설명 내 기재된 삭제기간을 확인해 주시기 바랍니다.^000000 정말로 아이템을 구매하시겠습니까? 구매하실 경우 일반 %d캐시, 무료 %d캐시가 차감됩니다.
+*/
+ MSG_ID_EBC = 0xebc,
+#endif
};
#endif /* MAP_MESSAGES_ZERO_H */
diff --git a/src/map/mob.c b/src/map/mob.c
index 48cbbf6f2..60b6977bb 100644
--- a/src/map/mob.c
+++ b/src/map/mob.c
@@ -1364,10 +1364,10 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick)
) {
short x = bl->x, y = bl->y;
mob_stop_attack(md);
- const struct mob_data *m_md = BL_CCAST(BL_MOB, bl);
- nullpo_retr(0, m_md);
- if (map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1)
- && (battle_config.slave_chase_masters_chasetarget == 0 || !mob->is_in_battle_state(m_md))
+ const struct mob_data *m_md = BL_CCAST(BL_MOB, bl); // Can be NULL due to master being BL_PC
+ // If master is BL_MOB and in battle, lock & chase to master's target instead, unless configured not to.
+ if ((battle_config.slave_chase_masters_chasetarget == 0 || (m_md != NULL && !mob->is_in_battle_state(m_md)))
+ && map->search_freecell(&md->bl, bl->m, &x, &y, MOB_SLAVEDISTANCE, MOB_SLAVEDISTANCE, 1)
&& unit->walktoxy(&md->bl, x, y, 0))
return 1;
}
@@ -1380,13 +1380,12 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md, int64 tick)
//Avoid attempting to lock the master's target too often to avoid unnecessary overload. [Skotlex]
if (DIFF_TICK(md->last_linktime, tick) < MIN_MOBLINKTIME && !md->target_id) {
struct unit_data *ud = unit->bl2ud(bl);
- struct mob_data *m_md = BL_CAST(BL_MOB, bl);
+ struct mob_data *m_md = BL_CAST(BL_MOB, bl); // Can be NULL due to master being BL_PC
nullpo_retr(0, ud);
- nullpo_retr(0, m_md);
md->last_linktime = tick;
struct block_list *tbl = NULL;
- if (battle_config.slave_chase_masters_chasetarget == 1 && m_md->target_id != 0) { // possibly chasing something
+ if (battle_config.slave_chase_masters_chasetarget == 1 && m_md != NULL && m_md->target_id != 0) { // possibly chasing something
tbl = map->id2bl(m_md->target_id);
} else if (ud->target != 0 && ud->state.attack_continue != 0) {
tbl = map->id2bl(ud->target);
@@ -2237,6 +2236,14 @@ static void mob_log_damage(struct mob_data *md, struct block_list *src, int dama
md->dmglog[minpos].flag= flag;
md->dmglog[minpos].dmg = damage;
}
+#if (PACKETVER >= 20120404 && PACKETVER < 20131223)
+ // Show HP bar to all chars who hit the mob (fixes TF_STEAL not showing HP bar right away but only when target leaves/re-enters sight range)
+ if (battle_config.show_monster_hp_bar != 0 && (md->status.mode & MD_BOSS) == 0) {
+ struct map_session_data *sd = map->charid2sd(char_id);
+ if (sd != NULL && check_distance_bl(&md->bl, &sd->bl, AREA_SIZE)) // check if in range
+ clif->monster_hp_bar(md, sd);
+ }
+#endif
}
return;
}
diff --git a/src/map/mob.h b/src/map/mob.h
index 6a4744ca5..6693c3671 100644
--- a/src/map/mob.h
+++ b/src/map/mob.h
@@ -40,7 +40,6 @@ struct hplugin_data_store;
//The number of drops all mobs have and the max drop-slot that the steal skill will attempt to steal from.
#define MAX_MOB_DROP 10
#define MAX_MVP_DROP 3
-#define MAX_STEAL_DROP 7
//Min time between AI executions
#define MIN_MOBTHINKTIME 100
diff --git a/src/map/packets.h b/src/map/packets.h
index 8fb47eb7a..48d937957 100644
--- a/src/map/packets.h
+++ b/src/map/packets.h
@@ -726,6 +726,11 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0843,clif->pGMRemove2,2);
#endif
+// all versions
+#if PACKETVER >= 20100824
+ packet(0x0844,clif->pCashShopOpen,2);
+#endif
+
//2010-11-24aRagexeRE
#if PACKETVER >= 20101124
packet(0x0288,clif->pcashshop_buy,4,8);
@@ -776,7 +781,6 @@ packet(0x96e,clif->ackmergeitems);
//2011-07-18aRagexe (Thanks to Yommy!)
#if PACKETVER >= 20110718
// shuffle packets not added
- packet(0x0844,clif->pCashShopOpen,2);/* tell server cashshop window is being open */
packet(0x084a,clif->pCashShopClose,2);/* tell server cashshop window is being closed */
packet(0x0846,clif->pCashShopReqTab,2);
packet(0x0848,clif->pCashShopBuy,2);
@@ -1796,6 +1800,14 @@ packet(0x96e,clif->ackmergeitems);
// changed packet sizes
#endif
+#if PACKETVER >= 20160302
+ packet(0x0a4f,clif->plapineDdukDdak_ack);
+#endif
+
+#if PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO)
+ packet(0x0a70,clif->plapineDdukDdak_close);
+#endif
+
// all 2016-05-25
#if PACKETVER >= 20160525
packet(0x0a77,clif->pCameraInfo); // CZ_CAMERA_INFO
@@ -1959,12 +1971,16 @@ packet(0x96e,clif->ackmergeitems);
packet(0x0b2c,clif->pGuildCastleInfoRequest);
#endif
-#if PACKETVER >= 20160302
- packet(0x0a4f,clif->plapineDdukDdak_ack);
+#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703
+ packet(0x0b35,clif->pReqGearOff);
#endif
-#if PACKETVER >= 20160504
- packet(0x0a70,clif->plapineDdukDdak_close);
+#if PACKETVER_ZERO_NUM >= 20190709
+ packet(0x0b35,clif->pReqGearOff);
+#endif
+
+#if PACKETVER >= 20190724
+ packet(0x0b4c,clif->pCashShopOpen,2);
#endif
#endif /* MAP_PACKETS_H */
diff --git a/src/map/packets_keys_main.h b/src/map/packets_keys_main.h
index d02e7f20d..39186039d 100644
--- a/src/map/packets_keys_main.h
+++ b/src/map/packets_keys_main.h
@@ -37,7 +37,7 @@
packetKeys(0x49357d72,0x22c370a1,0x5f836591);
#endif
-// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE
+// 2010-11-23aRagexeRE, 2010-11-24aRagexeRE, 2010-11-24bRagexeRE, 2010-11-25aRagexeRE, 2010-11-26aRagexeRE, 2010-11-30aRagexeRE, 2010-12-07aRagexeRE, 2010-12-14aRagexeRE, 2010-12-21aRagexeRE, 2010-12-23aRagexeRE, 2010-12-28aRagexeRE, 2011-01-04aRagexeRE, 2011-01-05aRagexeRE, 2011-01-11aRagexeRE, 2011-01-18aRagexeRE, 2011-01-25aRagexeRE, 2011-01-26aRagexeRE, 2011-01-26bRagexeRE, 2011-01-31aRagexeRE, 2011-01-31bRagexeRE, 2011-01-31cRagexeRE, 2011-02-08aRagexeRE, 2011-02-15aRagexeRE, 2011-02-22aRagexeRE, 2011-02-23aRagexeRE, 2011-02-23bRagexeRE, 2011-02-24aRagexeRE, 2011-02-25aRagexeRE, 2011-02-28aRagexeRE, 2011-03-08aRagexeRE, 2011-03-09aRagexeRE, 2011-03-09bRagexeRE, 2011-03-09cRagexeRE, 2011-03-09dRagexeRE, 2011-03-15aRagexeRE, 2011-03-22aRagexeRE, 2011-03-29aRagexeRE, 2011-03-30aRagexeRE, 2011-03-30cRagexeRE, 2011-04-05aRagexeRE, 2011-04-12aRagexeRE, 2011-04-19aRagexeRE, 2011-04-20aRagexeRE, 2011-04-26aRagexeRE, 2011-04-27aRagexeRE, 2011-05-03aRagexeRE, 2011-05-11aRagexeRE, 2011-05-17bRagexeRE, 2011-05-24aRagexeRE, 2011-05-26aRagexeRE, 2011-05-31aRagexeRE, 2011-06-07aRagexeRE, 2011-06-08aRagexeRE, 2011-06-08bRagexeRE, 2011-06-08cRagexeRE, 2011-06-09aRagexeRE, 2011-06-14bRagexeRE, 2011-06-22aRagexeRE, 2011-06-28aRagexeRE, 2011-07-06aRagexeRE, 2011-07-13aRagexeRE, 2011-07-13bRagexeRE, 2011-07-13cRagexeRE, 2011-07-19aRagexeRE, 2011-07-26aRagexeRE, 2011-08-03aRagexeRE, 2011-08-03bRagexeRE, 2011-08-10aRagexeRE, 2013-12-23aRagexeRE, 2014-05-08aRagexe, 2014-05-08aRagexeRE, 2014-06-11eRagexe, 2015-02-25hRagexe, 2018-03-15aRagexe, 2018-03-21aRagexe, 2018-03-21aRagexeRE, 2018-03-28bRagexe, 2018-03-28bRagexeRE, 2018-04-04bRagexe, 2018-04-04cRagexeRE, 2018-04-18aRagexe, 2018-04-18bRagexeRE, 2018-04-25cRagexe, 2018-04-25cRagexeRE, 2018-05-02bRagexe, 2018-05-02bRagexeRE, 2018-05-02dRagexeRE, 2018-05-09aRagexe, 2018-05-16cRagexe, 2018-05-16cRagexeRE, 2018-05-23aRagexe, 2018-05-23aRagexeRE, 2018-05-30aRagexe, 2018-05-30bRagexeRE, 2018-05-30cRagexeRE, 2018-06-05bRagexe, 2018-06-05bRagexeRE, 2018-06-12aRagexeRE, 2018-06-12bRagexeRE, 2018-06-20cRagexe, 2018-06-20dRagexeRE, 2018-06-20eRagexe, 2018-06-20eRagexeRE, 2018-06-21aRagexe, 2018-06-21aRagexeRE, 2018-07-04aRagexe, 2018-07-04aRagexeRE, 2018-07-11aRagexeRE, 2018-07-18bRagexe, 2018-07-18bRagexeRE, 2018-07-18bRagexeRE1, 2018-07-18cRagexe, 2018-07-18cRagexeRE, 2018-08-01cRagexe, 2018-08-01cRagexeRE, 2018-08-08bRagexe, 2018-08-08bRagexeRE, 2018-08-22cRagexe, 2018-08-22cRagexeRE, 2018-08-29aRagexe, 2018-08-29aRagexeRE, 2018-08-29bRagexeRE, 2018-08-31aRagexe, 2018-09-12dRagexe, 2018-09-12dRagexeRE, 2018-09-19aRagexe, 2018-09-19aRagexeRE, 2018-10-02aRagexe, 2018-10-02aRagexeRE, 2018-10-02bRagexe, 2018-10-02bRagexeRE, 2018-10-17_02aRagexe, 2018-10-17_02aRagexeRE, 2018-10-17_03aRagexe, 2018-10-17_03aRagexeRE, 2018-10-17bRagexe, 2018-10-17bRagexeRE, 2018-10-24bRagexe, 2018-10-31aRagexe, 2018-10-31bRagexe, 2018-10-31cRagexeRE, 2018-11-07aRagexe, 2018-11-07aRagexeRE, 2018-11-14cRagexe, 2018-11-14cRagexeRE, 2018-11-14dRagexe, 2018-11-14dRagexeRE, 2018-11-21bRagexe, 2018-11-21cRagexeRE, 2018-11-28aRagexe, 2018-11-28aRagexeRE, 2018-11-28bRagexe, 2018-11-28cRagexe, 2018-12-05aRagexe, 2018-12-05bRagexeRE, 2018-12-12aRagexe, 2018-12-12aRagexeRE, 2018-12-12bRagexe, 2018-12-12bRagexeRE, 2018-12-19bRagexe, 2018-12-19bRagexeRE, 2018-12-26aRagexe, 2018-12-26aRagexeRE, 2019-01-09aRagexe, 2019-01-09bRagexeRE, 2019-01-16bRagexe, 2019-01-16bRagexeRE, 2019-01-16cRagexe, 2019-01-16cRagexeRE, 2019-01-23dRagexe, 2019-01-23dRagexeRE, 2019-02-13IRagexeRE, 2019-02-13bRagexe, 2019-02-13eRagexe, 2019-02-20aRagexeRE, 2019-02-27aRagexe, 2019-02-27bRagexeRE, 2019-02-28aRagexe, 2019-02-28aRagexeRE, 2019-03-06bRagexe, 2019-03-06bRagexeRE, 2019-03-06cRagexe, 2019-03-06cRagexeRE, 2019-03-13aRagexe, 2019-03-20aRagexe, 2019-03-20aRagexeRE, 2019-03-22aRagexe, 2019-03-22aRagexeRE, 2019-03-27bRagexe, 2019-03-27bRagexeRE, 2019-04-03aRagexe, 2019-04-03bRagexeRE, 2019-04-03cRagexeRE, 2019-04-17aRagexe, 2019-04-17cRagexeRE, 2019-04-18aRagexe, 2019-04-18aRagexeRE, 2019-05-08cRagexe, 2019-05-08dRagexeRE, 2019-05-08eRagexeRE, 2019-05-22bRagexe, 2019-05-22bRagexeRE, 2019-05-22cRagexe, 2019-05-22cRagexeRE, 2019-05-23aRagexe, 2019-05-29aRagexe, 2019-05-29bRagexeRE, 2019-05-29cRagexe, 2019-05-29cRagexeRE, 2019-05-30aRagexe, 2019-05-30aRagexeRE, 2019-06-05JRagexeRE, 2019-06-05KRagexe, 2019-06-05LRagexeRE, 2019-06-05fRagexe, 2019-06-05hRagexeRE, 2019-06-19bRagexe, 2019-06-19cRagexeRE, 2019-06-19eRagexe, 2019-06-19hRagexe, 2019-06-26bRagexeRE, 2019-07-03aRagexe, 2019-07-03bRagexeRE, 2019-07-17aRagexe, 2019-07-17cRagexeRE, 2019-07-17dRagexe, 2019-07-17dRagexeRE, 2019-07-24aRagexe, 2019-07-24bRagexeRE, 2019-07-31bRagexe, 2019-07-31bRagexeRE, 2019-08-02aRagexe, 2019-08-02aRagexeRE, 2019-08-07aRagexe, 2019-08-07dRagexeRE, 2019-08-21aRagexe, 2019-08-21cRagexeRE, 2019-08-21dRagexeRE, 2019-08-28aRagexe, 2019-08-28aRagexeRE, 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-04bRagexeRE, 2019-09-18bRagexe, 2019-09-18cRagexeRE, 2019-09-25aRagexe, 2019-09-25aRagexeRE, 2019-09-25bRagexe, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexe, 2019-10-16fRagexeRE, 2019-10-16gRagexe, 2019-10-16gRagexeRE, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-06bRagexeRE, 2019-11-07aRagexe, 2019-11-07aRagexeRE, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-13eRagexeRE, 2019-11-20aRagexe, 2019-11-20cRagexeRE, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27aRagexeRE, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04aRagexeRE, 2019-12-04bRagexe, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11aRagexe, 2019-12-11fRagexeRE
#if PACKETVER == 20101123 || \
PACKETVER == 20101124 || \
PACKETVER == 20101125 || \
@@ -168,7 +168,17 @@
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
PACKETVER == 20191002 || \
- PACKETVER >= 20191016
+ PACKETVER == 20191016 || \
+ PACKETVER == 20191018 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191030 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191107 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191120 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER >= 20191211
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_keys_zero.h b/src/map/packets_keys_zero.h
index e4319817b..3faefb3cf 100644
--- a/src/map/packets_keys_zero.h
+++ b/src/map/packets_keys_zero.h
@@ -30,7 +30,7 @@
/* This file is autogenerated, please do not commit manual changes */
-// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero
+// 2017-10-18aRagexe_zero, 2017-10-19aRagexe_zero, 2017-10-23aRagexe_zero, 2017-10-23bRagexe_zero, 2017-10-23cRagexe_zero, 2017-10-24aRagexe_2_zero, 2017-10-24aRagexe_zero, 2017-10-25bRagexe_zero, 2017-10-27aRagexe_zero, 2017-10-27bRagexe_zero, 2017-10-30aRagexe_zero, 2017-10-31aRagexe_zero, 2017-11-09aRagexe_zero, 2017-11-13aRagexe_zero, 2017-11-13bRagexe_zero, 2018-03-15aRagexe_zero, 2018-03-21aRagexe_zero, 2018-03-21bRagexe_zero, 2018-03-28_1aRagexe_zero, 2018-03-28cRagexe_zero, 2018-04-11aRagexe_zero, 2018-04-25_3aRagexe_zero, 2018-05-09_3aRagexe_zero, 2018-05-23aRagexe_zero, 2018-06-05bRagexe_zero, 2018-06-05cRagexe_zero, 2018-06-27aRagexe_zero, 2018-07-03aRagexe_zero, 2018-07-11_2aRagexe_zero, 2018-07-25_2aRagexe_zero, 2018-08-01aRagexe_zero, 2018-08-08_2aRagexe_zero, 2018-08-22aRagexe_zero, 2018-08-29aRagexe_zero, 2018-09-05aRagexe_zero, 2018-09-12aRagexe_zero, 2018-09-19aRagexe_zero, 2018-09-28aRagexe_zero, 2018-10-10_2aRagexe_zero, 2018-10-24_2aRagexe_zero, 2018-11-14aRagexe_zero, 2018-11-20aRagexe_zero, 2018-11-28aRagexe_zero, 2018-12-12aRagexe_zero, 2018-12-19aRagexe_zero, 2018-12-26_2aRagexe_zero, 2019-01-16_2aRagexe_zero, 2019-01-17_1aRagexe_zero, 2019-01-30_2aRagexe_zero, 2019-02-13aRagexe_zero, 2019-02-20aRagexe_zero, 2019-02-27aRagexe_zero, 2019-03-13aRagexe_zero, 2019-03-27_2aRagexe_zero, 2019-03-27_3aRagexe_zero, 2019-04-03aRagexe_zero, 2019-04-10bRagexe_zero, 2019-04-24aRagexe_zero, 2019-05-02aRagexe_zero, 2019-05-08_2aRagexe_zero, 2019-05-08aRagexe_zero, 2019-05-15aRagexe_zero, 2019-05-29aRagexe_zero, 2019-05-30aRagexe_zero, 2019-06-05_2aRagexe_zero, 2019-06-26_2aRagexe_zero, 2019-06-26_3aRagexe_zero, 2019-07-09aRagexe_zero, 2019-07-10_3aRagexe_zero, 2019-07-17aRagexe_zero, 2019-07-24aRagexe_zero, 2019-08-14_3aRagexe_zero, 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero
#if PACKETVER == 20171018 || \
PACKETVER == 20171019 || \
PACKETVER == 20171023 || \
@@ -96,7 +96,13 @@
PACKETVER == 20190911 || \
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
- PACKETVER >= 20191008
+ PACKETVER == 20191008 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER >= 20191211
packetKeys(0x00000000,0x00000000,0x00000000);
#endif
diff --git a/src/map/packets_shuffle_main.h b/src/map/packets_shuffle_main.h
index ede178384..8e0eb63d5 100644
--- a/src/map/packets_shuffle_main.h
+++ b/src/map/packets_shuffle_main.h
@@ -9794,12 +9794,22 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
-// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe
+// 2019-09-04aRagexe, 2019-09-04bRagexe, 2019-09-18bRagexe, 2019-09-25aRagexe, 2019-09-25bRagexe, 2019-10-02cRagexe, 2019-10-02dRagexe, 2019-10-16fRagexe, 2019-10-16gRagexe, 2019-10-18aRagexe, 2019-10-23aRagexe, 2019-10-30cRagexe, 2019-11-06aRagexe, 2019-11-07aRagexe, 2019-11-13cRagexe, 2019-11-13eRagexe, 2019-11-20aRagexe, 2019-11-20dRagexe, 2019-11-27aRagexe, 2019-11-27bRagexe, 2019-12-04aRagexe, 2019-12-04bRagexe, 2019-12-11aRagexe
#if PACKETVER == 20190904 || \
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
PACKETVER == 20191002 || \
- PACKETVER == 20191016
+ PACKETVER == 20191016 || \
+ PACKETVER == 20191018 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191030 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191107 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191120 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER == 20191211
packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
diff --git a/src/map/packets_shuffle_re.h b/src/map/packets_shuffle_re.h
index 049d4808a..891afde57 100644
--- a/src/map/packets_shuffle_re.h
+++ b/src/map/packets_shuffle_re.h
@@ -9744,12 +9744,21 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
-// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE
+// 2019-09-04bRagexeRE, 2019-09-18cRagexeRE, 2019-09-25aRagexeRE, 2019-09-25bRagexeRE, 2019-10-02bRagexeRE, 2019-10-02dRagexeRE, 2019-10-02dRagexeRE_2, 2019-10-16fRagexeRE, 2019-10-16gRagexeRE, 2019-10-23aRagexeRE, 2019-10-30bRagexeRE, 2019-11-06bRagexeRE, 2019-11-07aRagexeRE, 2019-11-13eRagexeRE, 2019-11-20cRagexeRE, 2019-11-27aRagexeRE, 2019-12-04aRagexeRE, 2019-12-04bRagexeRE, 2019-12-04cRagexeRE, 2019-12-11fRagexeRE
#if PACKETVER == 20190904 || \
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
PACKETVER == 20191002 || \
- PACKETVER == 20191016
+ PACKETVER == 20191016 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191030 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191107 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191120 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER == 20191211
packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
diff --git a/src/map/packets_shuffle_zero.h b/src/map/packets_shuffle_zero.h
index 0259a9555..8ea474bd5 100644
--- a/src/map/packets_shuffle_zero.h
+++ b/src/map/packets_shuffle_zero.h
@@ -803,12 +803,18 @@
packet(0x083c,clif->pSearchStoreInfoListItemClick,2,6,10); // CZ_SSILIST_ITEM_CLICK // 14
#endif
-// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero
+// 2019-08-28_2aRagexe_zero, 2019-08-28_3aRagexe_zero, 2019-09-11aRagexe_zero, 2019-09-18_2aRagexe_zero, 2019-09-18aRagexe_zero, 2019-09-25_3aRagexe_zero, 2019-09-25_5aRagexe_zero, 2019-10-08_2aRagexe_zero, 2019-10-23_2aRagexe_zero, 2019-11-06aRagexe_zero, 2019-11-13aRagexe_zero, 2019-11-27_2aRagexe_zero, 2019-11-27aRagexe_zero, 2019-12-04aRagexe_zero, 2019-12-11_2aRagexe_zero
#if PACKETVER == 20190828 || \
PACKETVER == 20190911 || \
PACKETVER == 20190918 || \
PACKETVER == 20190925 || \
- PACKETVER == 20191008
+ PACKETVER == 20191008 || \
+ PACKETVER == 20191023 || \
+ PACKETVER == 20191106 || \
+ PACKETVER == 20191113 || \
+ PACKETVER == 20191127 || \
+ PACKETVER == 20191204 || \
+ PACKETVER == 20191211
packet(0x0202,clif->pFriendsListAdd,2); // CZ_ADD_FRIENDS // 26
packet(0x022d,clif->pHomMenu,2,4); // CZ_COMMAND_MER // 5
packet(0x023b,clif->pStoragePassword,0); // CZ_ACK_STORE_PASSWORD // 36
diff --git a/src/map/packets_struct.h b/src/map/packets_struct.h
index c0d1054d7..a98317364 100644
--- a/src/map/packets_struct.h
+++ b/src/map/packets_struct.h
@@ -3687,6 +3687,13 @@ struct PACKET_ZC_LAPINEDDUKDDAK_OPEN {
DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_OPEN, 0x0a4e);
#endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO)
+#if PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO)
+struct PACKET_CZ_LAPINEDDUKDDAK_CLOSE {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_LAPINEDDUKDDAK_CLOSE, 0x0a70);
+#endif // PACKETVER_MAIN_NUM >= 20160504 || PACKETVER_RE_NUM >= 20160504 || defined(PACKETVER_ZERO)
+
#if PACKETVER >= 20160302
struct PACKET_CZ_LAPINEDDUKDDAK_ACK_sub {
int16 index;
@@ -3714,6 +3721,46 @@ struct PACKET_ZC_LAPINEDDUKDDAK_RESULT {
DEFINE_PACKET_HEADER(ZC_LAPINEDDUKDDAK_RESULT, 0x0a50);
#endif // PACKETVER_MAIN_NUM >= 20160601 || PACKETVER_RE_NUM >= 20160525 || defined(PACKETVER_ZERO)
+#if PACKETVER_MAIN_NUM >= 20190703 || PACKETVER_RE_NUM >= 20190703 || PACKETVER_ZERO_NUM >= 20190709
+struct PACKET_CZ_REQ_MOUNTOFF {
+ int16 packetType;
+ uint8 action;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_REQ_MOUNTOFF, 0x0b35);
+#endif
+
+// in 3 clients from same version
+#if PACKETVER >= 20191127
+struct PACKET_ZC_NOTIFY_EFFECT3 {
+ int16 packetType;
+ uint32 aid;
+ uint32 effectId;
+ uint64 num;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT3, 0x0b69);
+#elif PACKETVER_MAIN_NUM >= 20060911 || PACKETVER_AD_NUM >= 20060911 || PACKETVER_SAK_NUM >= 20060911 || defined(PACKETVER_RE) || defined(PACKETVER_ZERO)
+struct PACKET_ZC_NOTIFY_EFFECT3 {
+ int16 packetType;
+ uint32 aid;
+ uint32 effectId;
+ uint32 num;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(ZC_NOTIFY_EFFECT3, 0x0284);
+#endif
+
+#if PACKETVER >= 20190724
+struct PACKET_CZ_SE_CASHSHOP_OPEN {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_SE_CASHSHOP_OPEN, 0x0b4c);
+CHECK_PACKET_HEADER(CZ_SE_CASHSHOP_OPEN, 0x0844);
+#elif PACKETVER >= 20100824
+struct PACKET_CZ_SE_CASHSHOP_OPEN {
+ int16 packetType;
+} __attribute__((packed));
+DEFINE_PACKET_HEADER(CZ_SE_CASHSHOP_OPEN, 0x0844);
+#endif
+
#if !defined(sun) && (!defined(__NETBSD__) || __NetBSD_Version__ >= 600000000) // NetBSD 5 and Solaris don't like pragma pack but accept the packed attribute
#pragma pack(pop)
#endif // not NetBSD < 6 / Solaris
diff --git a/src/map/pc.c b/src/map/pc.c
index a8ff661e8..179a4b78a 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -2839,7 +2839,7 @@ static int pc_bonus(struct map_session_data *sd, int type, int val)
case SP_INTRAVISION: // Maya Purple Card effect allowing to see Hiding/Cloaking people [DracoRPG]
if(sd->state.lr_flag != 2) {
sd->special_state.intravision = 1;
- clif->status_change(&sd->bl, SI_CLAIRVOYANCE, 1, 0, 0, 0, 0);
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_CLAIRVOYANCE), status->get_sc_relevant_bl_types(SC_CLAIRVOYANCE), 1, 0, 0, 0, 0);
}
break;
case SP_NO_KNOCKBACK:
@@ -5583,15 +5583,17 @@ static int pc_steal_item(struct map_session_data *sd, struct block_list *bl, uin
// Try dropping one item, in the order from first to last possible slot.
// Droprate is affected by the skill success rate.
- for (i = 0; i < MAX_STEAL_DROP; i++) {
+ for (i = 0; i < MAX_MOB_DROP; i++) {
if (md->db->dropitem[i].nameid == 0)
continue;
if ((data = itemdb->exists(md->db->dropitem[i].nameid)) == NULL)
continue;
+ if (data->type == IT_CARD)
+ continue;
if (rnd() % 10000 < apply_percentrate(md->db->dropitem[i].p, rate, 100))
break;
}
- if (i == MAX_STEAL_DROP)
+ if (i == MAX_MOB_DROP)
return 0;
itemid = md->db->dropitem[i].nameid;
@@ -6916,7 +6918,7 @@ static int pc_checkjoblevelup(struct map_session_data *sd)
status_calc_pc(sd,SCO_FORCE);
clif->misceffect(&sd->bl,1);
if (pc->checkskill(sd, SG_DEVIL) && !pc->nextjobexp(sd))
- clif->status_change(&sd->bl,SI_DEVIL1, 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL.
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_DEVIL1), status->get_sc_relevant_bl_types(SC_DEVIL1), 1, 0, 0, 0, 1); //Permanent blind effect from SG_DEVIL.
npc->script_event(sd, NPCE_JOBLVUP);
@@ -7686,7 +7688,7 @@ static int pc_resetskill(struct map_session_data *sd, int flag)
return 0;
if( pc->checkskill(sd, SG_DEVIL) && !pc->nextjobexp(sd) ) //Remove perma blindness due to skill-reset. [Skotlex]
- clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_DEVIL1);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_DEVIL1));
i = sd->sc.option;
if( i&OPTION_RIDING && pc->checkskill(sd, KN_RIDING) )
i &= ~OPTION_RIDING;
@@ -8056,7 +8058,7 @@ static int pc_dead(struct map_session_data *sd, struct block_list *src)
/* e.g. not killed through pc->damage */
if( pc_issit(sd) ) {
- clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_SIT);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT));
}
pc_setdead(sd);
@@ -9155,11 +9157,11 @@ static int pc_setoption(struct map_session_data *sd, int type)
if( (type&OPTION_RIDING && !(p_type&OPTION_RIDING)) || (type&OPTION_DRAGON && !(p_type&OPTION_DRAGON) && pc->checkskill(sd,RK_DRAGONTRAINING) > 0) ) {
// Mounting
- clif->sc_load(&sd->bl,sd->bl.id,AREA,SI_RIDING, 0, 0, 0);
+ clif->sc_load(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_RIDING), 0, 0, 0);
status_calc_pc(sd,SCO_NONE);
} else if( (!(type&OPTION_RIDING) && p_type&OPTION_RIDING) || (!(type&OPTION_DRAGON) && p_type&OPTION_DRAGON) ) {
// Dismount
- clif->sc_end(&sd->bl,sd->bl.id,AREA,SI_RIDING);
+ clif->sc_end(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_RIDING));
status_calc_pc(sd,SCO_NONE);
}
@@ -9179,15 +9181,15 @@ static int pc_setoption(struct map_session_data *sd, int type)
#endif
if (type&OPTION_FALCON && !(p_type&OPTION_FALCON)) //Falcon ON
- clif->sc_load(&sd->bl,sd->bl.id,AREA,SI_FALCON, 0, 0, 0);
+ clif->sc_load(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_FALCON), 0, 0, 0);
else if (!(type&OPTION_FALCON) && p_type&OPTION_FALCON) //Falcon OFF
- clif->sc_end(&sd->bl,sd->bl.id,AREA,SI_FALCON);
+ clif->sc_end(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_FALCON));
if( type&OPTION_WUGRIDER && !(p_type&OPTION_WUGRIDER) ) { // Mounting
- clif->sc_load(&sd->bl,sd->bl.id,AREA,SI_WUGRIDER, 0, 0, 0);
+ clif->sc_load(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_WUGRIDER), 0, 0, 0);
status_calc_pc(sd,SCO_NONE);
} else if( !(type&OPTION_WUGRIDER) && p_type&OPTION_WUGRIDER ) { // Dismount
- clif->sc_end(&sd->bl,sd->bl.id,AREA,SI_WUGRIDER);
+ clif->sc_end(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_WUGRIDER));
status_calc_pc(sd,SCO_NONE);
}
@@ -9275,7 +9277,7 @@ static int pc_setcart(struct map_session_data *sd, int type)
clif->cartList(sd);
clif->updatestatus(sd, SP_CARTINFO);
sc_start(NULL,&sd->bl, SC_PUSH_CART, 100, type, 0);
- clif->sc_load(&sd->bl, sd->bl.id, AREA, SI_ON_PUSH_CART, type, 0, 0);
+ clif->sc_load(&sd->bl, sd->bl.id, AREA, status->get_sc_icon(SC_ON_PUSH_CART), type, 0, 0);
if( sd->sc.data[SC_PUSH_CART] )/* forcefully update */
sd->sc.data[SC_PUSH_CART]->val1 = type;
break;
@@ -10913,7 +10915,7 @@ static int pc_daynight_timer_sub(struct map_session_data *sd, va_list ap)
{
nullpo_ret(sd);
if (sd->state.night != map->night_flag && map->list[sd->bl.m].flag.nightenabled) { //Night/day state does not match.
- clif->status_change(&sd->bl, SI_SKE, map->night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex]
+ clif->status_change(&sd->bl, status->get_sc_icon(SC_SKE), status->get_sc_relevant_bl_types(SC_SKE), map->night_flag, 0, 0, 0, 0); //New night effect by dynamix [Skotlex]
sd->state.night = map->night_flag;
return 1;
}
@@ -10966,7 +10968,7 @@ static void pc_setstand(struct map_session_data *sd)
nullpo_retv(sd);
status_change_end(&sd->bl, SC_TENSIONRELAX, INVALID_TIMER);
- clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_SIT);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT));
//Reset sitting tick.
sd->ssregen.tick.hp = sd->ssregen.tick.sp = 0;
if (pc_isdead(sd)) {
diff --git a/src/map/script.c b/src/map/script.c
index bd0fbb611..396d084a3 100644
--- a/src/map/script.c
+++ b/src/map/script.c
@@ -5400,6 +5400,9 @@ static int script_load_translation_file(const char *file, uint8 lang_id)
if (line[i] == '\\' && line[i+1] == '"') {
VECTOR_PUSH(*msg_ptr, '"');
i++;
+ } else if (line[i] == '\\' && line[i+1] == 'r') {
+ VECTOR_PUSH(*msg_ptr, '\r');
+ i++;
} else {
VECTOR_PUSH(*msg_ptr, line[i]);
}
@@ -5418,6 +5421,9 @@ static int script_load_translation_file(const char *file, uint8 lang_id)
if (line[i] == '\\' && line[i+1] == '"') {
msgctxt[cursor] = '"';
i++;
+ } else if (line[i] == '\\' && line[i+1] == 'r') {
+ msgctxt[cursor] = '\r';
+ i++;
} else {
msgctxt[cursor] = line[i];
}
@@ -5439,6 +5445,9 @@ static int script_load_translation_file(const char *file, uint8 lang_id)
if (line[i] == '\\' && line[i+1] == '"') {
VECTOR_PUSH(msgid, '"');
i++;
+ } else if (line[i] == '\\' && line[i+1] == 'r') {
+ VECTOR_PUSH(msgid, '\r');
+ i++;
} else {
VECTOR_PUSH(msgid, line[i]);
}
@@ -5458,6 +5467,9 @@ static int script_load_translation_file(const char *file, uint8 lang_id)
if (line[i] == '\\' && line[i+1] == '"') {
VECTOR_PUSH(msgstr, '"');
i++;
+ } else if (line[i] == '\\' && line[i+1] == 'r') {
+ VECTOR_PUSH(msgstr, '\r');
+ i++;
} else {
VECTOR_PUSH(msgstr, line[i]);
}
@@ -8981,6 +8993,93 @@ static BUILDIN(getpartyleader)
return true;
}
+enum guildinfo_type {
+ GUILDINFO_NAME,
+ GUILDINFO_ID,
+ GUILDINFO_LEVEL,
+ GUILDINFO_ONLINE,
+ GUILDINFO_AV_LEVEL,
+ GUILDINFO_MAX_MEMBERS,
+ GUILDINFO_EXP,
+ GUILDINFO_NEXT_EXP,
+ GUILDINFO_SKILL_POINTS,
+ GUILDINFO_MASTER_NAME,
+ GUILDINFO_MASTER_CID,
+};
+
+static BUILDIN(getguildinfo)
+{
+ struct guild *g = NULL;
+
+ if (script_hasdata(st, 3)) {
+ if (script_isstringtype(st, 3)) {
+ const char *guild_name = script_getstr(st, 3);
+ g = guild->searchname(guild_name);
+ } else {
+ int guild_id = script_getnum(st, 3);
+ g = guild->search(guild_id);
+ }
+ } else {
+ struct map_session_data *sd = script->rid2sd(st);
+ g = sd ? sd->guild : NULL;
+ }
+
+ enum guildinfo_type type = script_getnum(st, 2);
+
+ if (g == NULL) {
+ // guild does not exist
+ switch (type) {
+ case GUILDINFO_NAME:
+ case GUILDINFO_MASTER_NAME:
+ script_pushconststr(st, "");
+ break;
+ default:
+ script_pushint(st, -1);
+ }
+ } else {
+ switch (type) {
+ case GUILDINFO_NAME:
+ script_pushstrcopy(st, g->name);
+ break;
+ case GUILDINFO_ID:
+ script_pushint(st, g->guild_id);
+ break;
+ case GUILDINFO_LEVEL:
+ script_pushint(st, g->guild_lv);
+ break;
+ case GUILDINFO_ONLINE:
+ script_pushint(st, g->connect_member);
+ break;
+ case GUILDINFO_AV_LEVEL:
+ script_pushint(st, g->average_lv);
+ break;
+ case GUILDINFO_MAX_MEMBERS:
+ script_pushint(st, g->max_member);
+ break;
+ case GUILDINFO_EXP:
+ script_pushint(st, g->exp);
+ break;
+ case GUILDINFO_NEXT_EXP:
+ script_pushint(st, g->next_exp);
+ break;
+ case GUILDINFO_SKILL_POINTS:
+ script_pushint(st, g->skill_point);
+ break;
+ case GUILDINFO_MASTER_NAME:
+ script_pushstrcopy(st, g->member[0].name);
+ break;
+ case GUILDINFO_MASTER_CID:
+ script_pushint(st, g->member[0].char_id);
+ break;
+ default:
+ ShowError("script:getguildinfo: unknown info type!\n");
+ st->state = END;
+ return false;
+ }
+ }
+ return true;
+}
+
/*==========================================
* Return the name of the @guild_id
* null if not found
@@ -15716,6 +15815,56 @@ static BUILDIN(specialeffect)
return true;
}
+/*==========================================
+ * Special effects with num [4144]
+ *------------------------------------------*/
+static BUILDIN(specialeffectnum)
+{
+ struct block_list *bl = NULL;
+ int type = script_getnum(st, 2);
+ int num = script_getnum(st, 3);
+ int num2 = script_getnum(st, 4);
+ enum send_target target = AREA;
+
+ if (script_hasdata(st, 5)) {
+ target = script_getnum(st, 5);
+ }
+
+ if (script_hasdata(st, 6)) {
+ if (script_isstringtype(st, 6)) {
+ struct npc_data *nd = npc->name2id(script_getstr(st, 6));
+ if (nd != NULL) {
+ bl = &nd->bl;
+ }
+ } else {
+ bl = map->id2bl(script_getnum(st, 6));
+ }
+ } else {
+ bl = map->id2bl(st->oid);
+ }
+
+ if (bl == NULL) {
+ return true;
+ }
+
+ uint64 bigNum = ((uint64)num2) * 0xffffffff + num;
+ if (target == SELF) {
+ struct map_session_data *sd;
+ if (script_hasdata(st, 7)) {
+ sd = map->id2sd(script_getnum(st, 7));
+ } else {
+ sd = script->rid2sd(st);
+ }
+ if (sd != NULL) {
+ clif->specialeffect_value_single(bl, type, bigNum, sd->fd);
+ }
+ } else {
+ clif->specialeffect_value(bl, type, bigNum, target);
+ }
+
+ return true;
+}
+
static BUILDIN(specialeffect2)
{
struct map_session_data *sd;
@@ -15925,7 +16074,7 @@ static BUILDIN(recovery)
return true;
}
-/*
+/*
* Get your current pet information
*/
static BUILDIN(getpetinfo)
@@ -15978,7 +16127,7 @@ static BUILDIN(getpetinfo)
case PETINFO_ACCESSORYFLAG:
script_pushint(st, (pd->pet.equip != 0)? 1:0);
break;
- case PETINFO_EVO_EGGID:
+ case PETINFO_EVO_EGGID:
if (VECTOR_DATA(pd->petDB->evolve_data) != NULL)
script_pushint(st, VECTOR_DATA(pd->petDB->evolve_data)->petEggId);
else
@@ -24902,7 +25051,7 @@ static BUILDIN(showscript)
if (script_hasdata(st, 4))
if (script_getnum(st, 4) == SELF)
flag = SELF;
-
+
clif->ShowScript(bl, msg, flag);
return true;
}
@@ -25462,7 +25611,7 @@ static BUILDIN(clan_master)
}
nd->clan_id = clan_id;
- clif->sc_load(&nd->bl, nd->bl.id, AREA, status->dbs->IconChangeTable[SC_CLAN_INFO], 0, clan_id, 0);
+ clif->sc_load(&nd->bl, nd->bl.id, AREA, status->get_sc_icon(SC_CLAN_INFO), 0, clan_id, 0);
script_pushint(st, true);
return true;
@@ -25787,7 +25936,7 @@ static BUILDIN(identifyidx)
script_pushint(st, false);
return true;
}
-
+
if (sd->status.inventory[idx].nameid <= 0 || sd->status.inventory[idx].identify != 0) {
script_pushint(st, false);
return true;
@@ -26089,10 +26238,11 @@ static void script_parse_builtin(void)
BUILDIN_DEF(getpartyname,"i"),
BUILDIN_DEF(getpartymember,"i?"),
BUILDIN_DEF(getpartyleader,"i?"),
- BUILDIN_DEF(getguildname,"i"),
- BUILDIN_DEF(getguildmaster,"i"),
- BUILDIN_DEF(getguildmasterid,"i"),
+ BUILDIN_DEF_DEPRECATED(getguildname,"i"),
+ BUILDIN_DEF_DEPRECATED(getguildmaster,"i"),
+ BUILDIN_DEF_DEPRECATED(getguildmasterid,"i"),
BUILDIN_DEF(getguildmember,"i?"),
+ BUILDIN_DEF(getguildinfo,"i?"),
BUILDIN_DEF(getguildonline, "i?"),
BUILDIN_DEF(strcharinfo,"i??"),
BUILDIN_DEF(strnpcinfo,"i??"),
@@ -26269,6 +26419,7 @@ static void script_parse_builtin(void)
BUILDIN_DEF(skilleffect,"vi"), // skill effect [Celest]
BUILDIN_DEF(npcskilleffect,"viii"), // npc skill effect [Valaris]
BUILDIN_DEF(specialeffect,"i???"), // npc skill effect [Valaris]
+ BUILDIN_DEF(specialeffectnum,"iii???"), // npc skill effect with num [4144]
BUILDIN_DEF(removespecialeffect,"i???"),
BUILDIN_DEF_DEPRECATED(specialeffect2,"i??"), // skill effect on players[Valaris]
BUILDIN_DEF(nude,""), // nude command [Valaris]
@@ -27208,6 +27359,19 @@ static void script_hardcoded_constants(void)
script->set_constant("SIEGE_TYPE_SE", SIEGE_TYPE_SE, false, false);
script->set_constant("SIEGE_TYPE_TE", SIEGE_TYPE_TE, false, false);
+ script->constdb_comment("guildinfo types");
+ script->set_constant("GUILDINFO_NAME", GUILDINFO_NAME, false, false);
+ script->set_constant("GUILDINFO_ID", GUILDINFO_ID, false, false);
+ script->set_constant("GUILDINFO_LEVEL", GUILDINFO_LEVEL, false, false);
+ script->set_constant("GUILDINFO_ONLINE", GUILDINFO_ONLINE, false, false);
+ script->set_constant("GUILDINFO_AV_LEVEL", GUILDINFO_AV_LEVEL, false, false);
+ script->set_constant("GUILDINFO_MAX_MEMBERS", GUILDINFO_MAX_MEMBERS, false, false);
+ script->set_constant("GUILDINFO_EXP", GUILDINFO_EXP, false, false);
+ script->set_constant("GUILDINFO_NEXT_EXP", GUILDINFO_NEXT_EXP, false, false);
+ script->set_constant("GUILDINFO_SKILL_POINTS", GUILDINFO_SKILL_POINTS, false, false);
+ script->set_constant("GUILDINFO_MASTER_NAME", GUILDINFO_MASTER_NAME, false, false);
+ script->set_constant("GUILDINFO_MASTER_CID", GUILDINFO_MASTER_CID, false, false);
+
script->constdb_comment("Renewal");
#ifdef RENEWAL
script->set_constant("RENEWAL", 1, false, false);
@@ -27245,7 +27409,6 @@ static void script_hardcoded_constants(void)
script->set_constant("RENEWAL_ASPD", 0, false, false);
#endif
script->constdb_comment(NULL);
-#include "constants.inc"
}
/**
diff --git a/src/map/skill.c b/src/map/skill.c
index 7451fbf41..c19a684af 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2043,7 +2043,7 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){
ud->canact_tick = tick+rate;
if ( battle_config.display_status_timers )
- clif->status_change(src, SI_POSTDELAY, 1, rate, 0, 0, 0);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, rate, 0, 0, 0);
}
}
}
@@ -2129,7 +2129,7 @@ static int skill_additional_effect(struct block_list *src, struct block_list *bl
if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){
ud->canact_tick = tick+rate;
if (battle_config.display_status_timers)
- clif->status_change(src, SI_POSTDELAY, 1, rate, 0, 0, 0);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, rate, 0, 0, 0);
}
}
}
@@ -2470,7 +2470,7 @@ static int skill_counter_additional_effect(struct block_list *src, struct block_
if (DIFF_TICK(ud->canact_tick, tick + rate) < 0){
ud->canact_tick = tick+rate;
if (battle_config.display_status_timers)
- clif->status_change(bl, SI_POSTDELAY, 1, rate, 0, 0, 0);
+ clif->status_change(bl, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, rate, 0, 0, 0);
}
}
}
@@ -5168,7 +5168,7 @@ static int skill_castend_damage_id(struct block_list *src, struct block_list *bl
skill->castend_type(skill->get_casttype(spell_skill_id), src, bl, spell_skill_id, spell_skill_lv, tick, 0);
sd->ud.canact_tick = tick + skill->delay_fix(src, spell_skill_id, spell_skill_lv);
- clif->status_change(src, SI_POSTDELAY, 1, skill->delay_fix(src, spell_skill_id, spell_skill_lv), 0, 0, 0);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, spell_skill_id, spell_skill_lv), 0, 0, 0);
cooldown = skill->get_cooldown(spell_skill_id, spell_skill_lv);
for (i = 0; i < ARRAYLENGTH(sd->skillcooldown) && sd->skillcooldown[i].id; i++) {
@@ -5782,7 +5782,7 @@ static int skill_castend_id(int tid, int64 tick, int id, intptr_t data)
skill->blockpc_start(sd, ud->skill_id, cooldown);
}
if( battle_config.display_status_timers && sd )
- clif->status_change(src, SI_POSTDELAY, 1, skill->delay_fix(src, ud->skill_id, ud->skill_lv), 0, 0, 0);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, ud->skill_id, ud->skill_lv), 0, 0, 0);
if( sd )
{
switch( ud->skill_id )
@@ -8463,7 +8463,7 @@ static int skill_castend_nodamage_id(struct block_list *src, struct block_list *
status_fix_damage(src, bl, 1000, 0);
clif->damage(src,bl,0,0,1000,0,BDT_NORMAL,0);
if( !status->isdead(bl) ) {
- int where[] = { EQP_ARMOR, EQP_SHIELD, EQP_HELM, EQP_SHOES, EQP_GARMENT };
+ int where[] = {EQP_ARMOR, EQP_SHIELD, EQP_HELM};
skill->break_equip(bl, where[rnd() % ARRAYLENGTH(where)], 10000, BCT_ENEMY);
}
}
@@ -10783,7 +10783,7 @@ static int skill_castend_pos(int tid, int64 tick, int id, intptr_t data)
skill->blockpc_start(sd, ud->skill_id, cooldown);
}
if( battle_config.display_status_timers && sd )
- clif->status_change(src, SI_POSTDELAY, 1, skill->delay_fix(src, ud->skill_id, ud->skill_lv), 0, 0, 0);
+ clif->status_change(src, status->get_sc_icon(SC_POSTDELAY), status->get_sc_relevant_bl_types(SC_POSTDELAY), 1, skill->delay_fix(src, ud->skill_id, ud->skill_lv), 0, 0, 0);
#if 0
if (sd) {
switch (ud->skill_id) {
@@ -13962,27 +13962,9 @@ static int skill_isammotype(struct map_session_data *sd, int skill_id)
**/
static bool skill_is_combo(int skill_id)
{
- switch( skill_id )
- {
- case MO_CHAINCOMBO:
- case MO_COMBOFINISH:
- case CH_TIGERFIST:
- case CH_CHAINCRUSH:
- case MO_EXTREMITYFIST:
- case TK_TURNKICK:
- case TK_STORMKICK:
- case TK_DOWNKICK:
- case TK_COUNTER:
- case TK_JUMPKICK:
- case HT_POWER:
- case GC_COUNTERSLASH:
- case GC_WEAPONCRUSH:
- case SR_FALLENEMPIRE:
- case SR_DRAGONCOMBO:
- case SR_TIGERCANNON:
- case SR_GATEOFHELL:
- return true;
- }
+ if (skill->get_inf2(skill_id) & INF2_IS_COMBO_SKILL)
+ return true;
+
return false;
}
@@ -16413,9 +16395,9 @@ static int skill_sit(struct map_session_data *sd, int type)
}
if( type ) {
- clif->sc_load(&sd->bl,sd->bl.id,SELF,SI_SIT,0,0,0);
+ clif->sc_load(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT), 0, 0, 0);
} else {
- clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_SIT);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_SIT));
}
if (!flag) return 0;
@@ -19776,23 +19758,23 @@ static int skill_get_elemental_type(uint16 skill_id, uint16 skill_lv)
static void skill_cooldown_save(struct map_session_data *sd)
{
int i;
- struct skill_cd* cd = NULL;
+ struct skill_cd *cd = NULL;
int64 now = 0;
- // always check to make sure the session properly exists
nullpo_retv(sd);
- if( !(cd = idb_get(skill->cd_db, sd->status.char_id)) ) {// no skill cooldown is associated with this character
+ if ((cd = idb_get(skill->cd_db, sd->status.char_id)) == NULL)
return;
- }
now = timer->gettick();
- // process each individual cooldown associated with the character
- for( i = 0; i < cd->cursor; i++ ) {
- cd->entry[i]->duration = DIFF_TICK32(cd->entry[i]->started+cd->entry[i]->duration,now);
- if( cd->entry[i]->timer != INVALID_TIMER ) {
- timer->delete(cd->entry[i]->timer,skill->blockpc_end);
+ for (i = 0; i < cd->cursor; i++) {
+ if (battle_config.guild_skill_relog_delay == 1 && cd->entry[i]->skill_id > GD_SKILLBASE && cd->entry[i]->skill_id < GD_MAX)
+ continue;
+
+ cd->entry[i]->duration = DIFF_TICK32(cd->entry[i]->started + cd->entry[i]->duration, now);
+ if (cd->entry[i]->timer != INVALID_TIMER) {
+ timer->delete(cd->entry[i]->timer, skill->blockpc_end);
cd->entry[i]->timer = INVALID_TIMER;
}
}
@@ -20279,6 +20261,12 @@ static void skill_validate_skillinfo(struct config_setting_t *conf, struct s_ski
} else {
sk->inf2 &= ~INF2_HIDDEN_TRAP;
}
+ } else if (strcmpi(type, "IsCombo") == 0) {
+ if (on) {
+ sk->inf2 |= INF2_IS_COMBO_SKILL;
+ } else {
+ sk->inf2 &= ~INF2_IS_COMBO_SKILL;
+ }
} else if (strcmpi(type, "None") != 0) {
skilldb_invalid_error(type, config_setting_name(t), sk->nameid);
}
diff --git a/src/map/skill.h b/src/map/skill.h
index 5da37d129..fe5cb6282 100644
--- a/src/map/skill.h
+++ b/src/map/skill.h
@@ -125,6 +125,7 @@ enum e_skill_inf2 {
INF2_SHOW_SKILL_SCALE = 0x20000,
INF2_ALLOW_REPRODUCE = 0x40000,
INF2_HIDDEN_TRAP = 0x80000, // Traps that are hidden (based on trap_visiblity battle conf)
+ INF2_IS_COMBO_SKILL = 0x100000, // Sets whether a skill can be used in combos or not
};
diff --git a/src/map/status.c b/src/map/status.c
index d2c67b84e..4821f18d5 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -115,20 +115,27 @@ static unsigned int status_sc2scb_flag(sc_type sc)
/**
* Returns the bl types which require a status change packet to be sent for a given client status identifier.
- * @param type The client-side status identifier to look up (see enum si_type)
+ * @param type status identifier to look up (see enum sc_type)
* @return The bl types relevant to the type (see enum bl_type)
*/
-static int status_type2relevant_bl_types(int type)
+static int status_get_sc_relevant_bl_types(enum sc_type type)
{
- if( type < 0 || type >= SI_MAX ) {
- ShowError("status_type2relevant_bl_types: Unsupported type %d\n", type);
+ if (type < 0 || type >= SC_MAX) {
+ ShowError("status_get_sc_relevant_bl_types: Unsupported type %d\n", type);
return BL_NUL;
}
- return status->dbs->RelevantBLTypes[type];
+ return status->dbs->IconChangeTable[type].relevant_bl_types;
}
-static void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int flag)
+static int status_get_sc_icon(enum sc_type type)
+{
+ Assert_retr(SI_BLANK, type >= SC_NONE && type < SC_MAX);
+
+ return status->dbs->IconChangeTable[type].id;
+}
+
+static void status_set_sc(uint16 skill_id, sc_type sc, unsigned int flag)
{
uint16 idx;
if( (idx = skill->get_index(skill_id)) == 0 ) {
@@ -142,8 +149,6 @@ static void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int fl
if( status->dbs->SkillChangeTable[sc] == 0 )
status->dbs->SkillChangeTable[sc] = skill_id;
- if( status->dbs->IconChangeTable[sc] == SI_BLANK )
- status->dbs->IconChangeTable[sc] = icon;
status->dbs->ChangeFlagTable[sc] |= flag;
if( status->dbs->Skill2SCTable[idx] == SC_NONE )
@@ -152,103 +157,102 @@ static void status_set_sc(uint16 skill_id, sc_type sc, int icon, unsigned int fl
static void initChangeTables(void)
{
-#define add_sc(skill,sc) status->set_sc((skill),(sc),SI_BLANK,SCB_NONE)
+#define add_sc(skill,sc) status->set_sc((skill),(sc),SCB_NONE)
// indicates that the status displays a visual effect for the affected unit, and should be sent to the client for all supported units
-#define set_sc_with_vfx(skill, sc, icon, flag) do { status->set_sc((skill), (sc), (icon), (flag)); if((icon) < SI_MAX) status->dbs->RelevantBLTypes[(icon)] |= BL_SCEFFECT; } while(0)
+#define set_sc_with_vfx(skill, sc, flag) do { status->set_sc((skill), (sc), (flag)); status->dbs->IconChangeTable[sc].relevant_bl_types |= BL_SCEFFECT; } while(0)
int i;
- for (i = 0; i < SC_MAX; i++)
- status->dbs->IconChangeTable[i] = SI_BLANK;
-
for (i = 0; i < MAX_SKILL_DB; i++)
status->dbs->Skill2SCTable[i] = SC_NONE;
- for (i = 0; i < SI_MAX; i++)
- status->dbs->RelevantBLTypes[i] = BL_PC;
+ for (i = 0; i < SC_MAX; i++) {
+ status->dbs->IconChangeTable[i].id = SI_BLANK;
+ status->dbs->IconChangeTable[i].relevant_bl_types = BL_PC;
+ }
memset(status->dbs->SkillChangeTable, 0, sizeof(status->dbs->SkillChangeTable));
memset(status->dbs->ChangeFlagTable, 0, sizeof(status->dbs->ChangeFlagTable));
memset(status->dbs->DisplayType, 0, sizeof(status->dbs->DisplayType));
//First we define the skill for common ailments. These are used in skill_additional_effect through sc cards. [Skotlex]
- status->set_sc( NPC_PETRIFYATTACK , SC_STONE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
- status->set_sc( NPC_WIDEFREEZE , SC_FREEZE , SI_BLANK , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
- status->set_sc( NPC_STUNATTACK , SC_STUN , SI_BLANK , SCB_NONE );
- status->set_sc( NPC_SLEEPATTACK , SC_SLEEP , SI_BLANK , SCB_NONE );
- status->set_sc( NPC_POISON , SC_POISON , SI_BLANK , SCB_DEF2|SCB_REGEN );
- status->set_sc( NPC_CURSEATTACK , SC_CURSE , SI_BLANK , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED );
- status->set_sc( NPC_SILENCEATTACK , SC_SILENCE , SI_BLANK , SCB_NONE );
- status->set_sc( NPC_WIDECONFUSE , SC_CONFUSION , SI_BLANK , SCB_NONE );
- status->set_sc( NPC_BLINDATTACK , SC_BLIND , SI_BLANK , SCB_HIT|SCB_FLEE );
- status->set_sc( NPC_BLEEDING , SC_BLOODING , SI_BLOODING , SCB_REGEN );
- status->set_sc( NPC_POISON , SC_DPOISON , SI_BLANK , SCB_DEF2|SCB_REGEN );
+ status->set_sc( NPC_PETRIFYATTACK , SC_STONE , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
+ status->set_sc( NPC_WIDEFREEZE , SC_FREEZE , SCB_DEF_ELE|SCB_DEF|SCB_MDEF );
+ status->set_sc( NPC_STUNATTACK , SC_STUN , SCB_NONE );
+ status->set_sc( NPC_SLEEPATTACK , SC_SLEEP , SCB_NONE );
+ status->set_sc( NPC_POISON , SC_POISON , SCB_DEF2|SCB_REGEN );
+ status->set_sc( NPC_CURSEATTACK , SC_CURSE , SCB_LUK|SCB_BATK|SCB_WATK|SCB_SPEED );
+ status->set_sc( NPC_SILENCEATTACK , SC_SILENCE , SCB_NONE );
+ status->set_sc( NPC_WIDECONFUSE , SC_CONFUSION , SCB_NONE );
+ status->set_sc( NPC_BLINDATTACK , SC_BLIND , SCB_HIT|SCB_FLEE );
+ status->set_sc( NPC_BLEEDING , SC_BLOODING , SCB_REGEN );
+ status->set_sc( NPC_POISON , SC_DPOISON , SCB_DEF2|SCB_REGEN );
//The main status definitions
add_sc( SM_BASH , SC_STUN );
- status->set_sc( SM_PROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
+ status->set_sc( SM_PROVOKE , SC_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
add_sc( SM_MAGNUM , SC_SUB_WEAPONPROPERTY );
- status->set_sc( SM_ENDURE , SC_ENDURE , SI_ENDURE , SCB_MDEF|SCB_DSPD );
+ status->set_sc( SM_ENDURE , SC_ENDURE , SCB_MDEF|SCB_DSPD );
add_sc( MG_SIGHT , SC_SIGHT );
add_sc( MG_SAFETYWALL , SC_SAFETYWALL );
add_sc( MG_FROSTDIVER , SC_FREEZE );
add_sc( MG_STONECURSE , SC_STONE );
add_sc( AL_RUWACH , SC_RUWACH );
add_sc( AL_PNEUMA , SC_PNEUMA );
- status->set_sc( AL_INCAGI , SC_INC_AGI , SI_INC_AGI , SCB_AGI|SCB_SPEED );
- status->set_sc( AL_DECAGI , SC_DEC_AGI , SI_DEC_AGI , SCB_AGI|SCB_SPEED );
- status->set_sc( AL_CRUCIS , SC_CRUCIS , SI_CRUCIS , SCB_DEF );
- status->set_sc( AL_ANGELUS , SC_ANGELUS , SI_ANGELUS , SCB_DEF2 );
- status->set_sc( AL_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
- status->set_sc( AC_CONCENTRATION , SC_CONCENTRATION , SI_CONCENTRATION , SCB_AGI|SCB_DEX );
- status->set_sc( TF_HIDING , SC_HIDING , SI_HIDING , SCB_SPEED );
+ status->set_sc( AL_INCAGI , SC_INC_AGI , SCB_AGI|SCB_SPEED );
+ status->set_sc( AL_DECAGI , SC_DEC_AGI , SCB_AGI|SCB_SPEED );
+ status->set_sc( AL_CRUCIS , SC_CRUCIS , SCB_DEF );
+ status->set_sc( AL_ANGELUS , SC_ANGELUS , SCB_DEF2 );
+ status->set_sc( AL_BLESSING , SC_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
+ status->set_sc( AC_CONCENTRATION , SC_CONCENTRATION , SCB_AGI|SCB_DEX );
+ status->set_sc( TF_HIDING , SC_HIDING , SCB_SPEED );
add_sc( TF_POISON , SC_POISON );
- status->set_sc( KN_TWOHANDQUICKEN , SC_TWOHANDQUICKEN , SI_TWOHANDQUICKEN , SCB_ASPD );
+ status->set_sc( KN_TWOHANDQUICKEN , SC_TWOHANDQUICKEN , SCB_ASPD );
add_sc( KN_AUTOCOUNTER , SC_AUTOCOUNTER );
- status->set_sc( PR_IMPOSITIO , SC_IMPOSITIO , SI_IMPOSITIO ,
+ status->set_sc( PR_IMPOSITIO , SC_IMPOSITIO ,
#ifdef RENEWAL
SCB_NONE );
#else
SCB_WATK );
#endif
- status->set_sc( PR_SUFFRAGIUM , SC_SUFFRAGIUM , SI_SUFFRAGIUM , SCB_NONE );
- status->set_sc( PR_ASPERSIO , SC_ASPERSIO , SI_ASPERSIO , SCB_ATK_ELE );
- status->set_sc( PR_BENEDICTIO , SC_BENEDICTIO , SI_BENEDICTIO , SCB_DEF_ELE );
- status->set_sc( PR_SLOWPOISON , SC_SLOWPOISON , SI_SLOWPOISON , SCB_REGEN );
- status->set_sc( PR_KYRIE , SC_KYRIE , SI_KYRIE , SCB_NONE );
- status->set_sc( PR_MAGNIFICAT , SC_MAGNIFICAT , SI_MAGNIFICAT , SCB_REGEN );
- status->set_sc( PR_GLORIA , SC_GLORIA , SI_GLORIA , SCB_LUK );
+ status->set_sc( PR_SUFFRAGIUM , SC_SUFFRAGIUM , SCB_NONE );
+ status->set_sc( PR_ASPERSIO , SC_ASPERSIO , SCB_ATK_ELE );
+ status->set_sc( PR_BENEDICTIO , SC_BENEDICTIO , SCB_DEF_ELE );
+ status->set_sc( PR_SLOWPOISON , SC_SLOWPOISON , SCB_REGEN );
+ status->set_sc( PR_KYRIE , SC_KYRIE , SCB_NONE );
+ status->set_sc( PR_MAGNIFICAT , SC_MAGNIFICAT , SCB_REGEN );
+ status->set_sc( PR_GLORIA , SC_GLORIA , SCB_LUK );
add_sc( PR_LEXDIVINA , SC_SILENCE );
- status->set_sc( PR_LEXAETERNA , SC_LEXAETERNA , SI_LEXAETERNA , SCB_NONE );
+ status->set_sc( PR_LEXAETERNA , SC_LEXAETERNA , SCB_NONE );
add_sc( WZ_METEOR , SC_STUN );
add_sc( WZ_VERMILION , SC_BLIND );
add_sc( WZ_FROSTNOVA , SC_FREEZE );
add_sc( WZ_STORMGUST , SC_FREEZE );
- status->set_sc( WZ_QUAGMIRE , SC_QUAGMIRE , SI_QUAGMIRE , SCB_AGI|SCB_DEX|SCB_ASPD|SCB_SPEED );
- status->set_sc( BS_ADRENALINE , SC_ADRENALINE , SI_ADRENALINE , SCB_ASPD );
- status->set_sc( BS_WEAPONPERFECT , SC_WEAPONPERFECT , SI_WEAPONPERFECT, SCB_NONE );
- status->set_sc( BS_OVERTHRUST , SC_OVERTHRUST , SI_OVERTHRUST , SCB_NONE );
- status->set_sc( BS_MAXIMIZE , SC_MAXIMIZEPOWER , SI_MAXIMIZE , SCB_REGEN );
+ status->set_sc( WZ_QUAGMIRE , SC_QUAGMIRE , SCB_AGI|SCB_DEX|SCB_ASPD|SCB_SPEED );
+ status->set_sc( BS_ADRENALINE , SC_ADRENALINE , SCB_ASPD );
+ status->set_sc( BS_WEAPONPERFECT , SC_WEAPONPERFECT , SCB_NONE );
+ status->set_sc( BS_OVERTHRUST , SC_OVERTHRUST , SCB_NONE );
+ status->set_sc( BS_MAXIMIZE , SC_MAXIMIZEPOWER , SCB_REGEN );
add_sc( HT_LANDMINE , SC_STUN );
- status->set_sc( HT_ANKLESNARE , SC_ANKLESNARE , SI_ANKLESNARE , SCB_NONE );
+ status->set_sc( HT_ANKLESNARE , SC_ANKLESNARE , SCB_NONE );
add_sc( HT_SANDMAN , SC_SLEEP );
add_sc( HT_FLASHER , SC_BLIND );
add_sc( HT_FREEZINGTRAP , SC_FREEZE );
- status->set_sc( AS_CLOAKING , SC_CLOAKING , SI_CLOAKING , SCB_CRI|SCB_SPEED );
+ status->set_sc( AS_CLOAKING , SC_CLOAKING , SCB_CRI|SCB_SPEED );
add_sc( AS_SONICBLOW , SC_STUN );
- status->set_sc( AS_ENCHANTPOISON , SC_ENCHANTPOISON , SI_ENCHANTPOISON, SCB_ATK_ELE );
- status->set_sc( AS_POISONREACT , SC_POISONREACT , SI_POISONREACT , SCB_NONE );
+ status->set_sc( AS_ENCHANTPOISON , SC_ENCHANTPOISON , SCB_ATK_ELE );
+ status->set_sc( AS_POISONREACT , SC_POISONREACT , SCB_NONE );
add_sc( AS_VENOMDUST , SC_POISON );
add_sc( AS_SPLASHER , SC_SPLASHER );
- status->set_sc( NV_TRICKDEAD , SC_TRICKDEAD , SI_TRICKDEAD , SCB_REGEN );
- status->set_sc( SM_AUTOBERSERK , SC_AUTOBERSERK , SI_AUTOBERSERK , SCB_NONE );
+ status->set_sc( NV_TRICKDEAD , SC_TRICKDEAD , SCB_REGEN );
+ status->set_sc( SM_AUTOBERSERK , SC_AUTOBERSERK , SCB_NONE );
add_sc( TF_SPRINKLESAND , SC_BLIND );
add_sc( TF_THROWSTONE , SC_STUN );
- status->set_sc( MC_LOUD , SC_SHOUT , SI_SHOUT , SCB_STR );
- status->set_sc( MG_ENERGYCOAT , SC_ENERGYCOAT , SI_ENERGYCOAT , SCB_NONE );
- status->set_sc( NPC_EMOTION , SC_MODECHANGE , SI_BLANK , SCB_MODE );
+ status->set_sc( MC_LOUD , SC_SHOUT , SCB_STR );
+ status->set_sc( MG_ENERGYCOAT , SC_ENERGYCOAT , SCB_NONE );
+ status->set_sc( NPC_EMOTION , SC_MODECHANGE , SCB_MODE );
add_sc( NPC_EMOTION_ON , SC_MODECHANGE );
- status->set_sc( NPC_ATTRICHANGE , SC_ARMOR_PROPERTY , SI_ARMOR_PROPERTY , SCB_DEF_ELE );
+ status->set_sc( NPC_ATTRICHANGE , SC_ARMOR_PROPERTY , SCB_DEF_ELE );
add_sc( NPC_CHANGEWATER , SC_ARMOR_PROPERTY );
add_sc( NPC_CHANGEGROUND , SC_ARMOR_PROPERTY );
add_sc( NPC_CHANGEFIRE , SC_ARMOR_PROPERTY );
@@ -265,184 +269,184 @@ static void initChangeTables(void)
add_sc( NPC_CURSEATTACK , SC_CURSE );
add_sc( NPC_SLEEPATTACK , SC_SLEEP );
add_sc( NPC_MAGICALATTACK , SC_MAGICALATTACK );
- status->set_sc( NPC_KEEPING , SC_KEEPING , SI_BLANK , SCB_DEF );
+ status->set_sc( NPC_KEEPING , SC_KEEPING , SCB_DEF );
add_sc( NPC_DARKBLESSING , SC_COMA );
- status->set_sc( NPC_BARRIER , SC_BARRIER , SI_BLANK , SCB_MDEF|SCB_DEF );
+ status->set_sc( NPC_BARRIER , SC_BARRIER , SCB_MDEF|SCB_DEF );
add_sc( NPC_DEFENDER , SC_ARMOR );
add_sc( NPC_LICK , SC_STUN );
- status->set_sc( NPC_HALLUCINATION , SC_ILLUSION , SI_ILLUSION , SCB_NONE );
+ status->set_sc( NPC_HALLUCINATION , SC_ILLUSION , SCB_NONE );
add_sc( NPC_REBIRTH , SC_REBIRTH );
add_sc( RG_RAID , SC_STUN );
#ifdef RENEWAL
add_sc( RG_RAID , SC_RAID );
add_sc( RG_BACKSTAP , SC_STUN );
#endif
- status->set_sc( RG_STRIPWEAPON , SC_NOEQUIPWEAPON , SI_NOEQUIPWEAPON , SCB_WATK );
- status->set_sc( RG_STRIPSHIELD , SC_NOEQUIPSHIELD , SI_NOEQUIPSHIELD , SCB_DEF );
- status->set_sc( RG_STRIPARMOR , SC_NOEQUIPARMOR , SI_NOEQUIPARMOR , SCB_VIT );
- status->set_sc( RG_STRIPHELM , SC_NOEQUIPHELM , SI_NOEQUIPHELM , SCB_INT );
+ status->set_sc( RG_STRIPWEAPON , SC_NOEQUIPWEAPON , SCB_WATK );
+ status->set_sc( RG_STRIPSHIELD , SC_NOEQUIPSHIELD , SCB_DEF );
+ status->set_sc( RG_STRIPARMOR , SC_NOEQUIPARMOR , SCB_VIT );
+ status->set_sc( RG_STRIPHELM , SC_NOEQUIPHELM , SCB_INT );
add_sc( AM_ACIDTERROR , SC_BLOODING );
- status->set_sc( AM_CP_WEAPON , SC_PROTECTWEAPON , SI_PROTECTWEAPON , SCB_NONE );
- status->set_sc( AM_CP_SHIELD , SC_PROTECTSHIELD , SI_PROTECTSHIELD , SCB_NONE );
- status->set_sc( AM_CP_ARMOR , SC_PROTECTARMOR , SI_PROTECTARMOR , SCB_NONE );
- status->set_sc( AM_CP_HELM , SC_PROTECTHELM , SI_PROTECTHELM , SCB_NONE );
- status->set_sc( CR_AUTOGUARD , SC_AUTOGUARD , SI_AUTOGUARD , SCB_NONE );
+ status->set_sc( AM_CP_WEAPON , SC_PROTECTWEAPON , SCB_NONE );
+ status->set_sc( AM_CP_SHIELD , SC_PROTECTSHIELD , SCB_NONE );
+ status->set_sc( AM_CP_ARMOR , SC_PROTECTARMOR , SCB_NONE );
+ status->set_sc( AM_CP_HELM , SC_PROTECTHELM , SCB_NONE );
+ status->set_sc( CR_AUTOGUARD , SC_AUTOGUARD , SCB_NONE );
add_sc( CR_SHIELDCHARGE , SC_STUN );
- status->set_sc( CR_REFLECTSHIELD , SC_REFLECTSHIELD , SI_REFLECTSHIELD , SCB_NONE );
+ status->set_sc( CR_REFLECTSHIELD , SC_REFLECTSHIELD , SCB_NONE );
add_sc( CR_HOLYCROSS , SC_BLIND );
add_sc( CR_GRANDCROSS , SC_BLIND );
add_sc( CR_DEVOTION , SC_DEVOTION );
- status->set_sc( CR_PROVIDENCE , SC_PROVIDENCE , SI_PROVIDENCE , SCB_ALL );
- status->set_sc( CR_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD );
- status->set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , SI_SPEARQUICKEN , SCB_ASPD|SCB_CRI|SCB_FLEE );
- status->set_sc( MO_STEELBODY , SC_STEELBODY , SI_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED );
+ status->set_sc( CR_PROVIDENCE , SC_PROVIDENCE , SCB_ALL );
+ status->set_sc( CR_DEFENDER , SC_DEFENDER , SCB_SPEED|SCB_ASPD );
+ status->set_sc( CR_SPEARQUICKEN , SC_SPEARQUICKEN , SCB_ASPD|SCB_CRI|SCB_FLEE );
+ status->set_sc( MO_STEELBODY , SC_STEELBODY , SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED );
add_sc( MO_BLADESTOP , SC_BLADESTOP_WAIT );
add_sc( MO_BLADESTOP , SC_BLADESTOP );
- status->set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS, SI_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN );
- status->set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SI_BLANK , SCB_REGEN );
+ status->set_sc( MO_EXPLOSIONSPIRITS , SC_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN );
+ status->set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST , SCB_REGEN );
#ifdef RENEWAL
- status->set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , SI_EXTREMITYFIST , SCB_NONE );
+ status->set_sc( MO_EXTREMITYFIST , SC_EXTREMITYFIST2 , SCB_NONE );
#endif
add_sc( SA_MAGICROD , SC_MAGICROD );
- status->set_sc( SA_AUTOSPELL , SC_AUTOSPELL , SI_AUTOSPELL , SCB_NONE );
- status->set_sc( SA_FLAMELAUNCHER , SC_PROPERTYFIRE , SI_PROPERTYFIRE , SCB_ATK_ELE );
- status->set_sc( SA_FROSTWEAPON , SC_PROPERTYWATER , SI_PROPERTYWATER , SCB_ATK_ELE );
- status->set_sc( SA_LIGHTNINGLOADER , SC_PROPERTYWIND , SI_PROPERTYWIND , SCB_ATK_ELE );
- status->set_sc( SA_SEISMICWEAPON , SC_PROPERTYGROUND , SI_PROPERTYGROUND , SCB_ATK_ELE );
- status->set_sc( SA_VOLCANO , SC_VOLCANO , SI_GROUNDMAGIC , SCB_WATK );
- status->set_sc( SA_DELUGE , SC_DELUGE , SI_GROUNDMAGIC , SCB_MAXHP );
- status->set_sc( SA_VIOLENTGALE , SC_VIOLENTGALE , SI_GROUNDMAGIC , SCB_FLEE );
+ status->set_sc( SA_AUTOSPELL , SC_AUTOSPELL , SCB_NONE );
+ status->set_sc( SA_FLAMELAUNCHER , SC_PROPERTYFIRE , SCB_ATK_ELE );
+ status->set_sc( SA_FROSTWEAPON , SC_PROPERTYWATER , SCB_ATK_ELE );
+ status->set_sc( SA_LIGHTNINGLOADER , SC_PROPERTYWIND , SCB_ATK_ELE );
+ status->set_sc( SA_SEISMICWEAPON , SC_PROPERTYGROUND , SCB_ATK_ELE );
+ status->set_sc( SA_VOLCANO , SC_VOLCANO , SCB_WATK );
+ status->set_sc( SA_DELUGE , SC_DELUGE , SCB_MAXHP );
+ status->set_sc( SA_VIOLENTGALE , SC_VIOLENTGALE , SCB_FLEE );
add_sc( SA_REVERSEORCISH , SC_ORCISH );
add_sc( SA_COMA , SC_COMA );
- status->set_sc( BD_ENCORE , SC_DANCING , SI_BLANK , SCB_SPEED|SCB_REGEN );
+ status->set_sc( BD_ENCORE , SC_DANCING , SCB_SPEED|SCB_REGEN );
add_sc( BD_RICHMANKIM , SC_RICHMANKIM );
- status->set_sc( BD_ETERNALCHAOS , SC_ETERNALCHAOS , SI_BLANK , SCB_DEF2 );
- status->set_sc( BD_DRUMBATTLEFIELD , SC_DRUMBATTLE , SI_BLANK , SCB_WATK|SCB_DEF );
- status->set_sc( BD_RINGNIBELUNGEN , SC_NIBELUNGEN , SI_BLANK , SCB_WATK );
+ status->set_sc( BD_ETERNALCHAOS , SC_ETERNALCHAOS , SCB_DEF2 );
+ status->set_sc( BD_DRUMBATTLEFIELD , SC_DRUMBATTLE , SCB_WATK|SCB_DEF );
+ status->set_sc( BD_RINGNIBELUNGEN , SC_NIBELUNGEN , SCB_WATK );
add_sc( BD_ROKISWEIL , SC_ROKISWEIL );
add_sc( BD_INTOABYSS , SC_INTOABYSS );
- status->set_sc( BD_SIEGFRIED , SC_SIEGFRIED , SI_BLANK , SCB_ALL );
+ status->set_sc( BD_SIEGFRIED , SC_SIEGFRIED , SCB_ALL );
add_sc( BA_FROSTJOKER , SC_FREEZE );
- status->set_sc( BA_WHISTLE , SC_WHISTLE , SI_BLANK , SCB_FLEE|SCB_FLEE2 );
- status->set_sc( BA_ASSASSINCROSS , SC_ASSNCROS , SI_BLANK , SCB_ASPD );
+ status->set_sc( BA_WHISTLE , SC_WHISTLE , SCB_FLEE|SCB_FLEE2 );
+ status->set_sc( BA_ASSASSINCROSS , SC_ASSNCROS , SCB_ASPD );
add_sc( BA_POEMBRAGI , SC_POEMBRAGI );
- status->set_sc( BA_APPLEIDUN , SC_APPLEIDUN , SI_BLANK , SCB_MAXHP );
+ status->set_sc( BA_APPLEIDUN , SC_APPLEIDUN , SCB_MAXHP );
add_sc( DC_SCREAM , SC_STUN );
- status->set_sc( DC_HUMMING , SC_HUMMING , SI_BLANK , SCB_HIT );
- status->set_sc( DC_DONTFORGETME , SC_DONTFORGETME , SI_BLANK , SCB_SPEED|SCB_ASPD );
- status->set_sc( DC_FORTUNEKISS , SC_FORTUNE , SI_BLANK , SCB_CRI );
- status->set_sc( DC_SERVICEFORYOU , SC_SERVICEFORYOU , SI_BLANK , SCB_ALL );
+ status->set_sc( DC_HUMMING , SC_HUMMING , SCB_HIT );
+ status->set_sc( DC_DONTFORGETME , SC_DONTFORGETME , SCB_SPEED|SCB_ASPD );
+ status->set_sc( DC_FORTUNEKISS , SC_FORTUNE , SCB_CRI );
+ status->set_sc( DC_SERVICEFORYOU , SC_SERVICEFORYOU , SCB_ALL );
add_sc( NPC_DARKCROSS , SC_BLIND );
add_sc( NPC_GRANDDARKNESS , SC_BLIND );
- status->set_sc( NPC_STOP , SC_STOP , SI_STOP , SCB_NONE );
- status->set_sc( NPC_WEAPONBRAKER , SC_BROKENWEAPON , SI_BROKENWEAPON , SCB_NONE );
- status->set_sc( NPC_ARMORBRAKE , SC_BROKENARMOR , SI_BROKENARMOR , SCB_NONE );
- status->set_sc( NPC_CHANGEUNDEAD , SC_PROPERTYUNDEAD , SI_PROPERTYUNDEAD , SCB_DEF_ELE );
- status->set_sc( NPC_POWERUP , SC_INCHITRATE , SI_BLANK , SCB_HIT );
- status->set_sc( NPC_AGIUP , SC_INCFLEERATE , SI_BLANK , SCB_FLEE );
+ status->set_sc( NPC_STOP , SC_STOP , SCB_NONE );
+ status->set_sc( NPC_WEAPONBRAKER , SC_BROKENWEAPON , SCB_NONE );
+ status->set_sc( NPC_ARMORBRAKE , SC_BROKENARMOR , SCB_NONE );
+ status->set_sc( NPC_CHANGEUNDEAD , SC_PROPERTYUNDEAD , SCB_DEF_ELE );
+ status->set_sc( NPC_POWERUP , SC_INCHITRATE , SCB_HIT );
+ status->set_sc( NPC_AGIUP , SC_INCFLEERATE , SCB_FLEE );
add_sc( NPC_INVISIBLE , SC_CLOAKING );
- status->set_sc( LK_AURABLADE , SC_AURABLADE , SI_AURABLADE , SCB_NONE );
- status->set_sc( LK_PARRYING , SC_PARRYING , SI_PARRYING , SCB_NONE );
+ status->set_sc( LK_AURABLADE , SC_AURABLADE , SCB_NONE );
+ status->set_sc( LK_PARRYING , SC_PARRYING , SCB_NONE );
#ifndef RENEWAL
- status->set_sc( LK_CONCENTRATION , SC_LKCONCENTRATION , SI_LKCONCENTRATION , SCB_BATK|SCB_WATK|SCB_HIT|SCB_DEF|SCB_DEF2);
+ status->set_sc( LK_CONCENTRATION , SC_LKCONCENTRATION , SCB_BATK|SCB_WATK|SCB_HIT|SCB_DEF|SCB_DEF2);
#else
- status->set_sc( LK_CONCENTRATION , SC_LKCONCENTRATION , SI_LKCONCENTRATION , SCB_HIT|SCB_DEF);
+ status->set_sc( LK_CONCENTRATION , SC_LKCONCENTRATION , SCB_HIT|SCB_DEF);
#endif
- status->set_sc( LK_TENSIONRELAX , SC_TENSIONRELAX , SI_TENSIONRELAX , SCB_REGEN );
- status->set_sc( LK_BERSERK , SC_BERSERK , SI_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN );
- status->set_sc( HP_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE );
+ status->set_sc( LK_TENSIONRELAX , SC_TENSIONRELAX , SCB_REGEN );
+ status->set_sc( LK_BERSERK , SC_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN );
+ status->set_sc( HP_ASSUMPTIO , SC_ASSUMPTIO , SCB_NONE );
add_sc( HP_BASILICA , SC_BASILICA );
- status->set_sc( HW_MAGICPOWER , SC_MAGICPOWER , SI_MAGICPOWER , SCB_MATK );
+ status->set_sc( HW_MAGICPOWER , SC_MAGICPOWER , SCB_MATK );
add_sc( PA_SACRIFICE , SC_SACRIFICE );
- status->set_sc( PA_GOSPEL , SC_GOSPEL , SI_BLANK , SCB_SPEED|SCB_ASPD );
+ status->set_sc( PA_GOSPEL , SC_GOSPEL , SCB_SPEED|SCB_ASPD );
add_sc( PA_GOSPEL , SC_SCRESIST );
add_sc( CH_TIGERFIST , SC_STOP );
- status->set_sc( ASC_EDP , SC_EDP , SI_EDP , SCB_NONE );
- status->set_sc( SN_SIGHT , SC_TRUESIGHT , SI_TRUESIGHT , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_CRI|SCB_HIT );
- status->set_sc( SN_WINDWALK , SC_WINDWALK , SI_WINDWALK , SCB_FLEE|SCB_SPEED );
- status->set_sc( WS_MELTDOWN , SC_MELTDOWN , SI_MELTDOWN , SCB_NONE );
- status->set_sc( WS_CARTBOOST , SC_CARTBOOST , SI_CARTBOOST , SCB_SPEED );
- status->set_sc( ST_CHASEWALK , SC_CHASEWALK , SI_BLANK , SCB_SPEED );
- status->set_sc( ST_REJECTSWORD , SC_SWORDREJECT , SI_SWORDREJECT , SCB_NONE );
+ status->set_sc( ASC_EDP , SC_EDP , SCB_NONE );
+ status->set_sc( SN_SIGHT , SC_TRUESIGHT , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK|SCB_CRI|SCB_HIT );
+ status->set_sc( SN_WINDWALK , SC_WINDWALK , SCB_FLEE|SCB_SPEED );
+ status->set_sc( WS_MELTDOWN , SC_MELTDOWN , SCB_NONE );
+ status->set_sc( WS_CARTBOOST , SC_CARTBOOST , SCB_SPEED );
+ status->set_sc( ST_CHASEWALK , SC_CHASEWALK , SCB_SPEED );
+ status->set_sc( ST_REJECTSWORD , SC_SWORDREJECT , SCB_NONE );
add_sc( ST_REJECTSWORD , SC_AUTOCOUNTER );
- status->set_sc( CG_MARIONETTE , SC_MARIONETTE_MASTER , SI_MARIONETTE_MASTER , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
- status->set_sc( CG_MARIONETTE , SC_MARIONETTE , SI_MARIONETTE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
+ status->set_sc( CG_MARIONETTE , SC_MARIONETTE_MASTER , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
+ status->set_sc( CG_MARIONETTE , SC_MARIONETTE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
add_sc( LK_SPIRALPIERCE , SC_STOP );
add_sc( LK_HEADCRUSH , SC_BLOODING );
- status->set_sc( LK_JOINTBEAT , SC_JOINTBEAT , SI_JOINTBEAT , SCB_BATK|SCB_DEF2|SCB_SPEED|SCB_ASPD );
+ status->set_sc( LK_JOINTBEAT , SC_JOINTBEAT , SCB_BATK|SCB_DEF2|SCB_SPEED|SCB_ASPD );
add_sc( HW_NAPALMVULCAN , SC_CURSE );
- status->set_sc( PF_MINDBREAKER , SC_MINDBREAKER , SI_BLANK , SCB_MATK|SCB_MDEF2 );
+ status->set_sc( PF_MINDBREAKER , SC_MINDBREAKER , SCB_MATK|SCB_MDEF2 );
add_sc( PF_MEMORIZE , SC_MEMORIZE );
add_sc( PF_FOGWALL , SC_FOGWALL );
- status->set_sc( PF_SPIDERWEB , SC_SPIDERWEB , SI_BLANK , SCB_FLEE );
- status->set_sc( WE_BABY , SC_BABY , SI_PROTECTEXP , SCB_NONE );
- status->set_sc( TK_RUN , SC_RUN , SI_RUN , SCB_SPEED|SCB_DSPD );
- status->set_sc( TK_RUN , SC_STRUP , SI_STRUP , SCB_STR );
- status->set_sc( TK_READYSTORM , SC_STORMKICK_READY , SI_STORMKICK_ON , SCB_NONE );
- status->set_sc( TK_READYDOWN , SC_DOWNKICK_READY , SI_DOWNKICK_ON , SCB_NONE );
+ status->set_sc( PF_SPIDERWEB , SC_SPIDERWEB , SCB_FLEE );
+ status->set_sc( WE_BABY , SC_BABY , SCB_NONE );
+ status->set_sc( TK_RUN , SC_RUN , SCB_SPEED|SCB_DSPD );
+ status->set_sc( TK_RUN , SC_STRUP , SCB_STR );
+ status->set_sc( TK_READYSTORM , SC_STORMKICK_READY , SCB_NONE );
+ status->set_sc( TK_READYDOWN , SC_DOWNKICK_READY , SCB_NONE );
add_sc( TK_DOWNKICK , SC_STUN );
- status->set_sc( TK_READYTURN , SC_TURNKICK_READY , SI_TURNKICK_ON , SCB_NONE );
- status->set_sc( TK_READYCOUNTER , SC_COUNTERKICK_READY , SI_COUNTER_ON , SCB_NONE );
- status->set_sc( TK_DODGE , SC_DODGE_READY , SI_DODGE_ON , SCB_NONE );
- status->set_sc( TK_SPTIME , SC_EARTHSCROLL , SI_EARTHSCROLL , SCB_NONE );
+ status->set_sc( TK_READYTURN , SC_TURNKICK_READY , SCB_NONE );
+ status->set_sc( TK_READYCOUNTER , SC_COUNTERKICK_READY , SCB_NONE );
+ status->set_sc( TK_DODGE , SC_DODGE_READY , SCB_NONE );
+ status->set_sc( TK_SPTIME , SC_EARTHSCROLL , SCB_NONE );
add_sc( TK_SEVENWIND , SC_TK_SEVENWIND );
- status->set_sc( TK_SEVENWIND , SC_PROPERTYTELEKINESIS , SI_PROPERTYTELEKINESIS , SCB_ATK_ELE );
- status->set_sc( TK_SEVENWIND , SC_PROPERTYDARK , SI_PROPERTYDARK , SCB_ATK_ELE );
- status->set_sc( SG_SUN_WARM , SC_WARM , SI_SG_SUN_WARM , SCB_NONE );
+ status->set_sc( TK_SEVENWIND , SC_PROPERTYTELEKINESIS , SCB_ATK_ELE );
+ status->set_sc( TK_SEVENWIND , SC_PROPERTYDARK , SCB_ATK_ELE );
+ status->set_sc( SG_SUN_WARM , SC_WARM , SCB_NONE );
add_sc( SG_MOON_WARM , SC_WARM );
add_sc( SG_STAR_WARM , SC_WARM );
- status->set_sc( SG_SUN_COMFORT , SC_SUN_COMFORT , SI_SUN_COMFORT , SCB_DEF2 );
- status->set_sc( SG_MOON_COMFORT , SC_MOON_COMFORT , SI_MOON_COMFORT , SCB_FLEE );
- status->set_sc( SG_STAR_COMFORT , SC_STAR_COMFORT , SI_STAR_COMFORT , SCB_ASPD );
+ status->set_sc( SG_SUN_COMFORT , SC_SUN_COMFORT , SCB_DEF2 );
+ status->set_sc( SG_MOON_COMFORT , SC_MOON_COMFORT , SCB_FLEE );
+ status->set_sc( SG_STAR_COMFORT , SC_STAR_COMFORT , SCB_ASPD );
add_sc( SG_FRIEND , SC_SKILLRATE_UP );
- status->set_sc( SG_KNOWLEDGE , SC_KNOWLEDGE , SI_BLANK , SCB_ALL );
- status->set_sc( SG_FUSION , SC_FUSION , SI_BLANK , SCB_SPEED );
- status->set_sc( BS_ADRENALINE2 , SC_ADRENALINE2 , SI_ADRENALINE2 , SCB_ASPD );
- status->set_sc( SL_KAIZEL , SC_KAIZEL , SI_KAIZEL , SCB_NONE );
- status->set_sc( SL_KAAHI , SC_KAAHI , SI_KAAHI , SCB_NONE );
- status->set_sc( SL_KAUPE , SC_KAUPE , SI_KAUPE , SCB_NONE );
- status->set_sc( SL_KAITE , SC_KAITE , SI_KAITE , SCB_NONE );
+ status->set_sc( SG_KNOWLEDGE , SC_KNOWLEDGE , SCB_ALL );
+ status->set_sc( SG_FUSION , SC_FUSION , SCB_SPEED );
+ status->set_sc( BS_ADRENALINE2 , SC_ADRENALINE2 , SCB_ASPD );
+ status->set_sc( SL_KAIZEL , SC_KAIZEL , SCB_NONE );
+ status->set_sc( SL_KAAHI , SC_KAAHI , SCB_NONE );
+ status->set_sc( SL_KAUPE , SC_KAUPE , SCB_NONE );
+ status->set_sc( SL_KAITE , SC_KAITE , SCB_NONE );
add_sc( SL_STUN , SC_STUN );
- status->set_sc( SL_SWOO , SC_SWOO , SI_BLANK , SCB_SPEED );
- status->set_sc( SL_SKE , SC_SKE , SI_BLANK , SCB_BATK|SCB_WATK|SCB_DEF|SCB_DEF2 );
- status->set_sc( SL_SKA , SC_SKA , SI_BLANK , SCB_DEF|SCB_MDEF|SCB_ASPD );
- status->set_sc( SL_SMA , SC_SMA_READY , SI_SMA_READY , SCB_NONE );
- status->set_sc( SM_SELFPROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
- status->set_sc( ST_PRESERVE , SC_PRESERVE , SI_PRESERVE , SCB_NONE );
- status->set_sc( PF_DOUBLECASTING , SC_DOUBLECASTING , SI_DOUBLECASTING , SCB_NONE );
- status->set_sc( HW_GRAVITATION , SC_GRAVITATION , SI_BLANK , SCB_ASPD );
+ status->set_sc( SL_SWOO , SC_SWOO , SCB_SPEED );
+ status->set_sc( SL_SKE , SC_SKE , SCB_BATK|SCB_WATK|SCB_DEF|SCB_DEF2 );
+ status->set_sc( SL_SKA , SC_SKA , SCB_DEF|SCB_MDEF|SCB_ASPD );
+ status->set_sc( SL_SMA , SC_SMA_READY , SCB_NONE );
+ status->set_sc( SM_SELFPROVOKE , SC_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
+ status->set_sc( ST_PRESERVE , SC_PRESERVE , SCB_NONE );
+ status->set_sc( PF_DOUBLECASTING , SC_DOUBLECASTING , SCB_NONE );
+ status->set_sc( HW_GRAVITATION , SC_GRAVITATION , SCB_ASPD );
add_sc( WS_CARTTERMINATION , SC_STUN );
- status->set_sc( WS_OVERTHRUSTMAX , SC_OVERTHRUSTMAX , SI_OVERTHRUSTMAX , SCB_NONE );
- status->set_sc( CG_LONGINGFREEDOM , SC_LONGING , SI_BLANK , SCB_SPEED|SCB_ASPD );
+ status->set_sc( WS_OVERTHRUSTMAX , SC_OVERTHRUSTMAX , SCB_NONE );
+ status->set_sc( CG_LONGINGFREEDOM , SC_LONGING , SCB_SPEED|SCB_ASPD );
add_sc( CG_HERMODE , SC_HERMODE );
- status->set_sc( CG_TAROTCARD , SC_TAROTCARD , SI_TAROTCARD , SCB_NONE );
- status->set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , SI_BLANK , SCB_ATK_ELE );
- status->set_sc( SL_HIGH , SC_SOULLINK , SI_SOULLINK , SCB_ALL );
- status->set_sc( KN_ONEHAND , SC_ONEHANDQUICKEN , SI_ONEHANDQUICKEN , SCB_ASPD );
- status->set_sc( GS_FLING , SC_FLING , SI_BLANK , SCB_DEF|SCB_DEF2 );
+ status->set_sc( CG_TAROTCARD , SC_TAROTCARD , SCB_NONE );
+ status->set_sc( ITEM_ENCHANTARMS , SC_ENCHANTARMS , SCB_ATK_ELE );
+ status->set_sc( SL_HIGH , SC_SOULLINK , SCB_ALL );
+ status->set_sc( KN_ONEHAND , SC_ONEHANDQUICKEN , SCB_ASPD );
+ status->set_sc( GS_FLING , SC_FLING , SCB_DEF|SCB_DEF2 );
add_sc( GS_CRACKER , SC_STUN );
add_sc( GS_DISARM , SC_NOEQUIPWEAPON );
add_sc( GS_PIERCINGSHOT , SC_BLOODING );
- status->set_sc( GS_MADNESSCANCEL , SC_GS_MADNESSCANCEL , SI_GS_MADNESSCANCEL , SCB_ASPD
+ status->set_sc( GS_MADNESSCANCEL , SC_GS_MADNESSCANCEL , SCB_ASPD
#ifndef RENEWAL
|SCB_BATK );
#else
);
#endif
- status->set_sc( GS_ADJUSTMENT , SC_GS_ADJUSTMENT , SI_GS_ADJUSTMENT , SCB_HIT|SCB_FLEE );
- status->set_sc( GS_INCREASING , SC_GS_ACCURACY , SI_GS_ACCURACY , SCB_AGI|SCB_DEX|SCB_HIT );
- status->set_sc( GS_GATLINGFEVER , SC_GS_GATLINGFEVER , SI_GS_GATLINGFEVER , SCB_FLEE|SCB_SPEED|SCB_ASPD
+ status->set_sc( GS_ADJUSTMENT , SC_GS_ADJUSTMENT , SCB_HIT|SCB_FLEE );
+ status->set_sc( GS_INCREASING , SC_GS_ACCURACY , SCB_AGI|SCB_DEX|SCB_HIT );
+ status->set_sc( GS_GATLINGFEVER , SC_GS_GATLINGFEVER , SCB_FLEE|SCB_SPEED|SCB_ASPD
#ifndef RENEWAL
|SCB_BATK );
#else
);
#endif
- status->set_sc( NJ_TATAMIGAESHI , SC_NJ_TATAMIGAESHI , SI_BLANK , SCB_NONE );
- status->set_sc( NJ_SUITON , SC_NJ_SUITON , SI_NJ_SUITON , SCB_AGI|SCB_SPEED );
+ status->set_sc( NJ_TATAMIGAESHI , SC_NJ_TATAMIGAESHI , SCB_NONE );
+ status->set_sc( NJ_SUITON , SC_NJ_SUITON , SCB_AGI|SCB_SPEED );
add_sc( NJ_HYOUSYOURAKU , SC_FREEZE );
- status->set_sc( NJ_NEN , SC_NJ_NEN , SI_NJ_NEN , SCB_STR|SCB_INT );
- status->set_sc( NJ_UTSUSEMI , SC_NJ_UTSUSEMI , SI_NJ_UTSUSEMI , SCB_NONE );
- status->set_sc( NJ_BUNSINJYUTSU , SC_NJ_BUNSINJYUTSU , SI_NJ_BUNSINJYUTSU , SCB_DYE );
+ status->set_sc( NJ_NEN , SC_NJ_NEN , SCB_STR|SCB_INT );
+ status->set_sc( NJ_UTSUSEMI , SC_NJ_UTSUSEMI , SCB_NONE );
+ status->set_sc( NJ_BUNSINJYUTSU , SC_NJ_BUNSINJYUTSU , SCB_DYE );
add_sc( NPC_ICEBREATH , SC_FREEZE );
add_sc( NPC_ACIDBREATH , SC_POISON );
@@ -456,202 +460,202 @@ static void initChangeTables(void)
add_sc( NPC_WIDESIGHT , SC_SIGHT );
add_sc( NPC_EVILLAND , SC_BLIND );
add_sc( NPC_MAGICMIRROR , SC_MAGICMIRROR );
- status->set_sc( NPC_SLOWCAST , SC_SLOWCAST , SI_SLOWCAST , SCB_NONE );
- status->set_sc( NPC_CRITICALWOUND , SC_CRITICALWOUND , SI_CRITICALWOUND , SCB_NONE );
- status->set_sc( NPC_STONESKIN , SC_STONESKIN , SI_BLANK , SCB_DEF|SCB_MDEF );
+ status->set_sc( NPC_SLOWCAST , SC_SLOWCAST , SCB_NONE );
+ status->set_sc( NPC_CRITICALWOUND , SC_CRITICALWOUND , SCB_NONE );
+ status->set_sc( NPC_STONESKIN , SC_STONESKIN , SCB_DEF|SCB_MDEF );
add_sc( NPC_ANTIMAGIC , SC_STONESKIN );
add_sc( NPC_WIDECURSE , SC_CURSE );
add_sc( NPC_WIDESTUN , SC_STUN );
- status->set_sc( NPC_HELLPOWER , SC_HELLPOWER , SI_HELLPOWER , SCB_NONE );
- status->set_sc( NPC_WIDEHELLDIGNITY , SC_HELLPOWER , SI_HELLPOWER , SCB_NONE );
- status->set_sc( NPC_INVINCIBLE , SC_INVINCIBLE , SI_INVINCIBLE , SCB_SPEED );
- status->set_sc( NPC_INVINCIBLEOFF , SC_INVINCIBLEOFF , SI_BLANK , SCB_SPEED );
+ status->set_sc( NPC_HELLPOWER , SC_HELLPOWER , SCB_NONE );
+ status->set_sc( NPC_WIDEHELLDIGNITY , SC_HELLPOWER , SCB_NONE );
+ status->set_sc( NPC_INVINCIBLE , SC_INVINCIBLE , SCB_SPEED );
+ status->set_sc( NPC_INVINCIBLEOFF , SC_INVINCIBLEOFF , SCB_SPEED );
- status->set_sc( CASH_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
- status->set_sc( CASH_INCAGI , SC_INC_AGI , SI_INC_AGI , SCB_AGI|SCB_SPEED );
- status->set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SI_ASSUMPTIO , SCB_NONE );
+ status->set_sc( CASH_BLESSING , SC_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
+ status->set_sc( CASH_INCAGI , SC_INC_AGI , SCB_AGI|SCB_SPEED );
+ status->set_sc( CASH_ASSUMPTIO , SC_ASSUMPTIO , SCB_NONE );
- status->set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , SI_PARTYFLEE , SCB_NONE );
- status->set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SI_ODINS_POWER , SCB_WATK | SCB_MATK | SCB_MDEF | SCB_DEF);
+ status->set_sc( ALL_PARTYFLEE , SC_PARTYFLEE , SCB_NONE );
+ status->set_sc( ALL_ODINS_POWER , SC_ODINS_POWER , SCB_WATK | SCB_MATK | SCB_MDEF | SCB_DEF);
- status->set_sc( CR_SHRINK , SC_CR_SHRINK , SI_CR_SHRINK , SCB_NONE );
- status->set_sc( RG_CLOSECONFINE , SC_RG_CCONFINE_S , SI_RG_CCONFINE_S , SCB_NONE );
- status->set_sc( RG_CLOSECONFINE , SC_RG_CCONFINE_M , SI_RG_CCONFINE_M , SCB_FLEE );
- status->set_sc( WZ_SIGHTBLASTER , SC_WZ_SIGHTBLASTER , SI_WZ_SIGHTBLASTER , SCB_NONE );
- status->set_sc( DC_WINKCHARM , SC_DC_WINKCHARM , SI_DC_WINKCHARM , SCB_NONE );
+ status->set_sc( CR_SHRINK , SC_CR_SHRINK , SCB_NONE );
+ status->set_sc( RG_CLOSECONFINE , SC_RG_CCONFINE_S , SCB_NONE );
+ status->set_sc( RG_CLOSECONFINE , SC_RG_CCONFINE_M , SCB_FLEE );
+ status->set_sc( WZ_SIGHTBLASTER , SC_WZ_SIGHTBLASTER , SCB_NONE );
+ status->set_sc( DC_WINKCHARM , SC_DC_WINKCHARM , SCB_NONE );
add_sc( MO_BALKYOUNG , SC_STUN );
add_sc( SA_ELEMENTWATER , SC_ARMOR_PROPERTY );
add_sc( SA_ELEMENTFIRE , SC_ARMOR_PROPERTY );
add_sc( SA_ELEMENTGROUND , SC_ARMOR_PROPERTY );
add_sc( SA_ELEMENTWIND , SC_ARMOR_PROPERTY );
- status->set_sc( HLIF_AVOID , SC_HLIF_AVOID , SI_BLANK , SCB_SPEED );
- status->set_sc( HLIF_CHANGE , SC_HLIF_CHANGE , SI_BLANK , SCB_VIT|SCB_INT );
- status->set_sc( HFLI_FLEET , SC_HLIF_FLEET , SI_BLANK , SCB_ASPD|SCB_BATK|SCB_WATK );
- status->set_sc( HFLI_SPEED , SC_HLIF_SPEED , SI_BLANK , SCB_FLEE );
- status->set_sc( HAMI_DEFENCE , SC_HAMI_DEFENCE , SI_BLANK , SCB_DEF );
- status->set_sc( HAMI_BLOODLUST , SC_HAMI_BLOODLUST , SI_BLANK , SCB_BATK|SCB_WATK );
+ status->set_sc( HLIF_AVOID , SC_HLIF_AVOID , SCB_SPEED );
+ status->set_sc( HLIF_CHANGE , SC_HLIF_CHANGE , SCB_VIT|SCB_INT );
+ status->set_sc( HFLI_FLEET , SC_HLIF_FLEET , SCB_ASPD|SCB_BATK|SCB_WATK );
+ status->set_sc( HFLI_SPEED , SC_HLIF_SPEED , SCB_FLEE );
+ status->set_sc( HAMI_DEFENCE , SC_HAMI_DEFENCE , SCB_DEF );
+ status->set_sc( HAMI_BLOODLUST , SC_HAMI_BLOODLUST , SCB_BATK|SCB_WATK );
// Homunculus S
- status->set_sc( MH_LIGHT_OF_REGENE , SC_LIGHT_OF_REGENE , SI_LIGHT_OF_REGENE , SCB_NONE );
- status->set_sc( MH_OVERED_BOOST , SC_OVERED_BOOST , SI_OVERED_BOOST , SCB_FLEE|SCB_ASPD|SCB_DEF );
+ status->set_sc( MH_LIGHT_OF_REGENE , SC_LIGHT_OF_REGENE , SCB_NONE );
+ status->set_sc( MH_OVERED_BOOST , SC_OVERED_BOOST , SCB_FLEE|SCB_ASPD|SCB_DEF );
add_sc(MH_STAHL_HORN, SC_STUN);
- status->set_sc(MH_ANGRIFFS_MODUS, SC_ANGRIFFS_MODUS, SI_ANGRIFFS_MODUS, SCB_BATK | SCB_DEF | SCB_FLEE | SCB_MAXHP);
- status->set_sc(MH_GOLDENE_FERSE, SC_GOLDENE_FERSE, SI_GOLDENE_FERSE, SCB_ASPD|SCB_MAXHP);
+ status->set_sc(MH_ANGRIFFS_MODUS, SC_ANGRIFFS_MODUS, SCB_BATK | SCB_DEF | SCB_FLEE | SCB_MAXHP);
+ status->set_sc(MH_GOLDENE_FERSE, SC_GOLDENE_FERSE, SCB_ASPD|SCB_MAXHP);
add_sc( MH_STEINWAND, SC_SAFETYWALL );
- status->set_sc(MH_VOLCANIC_ASH, SC_VOLCANIC_ASH, SI_VOLCANIC_ASH, SCB_DEF|SCB_DEF2|SCB_HIT|SCB_BATK|SCB_FLEE);
- status->set_sc(MH_GRANITIC_ARMOR, SC_GRANITIC_ARMOR, SI_GRANITIC_ARMOR, SCB_NONE);
- status->set_sc(MH_MAGMA_FLOW, SC_MAGMA_FLOW, SI_MAGMA_FLOW, SCB_NONE);
- status->set_sc(MH_PYROCLASTIC, SC_PYROCLASTIC, SI_PYROCLASTIC, SCB_BATK|SCB_ATK_ELE);
+ status->set_sc(MH_VOLCANIC_ASH, SC_VOLCANIC_ASH, SCB_DEF|SCB_DEF2|SCB_HIT|SCB_BATK|SCB_FLEE);
+ status->set_sc(MH_GRANITIC_ARMOR, SC_GRANITIC_ARMOR, SCB_NONE);
+ status->set_sc(MH_MAGMA_FLOW, SC_MAGMA_FLOW, SCB_NONE);
+ status->set_sc(MH_PYROCLASTIC, SC_PYROCLASTIC, SCB_BATK|SCB_ATK_ELE);
add_sc(MH_LAVA_SLIDE, SC_BURNING);
- status->set_sc(MH_NEEDLE_OF_PARALYZE, SC_NEEDLE_OF_PARALYZE, SI_NEEDLE_OF_PARALYZE, SCB_DEF2);
+ status->set_sc(MH_NEEDLE_OF_PARALYZE, SC_NEEDLE_OF_PARALYZE, SCB_DEF2);
add_sc(MH_POISON_MIST, SC_BLIND);
- status->set_sc(MH_PAIN_KILLER, SC_PAIN_KILLER, SI_PAIN_KILLER, SCB_ASPD);
+ status->set_sc(MH_PAIN_KILLER, SC_PAIN_KILLER, SCB_ASPD);
- status->set_sc( MH_SILENT_BREEZE , SC_SILENCE , SI_SILENT_BREEZE , SCB_NONE );
+ status->set_sc( MH_SILENT_BREEZE , SC_SILENCE , SCB_NONE );
add_sc( MH_STYLE_CHANGE , SC_STYLE_CHANGE);
- status->set_sc( MH_TINDER_BREAKER , SC_RG_CCONFINE_S , SI_RG_CCONFINE_S , SCB_NONE );
- status->set_sc( MH_TINDER_BREAKER , SC_RG_CCONFINE_M , SI_RG_CCONFINE_M , SCB_FLEE );
+ status->set_sc( MH_TINDER_BREAKER , SC_RG_CCONFINE_S , SCB_NONE );
+ status->set_sc( MH_TINDER_BREAKER , SC_RG_CCONFINE_M , SCB_FLEE );
add_sc( MER_CRASH , SC_STUN );
- status->set_sc( MER_PROVOKE , SC_PROVOKE , SI_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
+ status->set_sc( MER_PROVOKE , SC_PROVOKE , SCB_DEF|SCB_DEF2|SCB_BATK|SCB_WATK );
add_sc( MS_MAGNUM , SC_SUB_WEAPONPROPERTY );
add_sc( MER_SIGHT , SC_SIGHT );
- status->set_sc( MER_DECAGI , SC_DEC_AGI , SI_DEC_AGI , SCB_AGI|SCB_SPEED );
- status->set_sc( MER_MAGNIFICAT , SC_MAGNIFICAT , SI_MAGNIFICAT , SCB_REGEN );
+ status->set_sc( MER_DECAGI , SC_DEC_AGI , SCB_AGI|SCB_SPEED );
+ status->set_sc( MER_MAGNIFICAT , SC_MAGNIFICAT , SCB_REGEN );
add_sc( MER_LEXDIVINA , SC_SILENCE );
add_sc( MA_LANDMINE , SC_STUN );
add_sc( MA_SANDMAN , SC_SLEEP );
add_sc( MA_FREEZINGTRAP , SC_FREEZE );
- status->set_sc( MER_AUTOBERSERK , SC_AUTOBERSERK , SI_AUTOBERSERK , SCB_NONE );
- status->set_sc( ML_AUTOGUARD , SC_AUTOGUARD , SI_AUTOGUARD , SCB_NONE );
- status->set_sc( MS_REFLECTSHIELD , SC_REFLECTSHIELD , SI_REFLECTSHIELD , SCB_NONE );
- status->set_sc( ML_DEFENDER , SC_DEFENDER , SI_DEFENDER , SCB_SPEED|SCB_ASPD );
- status->set_sc( MS_PARRYING , SC_PARRYING , SI_PARRYING , SCB_NONE );
- status->set_sc( MS_BERSERK , SC_BERSERK , SI_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN );
+ status->set_sc( MER_AUTOBERSERK , SC_AUTOBERSERK , SCB_NONE );
+ status->set_sc( ML_AUTOGUARD , SC_AUTOGUARD , SCB_NONE );
+ status->set_sc( MS_REFLECTSHIELD , SC_REFLECTSHIELD , SCB_NONE );
+ status->set_sc( ML_DEFENDER , SC_DEFENDER , SCB_SPEED|SCB_ASPD );
+ status->set_sc( MS_PARRYING , SC_PARRYING , SCB_NONE );
+ status->set_sc( MS_BERSERK , SC_BERSERK , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2|SCB_FLEE|SCB_SPEED|SCB_ASPD|SCB_MAXHP|SCB_REGEN );
add_sc( ML_SPIRALPIERCE , SC_STOP );
- status->set_sc( MER_QUICKEN , SC_MER_QUICKEN , SI_BLANK , SCB_ASPD );
+ status->set_sc( MER_QUICKEN , SC_MER_QUICKEN , SCB_ASPD );
add_sc( ML_DEVOTION , SC_DEVOTION );
- status->set_sc( MER_KYRIE , SC_KYRIE , SI_KYRIE , SCB_NONE );
- status->set_sc( MER_BLESSING , SC_BLESSING , SI_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
- status->set_sc( MER_INCAGI , SC_INC_AGI , SI_INC_AGI , SCB_AGI|SCB_SPEED );
+ status->set_sc( MER_KYRIE , SC_KYRIE , SCB_NONE );
+ status->set_sc( MER_BLESSING , SC_BLESSING , SCB_STR|SCB_INT|SCB_DEX );
+ status->set_sc( MER_INCAGI , SC_INC_AGI , SCB_AGI|SCB_SPEED );
- status->set_sc( GD_LEADERSHIP , SC_LEADERSHIP , SI_BLANK , SCB_STR );
- status->set_sc( GD_GLORYWOUNDS , SC_GLORYWOUNDS , SI_BLANK , SCB_VIT );
- status->set_sc( GD_SOULCOLD , SC_SOULCOLD , SI_BLANK , SCB_AGI );
- status->set_sc( GD_HAWKEYES , SC_HAWKEYES , SI_BLANK , SCB_DEX );
+ status->set_sc( GD_LEADERSHIP , SC_LEADERSHIP , SCB_STR );
+ status->set_sc( GD_GLORYWOUNDS , SC_GLORYWOUNDS , SCB_VIT );
+ status->set_sc( GD_SOULCOLD , SC_SOULCOLD , SCB_AGI );
+ status->set_sc( GD_HAWKEYES , SC_HAWKEYES , SCB_DEX );
- status->set_sc( GD_BATTLEORDER , SC_GDSKILL_BATTLEORDER , SI_BLANK , SCB_STR|SCB_INT|SCB_DEX );
- status->set_sc( GD_REGENERATION , SC_GDSKILL_REGENERATION , SI_BLANK , SCB_REGEN );
+ status->set_sc( GD_BATTLEORDER , SC_GDSKILL_BATTLEORDER , SCB_STR|SCB_INT|SCB_DEX );
+ status->set_sc( GD_REGENERATION , SC_GDSKILL_REGENERATION , SCB_REGEN );
/**
* Rune Knight
**/
- status->set_sc( RK_ENCHANTBLADE , SC_ENCHANTBLADE , SI_ENCHANTBLADE , SCB_NONE );
- status->set_sc( RK_DRAGONHOWLING , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT );
- status->set_sc( RK_DEATHBOUND , SC_DEATHBOUND , SI_DEATHBOUND , SCB_NONE );
- status->set_sc( RK_WINDCUTTER , SC_FEAR , SI_BLANK , SCB_FLEE|SCB_HIT );
+ status->set_sc( RK_ENCHANTBLADE , SC_ENCHANTBLADE , SCB_NONE );
+ status->set_sc( RK_DRAGONHOWLING , SC_FEAR , SCB_FLEE|SCB_HIT );
+ status->set_sc( RK_DEATHBOUND , SC_DEATHBOUND , SCB_NONE );
+ status->set_sc( RK_WINDCUTTER , SC_FEAR , SCB_FLEE|SCB_HIT );
add_sc( RK_DRAGONBREATH , SC_BURNING );
- status->set_sc( RK_MILLENNIUMSHIELD , SC_MILLENNIUMSHIELD , SI_BLANK , SCB_NONE );
- status->set_sc( RK_REFRESH , SC_REFRESH , SI_REFRESH , SCB_NONE );
- status->set_sc( RK_GIANTGROWTH , SC_GIANTGROWTH , SI_GIANTGROWTH , SCB_STR );
- status->set_sc( RK_STONEHARDSKIN , SC_STONEHARDSKIN , SI_STONEHARDSKIN , SCB_NONE );
- status->set_sc( RK_VITALITYACTIVATION, SC_VITALITYACTIVATION, SI_VITALITYACTIVATION, SCB_REGEN );
- status->set_sc( RK_FIGHTINGSPIRIT , SC_FIGHTINGSPIRIT , SI_FIGHTINGSPIRIT , SCB_WATK|SCB_ASPD );
- status->set_sc( RK_ABUNDANCE , SC_ABUNDANCE , SI_ABUNDANCE , SCB_NONE );
- status->set_sc( RK_CRUSHSTRIKE , SC_CRUSHSTRIKE , SI_CRUSHSTRIKE , SCB_NONE );
+ status->set_sc( RK_MILLENNIUMSHIELD , SC_MILLENNIUMSHIELD , SCB_NONE );
+ status->set_sc( RK_REFRESH , SC_REFRESH , SCB_NONE );
+ status->set_sc( RK_GIANTGROWTH , SC_GIANTGROWTH , SCB_STR );
+ status->set_sc( RK_STONEHARDSKIN , SC_STONEHARDSKIN , SCB_NONE );
+ status->set_sc( RK_VITALITYACTIVATION, SC_VITALITYACTIVATION, SCB_REGEN );
+ status->set_sc( RK_FIGHTINGSPIRIT , SC_FIGHTINGSPIRIT , SCB_WATK|SCB_ASPD );
+ status->set_sc( RK_ABUNDANCE , SC_ABUNDANCE , SCB_NONE );
+ status->set_sc( RK_CRUSHSTRIKE , SC_CRUSHSTRIKE , SCB_NONE );
add_sc( RK_DRAGONBREATH_WATER, SC_FROSTMISTY );
/**
* GC Guillotine Cross
**/
- set_sc_with_vfx( GC_VENOMIMPRESS , SC_VENOMIMPRESS , SI_VENOMIMPRESS , SCB_NONE );
- status->set_sc( GC_POISONINGWEAPON , SC_POISONINGWEAPON , SI_POISONINGWEAPON , SCB_NONE );
- status->set_sc( GC_WEAPONBLOCKING , SC_WEAPONBLOCKING , SI_WEAPONBLOCKING , SCB_NONE );
- status->set_sc( GC_CLOAKINGEXCEED , SC_CLOAKINGEXCEED , SI_CLOAKINGEXCEED , SCB_SPEED );
- status->set_sc( GC_HALLUCINATIONWALK , SC_HALLUCINATIONWALK, SI_HALLUCINATIONWALK, SCB_FLEE );
- status->set_sc( GC_ROLLINGCUTTER , SC_ROLLINGCUTTER , SI_ROLLINGCUTTER , SCB_NONE );
- set_sc_with_vfx( GC_DARKCROW , SC_DARKCROW , SI_DARKCROW , SCB_NONE );
+ set_sc_with_vfx( GC_VENOMIMPRESS , SC_VENOMIMPRESS , SCB_NONE );
+ status->set_sc( GC_POISONINGWEAPON , SC_POISONINGWEAPON , SCB_NONE );
+ status->set_sc( GC_WEAPONBLOCKING , SC_WEAPONBLOCKING , SCB_NONE );
+ status->set_sc( GC_CLOAKINGEXCEED , SC_CLOAKINGEXCEED , SCB_SPEED );
+ status->set_sc( GC_HALLUCINATIONWALK , SC_HALLUCINATIONWALK, SCB_FLEE );
+ status->set_sc( GC_ROLLINGCUTTER , SC_ROLLINGCUTTER , SCB_NONE );
+ set_sc_with_vfx( GC_DARKCROW , SC_DARKCROW , SCB_NONE );
/**
* Arch Bishop
**/
- status->set_sc( AB_ADORAMUS , SC_ADORAMUS , SI_ADORAMUS , SCB_AGI|SCB_SPEED );
+ status->set_sc( AB_ADORAMUS , SC_ADORAMUS , SCB_AGI|SCB_SPEED );
add_sc( AB_CLEMENTIA , SC_BLESSING );
add_sc( AB_CANTO , SC_INC_AGI );
- status->set_sc( AB_EPICLESIS , SC_EPICLESIS , SI_EPICLESIS , SCB_MAXHP );
+ status->set_sc( AB_EPICLESIS , SC_EPICLESIS , SCB_MAXHP );
add_sc( AB_PRAEFATIO , SC_KYRIE );
- set_sc_with_vfx( AB_ORATIO , SC_ORATIO , SI_ORATIO , SCB_NONE );
- status->set_sc( AB_LAUDAAGNUS , SC_LAUDAAGNUS , SI_LAUDAAGNUS , SCB_VIT );
- status->set_sc( AB_LAUDARAMUS , SC_LAUDARAMUS , SI_LAUDARAMUS , SCB_LUK );
- status->set_sc( AB_RENOVATIO , SC_RENOVATIO , SI_RENOVATIO , SCB_REGEN );
- status->set_sc( AB_EXPIATIO , SC_EXPIATIO , SI_EXPIATIO , SCB_ATK_ELE );
- status->set_sc( AB_DUPLELIGHT , SC_DUPLELIGHT , SI_DUPLELIGHT , SCB_NONE );
- status->set_sc( AB_SECRAMENT , SC_SECRAMENT , SI_SECRAMENT , SCB_NONE );
- status->set_sc( AB_OFFERTORIUM , SC_OFFERTORIUM , SI_OFFERTORIUM , SCB_NONE );
+ set_sc_with_vfx( AB_ORATIO , SC_ORATIO , SCB_NONE );
+ status->set_sc( AB_LAUDAAGNUS , SC_LAUDAAGNUS , SCB_VIT );
+ status->set_sc( AB_LAUDARAMUS , SC_LAUDARAMUS , SCB_LUK );
+ status->set_sc( AB_RENOVATIO , SC_RENOVATIO , SCB_REGEN );
+ status->set_sc( AB_EXPIATIO , SC_EXPIATIO , SCB_ATK_ELE );
+ status->set_sc( AB_DUPLELIGHT , SC_DUPLELIGHT , SCB_NONE );
+ status->set_sc( AB_SECRAMENT , SC_SECRAMENT , SCB_NONE );
+ status->set_sc( AB_OFFERTORIUM , SC_OFFERTORIUM , SCB_NONE );
/**
* Warlock
**/
add_sc( WL_WHITEIMPRISON , SC_WHITEIMPRISON );
- set_sc_with_vfx( WL_FROSTMISTY , SC_FROSTMISTY , SI_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF );
- status->set_sc( WL_MARSHOFABYSS , SC_MARSHOFABYSS , SI_MARSHOFABYSS , SCB_SPEED|SCB_FLEE|SCB_AGI|SCB_DEX );
- status->set_sc(WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SI_RECOGNIZEDSPELL , SCB_MATK);
- status->set_sc( WL_STASIS , SC_STASIS , SI_STASIS , SCB_NONE );
- status->set_sc( WL_TELEKINESIS_INTENSE, SC_TELEKINESIS_INTENSE , SI_TELEKINESIS_INTENSE , SCB_MATK );
+ set_sc_with_vfx( WL_FROSTMISTY , SC_FROSTMISTY , SCB_ASPD|SCB_SPEED|SCB_DEF );
+ status->set_sc( WL_MARSHOFABYSS , SC_MARSHOFABYSS , SCB_SPEED|SCB_FLEE|SCB_AGI|SCB_DEX );
+ status->set_sc(WL_RECOGNIZEDSPELL , SC_RECOGNIZEDSPELL , SCB_MATK);
+ status->set_sc( WL_STASIS , SC_STASIS , SCB_NONE );
+ status->set_sc( WL_TELEKINESIS_INTENSE, SC_TELEKINESIS_INTENSE , SCB_MATK );
/**
* Ranger
**/
- status->set_sc( RA_FEARBREEZE , SC_FEARBREEZE , SI_FEARBREEZE , SCB_NONE );
- status->set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , SI_ELECTRICSHOCKER , SCB_NONE );
- status->set_sc( RA_WUGDASH , SC_WUGDASH , SI_WUGDASH , SCB_SPEED );
- status->set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SI_CAMOUFLAGE , SCB_SPEED );
+ status->set_sc( RA_FEARBREEZE , SC_FEARBREEZE , SCB_NONE );
+ status->set_sc( RA_ELECTRICSHOCKER , SC_ELECTRICSHOCKER , SCB_NONE );
+ status->set_sc( RA_WUGDASH , SC_WUGDASH , SCB_SPEED );
+ status->set_sc( RA_CAMOUFLAGE , SC_CAMOUFLAGE , SCB_SPEED );
add_sc( RA_MAGENTATRAP , SC_ARMOR_PROPERTY );
add_sc( RA_COBALTTRAP , SC_ARMOR_PROPERTY );
add_sc( RA_MAIZETRAP , SC_ARMOR_PROPERTY );
add_sc( RA_VERDURETRAP , SC_ARMOR_PROPERTY );
add_sc( RA_FIRINGTRAP , SC_BURNING );
add_sc( RA_ICEBOUNDTRAP , SC_FROSTMISTY );
- status->set_sc( RA_UNLIMIT , SC_UNLIMIT , SI_UNLIMIT , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
+ status->set_sc( RA_UNLIMIT , SC_UNLIMIT , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
/**
* Mechanic
**/
- status->set_sc( NC_ACCELERATION , SC_ACCELERATION , SI_ACCELERATION , SCB_SPEED );
- status->set_sc( NC_HOVERING , SC_HOVERING , SI_HOVERING , SCB_SPEED );
- status->set_sc( NC_SHAPESHIFT , SC_SHAPESHIFT , SI_SHAPESHIFT , SCB_DEF_ELE );
- status->set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SI_INFRAREDSCAN , SCB_FLEE );
- status->set_sc( NC_ANALYZE , SC_ANALYZE , SI_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
- status->set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SI_MAGNETICFIELD , SCB_NONE );
- status->set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SI_NEUTRALBARRIER , SCB_DEF|SCB_MDEF );
- status->set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SI_STEALTHFIELD , SCB_NONE );
+ status->set_sc( NC_ACCELERATION , SC_ACCELERATION , SCB_SPEED );
+ status->set_sc( NC_HOVERING , SC_HOVERING , SCB_SPEED );
+ status->set_sc( NC_SHAPESHIFT , SC_SHAPESHIFT , SCB_DEF_ELE );
+ status->set_sc( NC_INFRAREDSCAN , SC_INFRAREDSCAN , SCB_FLEE );
+ status->set_sc( NC_ANALYZE , SC_ANALYZE , SCB_DEF|SCB_DEF2|SCB_MDEF|SCB_MDEF2 );
+ status->set_sc( NC_MAGNETICFIELD , SC_MAGNETICFIELD , SCB_NONE );
+ status->set_sc( NC_NEUTRALBARRIER , SC_NEUTRALBARRIER , SCB_DEF|SCB_MDEF );
+ status->set_sc( NC_STEALTHFIELD , SC_STEALTHFIELD , SCB_NONE );
/**
* Royal Guard
**/
- status->set_sc( LG_REFLECTDAMAGE , SC_LG_REFLECTDAMAGE , SI_LG_REFLECTDAMAGE, SCB_NONE );
- status->set_sc( LG_FORCEOFVANGUARD , SC_FORCEOFVANGUARD , SI_FORCEOFVANGUARD , SCB_MAXHP );
- status->set_sc( LG_EXEEDBREAK , SC_EXEEDBREAK , SI_EXEEDBREAK , SCB_NONE );
- status->set_sc( LG_PRESTIGE , SC_PRESTIGE , SI_PRESTIGE , SCB_DEF );
- status->set_sc( LG_BANDING , SC_BANDING , SI_BANDING , SCB_DEF2|SCB_WATK );// Renewal: atk2 & def2
- status->set_sc( LG_PIETY , SC_BENEDICTIO , SI_BENEDICTIO , SCB_DEF_ELE );
- status->set_sc( LG_EARTHDRIVE , SC_EARTHDRIVE , SI_EARTHDRIVE , SCB_DEF|SCB_ASPD );
- status->set_sc( LG_INSPIRATION , SC_INSPIRATION , SI_INSPIRATION , SCB_MAXHP|SCB_WATK|SCB_HIT|SCB_VIT|SCB_AGI|SCB_STR|SCB_DEX|SCB_INT|SCB_LUK);
- status->set_sc( LG_KINGS_GRACE , SC_KINGS_GRACE , SI_KINGS_GRACE , SCB_NONE );
+ status->set_sc( LG_REFLECTDAMAGE , SC_LG_REFLECTDAMAGE , SCB_NONE );
+ status->set_sc( LG_FORCEOFVANGUARD , SC_FORCEOFVANGUARD , SCB_MAXHP );
+ status->set_sc( LG_EXEEDBREAK , SC_EXEEDBREAK , SCB_NONE );
+ status->set_sc( LG_PRESTIGE , SC_PRESTIGE , SCB_DEF );
+ status->set_sc( LG_BANDING , SC_BANDING , SCB_DEF2|SCB_WATK );// Renewal: atk2 & def2
+ status->set_sc( LG_PIETY , SC_BENEDICTIO , SCB_DEF_ELE );
+ status->set_sc( LG_EARTHDRIVE , SC_EARTHDRIVE , SCB_DEF|SCB_ASPD );
+ status->set_sc( LG_INSPIRATION , SC_INSPIRATION , SCB_MAXHP|SCB_WATK|SCB_HIT|SCB_VIT|SCB_AGI|SCB_STR|SCB_DEX|SCB_INT|SCB_LUK);
+ status->set_sc( LG_KINGS_GRACE , SC_KINGS_GRACE , SCB_NONE );
/**
* Shadow Chaser
**/
- status->set_sc( SC_REPRODUCE , SC__REPRODUCE , SI_REPRODUCE , SCB_NONE );
- status->set_sc( SC_AUTOSHADOWSPELL , SC__AUTOSHADOWSPELL, SI_AUTOSHADOWSPELL , SCB_NONE );
- status->set_sc( SC_SHADOWFORM , SC__SHADOWFORM , SI_SHADOWFORM , SCB_NONE );
- status->set_sc( SC_BODYPAINT , SC__BODYPAINT , SI_BODYPAINT , SCB_ASPD );
- status->set_sc( SC_INVISIBILITY , SC__INVISIBILITY , SI_INVISIBILITY , SCB_ASPD|SCB_CRI|SCB_ATK_ELE );
- status->set_sc( SC_DEADLYINFECT , SC__DEADLYINFECT , SI_DEADLYINFECT , SCB_NONE );
- status->set_sc( SC_ENERVATION , SC__ENERVATION , SI_ENERVATION , SCB_BATK );
- status->set_sc( SC_GROOMY , SC__GROOMY , SI_GROOMY , SCB_ASPD|SCB_HIT|SCB_SPEED );
- status->set_sc( SC_IGNORANCE , SC__IGNORANCE , SI_IGNORANCE , SCB_NONE );
- status->set_sc( SC_LAZINESS , SC__LAZINESS , SI_LAZINESS , SCB_FLEE );
- status->set_sc( SC_UNLUCKY , SC__UNLUCKY , SI_UNLUCKY , SCB_CRI|SCB_FLEE2 );
- status->set_sc( SC_WEAKNESS , SC__WEAKNESS , SI_WEAKNESS , SCB_FLEE2|SCB_MAXHP );
- status->set_sc( SC_STRIPACCESSARY , SC__STRIPACCESSARY , SI_STRIPACCESSARY , SCB_DEX|SCB_INT|SCB_LUK );
- set_sc_with_vfx( SC_MANHOLE , SC__MANHOLE , SI_MANHOLE , SCB_NONE );
+ status->set_sc( SC_REPRODUCE , SC__REPRODUCE , SCB_NONE );
+ status->set_sc( SC_AUTOSHADOWSPELL , SC__AUTOSHADOWSPELL, SCB_NONE );
+ status->set_sc( SC_SHADOWFORM , SC__SHADOWFORM , SCB_NONE );
+ status->set_sc( SC_BODYPAINT , SC__BODYPAINT , SCB_ASPD );
+ status->set_sc( SC_INVISIBILITY , SC__INVISIBILITY , SCB_ASPD|SCB_CRI|SCB_ATK_ELE );
+ status->set_sc( SC_DEADLYINFECT , SC__DEADLYINFECT , SCB_NONE );
+ status->set_sc( SC_ENERVATION , SC__ENERVATION , SCB_BATK );
+ status->set_sc( SC_GROOMY , SC__GROOMY , SCB_ASPD|SCB_HIT|SCB_SPEED );
+ status->set_sc( SC_IGNORANCE , SC__IGNORANCE , SCB_NONE );
+ status->set_sc( SC_LAZINESS , SC__LAZINESS , SCB_FLEE );
+ status->set_sc( SC_UNLUCKY , SC__UNLUCKY , SCB_CRI|SCB_FLEE2 );
+ status->set_sc( SC_WEAKNESS , SC__WEAKNESS , SCB_FLEE2|SCB_MAXHP );
+ status->set_sc( SC_STRIPACCESSARY , SC__STRIPACCESSARY , SCB_DEX|SCB_INT|SCB_LUK );
+ set_sc_with_vfx( SC_MANHOLE , SC__MANHOLE , SCB_NONE );
add_sc( SC_CHAOSPANIC , SC__CHAOS );
add_sc( SC_MAELSTROM , SC__MAELSTROM );
add_sc( SC_BLOODYLUST , SC_BERSERK );
@@ -661,131 +665,131 @@ static void initChangeTables(void)
**/
add_sc( SR_DRAGONCOMBO , SC_STUN );
add_sc( SR_EARTHSHAKER , SC_STUN );
- status->set_sc( SR_FALLENEMPIRE , SC_FALLENEMPIRE , SI_FALLENEMPIRE , SCB_NONE );
- status->set_sc( SR_CRESCENTELBOW , SC_CRESCENTELBOW , SI_CRESCENTELBOW , SCB_NONE );
- set_sc_with_vfx( SR_CURSEDCIRCLE , SC_CURSEDCIRCLE_TARGET, SI_CURSEDCIRCLE_TARGET , SCB_NONE );
- status->set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , SI_LIGHTNINGWALK , SCB_NONE );
- status->set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , SI_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP );
- status->set_sc( SR_GENTLETOUCH_ENERGYGAIN, SC_GENTLETOUCH_ENERGYGAIN , SI_GENTLETOUCH_ENERGYGAIN, SCB_NONE );
- status->set_sc( SR_GENTLETOUCH_CHANGE , SC_GENTLETOUCH_CHANGE , SI_GENTLETOUCH_CHANGE , SCB_ASPD|SCB_MDEF|SCB_MAXHP );
- status->set_sc( SR_GENTLETOUCH_REVITALIZE, SC_GENTLETOUCH_REVITALIZE , SI_GENTLETOUCH_REVITALIZE, SCB_MAXHP|SCB_DEF2|SCB_REGEN );
- status->set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SI_FLASHCOMBO , SCB_WATK );
+ status->set_sc( SR_FALLENEMPIRE , SC_FALLENEMPIRE , SCB_NONE );
+ status->set_sc( SR_CRESCENTELBOW , SC_CRESCENTELBOW , SCB_NONE );
+ set_sc_with_vfx( SR_CURSEDCIRCLE , SC_CURSEDCIRCLE_TARGET, SCB_NONE );
+ status->set_sc( SR_LIGHTNINGWALK , SC_LIGHTNINGWALK , SCB_NONE );
+ status->set_sc( SR_RAISINGDRAGON , SC_RAISINGDRAGON , SCB_REGEN|SCB_MAXHP|SCB_MAXSP );
+ status->set_sc( SR_GENTLETOUCH_ENERGYGAIN, SC_GENTLETOUCH_ENERGYGAIN , SCB_NONE );
+ status->set_sc( SR_GENTLETOUCH_CHANGE , SC_GENTLETOUCH_CHANGE , SCB_ASPD|SCB_MDEF|SCB_MAXHP );
+ status->set_sc( SR_GENTLETOUCH_REVITALIZE, SC_GENTLETOUCH_REVITALIZE , SCB_MAXHP|SCB_DEF2|SCB_REGEN );
+ status->set_sc( SR_FLASHCOMBO , SC_FLASHCOMBO , SCB_WATK );
/**
* Wanderer / Minstrel
**/
- status->set_sc( WA_SWING_DANCE , SC_SWING , SI_SWINGDANCE , SCB_SPEED|SCB_ASPD );
- status->set_sc( WA_SYMPHONY_OF_LOVER , SC_SYMPHONY_LOVE , SI_SYMPHONYOFLOVERS , SCB_MDEF );
- status->set_sc( WA_MOONLIT_SERENADE , SC_MOONLIT_SERENADE , SI_MOONLITSERENADE , SCB_MATK );
- status->set_sc( MI_RUSH_WINDMILL , SC_RUSH_WINDMILL , SI_RUSHWINDMILL , SCB_WATK );
- status->set_sc( MI_ECHOSONG , SC_ECHOSONG , SI_ECHOSONG , SCB_DEF2 );
- status->set_sc( MI_HARMONIZE , SC_HARMONIZE , SI_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
- set_sc_with_vfx(WM_POEMOFNETHERWORLD, SC_NETHERWORLD , SI_NETHERWORLD , SCB_NONE);
- set_sc_with_vfx( WM_VOICEOFSIREN , SC_SIREN , SI_SIREN , SCB_NONE );
- set_sc_with_vfx( WM_LULLABY_DEEPSLEEP , SC_DEEP_SLEEP , SI_DEEPSLEEP , SCB_NONE );
- status->set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , SI_SIRCLEOFNATURE , SCB_NONE );
- status->set_sc( WM_GLOOMYDAY , SC_GLOOMYDAY , SI_GLOOMYDAY , SCB_FLEE|SCB_ASPD );
- status->set_sc( WM_SONG_OF_MANA , SC_SONG_OF_MANA , SI_SONG_OF_MANA , SCB_NONE );
- status->set_sc( WM_DANCE_WITH_WUG , SC_DANCE_WITH_WUG , SI_DANCEWITHWUG , SCB_ASPD );
- status->set_sc( WM_SATURDAY_NIGHT_FEVER , SC_SATURDAY_NIGHT_FEVER , SI_SATURDAYNIGHTFEVER , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN );
- status->set_sc( WM_LERADS_DEW , SC_LERADS_DEW , SI_LERADSDEW , SCB_MAXHP );
- status->set_sc( WM_MELODYOFSINK , SC_MELODYOFSINK , SI_MELODYOFSINK , SCB_INT );
- status->set_sc( WM_BEYOND_OF_WARCRY , SC_BEYOND_OF_WARCRY , SI_WARCRYOFBEYOND , SCB_STR|SCB_CRI|SCB_MAXHP );
- status->set_sc( WM_UNLIMITED_HUMMING_VOICE, SC_UNLIMITED_HUMMING_VOICE, SI_UNLIMITEDHUMMINGVOICE, SCB_NONE );
- status->set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , SI_FRIGG_SONG , SCB_MAXHP );
+ status->set_sc( WA_SWING_DANCE , SC_SWING , SCB_SPEED|SCB_ASPD );
+ status->set_sc( WA_SYMPHONY_OF_LOVER , SC_SYMPHONY_LOVE , SCB_MDEF );
+ status->set_sc( WA_MOONLIT_SERENADE , SC_MOONLIT_SERENADE , SCB_MATK );
+ status->set_sc( MI_RUSH_WINDMILL , SC_RUSH_WINDMILL , SCB_WATK );
+ status->set_sc( MI_ECHOSONG , SC_ECHOSONG , SCB_DEF2 );
+ status->set_sc( MI_HARMONIZE , SC_HARMONIZE , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
+ set_sc_with_vfx(WM_POEMOFNETHERWORLD, SC_NETHERWORLD , SCB_NONE);
+ set_sc_with_vfx( WM_VOICEOFSIREN , SC_SIREN , SCB_NONE );
+ set_sc_with_vfx( WM_LULLABY_DEEPSLEEP , SC_DEEP_SLEEP , SCB_NONE );
+ status->set_sc( WM_SIRCLEOFNATURE , SC_SIRCLEOFNATURE , SCB_NONE );
+ status->set_sc( WM_GLOOMYDAY , SC_GLOOMYDAY , SCB_FLEE|SCB_ASPD );
+ status->set_sc( WM_SONG_OF_MANA , SC_SONG_OF_MANA , SCB_NONE );
+ status->set_sc( WM_DANCE_WITH_WUG , SC_DANCE_WITH_WUG , SCB_ASPD );
+ status->set_sc( WM_SATURDAY_NIGHT_FEVER , SC_SATURDAY_NIGHT_FEVER , SCB_BATK|SCB_DEF|SCB_FLEE|SCB_REGEN );
+ status->set_sc( WM_LERADS_DEW , SC_LERADS_DEW , SCB_MAXHP );
+ status->set_sc( WM_MELODYOFSINK , SC_MELODYOFSINK , SCB_INT );
+ status->set_sc( WM_BEYOND_OF_WARCRY , SC_BEYOND_OF_WARCRY , SCB_STR|SCB_CRI|SCB_MAXHP );
+ status->set_sc( WM_UNLIMITED_HUMMING_VOICE, SC_UNLIMITED_HUMMING_VOICE, SCB_NONE );
+ status->set_sc( WM_FRIGG_SONG , SC_FRIGG_SONG , SCB_MAXHP );
/**
* Sorcerer
**/
- status->set_sc( SO_FIREWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE );
- status->set_sc( SO_ELECTRICWALK , SC_PROPERTYWALK , SI_PROPERTYWALK , SCB_NONE );
- status->set_sc( SO_SPELLFIST , SC_SPELLFIST , SI_SPELLFIST , SCB_NONE );
- set_sc_with_vfx( SO_DIAMONDDUST , SC_COLD , SI_COLD , SCB_NONE ); // it does show the snow icon on mobs but doesn't affect it.
- status->set_sc( SO_CLOUD_KILL , SC_POISON , SI_CLOUDKILL , SCB_NONE );
- status->set_sc( SO_STRIKING , SC_STRIKING , SI_STRIKING , SCB_WATK|SCB_CRI );
+ status->set_sc( SO_FIREWALK , SC_PROPERTYWALK , SCB_NONE );
+ status->set_sc( SO_ELECTRICWALK , SC_PROPERTYWALK , SCB_NONE );
+ status->set_sc( SO_SPELLFIST , SC_SPELLFIST , SCB_NONE );
+ set_sc_with_vfx( SO_DIAMONDDUST , SC_COLD , SCB_NONE ); // it does show the snow icon on mobs but doesn't affect it.
+ status->set_sc( SO_CLOUD_KILL , SC_POISON , SCB_NONE );
+ status->set_sc( SO_STRIKING , SC_STRIKING , SCB_WATK|SCB_CRI );
add_sc( SO_WARMER , SC_WARMER ); // At the moment, no icon on officials
- status->set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , SI_VACUUM_EXTREME , SCB_NONE );
- status->set_sc( SO_ARRULLO , SC_DEEP_SLEEP , SI_DEEPSLEEP , SCB_NONE );
- status->set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , SI_FIRE_INSIGNIA , SCB_MATK | SCB_BATK | SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
- status->set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , SI_WATER_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
- status->set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , SI_WIND_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
- status->set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , SI_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ status->set_sc( SO_VACUUM_EXTREME , SC_VACUUM_EXTREME , SCB_NONE );
+ status->set_sc( SO_ARRULLO , SC_DEEP_SLEEP , SCB_NONE );
+ status->set_sc( SO_FIRE_INSIGNIA , SC_FIRE_INSIGNIA , SCB_MATK | SCB_BATK | SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ status->set_sc( SO_WATER_INSIGNIA , SC_WATER_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ status->set_sc( SO_WIND_INSIGNIA , SC_WIND_INSIGNIA , SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
+ status->set_sc( SO_EARTH_INSIGNIA , SC_EARTH_INSIGNIA , SCB_MDEF|SCB_DEF|SCB_MAXHP|SCB_MAXSP|SCB_WATK | SCB_ATK_ELE | SCB_REGEN );
add_sc( SO_ELEMENTAL_SHIELD , SC_SAFETYWALL );
/**
* Genetic
**/
- status->set_sc( GN_CARTBOOST , SC_GN_CARTBOOST, SI_CARTSBOOST , SCB_SPEED );
- status->set_sc( GN_THORNS_TRAP , SC_THORNS_TRAP , SI_THORNTRAP , SCB_NONE );
- set_sc_with_vfx( GN_BLOOD_SUCKER , SC_BLOOD_SUCKER , SI_BLOODSUCKER , SCB_NONE );
- status->set_sc( GN_WALLOFTHORN , SC_STOP , SI_BLANK , SCB_NONE );
- status->set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER, SC_FIRE_EXPANSION_SMOKE_POWDER , SI_FIRE_EXPANSION_SMOKE_POWDER, SCB_NONE );
- status->set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_FIRE_EXPANSION_TEAR_GAS , SI_FIRE_EXPANSION_TEAR_GAS , SCB_NONE );
- status->set_sc( GN_MANDRAGORA , SC_MANDRAGORA , SI_MANDRAGORA , SCB_INT );
+ status->set_sc( GN_CARTBOOST , SC_GN_CARTBOOST, SCB_SPEED );
+ status->set_sc( GN_THORNS_TRAP , SC_THORNS_TRAP , SCB_NONE );
+ set_sc_with_vfx( GN_BLOOD_SUCKER , SC_BLOOD_SUCKER , SCB_NONE );
+ status->set_sc( GN_WALLOFTHORN , SC_STOP , SCB_NONE );
+ status->set_sc( GN_FIRE_EXPANSION_SMOKE_POWDER, SC_FIRE_EXPANSION_SMOKE_POWDER , SCB_NONE );
+ status->set_sc( GN_FIRE_EXPANSION_TEAR_GAS , SC_FIRE_EXPANSION_TEAR_GAS , SCB_NONE );
+ status->set_sc( GN_MANDRAGORA , SC_MANDRAGORA , SCB_INT );
/**
* Summoner
*/
- status->set_sc(SU_HIDE, SC_SUHIDE, SI_SUHIDE, SCB_SPEED);
+ status->set_sc(SU_HIDE, SC_SUHIDE, SCB_SPEED);
add_sc(SU_SCRATCH, SC_BLOODING);
- status->set_sc(SU_STOOP, SC_SU_STOOP, SI_SU_STOOP, SCB_NONE);
- status->set_sc(SU_FRESHSHRIMP, SC_FRESHSHRIMP, SI_FRESHSHRIMP, SCB_NONE);
+ status->set_sc(SU_STOOP, SC_SU_STOOP, SCB_NONE);
+ status->set_sc(SU_FRESHSHRIMP, SC_FRESHSHRIMP, SCB_NONE);
add_sc(SU_SV_STEMSPEAR, SC_BLOODING);
- status->set_sc(SU_CN_POWDERING, SC_CATNIPPOWDER, SI_CATNIPPOWDER, SCB_WATK | SCB_SPEED | SCB_REGEN);
+ status->set_sc(SU_CN_POWDERING, SC_CATNIPPOWDER, SCB_WATK | SCB_SPEED | SCB_REGEN);
add_sc(SU_CN_METEOR, SC_CURSE);
- set_sc_with_vfx(SU_SV_ROOTTWIST, SC_SV_ROOTTWIST, SI_SV_ROOTTWIST, SCB_NONE);
+ set_sc_with_vfx(SU_SV_ROOTTWIST, SC_SV_ROOTTWIST, SCB_NONE);
add_sc(SU_SCAROFTAROU, SC_STUN );
- status->set_sc(SU_SCAROFTAROU, SC_BITESCAR, SI_BITESCAR, SCB_NONE);
- status->set_sc(SU_ARCLOUSEDASH, SC_ARCLOUSEDASH, SI_ARCLOUSEDASH, SCB_AGI | SCB_SPEED);
+ status->set_sc(SU_SCAROFTAROU, SC_BITESCAR, SCB_NONE);
+ status->set_sc(SU_ARCLOUSEDASH, SC_ARCLOUSEDASH, SCB_AGI | SCB_SPEED);
add_sc(SU_LUNATICCARROTBEAT, SC_STUN);
- status->set_sc(SU_TUNAPARTY, SC_TUNAPARTY, SI_TUNAPARTY, SCB_NONE);
- status->set_sc(SU_BUNCHOFSHRIMP, SC_SHRIMP, SI_SHRIMP, SCB_BATK | SCB_MATK);
+ status->set_sc(SU_TUNAPARTY, SC_TUNAPARTY, SCB_NONE);
+ status->set_sc(SU_BUNCHOFSHRIMP, SC_SHRIMP, SCB_BATK | SCB_MATK);
// Elemental Spirit summoner's 'side' status changes.
- status->set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION, SI_CIRCLE_OF_FIRE_OPTION, SCB_NONE );
- status->set_sc( EL_FIRE_CLOAK , SC_FIRE_CLOAK_OPTION , SI_FIRE_CLOAK_OPTION , SCB_ALL );
- status->set_sc( EL_WATER_SCREEN , SC_WATER_SCREEN_OPTION , SI_WATER_SCREEN_OPTION , SCB_NONE );
- status->set_sc( EL_WATER_DROP , SC_WATER_DROP_OPTION , SI_WATER_DROP_OPTION , SCB_ALL );
- status->set_sc( EL_WATER_BARRIER , SC_WATER_BARRIER , SI_WATER_BARRIER , SCB_WATK|SCB_FLEE );
- status->set_sc( EL_WIND_STEP , SC_WIND_STEP_OPTION , SI_WIND_STEP_OPTION , SCB_SPEED|SCB_FLEE );
- status->set_sc( EL_WIND_CURTAIN , SC_WIND_CURTAIN_OPTION , SI_WIND_CURTAIN_OPTION , SCB_ALL );
- status->set_sc( EL_ZEPHYR , SC_ZEPHYR , SI_ZEPHYR , SCB_FLEE );
- status->set_sc( EL_SOLID_SKIN , SC_SOLID_SKIN_OPTION , SI_SOLID_SKIN_OPTION , SCB_DEF|SCB_MAXHP );
- status->set_sc( EL_STONE_SHIELD , SC_STONE_SHIELD_OPTION , SI_STONE_SHIELD_OPTION , SCB_ALL );
- status->set_sc( EL_POWER_OF_GAIA , SC_POWER_OF_GAIA , SI_POWER_OF_GAIA , SCB_MAXHP|SCB_DEF|SCB_SPEED );
- status->set_sc( EL_PYROTECHNIC , SC_PYROTECHNIC_OPTION , SI_PYROTECHNIC_OPTION , SCB_WATK );
- status->set_sc( EL_HEATER , SC_HEATER_OPTION , SI_HEATER_OPTION , SCB_WATK );
- status->set_sc( EL_TROPIC , SC_TROPIC_OPTION , SI_TROPIC_OPTION , SCB_WATK );
- status->set_sc( EL_AQUAPLAY , SC_AQUAPLAY_OPTION , SI_AQUAPLAY_OPTION , SCB_MATK );
- status->set_sc( EL_COOLER , SC_COOLER_OPTION , SI_COOLER_OPTION , SCB_MATK );
- status->set_sc( EL_CHILLY_AIR , SC_CHILLY_AIR_OPTION , SI_CHILLY_AIR_OPTION , SCB_MATK );
- status->set_sc( EL_GUST , SC_GUST_OPTION , SI_GUST_OPTION , SCB_ASPD );
- status->set_sc( EL_BLAST , SC_BLAST_OPTION , SI_BLAST_OPTION , SCB_ASPD );
- status->set_sc( EL_WILD_STORM , SC_WILD_STORM_OPTION , SI_WILD_STORM_OPTION , SCB_ASPD );
- status->set_sc( EL_PETROLOGY , SC_PETROLOGY_OPTION , SI_PETROLOGY_OPTION , SCB_MAXHP );
- status->set_sc( EL_CURSED_SOIL , SC_CURSED_SOIL_OPTION , SI_CURSED_SOIL_OPTION , SCB_MAXHP );
- status->set_sc( EL_UPHEAVAL , SC_UPHEAVAL_OPTION , SI_UPHEAVAL_OPTION , SCB_MAXHP );
- status->set_sc( EL_TIDAL_WEAPON , SC_TIDAL_WEAPON_OPTION , SI_TIDAL_WEAPON_OPTION , SCB_ALL );
- status->set_sc( EL_ROCK_CRUSHER , SC_ROCK_CRUSHER , SI_ROCK_CRUSHER , SCB_DEF );
- status->set_sc( EL_ROCK_CRUSHER_ATK, SC_ROCK_CRUSHER_ATK , SI_ROCK_CRUSHER_ATK , SCB_SPEED );
+ status->set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION, SCB_NONE );
+ status->set_sc( EL_FIRE_CLOAK , SC_FIRE_CLOAK_OPTION , SCB_ALL );
+ status->set_sc( EL_WATER_SCREEN , SC_WATER_SCREEN_OPTION , SCB_NONE );
+ status->set_sc( EL_WATER_DROP , SC_WATER_DROP_OPTION , SCB_ALL );
+ status->set_sc( EL_WATER_BARRIER , SC_WATER_BARRIER , SCB_WATK|SCB_FLEE );
+ status->set_sc( EL_WIND_STEP , SC_WIND_STEP_OPTION , SCB_SPEED|SCB_FLEE );
+ status->set_sc( EL_WIND_CURTAIN , SC_WIND_CURTAIN_OPTION , SCB_ALL );
+ status->set_sc( EL_ZEPHYR , SC_ZEPHYR , SCB_FLEE );
+ status->set_sc( EL_SOLID_SKIN , SC_SOLID_SKIN_OPTION , SCB_DEF|SCB_MAXHP );
+ status->set_sc( EL_STONE_SHIELD , SC_STONE_SHIELD_OPTION , SCB_ALL );
+ status->set_sc( EL_POWER_OF_GAIA , SC_POWER_OF_GAIA , SCB_MAXHP|SCB_DEF|SCB_SPEED );
+ status->set_sc( EL_PYROTECHNIC , SC_PYROTECHNIC_OPTION , SCB_WATK );
+ status->set_sc( EL_HEATER , SC_HEATER_OPTION , SCB_WATK );
+ status->set_sc( EL_TROPIC , SC_TROPIC_OPTION , SCB_WATK );
+ status->set_sc( EL_AQUAPLAY , SC_AQUAPLAY_OPTION , SCB_MATK );
+ status->set_sc( EL_COOLER , SC_COOLER_OPTION , SCB_MATK );
+ status->set_sc( EL_CHILLY_AIR , SC_CHILLY_AIR_OPTION , SCB_MATK );
+ status->set_sc( EL_GUST , SC_GUST_OPTION , SCB_ASPD );
+ status->set_sc( EL_BLAST , SC_BLAST_OPTION , SCB_ASPD );
+ status->set_sc( EL_WILD_STORM , SC_WILD_STORM_OPTION , SCB_ASPD );
+ status->set_sc( EL_PETROLOGY , SC_PETROLOGY_OPTION , SCB_MAXHP );
+ status->set_sc( EL_CURSED_SOIL , SC_CURSED_SOIL_OPTION , SCB_MAXHP );
+ status->set_sc( EL_UPHEAVAL , SC_UPHEAVAL_OPTION , SCB_MAXHP );
+ status->set_sc( EL_TIDAL_WEAPON , SC_TIDAL_WEAPON_OPTION , SCB_ALL );
+ status->set_sc( EL_ROCK_CRUSHER , SC_ROCK_CRUSHER , SCB_DEF );
+ status->set_sc( EL_ROCK_CRUSHER_ATK, SC_ROCK_CRUSHER_ATK , SCB_SPEED );
add_sc( KO_YAMIKUMO , SC_HIDING );
- set_sc_with_vfx( KO_JYUMONJIKIRI , SC_KO_JYUMONJIKIRI , SI_KO_JYUMONJIKIRI , SCB_NONE );
+ set_sc_with_vfx( KO_JYUMONJIKIRI , SC_KO_JYUMONJIKIRI , SCB_NONE );
add_sc( KO_MAKIBISHI , SC_STUN );
- status->set_sc( KO_MEIKYOUSISUI , SC_MEIKYOUSISUI , SI_MEIKYOUSISUI , SCB_NONE );
- status->set_sc( KO_KYOUGAKU , SC_KYOUGAKU , SI_KYOUGAKU , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
+ status->set_sc( KO_MEIKYOUSISUI , SC_MEIKYOUSISUI , SCB_NONE );
+ status->set_sc( KO_KYOUGAKU , SC_KYOUGAKU , SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
add_sc( KO_JYUSATSU , SC_CURSE );
- status->set_sc( KO_ZENKAI , SC_ZENKAI , SI_ZENKAI , SCB_NONE );
- status->set_sc( KO_IZAYOI , SC_IZAYOI , SI_IZAYOI , SCB_MATK );
- status->set_sc( KG_KYOMU , SC_KYOMU , SI_KYOMU , SCB_NONE );
- status->set_sc( KG_KAGEMUSYA , SC_KAGEMUSYA , SI_KAGEMUSYA , SCB_NONE );
- status->set_sc( KG_KAGEHUMI , SC_KG_KAGEHUMI , SI_KG_KAGEHUMI , SCB_NONE );
- status->set_sc( OB_ZANGETSU , SC_ZANGETSU , SI_ZANGETSU , SCB_MATK|SCB_BATK );
- set_sc_with_vfx( OB_AKAITSUKI, SC_AKAITSUKI , SI_AKAITSUKI , SCB_NONE );
- status->set_sc( OB_OBOROGENSOU , SC_GENSOU , SI_GENSOU , SCB_NONE );
+ status->set_sc( KO_ZENKAI , SC_ZENKAI , SCB_NONE );
+ status->set_sc( KO_IZAYOI , SC_IZAYOI , SCB_MATK );
+ status->set_sc( KG_KYOMU , SC_KYOMU , SCB_NONE );
+ status->set_sc( KG_KAGEMUSYA , SC_KAGEMUSYA , SCB_NONE );
+ status->set_sc( KG_KAGEHUMI , SC_KG_KAGEHUMI , SCB_NONE );
+ status->set_sc( OB_ZANGETSU , SC_ZANGETSU , SCB_MATK|SCB_BATK );
+ set_sc_with_vfx( OB_AKAITSUKI, SC_AKAITSUKI , SCB_NONE );
+ status->set_sc( OB_OBOROGENSOU , SC_GENSOU , SCB_NONE );
- status->set_sc( ALL_FULL_THROTTLE , SC_FULL_THROTTLE , SI_FULL_THROTTLE , SCB_SPEED|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
+ status->set_sc( ALL_FULL_THROTTLE , SC_FULL_THROTTLE , SCB_SPEED|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK );
add_sc( ALL_REVERSEORCISH , SC_ORCISH );
- status->set_sc( ALL_ANGEL_PROTECT , SC_ANGEL_PROTECT , SI_ANGEL_PROTECT , SCB_REGEN );
+ status->set_sc( ALL_ANGEL_PROTECT , SC_ANGEL_PROTECT , SCB_REGEN );
add_sc( NPC_WIDEHEALTHFEAR , SC_FEAR );
add_sc( NPC_WIDEBODYBURNNING , SC_BURNING );
@@ -794,7 +798,7 @@ static void initChangeTables(void)
add_sc( NPC_WIDE_DEEP_SLEEP , SC_DEEP_SLEEP );
add_sc( NPC_WIDESIREN , SC_SIREN );
- set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , SI_ILLUSIONDOPING , SCB_HIT );
+ set_sc_with_vfx( GN_ILLUSIONDOPING , SC_ILLUSIONDOPING , SCB_HIT );
// Storing the target job rather than simply SC_SOULLINK simplifies code later on.
status->dbs->Skill2SCTable[SL_ALCHEMIST] = (sc_type)MAPID_ALCHEMIST,
@@ -813,220 +817,6 @@ static void initChangeTables(void)
status->dbs->Skill2SCTable[SL_HUNTER] = (sc_type)MAPID_HUNTER,
status->dbs->Skill2SCTable[SL_SOULLINKER] = (sc_type)MAPID_SOUL_LINKER,
- // Status that don't have a skill associated.
- status->dbs->IconChangeTable[SC_WEIGHTOVER50] = SI_WEIGHTOVER50;
- status->dbs->IconChangeTable[SC_WEIGHTOVER90] = SI_WEIGHTOVER90;
- status->dbs->IconChangeTable[SC_ATTHASTE_POTION1] = SI_ATTHASTE_POTION1;
- status->dbs->IconChangeTable[SC_ATTHASTE_POTION2] = SI_ATTHASTE_POTION2;
- status->dbs->IconChangeTable[SC_ATTHASTE_POTION3] = SI_ATTHASTE_POTION3;
- status->dbs->IconChangeTable[SC_MOVHASTE_POTION] = SI_MOVHASTE_POTION;
- status->dbs->IconChangeTable[SC_ATTHASTE_INFINITY] = SI_ATTHASTE_INFINITY;
- status->dbs->IconChangeTable[SC_MOVHASTE_HORSE] = SI_MOVHASTE_HORSE;
- status->dbs->IconChangeTable[SC_MOVHASTE_INFINITY] = SI_MOVHASTE_INFINITY;
- status->dbs->IconChangeTable[SC_MOVESLOW_POTION] = SI_MOVESLOW_POTION;
- status->dbs->IconChangeTable[SC_CHASEWALK2] = SI_INCSTR;
- status->dbs->IconChangeTable[SC_MIRACLE] = SI_SOULLINK;
- status->dbs->IconChangeTable[SC_CLAIRVOYANCE] = SI_CLAIRVOYANCE;
- status->dbs->IconChangeTable[SC_FOOD_STR] = SI_FOOD_STR;
- status->dbs->IconChangeTable[SC_FOOD_AGI] = SI_FOOD_AGI;
- status->dbs->IconChangeTable[SC_FOOD_VIT] = SI_FOOD_VIT;
- status->dbs->IconChangeTable[SC_FOOD_INT] = SI_FOOD_INT;
- status->dbs->IconChangeTable[SC_FOOD_DEX] = SI_FOOD_DEX;
- status->dbs->IconChangeTable[SC_FOOD_LUK] = SI_FOOD_LUK;
- status->dbs->IconChangeTable[SC_FOOD_BASICAVOIDANCE]= SI_FOOD_BASICAVOIDANCE;
- status->dbs->IconChangeTable[SC_FOOD_BASICHIT] = SI_FOOD_BASICHIT;
- status->dbs->IconChangeTable[SC_MANU_ATK] = SI_MANU_ATK;
- status->dbs->IconChangeTable[SC_MANU_DEF] = SI_MANU_DEF;
- status->dbs->IconChangeTable[SC_SPL_ATK] = SI_SPL_ATK;
- status->dbs->IconChangeTable[SC_SPL_DEF] = SI_SPL_DEF;
- status->dbs->IconChangeTable[SC_MANU_MATK] = SI_MANU_MATK;
- status->dbs->IconChangeTable[SC_SPL_MATK] = SI_SPL_MATK;
- status->dbs->IconChangeTable[SC_PLUSATTACKPOWER] = SI_PLUSATTACKPOWER;
- status->dbs->IconChangeTable[SC_PLUSMAGICPOWER] = SI_PLUSMAGICPOWER;
- status->dbs->IconChangeTable[SC_FOOD_CRITICALSUCCESSVALUE] = SI_FOOD_CRITICALSUCCESSVALUE;
- status->dbs->IconChangeTable[SC_MORA_BUFF] = SI_MORA_BUFF;
- status->dbs->IconChangeTable[SC_BUCHEDENOEL] = SI_BUCHEDENOEL;
- status->dbs->IconChangeTable[SC_PHI_DEMON] = SI_PHI_DEMON;
-
- // Cash Items
- status->dbs->IconChangeTable[SC_FOOD_STR_CASH] = SI_FOOD_STR_CASH;
- status->dbs->IconChangeTable[SC_FOOD_AGI_CASH] = SI_FOOD_AGI_CASH;
- status->dbs->IconChangeTable[SC_FOOD_VIT_CASH] = SI_FOOD_VIT_CASH;
- status->dbs->IconChangeTable[SC_FOOD_DEX_CASH] = SI_FOOD_DEX_CASH;
- status->dbs->IconChangeTable[SC_FOOD_INT_CASH] = SI_FOOD_INT_CASH;
- status->dbs->IconChangeTable[SC_FOOD_LUK_CASH] = SI_FOOD_LUK_CASH;
- status->dbs->IconChangeTable[SC_CASH_PLUSEXP] = SI_CASH_PLUSEXP;
- status->dbs->IconChangeTable[SC_CASH_RECEIVEITEM] = SI_CASH_RECEIVEITEM;
- status->dbs->IconChangeTable[SC_CASH_PLUSONLYJOBEXP] = SI_CASH_PLUSONLYJOBEXP;
- status->dbs->IconChangeTable[SC_CASH_DEATHPENALTY] = SI_CASH_DEATHPENALTY;
- status->dbs->IconChangeTable[SC_CASH_BOSS_ALARM] = SI_CASH_BOSS_ALARM;
- status->dbs->IconChangeTable[SC_PROTECT_DEF] = SI_PROTECT_DEF;
- status->dbs->IconChangeTable[SC_PROTECT_MDEF] = SI_PROTECT_MDEF;
- status->dbs->IconChangeTable[SC_CRITICALPERCENT] = SI_CRITICALPERCENT;
- status->dbs->IconChangeTable[SC_PLUSAVOIDVALUE] = SI_PLUSAVOIDVALUE;
- status->dbs->IconChangeTable[SC_HEALPLUS] = SI_HEALPLUS;
- status->dbs->IconChangeTable[SC_S_LIFEPOTION] = SI_S_LIFEPOTION;
- status->dbs->IconChangeTable[SC_L_LIFEPOTION] = SI_L_LIFEPOTION;
- status->dbs->IconChangeTable[SC_ATKER_BLOOD] = SI_ATKER_BLOOD;
- status->dbs->IconChangeTable[SC_TARGET_BLOOD] = SI_TARGET_BLOOD;
- status->dbs->IconChangeTable[SC_ACARAJE] = SI_ACARAJE;
- status->dbs->IconChangeTable[SC_TARGET_ASPD] = SI_TARGET_ASPD;
- status->dbs->IconChangeTable[SC_ATKER_ASPD] = SI_ATKER_ASPD;
- status->dbs->IconChangeTable[SC_ATKER_MOVESPEED] = SI_ATKER_MOVESPEED;
- status->dbs->IconChangeTable[SC_CUP_OF_BOZA] = SI_CUP_OF_BOZA;
- status->dbs->IconChangeTable[SC_OVERLAPEXPUP] = SI_OVERLAPEXPUP;
- status->dbs->IconChangeTable[SC_GM_BATTLE] = SI_GM_BATTLE;
- status->dbs->IconChangeTable[SC_GM_BATTLE2] = SI_GM_BATTLE2;
- status->dbs->IconChangeTable[SC_2011RWC] = SI_2011RWC;
- status->dbs->IconChangeTable[SC_STR_SCROLL] = SI_STR_SCROLL;
- status->dbs->IconChangeTable[SC_INT_SCROLL] = SI_INT_SCROLL;
- status->dbs->IconChangeTable[SC_STEAMPACK] = SI_STEAMPACK;
- status->dbs->IconChangeTable[SC_MAGIC_CANDY] = SI_MAGIC_CANDY;
- status->dbs->IconChangeTable[SC_M_LIFEPOTION] = SI_M_LIFEPOTION;
- status->dbs->IconChangeTable[SC_G_LIFEPOTION] = SI_G_LIFEPOTION;
- status->dbs->IconChangeTable[SC_MYSTICPOWDER] = SI_MYSTICPOWDER;
-
- // Eden Crystal Synthesis
- status->dbs->IconChangeTable[SC_QUEST_BUFF1] = SI_QUEST_BUFF1;
- status->dbs->IconChangeTable[SC_QUEST_BUFF2] = SI_QUEST_BUFF2;
- status->dbs->IconChangeTable[SC_QUEST_BUFF3] = SI_QUEST_BUFF3;
-
- // Geffen Magic Tournament
- status->dbs->IconChangeTable[SC_GEFFEN_MAGIC1] = SI_GEFFEN_MAGIC1;
- status->dbs->IconChangeTable[SC_GEFFEN_MAGIC2] = SI_GEFFEN_MAGIC2;
- status->dbs->IconChangeTable[SC_GEFFEN_MAGIC3] = SI_GEFFEN_MAGIC3;
- status->dbs->IconChangeTable[SC_FENRIR_CARD] = SI_FENRIR_CARD;
-
- // MVP Scrolls
- status->dbs->IconChangeTable[SC_MVPCARD_TAOGUNKA] = SI_MVPCARD_TAOGUNKA;
- status->dbs->IconChangeTable[SC_MVPCARD_MISTRESS] = SI_MVPCARD_MISTRESS;
- status->dbs->IconChangeTable[SC_MVPCARD_ORCHERO] = SI_MVPCARD_ORCHERO;
- status->dbs->IconChangeTable[SC_MVPCARD_ORCLORD] = SI_MVPCARD_ORCLORD;
-
- // Mercenary Bonus Effects
- status->dbs->IconChangeTable[SC_MER_FLEE] = SI_MER_FLEE;
- status->dbs->IconChangeTable[SC_MER_ATK] = SI_MER_ATK;
- status->dbs->IconChangeTable[SC_MER_HP] = SI_MER_HP;
- status->dbs->IconChangeTable[SC_MER_SP] = SI_MER_SP;
- status->dbs->IconChangeTable[SC_MER_HIT] = SI_MER_HIT;
-
- // Warlock Spheres
- status->dbs->IconChangeTable[SC_SUMMON1] = SI_SPHERE_1;
- status->dbs->IconChangeTable[SC_SUMMON2] = SI_SPHERE_2;
- status->dbs->IconChangeTable[SC_SUMMON3] = SI_SPHERE_3;
- status->dbs->IconChangeTable[SC_SUMMON4] = SI_SPHERE_4;
- status->dbs->IconChangeTable[SC_SUMMON5] = SI_SPHERE_5;
-
- // Warlock Preserved spells
- status->dbs->IconChangeTable[SC_SPELLBOOK1] = SI_SPELLBOOK1;
- status->dbs->IconChangeTable[SC_SPELLBOOK2] = SI_SPELLBOOK2;
- status->dbs->IconChangeTable[SC_SPELLBOOK3] = SI_SPELLBOOK3;
- status->dbs->IconChangeTable[SC_SPELLBOOK4] = SI_SPELLBOOK4;
- status->dbs->IconChangeTable[SC_SPELLBOOK5] = SI_SPELLBOOK5;
- status->dbs->IconChangeTable[SC_SPELLBOOK6] = SI_SPELLBOOK6;
- status->dbs->IconChangeTable[SC_SPELLBOOK7] = SI_SPELLBOOK7;
-
- // Mechanic status icon
- status->dbs->IconChangeTable[SC_NEUTRALBARRIER_MASTER] = SI_NEUTRALBARRIER_MASTER;
- status->dbs->IconChangeTable[SC_STEALTHFIELD_MASTER] = SI_STEALTHFIELD_MASTER;
- status->dbs->IconChangeTable[SC_OVERHEAT] = SI_OVERHEAT;
- status->dbs->IconChangeTable[SC_OVERHEAT_LIMITPOINT] = SI_OVERHEAT_LIMITPOINT;
-
- // Guillotine Cross status icons
- status->dbs->IconChangeTable[SC_HALLUCINATIONWALK_POSTDELAY] = SI_HALLUCINATIONWALK_POSTDELAY;
- status->dbs->IconChangeTable[SC_TOXIN] = SI_TOXIN;
- status->dbs->IconChangeTable[SC_PARALYSE] = SI_PARALYSE;
- status->dbs->IconChangeTable[SC_VENOMBLEED] = SI_VENOMBLEED;
- status->dbs->IconChangeTable[SC_MAGICMUSHROOM] = SI_MAGICMUSHROOM;
- status->dbs->IconChangeTable[SC_DEATHHURT] = SI_DEATHHURT;
- status->dbs->IconChangeTable[SC_PYREXIA] = SI_PYREXIA;
- status->dbs->IconChangeTable[SC_OBLIVIONCURSE] = SI_OBLIVIONCURSE;
- status->dbs->IconChangeTable[SC_LEECHESEND] = SI_LEECHESEND;
-
- // Royal Guard status icons
- status->dbs->IconChangeTable[SC_SHIELDSPELL_DEF] = SI_SHIELDSPELL_DEF;
- status->dbs->IconChangeTable[SC_SHIELDSPELL_MDEF] = SI_SHIELDSPELL_MDEF;
- status->dbs->IconChangeTable[SC_SHIELDSPELL_REF] = SI_SHIELDSPELL_REF;
- status->dbs->IconChangeTable[SC_BANDING_DEFENCE] = SI_BANDING_DEFENCE;
-
- // Sura status icon
- status->dbs->IconChangeTable[SC_CURSEDCIRCLE_ATKER] = SI_CURSEDCIRCLE_ATKER;
-
- // Genetics Food items / Throwable items status icons
- status->dbs->IconChangeTable[SC_SAVAGE_STEAK] = SI_SAVAGE_STEAK;
- status->dbs->IconChangeTable[SC_COCKTAIL_WARG_BLOOD] = SI_COCKTAIL_WARG_BLOOD;
- status->dbs->IconChangeTable[SC_MINOR_BBQ] = SI_MINOR_BBQ;
- status->dbs->IconChangeTable[SC_SIROMA_ICE_TEA] = SI_SIROMA_ICE_TEA;
- status->dbs->IconChangeTable[SC_DROCERA_HERB_STEAMED] = SI_DROCERA_HERB_STEAMED;
- status->dbs->IconChangeTable[SC_PUTTI_TAILS_NOODLES] = SI_PUTTI_TAILS_NOODLES;
- status->dbs->IconChangeTable[SC_BOOST500] |= SI_BOOST500;
- status->dbs->IconChangeTable[SC_FULL_SWING_K] |= SI_FULL_SWING_K;
- status->dbs->IconChangeTable[SC_MANA_PLUS] |= SI_MANA_PLUS;
- status->dbs->IconChangeTable[SC_MUSTLE_M] |= SI_MUSTLE_M;
- status->dbs->IconChangeTable[SC_LIFE_FORCE_F] |= SI_LIFE_FORCE_F;
- status->dbs->IconChangeTable[SC_EXTRACT_WHITE_POTION_Z] |= SI_EXTRACT_WHITE_POTION_Z;
- status->dbs->IconChangeTable[SC_VITATA_500] |= SI_VITATA_500;
- status->dbs->IconChangeTable[SC_EXTRACT_SALAMINE_JUICE] |= SI_EXTRACT_SALAMINE_JUICE;
- status->dbs->IconChangeTable[SC_STOMACHACHE] = SI_STOMACHACHE;
- status->dbs->IconChangeTable[SC_MYSTERIOUS_POWDER] = SI_MYSTERIOUS_POWDER;
- status->dbs->IconChangeTable[SC_MELON_BOMB] = SI_MELON_BOMB;
- status->dbs->IconChangeTable[SC_BANANA_BOMB] = SI_BANANA_BOMB;
- status->dbs->IconChangeTable[SC_BANANA_BOMB_SITDOWN_POSTDELAY] = SI_BANANA_BOMB_SITDOWN_POSTDELAY;
- status->dbs->IconChangeTable[SC_PROMOTE_HEALTH_RESERCH] = SI_PROMOTE_HEALTH_RESERCH;
- status->dbs->IconChangeTable[SC_ENERGY_DRINK_RESERCH] = SI_ENERGY_DRINK_RESERCH;
-
- // Elemental Spirit's 'side' status change icons.
- status->dbs->IconChangeTable[SC_CIRCLE_OF_FIRE] = SI_CIRCLE_OF_FIRE;
- status->dbs->IconChangeTable[SC_FIRE_CLOAK] = SI_FIRE_CLOAK;
- status->dbs->IconChangeTable[SC_WATER_SCREEN] = SI_WATER_SCREEN;
- status->dbs->IconChangeTable[SC_WATER_DROP] = SI_WATER_DROP;
- status->dbs->IconChangeTable[SC_WIND_STEP] = SI_WIND_STEP;
- status->dbs->IconChangeTable[SC_WIND_CURTAIN] = SI_WIND_CURTAIN;
- status->dbs->IconChangeTable[SC_SOLID_SKIN] = SI_SOLID_SKIN;
- status->dbs->IconChangeTable[SC_STONE_SHIELD] = SI_STONE_SHIELD;
- status->dbs->IconChangeTable[SC_PYROTECHNIC] = SI_PYROTECHNIC;
- status->dbs->IconChangeTable[SC_HEATER] = SI_HEATER;
- status->dbs->IconChangeTable[SC_TROPIC] = SI_TROPIC;
- status->dbs->IconChangeTable[SC_AQUAPLAY] = SI_AQUAPLAY;
- status->dbs->IconChangeTable[SC_COOLER] = SI_COOLER;
- status->dbs->IconChangeTable[SC_CHILLY_AIR] = SI_CHILLY_AIR;
- status->dbs->IconChangeTable[SC_GUST] = SI_GUST;
- status->dbs->IconChangeTable[SC_BLAST] = SI_BLAST;
- status->dbs->IconChangeTable[SC_WILD_STORM] = SI_WILD_STORM;
- status->dbs->IconChangeTable[SC_PETROLOGY] = SI_PETROLOGY;
- status->dbs->IconChangeTable[SC_CURSED_SOIL] = SI_CURSED_SOIL;
- status->dbs->IconChangeTable[SC_UPHEAVAL] = SI_UPHEAVAL;
- status->dbs->IconChangeTable[SC_PUSH_CART] = SI_ON_PUSH_CART;
- status->dbs->IconChangeTable[SC_REBOUND] = SI_REBOUND;
- status->dbs->IconChangeTable[SC_ALL_RIDING] = SI_ALL_RIDING;
- status->dbs->IconChangeTable[SC_MONSTER_TRANSFORM] = SI_MONSTER_TRANSFORM;
-
- // Costumes
- status->dbs->IconChangeTable[SC_DRESS_UP] = SI_DRESS_UP;
- status->dbs->IconChangeTable[SC_MOONSTAR] = SI_MOONSTAR;
- status->dbs->IconChangeTable[SC_SUPER_STAR] = SI_SUPER_STAR;
- status->dbs->IconChangeTable[SC_STRANGELIGHTS] = SI_STRANGELIGHTS;
- status->dbs->IconChangeTable[SC_DECORATION_OF_MUSIC] = SI_DECORATION_OF_MUSIC;
- status->dbs->IconChangeTable[SC_LJOSALFAR] = SI_LJOSALFAR;
- status->dbs->IconChangeTable[SC_MERMAID_LONGING] = SI_MERMAID_LONGING;
- status->dbs->IconChangeTable[SC_HAT_EFFECT] = SI_HAT_EFFECT;
- status->dbs->IconChangeTable[SC_FLOWERSMOKE] = SI_FLOWERSMOKE;
- status->dbs->IconChangeTable[SC_FSTONE] = SI_FSTONE;
- status->dbs->IconChangeTable[SC_HAPPINESS_STAR] = SI_HAPPINESS_STAR;
- status->dbs->IconChangeTable[SC_MAPLE_FALLS] = SI_MAPLE_FALLS;
- status->dbs->IconChangeTable[SC_TIME_ACCESSORY] = SI_TIME_ACCESSORY;
- status->dbs->IconChangeTable[SC_MAGICAL_FEATHER] = SI_MAGICAL_FEATHER;
- status->dbs->IconChangeTable[SC_BLOSSOM_FLUTTERING] = SI_BLOSSOM_FLUTTERING;
-
- // Summoner
- status->dbs->IconChangeTable[SC_SPRITEMABLE] = SI_SPRITEMABLE;
-
- // Clan System
- status->dbs->IconChangeTable[SC_CLAN_INFO] = SI_CLAN_INFO;
-
- // RoDEX
- status->dbs->IconChangeTable[SC_DAILYSENDMAILCNT] = SI_DAILYSENDMAILCNT;
-
// Other SC which are not necessarily associated to skills.
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION1] |= SCB_ASPD;
status->dbs->ChangeFlagTable[SC_ATTHASTE_POTION2] |= SCB_ASPD;
@@ -1206,8 +996,6 @@ static void initChangeTables(void)
status->dbs->ChangeFlagTable[SC_MAGICAL_FEATHER] |= SCB_NONE;
status->dbs->ChangeFlagTable[SC_BLOSSOM_FLUTTERING] |= SCB_NONE;
- if( !battle_config.display_hallucination ) //Disable Hallucination.
- status->dbs->IconChangeTable[SC_ILLUSION] = SI_BLANK;
#undef add_sc
#undef set_sc_with_vfx
}
@@ -2483,7 +2271,7 @@ static int status_calc_pc_(struct map_session_data *sd, enum e_status_calc_opt o
memset(ZEROED_BLOCK_POS(&(sd->left_weapon)), 0, ZEROED_BLOCK_SIZE(&(sd->left_weapon)));
if (sd->special_state.intravision && !sd->sc.data[SC_CLAIRVOYANCE]) //Clear intravision as long as nothing else is using it
- clif->sc_end(&sd->bl,sd->bl.id,SELF,SI_CLAIRVOYANCE);
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, status->get_sc_icon(SC_CLAIRVOYANCE));
memset(&sd->special_state,0,sizeof(sd->special_state));
@@ -8178,7 +7966,7 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
//val3 : Brings the skill_lv (merged into val1 here)
//val4 : Partner
if (val1 == CG_MOONLIT)
- clif->status_change(bl,SI_MOON,1,total_tick,0, 0, 0);
+ clif->status_change(bl, status->get_sc_icon(SC_MOON), status->get_sc_relevant_bl_types(SC_MOON), 1, total_tick, 0, 0, 0);
val1|= (val3<<16);
val3 = total_tick/1000; //Tick duration
tick_time = 1000; // [GodLesZ] tick time
@@ -8849,7 +8637,12 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
val2 = 10*val1; //% of life to be revived with
break;
case SC_ARMORPROPERTY:
- clif->status_change(bl, (val1 > 0 ? SI_RESIST_PROPERTY_WATER : (val2 > 0 ? SI_RESIST_PROPERTY_GROUND : (val3 > 0 ? SI_RESIST_PROPERTY_FIRE : (val4 > 0 ? SI_RESIST_PROPERTY_WIND : SI_BLANK)))), 1, total_tick, 0, 0, 0);
+ {
+ int ele = (val1 > 0 ? SC_RESIST_PROPERTY_WATER :
+ (val2 > 0 ? SC_RESIST_PROPERTY_GROUND :
+ (val3 > 0 ? SC_RESIST_PROPERTY_FIRE :
+ (val4 > 0 ? SC_RESIST_PROPERTY_WIND : SI_BLANK))));
+ clif->status_change(bl, status->get_sc_icon(ele), status->get_sc_relevant_bl_types(ele), 1, total_tick, 0, 0, 0);
break;
// case SC_ARMOR_RESIST:
// Mod your resistance against elements:
@@ -8859,7 +8652,7 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
//Place here SCs that have no SCB_* data, no skill associated, no ICON
//associated, and yet are not wrong/unknown. [Skotlex]
//break;
-
+ }
case SC_MER_FLEE:
case SC_MER_ATK:
case SC_MER_HIT:
@@ -9674,7 +9467,7 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
if (!(flag & SCFLAG_LOADED))
tick = total_tick; // When starting a new SC (not loading), its remaining duration is the same as the total
if(!(flag & SCFLAG_NOICON) && !(flag & SCFLAG_LOADED && status->dbs->DisplayType[type]))
- clif->status_change_sub(bl, status->dbs->IconChangeTable[type], 1, tick, total_tick, (val_flag & 1) ? val1 : 1, (val_flag & 2) ? val2 : 0, (val_flag & 4) ? val3 : 0);
+ clif->status_change_sub(bl, status->get_sc_icon(type), status->get_sc_relevant_bl_types(type), 1, tick, total_tick, (val_flag & 1) ? val1 : 1, (val_flag & 2) ? val2 : 0, (val_flag & 4) ? val3 : 0);
/**
* used as temporary storage for scs with interval ticks, so that the actual duration is sent to the client first.
@@ -9807,7 +9600,7 @@ static int status_change_start_sub(struct block_list *src, struct block_list *bl
static bool status_change_start_unknown_sc(struct block_list *src, struct block_list *bl, enum sc_type type, int calc_flag, int rate, int val1, int val2, int val3, int val4, int total_tick, int flag)
{
Assert_retr(false, type >= SC_NONE && type < SC_MAX);
- if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->dbs->IconChangeTable[type] == 0) {
+ if (calc_flag == SCB_NONE && status->dbs->SkillChangeTable[type] == 0 && status->get_sc_icon(type) == SI_BLANK) {
//Status change with no calc, no icon, and no skill associated...?
ShowError("UnknownStatusChange [%d]\n", type);
return true;
@@ -10581,55 +10374,10 @@ static bool status_is_boss_resist_sc(enum sc_type type)
{
if (type >= SC_COMMON_MIN && type <= SC_COMMON_MAX)
return true;
- switch (type) {
- case SC_BLESSING:
- case SC_DEC_AGI:
- case SC_PROVOKE:
- case SC_COMA:
- case SC_GRAVITATION:
- case SC_NJ_SUITON:
- case SC_RICHMANKIM:
- case SC_ROKISWEIL:
- case SC_FOGWALL:
- case SC_FROSTMISTY:
- case SC_BURNING:
- case SC_MARSHOFABYSS:
- case SC_ADORAMUS:
- case SC_NEEDLE_OF_PARALYZE:
- case SC_DEEP_SLEEP:
- case SC_COLD:
-
- // Exploit prevention - kRO Fix
- case SC_PYREXIA:
- case SC_DEATHHURT:
- case SC_TOXIN:
- case SC_PARALYSE:
- case SC_VENOMBLEED:
- case SC_MAGICMUSHROOM:
- case SC_OBLIVIONCURSE:
- case SC_LEECHESEND:
-
- // Ranger Effects
- case SC_WUGBITE:
- case SC_ELECTRICSHOCKER:
- case SC_MAGNETICFIELD:
- // Masquerades
- case SC__ENERVATION:
- case SC__GROOMY:
- case SC__LAZINESS:
- case SC__UNLUCKY:
- case SC__WEAKNESS:
- case SC__IGNORANCE:
+ if (status->get_sc_type(type) & SC_NO_BOSS)
+ return true;
- // Other Effects
- case SC_VACUUM_EXTREME:
- case SC_NETHERWORLD:
- case SC_FRESHSHRIMP:
- case SC_SV_ROOTTWIST:
- case SC_BITESCAR:
- return true;
- }
return false;
}
@@ -10975,7 +10723,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
}
if ((sce->val1&0xFFFF) == CG_MOONLIT)
- clif->sc_end(bl,bl->id,AREA,SI_MOON);
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_MOON));
status_change_end(bl, SC_LONGING, INVALID_TIMER);
}
@@ -11472,7 +11220,7 @@ static int status_change_end_(struct block_list *bl, enum sc_type type, int tid,
#endif
//On Aegis, when turning off a status change, first goes the sc packet, then the option packet.
- clif->sc_end(bl,bl->id,AREA,status->dbs->IconChangeTable[type]);
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(type));
if( opt_flag&8 ) //bugreport:681
clif->changeoption2(bl);
@@ -13447,6 +13195,10 @@ static bool status_read_scdb_libconfig(void)
++count;
}
+ // @TODO: find a better way of handling this
+ if (!battle_config.display_hallucination) //Disable Hallucination.
+ status->dbs->IconChangeTable[SC_ILLUSION].id = SI_BLANK;
+
libconfig->destroy(&status_conf);
ShowStatus("Done reading '"CL_WHITE"%d"CL_RESET"' entries in '"CL_WHITE"%s"CL_RESET"'.\n", count, filepath);
return true;
@@ -13458,19 +13210,24 @@ static bool status_read_scdb_libconfig_sub(struct config_setting_t *it, int idx,
nullpo_retr(false, source);
int i32;
+ int status_id;
const char *name = config_setting_name(it);
- if (!script->get_constant(name, &i32) || i32 <= SC_NONE || i32 >= SC_MAX) {
+ if (!script->get_constant(name, &status_id) || status_id <= SC_NONE || status_id >= SC_MAX) {
ShowWarning("status_read_scdb_libconfig_sub: Invalid status type (%s) in \"%s\" entry #%d, skipping.\n", name, source, idx);
return false;
}
- libconfig->setting_lookup_bool_real(it, "Visible", &status->dbs->DisplayType[i32]);
+ libconfig->setting_lookup_bool_real(it, "Visible", &status->dbs->DisplayType[status_id]);
struct config_setting_t *fg = libconfig->setting_get_member(it, "Flags");
if (fg != NULL)
- status->read_scdb_libconfig_sub_flag(fg, i32, source);
+ status->read_scdb_libconfig_sub_flag(fg, status_id, source);
+ if (itemdb->lookup_const(it, "Icon", &i32) && i32 >= 0)
+ status->dbs->IconChangeTable[status_id].id = i32;
+ else
+ status->dbs->IconChangeTable[status_id].id = SI_BLANK;
return true;
}
@@ -13498,7 +13255,8 @@ static bool status_read_scdb_libconfig_sub_flag(struct config_setting_t *it, int
{ "Buff", SC_BUFF },
{ "Debuff", SC_DEBUFF },
{ "NoMadoReset", SC_MADO_NO_RESET },
- { "NoAllReset", SC_NO_CLEAR }
+ { "NoAllReset", SC_NO_CLEAR },
+ { "NoBoss", SC_NO_BOSS },
};
ARR_FIND(0, ARRAYLENGTH(flags), j, strcmpi(flag, flags[j].name) == 0);
@@ -13624,8 +13382,9 @@ void status_defaults(void)
status->skill2sc = status_skill2sc;
status->sc2skill = status_sc2skill;
status->sc2scb_flag = status_sc2scb_flag;
- status->type2relevant_bl_types = status_type2relevant_bl_types;
+ status->get_sc_relevant_bl_types = status_get_sc_relevant_bl_types;
status->get_sc_type = status_get_sc_type;
+ status->get_sc_icon = status_get_sc_icon;
status->damage = status_damage;
//Define for standard HP/SP skill-related cost triggers (mobs require no HP/SP to use skills)
diff --git a/src/map/status.h b/src/map/status.h
index e2280e409..fe99cfba9 100644
--- a/src/map/status.h
+++ b/src/map/status.h
@@ -61,7 +61,8 @@ typedef enum sc_conf_type {
SC_DEBUFF = 0x020,
SC_MADO_NO_RESET = 0x040,
SC_NO_CLEAR = 0x080,
- SC_VISIBLE = 0x100
+ SC_VISIBLE = 0x100,
+ SC_NO_BOSS = 0x200
} sc_conf_type;
/**
@@ -837,6 +838,21 @@ typedef enum sc_type {
// Clan System
SC_CLAN_INFO,
+
+ SC_SIT,
+ SC_MOON,
+ SC_TING,
+ SC_DEVIL1,
+ SC_RIDING,
+ SC_FALCON,
+ SC_WUGRIDER,
+ SC_POSTDELAY,
+ SC_ON_PUSH_CART,
+ SC_RESIST_PROPERTY_WATER,
+ SC_RESIST_PROPERTY_GROUND,
+ SC_RESIST_PROPERTY_FIRE,
+ SC_RESIST_PROPERTY_WIND,
+ SC_CLIENT_ONLY_EQUIP_ARROW,
#ifndef SC_MAX
SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
#endif
@@ -844,1034 +860,7 @@ typedef enum sc_type {
/// Official status change ids, used to display status icons in the client.
enum si_type {
- SI_BLANK = -1,
-
- SI_PROVOKE = 0,
- SI_ENDURE = 1,
- SI_TWOHANDQUICKEN = 2,
- SI_CONCENTRATION = 3,
- SI_HIDING = 4,
- SI_CLOAKING = 5,
- SI_ENCHANTPOISON = 6,
- SI_POISONREACT = 7,
- SI_QUAGMIRE = 8,
- SI_ANGELUS = 9,
- SI_BLESSING = 10,
- SI_CRUCIS = 11,
- SI_INC_AGI = 12,
- SI_DEC_AGI = 13,
- SI_SLOWPOISON = 14,
- SI_IMPOSITIO = 15,
- SI_SUFFRAGIUM = 16,
- SI_ASPERSIO = 17,
- SI_BENEDICTIO = 18,
- SI_KYRIE = 19,
- SI_MAGNIFICAT = 20,
- SI_GLORIA = 21,
- SI_LEXAETERNA = 22,
- SI_ADRENALINE = 23,
- SI_WEAPONPERFECT = 24,
- SI_OVERTHRUST = 25,
- SI_MAXIMIZE = 26,
- SI_RIDING = 27,
- SI_FALCON = 28,
- SI_TRICKDEAD = 29,
- SI_SHOUT = 30,
- SI_ENERGYCOAT = 31,
- SI_BROKENARMOR = 32,
- SI_BROKENWEAPON = 33,
- SI_ILLUSION = 34,
- SI_WEIGHTOVER50 = 35,
- SI_WEIGHTOVER90 = 36,
- SI_ATTHASTE_POTION1 = 37,
- SI_ATTHASTE_POTION2 = 38,
- SI_ATTHASTE_POTION3 = 39,
- SI_ATTHASTE_INFINITY = 40,
- SI_MOVHASTE_POTION = 41,
- SI_MOVHASTE_INFINITY = 42,
- //SI_AUTOCOUNTER = 43,
- //SI_SPLASHER = 44,
- SI_ANKLESNARE = 45,
- SI_POSTDELAY = 46,
- //SI_NOACTION = 47,
- //SI_IMPOSSIBLEPICKUP = 48,
- //SI_BARRIER = 49,
-
- SI_NOEQUIPWEAPON = 50,
- SI_NOEQUIPSHIELD = 51,
- SI_NOEQUIPARMOR = 52,
- SI_NOEQUIPHELM = 53,
- SI_PROTECTWEAPON = 54,
- SI_PROTECTSHIELD = 55,
- SI_PROTECTARMOR = 56,
- SI_PROTECTHELM = 57,
- SI_AUTOGUARD = 58,
- SI_REFLECTSHIELD = 59,
- //SI_DEVOTION = 60,
- SI_PROVIDENCE = 61,
- SI_DEFENDER = 62,
- //SI_MAGICROD = 63,
- //SI_WEAPONPROPERTY = 64,
- SI_AUTOSPELL = 65,
- //SI_SPECIALZONE = 66,
- //SI_MASK = 67,
- SI_SPEARQUICKEN = 68,
- //SI_BDPLAYING = 69,
- //SI_WHISTLE = 70,
- //SI_ASSASSINCROSS = 71,
- //SI_POEMBRAGI = 72,
- //SI_APPLEIDUN = 73,
- //SI_HUMMING = 74,
- //SI_DONTFORGETME = 75,
- //SI_FORTUNEKISS = 76,
- //SI_SERVICEFORYOU = 77,
- //SI_RICHMANKIM = 78,
- //SI_ETERNALCHAOS = 79,
- //SI_DRUMBATTLEFIELD = 80,
- //SI_RINGNIBELUNGEN = 81,
- //SI_ROKISWEIL = 82,
- //SI_INTOABYSS = 83,
- //SI_SIEGFRIED = 84,
- //SI_BLADESTOP = 85,
- SI_EXPLOSIONSPIRITS = 86,
- SI_STEELBODY = 87,
- SI_EXTREMITYFIST = 88,
- //SI_COMBOATTACK = 89,
- SI_PROPERTYFIRE = 90,
- SI_PROPERTYWATER = 91,
- SI_PROPERTYWIND = 92,
- SI_PROPERTYGROUND = 93,
- //SI_MAGICATTACK = 94,
- SI_STOP = 95,
- //SI_WEAPONBRAKER = 96,
- SI_PROPERTYUNDEAD = 97,
- //SI_POWERUP = 98,
- //SI_AGIUP = 99,
-
- //SI_SIEGEMODE = 100,
- //SI_INVISIBLE = 101,
- //SI_STATUSONE = 102,
- SI_AURABLADE = 103,
- SI_PARRYING = 104,
- SI_LKCONCENTRATION = 105,
- SI_TENSIONRELAX = 106,
- SI_BERSERK = 107,
- //SI_SACRIFICE = 108,
- //SI_GOSPEL = 109,
- SI_ASSUMPTIO = 110,
- //SI_BASILICA = 111,
- SI_GROUNDMAGIC = 112,
- SI_MAGICPOWER = 113,
- SI_EDP = 114,
- SI_TRUESIGHT = 115,
- SI_WINDWALK = 116,
- SI_MELTDOWN = 117,
- SI_CARTBOOST = 118,
- //SI_CHASEWALK = 119,
- SI_SWORDREJECT = 120,
- SI_MARIONETTE_MASTER = 121,
- SI_MARIONETTE = 122,
- SI_MOON = 123,
- SI_BLOODING = 124,
- SI_JOINTBEAT = 125,
- //SI_MINDBREAKER = 126,
- //SI_MEMORIZE = 127,
- //SI_FOGWALL = 128,
- //SI_SPIDERWEB = 129,
- SI_PROTECTEXP = 130,
- //SI_SUB_WEAPONPROPERTY = 131,
- SI_AUTOBERSERK = 132,
- SI_RUN = 133,
- SI_TING = 134,
- SI_STORMKICK_ON = 135,
- SI_STORMKICK_READY = 136,
- SI_DOWNKICK_ON = 137,
- SI_DOWNKICK_READY = 138,
- SI_TURNKICK_ON = 139,
- SI_TURNKICK_READY = 140,
- SI_COUNTER_ON = 141,
- SI_COUNTER_READY = 142,
- SI_DODGE_ON = 143,
- SI_DODGE_READY = 144,
- SI_STRUP = 145,
- SI_PROPERTYDARK = 146,
- SI_ADRENALINE2 = 147,
- SI_PROPERTYTELEKINESIS = 148,
- SI_SOULLINK = 149,
-
- SI_PLUSATTACKPOWER = 150,
- SI_PLUSMAGICPOWER = 151,
- SI_DEVIL1 = 152,
- SI_KAITE = 153,
- //SI_SWOO = 154,
- //SI_STAR2 = 155,
- SI_KAIZEL = 156,
- SI_KAAHI = 157,
- SI_KAUPE = 158,
- SI_SMA_READY = 159,
- SI_SKE = 160,
- SI_ONEHANDQUICKEN = 161,
- //SI_FRIEND = 162,
- //SI_FRIENDUP = 163,
- //SI_SG_WARM = 164,
- SI_SG_SUN_WARM = 165,
- //SI_SG_MOON_WARM = 166, // The three show the exact same display: ultra red character (165, 166, 167)
- //SI_SG_STAR_WARM = 167,
- //SI_EMOTION = 168,
- SI_SUN_COMFORT = 169,
- SI_MOON_COMFORT = 170,
- SI_STAR_COMFORT = 171,
- //SI_EXPUP = 172,
- //SI_GDSKILL_BATTLEORDER = 173,
- //SI_GDSKILL_REGENERATION = 174,
- //SI_GDSKILL_POSTDELAY = 175,
- //SI_RESISTHANDICAP = 176,
- //SI_MAXHPPERCENT = 177,
- //SI_MAXSPPERCENT = 178,
- //SI_DEFENCE = 179,
- //SI_SLOWDOWN = 180,
- SI_PRESERVE = 181,
- SI_INCSTR = 182,
- //SI_NOT_EXTREMITYFIST = 183,
- SI_CLAIRVOYANCE = 184,
- SI_MOVESLOW_POTION = 185,
- SI_DOUBLECASTING = 186,
- //SI_GRAVITATION = 187,
- SI_OVERTHRUSTMAX = 188,
- //SI_LONGING = 189,
- //SI_HERMODE = 190,
- SI_TAROTCARD = 191, // the icon allows no doubt... but what is it really used for ?? [DracoRPG]
- //SI_HLIF_AVOID = 192,
- //SI_HFLI_FLEET = 193,
- //SI_HFLI_SPEED = 194,
- //SI_HLIF_CHANGE = 195,
- //SI_HAMI_BLOODLUST = 196,
- SI_CR_SHRINK = 197,
- SI_WZ_SIGHTBLASTER = 198,
- SI_DC_WINKCHARM = 199,
-
- SI_RG_CCONFINE_M = 200,
- SI_RG_CCONFINE_S = 201,
- //SI_DISABLEMOVE = 202,
- SI_GS_MADNESSCANCEL = 203, //[blackhole89]
- SI_GS_GATLINGFEVER = 204,
- SI_EARTHSCROLL = 205,
- SI_NJ_UTSUSEMI = 206,
- SI_NJ_BUNSINJYUTSU = 207,
- SI_NJ_NEN = 208,
- SI_GS_ADJUSTMENT = 209,
- SI_GS_ACCURACY = 210,
- SI_NJ_SUITON = 211,
- //SI_PET = 212,
- //SI_MENTAL = 213,
- //SI_EXPMEMORY = 214,
- //SI_PERFORMANCE = 215,
- //SI_GAIN = 216,
- //SI_GRIFFON = 217,
- //SI_DRIFT = 218,
- //SI_WALLSHIFT = 219,
- //SI_REINCARNATION = 220,
- //SI_PATTACK = 221,
- //SI_PSPEED = 222,
- //SI_PDEFENSE = 223,
- //SI_PCRITICAL = 224,
- //SI_RANKING = 225,
- //SI_PTRIPLE = 226,
- //SI_DENERGY = 227,
- //SI_WAVE1 = 228,
- //SI_WAVE2 = 229,
- //SI_WAVE3 = 230,
- //SI_WAVE4 = 231,
- //SI_DAURA = 232,
- //SI_DFREEZER = 233,
- //SI_DPUNISH = 234,
- //SI_DBARRIER = 235,
- //SI_DWARNING = 236,
- //SI_MOUSEWHEEL = 237,
- //SI_DGAUGE = 238,
- //SI_DACCEL = 239,
- //SI_DBLOCK = 240,
- SI_FOOD_STR = 241,
- SI_FOOD_AGI = 242,
- SI_FOOD_VIT = 243,
- SI_FOOD_DEX = 244,
- SI_FOOD_INT = 245,
- SI_FOOD_LUK = 246,
- SI_FOOD_BASICAVOIDANCE = 247,
- SI_FOOD_BASICHIT = 248,
- SI_FOOD_CRITICALSUCCESSVALUE = 249,
-
- SI_CASH_PLUSEXP = 250,
- SI_CASH_DEATHPENALTY = 251,
- SI_CASH_RECEIVEITEM = 252,
- SI_CASH_BOSS_ALARM = 253,
- //SI_DA_ENERGY = 254,
- //SI_DA_FIRSTSLOT = 255,
- //SI_DA_HEADDEF = 256,
- //SI_DA_SPACE = 257,
- //SI_DA_TRANSFORM = 258,
- //SI_DA_ITEMREBUILD = 259,
- //SI_DA_ILLUSION = 260, // All mobs display as Turtle General
- //SI_DA_DARKPOWER = 261,
- //SI_DA_EARPLUG = 262,
- //SI_DA_CONTRACT = 263, // Bio Mob effect on you and SI_TRICKDEAD icon
- //SI_DA_BLACK = 264, // For short time blurry screen
- //SI_DA_MAGICCART = 265,
- //SI_CRYSTAL = 266,
- //SI_DA_REBUILD = 267,
- //SI_DA_EDARKNESS = 268,
- //SI_DA_EGUARDIAN = 269,
- //SI_DA_TIMEOUT = 270,
- SI_FOOD_STR_CASH = 271,
- SI_FOOD_AGI_CASH = 272,
- SI_FOOD_VIT_CASH = 273,
- SI_FOOD_DEX_CASH = 274,
- SI_FOOD_INT_CASH = 275,
- SI_FOOD_LUK_CASH = 276,
- SI_MER_FLEE = 277,
- SI_MER_ATK = 278,
- SI_MER_HP = 279,
- SI_MER_SP = 280,
- SI_MER_HIT = 281,
- SI_SLOWCAST = 282,
- //SI_MAGICMIRROR = 283,
- //SI_STONESKIN = 284,
- //SI_ANTIMAGIC = 285,
- SI_CRITICALWOUND = 286,
- //SI_NPC_DEFENDER = 287,
- //SI_NOACTION_WAIT = 288,
- SI_MOVHASTE_HORSE = 289,
- SI_PROTECT_DEF = 290,
- SI_PROTECT_MDEF = 291,
- SI_HEALPLUS = 292,
- SI_S_LIFEPOTION = 293,
- SI_L_LIFEPOTION = 294,
- SI_CRITICALPERCENT = 295,
- SI_PLUSAVOIDVALUE = 296,
- SI_ATKER_ASPD = 297,
- SI_TARGET_ASPD = 298,
- SI_ATKER_MOVESPEED = 299,
-
- SI_ATKER_BLOOD = 300,
- SI_TARGET_BLOOD = 301,
- SI_ARMOR_PROPERTY = 302,
- //SI_REUSE_LIMIT_A = 303,
- SI_HELLPOWER = 304,
- SI_STEAMPACK = 305,
- //SI_REUSE_LIMIT_B = 306,
- //SI_REUSE_LIMIT_C = 307,
- //SI_REUSE_LIMIT_D = 308,
- //SI_REUSE_LIMIT_E = 309,
- //SI_REUSE_LIMIT_F = 310,
- SI_INVINCIBLE = 311,
- SI_CASH_PLUSONLYJOBEXP = 312,
- SI_PARTYFLEE = 313,
- SI_ANGEL_PROTECT = 314,
- //SI_ENDURE_MDEF = 315,
- SI_ENCHANTBLADE = 316,
- SI_DEATHBOUND = 317,
- SI_REFRESH = 318,
- SI_GIANTGROWTH = 319,
- SI_STONEHARDSKIN = 320,
- SI_VITALITYACTIVATION = 321,
- SI_FIGHTINGSPIRIT = 322,
- SI_ABUNDANCE = 323,
- SI_REUSE_MILLENNIUMSHIELD = 324,
- SI_REUSE_CRUSHSTRIKE = 325,
- SI_REUSE_REFRESH = 326,
- SI_REUSE_STORMBLAST = 327,
- SI_VENOMIMPRESS = 328,
- SI_EPICLESIS = 329,
- SI_ORATIO = 330,
- SI_LAUDAAGNUS = 331,
- SI_LAUDARAMUS = 332,
- SI_CLOAKINGEXCEED = 333,
- SI_HALLUCINATIONWALK = 334,
- SI_HALLUCINATIONWALK_POSTDELAY = 335,
- SI_RENOVATIO = 336,
- SI_WEAPONBLOCKING = 337,
- SI_WEAPONBLOCKING_POSTDELAY = 338,
- SI_ROLLINGCUTTER = 339,
- SI_EXPIATIO = 340,
- SI_POISONINGWEAPON = 341,
- SI_TOXIN = 342,
- SI_PARALYSE = 343,
- SI_VENOMBLEED = 344,
- SI_MAGICMUSHROOM = 345,
- SI_DEATHHURT = 346,
- SI_PYREXIA = 347,
- SI_OBLIVIONCURSE = 348,
- SI_LEECHESEND = 349,
-
- SI_DUPLELIGHT = 350,
- SI_FROSTMISTY = 351,
- SI_FEARBREEZE = 352,
- SI_ELECTRICSHOCKER = 353,
- SI_MARSHOFABYSS = 354,
- SI_RECOGNIZEDSPELL = 355,
- SI_STASIS = 356,
- SI_WUGRIDER = 357,
- SI_WUGDASH = 358,
- SI_WUGBITE = 359,
- SI_CAMOUFLAGE = 360,
- SI_ACCELERATION = 361,
- SI_HOVERING = 362,
- SI_SPHERE_1 = 363,
- SI_SPHERE_2 = 364,
- SI_SPHERE_3 = 365,
- SI_SPHERE_4 = 366,
- SI_SPHERE_5 = 367,
- SI_MVPCARD_TAOGUNKA = 368,
- SI_MVPCARD_MISTRESS = 369,
- SI_MVPCARD_ORCHERO = 370,
- SI_MVPCARD_ORCLORD = 371,
- SI_OVERHEAT_LIMITPOINT = 372,
- SI_OVERHEAT = 373,
- SI_SHAPESHIFT = 374,
- SI_INFRAREDSCAN = 375,
- SI_MAGNETICFIELD = 376,
- SI_NEUTRALBARRIER = 377,
- SI_NEUTRALBARRIER_MASTER = 378,
- SI_STEALTHFIELD = 379,
- SI_STEALTHFIELD_MASTER = 380,
- SI_MANU_ATK = 381,
- SI_MANU_DEF = 382,
- SI_SPL_ATK = 383,
- SI_SPL_DEF = 384,
- SI_REPRODUCE = 385,
- SI_MANU_MATK = 386,
- SI_SPL_MATK = 387,
- SI_STR_SCROLL = 388,
- SI_INT_SCROLL = 389,
- SI_LG_REFLECTDAMAGE = 390,
- SI_FORCEOFVANGUARD = 391,
- SI_BUCHEDENOEL = 392,
- SI_AUTOSHADOWSPELL = 393,
- SI_SHADOWFORM = 394,
- SI_RAID = 395,
- SI_SHIELDSPELL_DEF = 396,
- SI_SHIELDSPELL_MDEF = 397,
- SI_SHIELDSPELL_REF = 398,
- SI_BODYPAINT = 399,
-
- SI_EXEEDBREAK = 400,
- SI_ADORAMUS = 401,
- SI_PRESTIGE = 402,
- SI_INVISIBILITY = 403,
- SI_DEADLYINFECT = 404,
- SI_BANDING = 405,
- SI_EARTHDRIVE = 406,
- SI_INSPIRATION = 407,
- SI_ENERVATION = 408,
- SI_GROOMY = 409,
- SI_RAISINGDRAGON = 410,
- SI_IGNORANCE = 411,
- SI_LAZINESS = 412,
- SI_LIGHTNINGWALK = 413,
- SI_ACARAJE = 414,
- SI_UNLUCKY = 415,
- SI_CURSEDCIRCLE_ATKER = 416,
- SI_CURSEDCIRCLE_TARGET = 417,
- SI_WEAKNESS = 418,
- SI_CRESCENTELBOW = 419,
- SI_NOEQUIPACCESSARY = 420,
- SI_STRIPACCESSARY = 421,
- SI_MANHOLE = 422,
- SI_POPECOOKIE = 423,
- SI_FALLENEMPIRE = 424,
- SI_GENTLETOUCH_ENERGYGAIN = 425,
- SI_GENTLETOUCH_CHANGE = 426,
- SI_GENTLETOUCH_REVITALIZE = 427,
- SI_BLOODYLUST = 428,
- SI_SWINGDANCE = 429,
- SI_SYMPHONYOFLOVERS = 430,
- SI_PROPERTYWALK = 431,
- SI_SPELLFIST = 432,
- SI_NETHERWORLD = 433,
- SI_SIREN = 434,
- SI_DEEPSLEEP = 435,
- SI_SIRCLEOFNATURE = 436,
- SI_COLD = 437,
- SI_GLOOMYDAY = 438,
- SI_SONG_OF_MANA = 439,
- SI_CLOUDKILL = 440,
- SI_DANCEWITHWUG = 441,
- SI_RUSHWINDMILL = 442,
- SI_ECHOSONG = 443,
- SI_HARMONIZE = 444,
- SI_STRIKING = 445,
- //SI_WARMER = 446,
- SI_MOONLITSERENADE = 447,
- SI_SATURDAYNIGHTFEVER = 448,
- SI_SITDOWN_FORCE = 449,
-
- SI_ANALYZE = 450,
- SI_LERADSDEW = 451,
- SI_MELODYOFSINK = 452,
- SI_WARCRYOFBEYOND = 453,
- SI_UNLIMITEDHUMMINGVOICE = 454,
- SI_SPELLBOOK1 = 455,
- SI_SPELLBOOK2 = 456,
- SI_SPELLBOOK3 = 457,
- SI_FREEZE_SP = 458,
- SI_GN_TRAINING_SWORD = 459,
- SI_GN_REMODELING_CART = 460,
- SI_CARTSBOOST = 461,
- SI_FIXEDCASTINGTM_REDUCE = 462,
- SI_THORNTRAP = 463,
- SI_BLOODSUCKER = 464,
- SI_SPORE_EXPLOSION = 465,
- SI_DEMONIC_FIRE = 466,
- SI_FIRE_EXPANSION_SMOKE_POWDER = 467,
- SI_FIRE_EXPANSION_TEAR_GAS = 468,
- SI_BLOCKING_PLAY = 469,
- SI_MANDRAGORA = 470,
- SI_ACTIVATE = 471,
- SI_SECRAMENT = 472,
- SI_ASSUMPTIO2 = 473,
- SI_TK_SEVENWIND = 474,
- SI_LIMIT_ODINS_RECALL = 475,
- SI_STOMACHACHE = 476,
- SI_MYSTERIOUS_POWDER = 477,
- SI_MELON_BOMB = 478,
- SI_BANANA_BOMB_SITDOWN_POSTDELAY = 479,
- SI_PROMOTE_HEALTH_RESERCH = 480,
- SI_ENERGY_DRINK_RESERCH = 481,
- SI_EXTRACT_WHITE_POTION_Z = 482,
- SI_VITATA_500 = 483,
- SI_EXTRACT_SALAMINE_JUICE = 484,
- SI_BOOST500 = 485,
- SI_FULL_SWING_K = 486,
- SI_MANA_PLUS = 487,
- SI_MUSTLE_M = 488,
- SI_LIFE_FORCE_F = 489,
- SI_VACUUM_EXTREME = 490,
- SI_SAVAGE_STEAK = 491,
- SI_COCKTAIL_WARG_BLOOD = 492,
- SI_MINOR_BBQ = 493,
- SI_SIROMA_ICE_TEA = 494,
- SI_DROCERA_HERB_STEAMED = 495,
- SI_PUTTI_TAILS_NOODLES = 496,
- SI_BANANA_BOMB = 497,
- SI_SUMMON_AGNI = 498,
- SI_SPELLBOOK4 = 499,
-
- SI_SPELLBOOK5 = 500,
- SI_SPELLBOOK6 = 501,
- SI_SPELLBOOK7 = 502,
- SI_ELEMENTAL_AGGRESSIVE = 503,
- SI_RETURN_TO_ELDICASTES = 504,
- SI_BANDING_DEFENCE = 505,
- SI_SKELSCROLL = 506,
- SI_DISTRUCTIONSCROLL = 507,
- SI_ROYALSCROLL = 508,
- SI_IMMUNITYSCROLL = 509,
- SI_MYSTICSCROLL = 510,
- SI_BATTLESCROLL = 511,
- SI_ARMORSCROLL = 512,
- SI_FREYJASCROLL = 513,
- SI_SOULSCROLL = 514,
- SI_CIRCLE_OF_FIRE = 515,
- SI_CIRCLE_OF_FIRE_OPTION = 516,
- SI_FIRE_CLOAK = 517,
- SI_FIRE_CLOAK_OPTION = 518,
- SI_WATER_SCREEN = 519,
- SI_WATER_SCREEN_OPTION = 520,
- SI_WATER_DROP = 521,
- SI_WATER_DROP_OPTION = 522,
- SI_WIND_STEP = 523,
- SI_WIND_STEP_OPTION = 524,
- SI_WIND_CURTAIN = 525,
- SI_WIND_CURTAIN_OPTION = 526,
- SI_WATER_BARRIER = 527,
- SI_ZEPHYR = 528,
- SI_SOLID_SKIN = 529,
- SI_SOLID_SKIN_OPTION = 530,
- SI_STONE_SHIELD = 531,
- SI_STONE_SHIELD_OPTION = 532,
- SI_POWER_OF_GAIA = 533,
- //SI_EL_WAIT = 534,
- //SI_EL_PASSIVE = 535,
- //SI_EL_DEFENSIVE = 536,
- //SI_EL_OFFENSIVE = 537,
- //SI_EL_COST = 538,
- SI_PYROTECHNIC = 539,
- SI_PYROTECHNIC_OPTION = 540,
- SI_HEATER = 541,
- SI_HEATER_OPTION = 542,
- SI_TROPIC = 543,
- SI_TROPIC_OPTION = 544,
- SI_AQUAPLAY = 545,
- SI_AQUAPLAY_OPTION = 546,
- SI_COOLER = 547,
- SI_COOLER_OPTION = 548,
- SI_CHILLY_AIR = 549,
-
- SI_CHILLY_AIR_OPTION = 550,
- SI_GUST = 551,
- SI_GUST_OPTION = 552,
- SI_BLAST = 553,
- SI_BLAST_OPTION = 554,
- SI_WILD_STORM = 555,
- SI_WILD_STORM_OPTION = 556,
- SI_PETROLOGY = 557,
- SI_PETROLOGY_OPTION = 558,
- SI_CURSED_SOIL = 559,
- SI_CURSED_SOIL_OPTION = 560,
- SI_UPHEAVAL = 561,
- SI_UPHEAVAL_OPTION = 562,
- SI_TIDAL_WEAPON = 563,
- SI_TIDAL_WEAPON_OPTION = 564,
- SI_ROCK_CRUSHER = 565,
- SI_ROCK_CRUSHER_ATK = 566,
- SI_FIRE_INSIGNIA = 567,
- SI_WATER_INSIGNIA = 568,
- SI_WIND_INSIGNIA = 569,
- SI_EARTH_INSIGNIA = 570,
- SI_EQUIPED_FLOOR = 571,
- SI_GUARDIAN_RECALL = 572,
- SI_MORA_BUFF = 573,
- SI_REUSE_LIMIT_G = 574,
- SI_REUSE_LIMIT_H = 575,
- SI_NEEDLE_OF_PARALYZE = 576,
- SI_PAIN_KILLER = 577,
- SI_G_LIFEPOTION = 578,
- SI_VITALIZE_POTION = 579,
- SI_LIGHT_OF_REGENE = 580,
- SI_OVERED_BOOST = 581,
- SI_SILENT_BREEZE = 582,
- SI_ODINS_POWER = 583,
- SI_STYLE_CHANGE = 584,
- SI_SONIC_CLAW_POSTDELAY = 585,
- //SI_ = 586,
- //SI_ = 587,
- //SI_ = 588,
- //SI_ = 589,
- //SI_ = 590,
- //SI_ = 591,
- //SI_ = 592,
- //SI_ = 593,
- //SI_ = 594,
- //SI_ = 595,
- SI_SILVERVEIN_RUSH_POSTDELAY = 596,
- SI_MIDNIGHT_FRENZY_POSTDELAY = 597,
- SI_GOLDENE_FERSE = 598,
- SI_ANGRIFFS_MODUS = 599,
-
- SI_TINDER_BREAKER = 600,
- SI_TINDER_BREAKER_POSTDELAY = 601,
- SI_CBC = 602,
- SI_CBC_POSTDELAY = 603,
- SI_EQC = 604,
- SI_MAGMA_FLOW = 605,
- SI_GRANITIC_ARMOR = 606,
- SI_PYROCLASTIC = 607,
- SI_VOLCANIC_ASH = 608,
- SI_SPIRITS_SAVEINFO1 = 609,
- SI_SPIRITS_SAVEINFO2 = 610,
- SI_MAGIC_CANDY = 611,
- SI_SEARCH_STORE_INFO = 612,
- SI_ALL_RIDING = 613,
- SI_ALL_RIDING_REUSE_LIMIT = 614,
- SI_MACRO = 615,
- SI_MACRO_POSTDELAY = 616,
- SI_BEER_BOTTLE_CAP = 617,
- SI_OVERLAPEXPUP = 618,
- SI_PC_IZ_DUN05 = 619,
- SI_CRUSHSTRIKE = 620,
- SI_MONSTER_TRANSFORM = 621,
- SI_SIT = 622,
- SI_ONAIR = 623,
- SI_MTF_ASPD = 624,
- SI_MTF_RANGEATK = 625,
- SI_MTF_MATK = 626,
- SI_MTF_MLEATKED = 627,
- SI_MTF_CRIDAMAGE = 628,
- SI_REUSE_LIMIT_MTF = 629,
- SI_MACRO_PERMIT = 630,
- SI_MACRO_PLAY = 631,
- SI_SKF_CAST = 632,
- SI_SKF_ASPD = 633,
- SI_SKF_ATK = 634,
- SI_SKF_MATK = 635,
- SI_REWARD_PLUSONLYJOBEXP = 636,
- SI_HANDICAPSTATE_NORECOVER = 637,
- SI_SET_NUM_DEF = 638,
- SI_SET_NUM_MDEF = 639,
- SI_SET_PER_DEF = 640,
- SI_SET_PER_MDEF = 641,
- SI_PARTYBOOKING_SEARCH_DEALY = 642,
- SI_PARTYBOOKING_REGISTER_DEALY = 643,
- SI_PERIOD_TIME_CHECK_DETECT_SKILL = 644,
- SI_KO_JYUMONJIKIRI = 645,
- SI_MEIKYOUSISUI = 646,
- SI_ATTHASTE_CASH = 647,
- SI_EQUIPPED_DIVINE_ARMOR = 648,
- SI_EQUIPPED_HOLY_ARMOR = 649,
-
- SI_2011RWC = 650,
- SI_KYOUGAKU = 651,
- SI_IZAYOI = 652,
- SI_ZENKAI = 653,
- SI_KG_KAGEHUMI = 654,
- SI_KYOMU = 655,
- SI_KAGEMUSYA = 656,
- SI_ZANGETSU = 657,
- SI_PHI_DEMON = 658,
- SI_GENSOU = 659,
- SI_AKAITSUKI = 660,
- SI_TETANY = 661,
- SI_GM_BATTLE = 662,
- SI_GM_BATTLE2 = 663,
- SI_2011RWC_SCROLL = 664,
- SI_ACTIVE_MONSTER_TRANSFORM = 665,
- SI_MYSTICPOWDER = 666,
- SI_ECLAGE_RECALL = 667,
- SI_ENTRY_QUEUE_APPLY_DELAY = 668,
- SI_REUSE_LIMIT_ECL = 669,
- SI_M_LIFEPOTION = 670,
- SI_ENTRY_QUEUE_NOTIFY_ADMISSION_TIME_OUT = 671,
- SI_UNKNOWN_NAME = 672,
- SI_ON_PUSH_CART = 673,
- SI_HAT_EFFECT = 674,
- SI_FLOWER_LEAF = 675,
- SI_RAY_OF_PROTECTION = 676,
- SI_GLASTHEIM_ATK = 677,
- SI_GLASTHEIM_DEF = 678,
- SI_GLASTHEIM_HEAL = 679,
- SI_GLASTHEIM_HIDDEN = 680,
- SI_GLASTHEIM_STATE = 681,
- SI_GLASTHEIM_ITEMDEF = 682,
- SI_GLASTHEIM_HPSP = 683,
- SI_HOMUN_SKILL_POSTDELAY = 684,
- SI_ALMIGHTY = 685,
- SI_GVG_GIANT = 686,
- SI_GVG_GOLEM = 687,
- SI_GVG_STUN = 688,
- SI_GVG_STONE = 689,
- SI_GVG_FREEZ = 690,
- SI_GVG_SLEEP = 691,
- SI_GVG_CURSE = 692,
- SI_GVG_SILENCE = 693,
- SI_GVG_BLIND = 694,
- SI_CLIENT_ONLY_EQUIP_ARROW = 695,
- SI_CLAN_INFO = 696,
- SI_JP_EVENT01 = 697,
- SI_JP_EVENT02 = 698,
- SI_JP_EVENT03 = 699,
-
- SI_JP_EVENT04 = 700,
- SI_TELEPORT_FIXEDCASTINGDELAY = 701,
- SI_GEFFEN_MAGIC1 = 702,
- SI_GEFFEN_MAGIC2 = 703,
- SI_GEFFEN_MAGIC3 = 704,
- SI_QUEST_BUFF1 = 705,
- SI_QUEST_BUFF2 = 706,
- SI_QUEST_BUFF3 = 707,
- SI_REUSE_LIMIT_RECALL = 708,
- SI_SAVEPOSITION = 709,
- SI_HANDICAPSTATE_ICEEXPLO = 710,
- SI_FENRIR_CARD = 711,
- SI_REUSE_LIMIT_ASPD_POTION = 712,
- SI_MAXPAIN = 713,
- SI_PC_STOP = 714,
- SI_FRIGG_SONG = 715,
- SI_OFFERTORIUM = 716,
- SI_TELEKINESIS_INTENSE = 717,
- SI_MOONSTAR = 718,
- SI_STRANGELIGHTS = 719,
- SI_FULL_THROTTLE = 720,
- SI_REBOUND = 721,
- SI_UNLIMIT = 722,
- SI_KINGS_GRACE = 723,
- SI_ITEM_ATKMAX = 724,
- SI_ITEM_ATKMIN = 725,
- SI_ITEM_MATKMAX = 726,
- SI_ITEM_MATKMIN = 727,
- SI_SUPER_STAR = 728,
- SI_HIGH_RANKER = 729,
- SI_DARKCROW = 730,
- SI_2013_VALENTINE1 = 731,
- SI_2013_VALENTINE2 = 732,
- SI_2013_VALENTINE3 = 733,
- SI_ILLUSIONDOPING = 734,
- //SI_WIDEWEB = 735,
- SI_CHILL = 736,
- SI_BURNT = 737,
- //SI_PCCAFE_PLAY_TIME = 738,
- //SI_TWISTED_TIME = 739,
- SI_FLASHCOMBO = 740,
- //SI_JITTER_BUFF1 = 741,
- //SI_JITTER_BUFF2 = 742,
- //SI_JITTER_BUFF3 = 743,
- //SI_JITTER_BUFF4 = 744,
- //SI_JITTER_BUFF5 = 745,
- //SI_JITTER_BUFF6 = 746,
- //SI_JITTER_BUFF7 = 747,
- //SI_JITTER_BUFF8 = 748,
- //SI_JITTER_BUFF9 = 749,
-
- //SI_JITTER_BUFF10 = 750,
- SI_CUP_OF_BOZA = 751,
- SI_B_TRAP = 752,
- SI_E_CHAIN = 753,
- SI_E_QD_SHOT_READY = 754,
- SI_C_MARKER = 755,
- SI_H_MINE = 756,
- SI_H_MINE_SPLASH = 757,
- SI_P_ALTER = 758,
- SI_HEAT_BARREL = 759,
- SI_ANTI_M_BLAST = 760,
- SI_SLUGSHOT = 761,
- SI_SWORDCLAN = 762,
- SI_ARCWANDCLAN = 763,
- SI_GOLDENMACECLAN = 764,
- SI_CROSSBOWCLAN = 765,
- SI_PACKING_ENVELOPE1 = 766,
- SI_PACKING_ENVELOPE2 = 767,
- SI_PACKING_ENVELOPE3 = 768,
- SI_PACKING_ENVELOPE4 = 769,
- SI_PACKING_ENVELOPE5 = 770,
- SI_PACKING_ENVELOPE6 = 771,
- SI_PACKING_ENVELOPE7 = 772,
- SI_PACKING_ENVELOPE8 = 773,
- SI_PACKING_ENVELOPE9 = 774,
- SI_PACKING_ENVELOPE10 = 775,
- SI_GLASTHEIM_TRANS = 776,
- //SI_ZONGZI_POUCH_TRANS = 777,
- SI_HEAT_BARREL_AFTER = 778,
- SI_DECORATION_OF_MUSIC = 779,
- //SI_OVERSEAEXPUP = 780,
- //SI_CLOWN_N_GYPSY_CARD = 781,
- //SI_OPEN_NPC_MARKET = 782,
- //SI_BEEF_RIB_STEW = 783,
- //SI_PORK_RIB_STEW = 784,
- //SI_CHUSEOK_MONDAY = 785,
- //SI_CHUSEOK_TUESDAY = 786,
- //SI_CHUSEOK_WEDNESDAY = 787,
- //SI_CHUSEOK_THURSDAY = 788,
- //SI_CHUSEOK_FRIDAY = 789,
- //SI_CHUSEOK_WEEKEND = 790,
- //SI_ALL_LIGHTGUARD = 791,
- //SI_ALL_LIGHTGUARD_COOL_TIME = 792,
- SI_MTF_MHP = 793,
- SI_MTF_MSP = 794,
- SI_MTF_PUMPKIN = 795,
- SI_MTF_HITFLEE = 796,
- //SI_MTF_CRIDAMAGE2 = 797,
- //SI_MTF_SPDRAIN = 798,
- //SI_ACUO_MINT_GUM = 799,
-
- //SI_S_HEALPOTION = 800,
- //SI_REUSE_LIMIT_S_HEAL_POTION = 801,
- //SI_PLAYTIME_STATISTICS = 802,
- //SI_GN_CHANGEMATERIAL_OPERATOR = 803,
- //SI_GN_MIX_COOKING_OPERATOR = 804,
- //SI_GN_MAKEBOMB_OPERATOR = 805,
- //SI_GN_S_PHARMACY_OPERATOR = 806,
- //SI_SO_EL_ANALYSIS_DISASSEMBLY_OPERATOR = 807,
- //SI_SO_EL_ANALYSIS_COMBINATION_OPERATOR = 808,
- //SI_NC_MAGICDECOY_OPERATOR = 809,
- //SI_GUILD_STORAGE = 810,
- //SI_GC_POISONINGWEAPON_OPERATOR = 811,
- //SI_WS_WEAPONREFINE_OPERATOR = 812,
- //SI_BS_REPAIRWEAPON_OPERATOR = 813,
- //SI_GET_MAILBOX = 814,
- //SI_JUMPINGCLAN = 815,
- //SI_JP_OTP = 816,
- //SI_HANDICAPTOLERANCE_LEVELGAP = 817,
- //SI_MTF_RANGEATK2 = 818,
- //SI_MTF_ASPD2 = 819,
- //SI_MTF_MATK2 = 820,
- //SI_SHOW_NPCHPBAR = 821,
- SI_FLOWERSMOKE = 822,
- SI_FSTONE = 823,
- SI_DAILYSENDMAILCNT = 824,
- //SI_QSCARABA = 825,
- SI_LJOSALFAR = 826,
- //SI_PAD_READER_KNIGHT = 827,
- //SI_PAD_READER_CRUSADER = 828,
- //SI_PAD_READER_BLACKSMITH = 829,
- //SI_PAD_READER_ALCHEMIST = 830,
- //SI_PAD_READER_ASSASSIN = 831,
- //SI_PAD_READER_ROGUE = 832,
- //SI_PAD_READER_WIZARD = 833,
- //SI_PAD_READER_SAGE = 834,
- //SI_PAD_READER_PRIEST = 835,
- //SI_PAD_READER_MONK = 836,
- //SI_PAD_READER_HUNTER = 837,
- //SI_PAD_READER_BARD = 838,
- //SI_PAD_READER_DANCER = 839,
- //SI_PAD_READER_TAEKWON = 840,
- //SI_PAD_READER_NINJA = 841,
- //SI_PAD_READER_GUNSLINGER = 842,
- //SI_PAD_READER_SUPERNOVICE = 843,
- //SI_ESSENCE_OF_TIME = 844,
- //SI_MINIGAME_ROULETTE = 845,
- //SI_MINIGAME_GOLD_POINT = 846,
- //SI_MINIGAME_SILVER_POINT = 847,
- //SI_MINIGAME_BRONZE_POINT = 848,
- SI_HAPPINESS_STAR = 849,
-
- //SI_SUMMEREVENT01 = 850,
- //SI_SUMMEREVENT02 = 851,
- //SI_SUMMEREVENT03 = 852,
- //SI_SUMMEREVENT04 = 853,
- //SI_SUMMEREVENT05 = 854,
- //SI_MINIGAME_ROULETTE_BONUS_ITEM = 855,
- SI_DRESS_UP = 856,
- SI_MAPLE_FALLS = 857,
- //SI_ALL_NIFLHEIM_RECALL = 858,
- //SI_ = 859,
- //SI_MTF_MARIONETTE = 860,
- //SI_MTF_LUDE = 861,
- //SI_MTF_CRUISER = 862,
- SI_MERMAID_LONGING = 863,
- SI_MAGICAL_FEATHER = 864,
- //SI_DRACULA_CARD = 865,
- //SI_ = 866,
- //SI_LIMIT_POWER_BOOSTER = 867,
- //SI_ = 868,
- //SI_ = 869,
- //SI_ = 870,
- //SI_ = 871,
- SI_TIME_ACCESSORY = 872,
- //SI_EP16_DEF = 873,
- //SI_NORMAL_ATKED_SP = 874,
- //SI_BODYSTATE_STONECURSE = 875,
- //SI_BODYSTATE_FREEZING = 876,
- //SI_BODYSTATE_STUN = 877,
- //SI_BODYSTATE_SLEEP = 878,
- //SI_BODYSTATE_UNDEAD = 879,
- //SI_BODYSTATE_STONECURSE_ING = 880,
- //SI_BODYSTATE_BURNNING = 881,
- //SI_BODYSTATE_IMPRISON = 882,
- //SI_HEALTHSTATE_POISON = 883,
- //SI_HEALTHSTATE_CURSE = 884,
- //SI_HEALTHSTATE_SILENCE = 885,
- //SI_HEALTHSTATE_CONFUSION = 886,
- //SI_HEALTHSTATE_BLIND = 887,
- //SI_HEALTHSTATE_ANGELUS = 888,
- //SI_HEALTHSTATE_BLOODING = 889,
- //SI_HEALTHSTATE_HEAVYPOISON = 890,
- //SI_HEALTHSTATE_FEAR = 891,
- //SI_CHERRY_BLOSSOM_CAKE = 892,
- SI_SU_STOOP = 893,
- SI_CATNIPPOWDER = 894,
- SI_BLOSSOM_FLUTTERING = 895,
- SI_SV_ROOTTWIST = 896,
- //SI_ATTACK_PROPERTY_NOTHING = 897,
- //SI_ATTACK_PROPERTY_WATER = 898,
- //SI_ATTACK_PROPERTY_GROUND = 899,
-
- //SI_ATTACK_PROPERTY_FIRE = 900,
- //SI_ATTACK_PROPERTY_WIND = 901,
- //SI_ATTACK_PROPERTY_POISON = 902,
- //SI_ATTACK_PROPERTY_SAINT = 903,
- //SI_ATTACK_PROPERTY_DARKNESS = 904,
- //SI_ATTACK_PROPERTY_TELEKINESIS = 905,
- //SI_ATTACK_PROPERTY_UNDEAD = 906,
- //SI_RESIST_PROPERTY_NOTHING = 907,
- SI_RESIST_PROPERTY_WATER = 908,
- SI_RESIST_PROPERTY_GROUND = 909,
- SI_RESIST_PROPERTY_FIRE = 910,
- SI_RESIST_PROPERTY_WIND = 911,
- //SI_RESIST_PROPERTY_POISON = 912,
- //SI_RESIST_PROPERTY_SAINT = 913,
- //SI_RESIST_PROPERTY_DARKNESS = 914,
- //SI_RESIST_PROPERTY_TELEKINESIS = 915,
- //SI_RESIST_PROPERTY_UNDEAD = 916,
- SI_BITESCAR = 917,
- SI_ARCLOUSEDASH = 918,
- SI_TUNAPARTY = 919,
- SI_SHRIMP = 920,
- SI_FRESHSHRIMP = 921,
- //SI_PERIOD_RECEIVEITEM = 922,
- //SI_PERIOD_PLUSEXP = 923,
- //SI_PERIOD_PLUSJOBEXP = 924,
- //SI_RUNEHELM = 925,
- //SI_HELM_VERKANA = 926,
- //SI_HELM_RHYDO = 927,
- //SI_HELM_TURISUS = 928,
- //SI_HELM_HAGALAS = 929,
- //SI_HELM_ISIA = 930,
- //SI_HELM_ASIR = 931,
- //SI_HELM_URJ = 932,
- SI_SUHIDE = 933,
- //SI_ = 934,
- //SI_DORAM_BUF_01 = 935,
- //SI_DORAM_BUF_02 = 936,
- SI_SPRITEMABLE = 937,
- //SI_AID_PERIOD_RECEIVEITEM = 938,
- //SI_AID_PERIOD_PLUSEXP = 939,
- //SI_AID_PERIOD_PLUSJOBEXP = 940,
- //SI_AID_PERIOD_DEADPENALTY = 941,
- //SI_AID_PERIOD_ADDSTOREITEMCOUNT = 942,
- //SI_ = 943,
- //SI_ = 944,
- //SI_ = 945,
- //SI_ = 946,
- //SI_ = 947,
- //SI_ = 948,
- //SI_ = 949,
- //SI_HISS = 950,
- //SI_ = 951,
- //SI_NYANGGRASS = 952,
- //SI_CHATTERING = 953,
- //SI_ = 954,
- //SI_ = 955,
- //SI_ = 956,
- //SI_ = 957,
- //SI_ = 958,
- //SI_ = 959,
- //SI_ = 960,
- //SI_GROOMING = 961,
- //SI_PROTECTIONOFSHRIMP = 962,
- //SI_EP16_2_BUFF_SS = 963,
- //SI_EP16_2_BUFF_SC = 964,
- //SI_EP16_2_BUFF_AC = 965,
- //SI_GS_MAGICAL_BULLET = 966,
- //SI_ = 967,
- //SI_ = 968,
- //SI_ = 969,
- //SI_ = 970,
- //SI_ = 971,
- //SI_ = 972,
- //SI_ = 973,
- //SI_ = 974,
- //SI_ = 975,
- //SI_FALLEN_ANGEL = 976,
- //SI_ = 977,
- //SI_ = 978,
- //SI_BLAZE_BEAD = 979,
- //SI_FROZEN_BEAD = 980,
- //SI_BREEZE_BEAD = 981,
- //SI_ = 982,
- //SI_AID_PERIOD_RECEIVEITEM_2ND = 983,
- //SI_AID_PERIOD_PLUSEXP_2ND = 984,
- //SI_AID_PERIOD_PLUSJOBEXP_2ND = 985,
- //SI_PRONTERA_JP = 986,
- //SI_ = 987,
- //SI_GLOOM_CARD = 988,
- //SI_PHARAOH_CARD = 989,
- //SI_KIEL_CARD = 990,
- //SI_ = 991,
- //SI_CHEERUP = 992,
- //SI_ = 993,
- //SI_ = 994,
- //SI_S_MANAPOTION = 995,
- //SI_M_DEFSCROLL = 996,
- //SI_ = 997,
- //SI_ = 998,
- //SI_ = 999,
- //SI_AS_RAGGED_GOLEM_CARD = 1000,
- //SI_LHZ_DUN_N1 = 1001,
- //SI_LHZ_DUN_N2 = 1002,
- //SI_LHZ_DUN_N3 = 1003,
- //SI_LHZ_DUN_N4 = 1004,
-#ifndef SI_MAX
- SI_MAX,
-#endif
+ SI_BLANK = -1,
};
// JOINTBEAT stackable ailments
@@ -2235,10 +1224,12 @@ BEGIN_ZEROED_BLOCK; /* Everything within this block will be memset to 0 when sta
int SP_table[CLASS_COUNT][MAX_LEVEL + 1];
int aspd_base[CLASS_COUNT][MAX_SINGLE_WEAPON_TYPE+1]; // +1 for RENEWAL_ASPD
sc_type Skill2SCTable[MAX_SKILL_DB]; // skill -> status
- int IconChangeTable[SC_MAX]; // status -> "icon" (icon is a bit of a misnomer, since there exist values with no icon associated)
+ struct {
+ int id;
+ int relevant_bl_types;
+ } IconChangeTable[SC_MAX];
unsigned int ChangeFlagTable[SC_MAX]; // status -> flags
int SkillChangeTable[SC_MAX]; // status -> skill
- int RelevantBLTypes[SI_MAX]; // "icon" -> enum bl_type (for clif->status_change to identify for which bl types to send packets)
bool DisplayType[SC_MAX];
/* */
int atkmods[3][MAX_SINGLE_WEAPON_TYPE];//ATK weapon modification for size (size_fix.txt)
@@ -2273,8 +1264,9 @@ struct status_interface {
sc_type (*skill2sc) (int skill_id);
int (*sc2skill) (sc_type sc);
unsigned int (*sc2scb_flag) (sc_type sc);
- int (*type2relevant_bl_types) (int type);
+ int (*get_sc_relevant_bl_types) (sc_type type);
int (*get_sc_type) (sc_type idx);
+ int (*get_sc_icon) (sc_type type);
int (*damage) (struct block_list *src,struct block_list *target,int64 hp,int64 sp, int walkdelay, int flag);
//Define for standard HP/SP skill-related cost triggers (mobs require no HP/SP to use skills)
int (*charge) (struct block_list* bl, int64 hp, int64 sp);
@@ -2395,7 +1387,7 @@ struct status_interface {
bool (*read_scdb_libconfig_sub_flag_additional) (struct config_setting_t *it, int type, const char *source);
void (*read_job_db) (void);
void (*read_job_db_sub) (int idx, const char *name, struct config_setting_t *jdb);
- void (*set_sc) (uint16 skill_id, sc_type sc, int icon, unsigned int flag);
+ void (*set_sc) (uint16 skill_id, sc_type sc, unsigned int flag);
void (*copy) (struct status_data *a, const struct status_data *b);
int (*base_matk_min) (const struct status_data *st);
int (*base_matk_max) (const struct status_data *st);
diff --git a/src/map/unit.c b/src/map/unit.c
index 1e9433eaf..b9176fa69 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -459,10 +459,10 @@ static int unit_walktoxy_timer(int tid, int64 tick, int id, intptr_t data)
}
if (tbl->m == bl->m && check_distance_bl(bl, tbl, ud->chaserange)) {
//Reached destination.
+ ud->target_to = 0;
if (ud->state.attack_continue) {
//Aegis uses one before every attack, we should
//only need this one for syncing purposes. [Skotlex]
- ud->target_to = 0;
clif->fixpos(bl);
unit->attack(bl, tbl->id, ud->state.attack_continue);
}
@@ -544,6 +544,8 @@ static int unit_walktoxy(struct block_list *bl, short x, short y, int flag)
ud->to_x = x;
ud->to_y = y;
unit->stop_attack(bl); //Sets target to 0
+ if ((flag & 8) == 0) // Stepaction might be delayed due to occupied cell
+ unit->stop_stepaction(bl); // unit->walktoxy removes any remembered stepaction and resets ud->target_to
sc = status->get_sc(bl);
if( sc ) {
@@ -661,7 +663,7 @@ static void unit_run_hit(struct block_list *bl, struct status_change *sc, struct
lv = sc->data[type]->val1;
//If you can't run forward, you must be next to a wall, so bounce back. [Skotlex]
if( type == SC_RUN )
- clif->sc_load(bl,bl->id,AREA,SI_TING,0,0,0);
+ clif->sc_load(bl, bl->id, AREA, status->get_sc_icon(SC_TING), 0, 0, 0);
ud = unit->bl2ud(bl);
nullpo_retv(ud);
@@ -673,7 +675,7 @@ static void unit_run_hit(struct block_list *bl, struct status_change *sc, struct
if (lv > 0)
skill->blown(bl, bl, skill->get_blewcount(TK_RUN, lv), unit->getdir(bl), 0);
clif->fixpos(bl); //Why is a clif->slide (skill->blown) AND a fixpos needed? Ask Aegis.
- clif->sc_end(bl, bl->id, AREA, SI_TING);
+ clif->sc_end(bl, bl->id, AREA, status->get_sc_icon(SC_TING));
} else if (sd) {
clif->fixpos(bl);
skill->castend_damage_id(bl, &sd->bl, RA_WUGDASH, lv, timer->gettick(), SD_LEVEL);