summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
Diffstat (limited to 'src/map')
-rw-r--r--src/map/skill.c9
-rw-r--r--src/map/status.c4
-rw-r--r--src/map/unit.c2
3 files changed, 9 insertions, 6 deletions
diff --git a/src/map/skill.c b/src/map/skill.c
index fd7dc61d9..aee4fb99f 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -3305,10 +3305,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
}
do {
abra_skillid = rand() % MAX_SKILL_ABRA_DB;
- if (skill_abra_db[abra_skillid].req_lv > skilllv ||
- rand()%10000 >= skill_abra_db[abra_skillid].per ||
- skill_get_inf2(abra_skillid)&INF2_NPC_SKILL ||
- skill_get_unit_flag(abra_skillid) &(UF_DANCE|UF_ENSEMBLE|UF_SONG)
+ if (
+ skill_get_inf2(abra_skillid)&(INF2_NPC_SKILL|INF2_SONG_DANCE|INF2_ENSEMBLE_SKILL) || //NPC/Song/Dance skills are out
+ !skill_get_inf(abra_skillid) || //Passive skills cannot be casted
+ skill_abra_db[abra_skillid].req_lv > skilllv || //Required lv for it to appear
+ rand()%10000 >= skill_abra_db[abra_skillid].per
)
abra_skillid = 0; // reset to get a new id
} while (abra_skillid == 0);
diff --git a/src/map/status.c b/src/map/status.c
index e39ff93f0..07e12d548 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -6454,13 +6454,13 @@ int status_readdb(void) {
}
i=0;
while(fgets(line, sizeof(line)-1, fp)){
- char *split[16];
+ char *split[MAX_REFINE+4];
if(line[0]=='/' && line[1]=='/')
continue;
if(atoi(line)<=0)
continue;
memset(split,0,sizeof(split));
- for(j=0,p=line;j<16 && p;j++){
+ for(j=0,p=line;j<MAX_REFINE+4 && p;j++){
split[j]=p;
p=strchr(p,',');
if(p) *p++=0;
diff --git a/src/map/unit.c b/src/map/unit.c
index 304160fe8..0b7bb663d 100644
--- a/src/map/unit.c
+++ b/src/map/unit.c
@@ -1473,6 +1473,8 @@ int unit_remove_map(struct block_list *bl, int clrtype) {
status_change_end(bl,SC_RUN,-1);
if (sc->data[SC_DANCING].timer!=-1) // clear dance effect when warping [Valaris]
skill_stop_dancing(bl);
+ if (sc->data[SC_WARM].timer!=-1)
+ status_change_end(bl, SC_WARM, -1);
if (sc->data[SC_DEVOTION].timer!=-1)
status_change_end(bl,SC_DEVOTION,-1);
if (sc->data[SC_MARIONETTE].timer!=-1)