diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | src/map/battle.c | 2 | ||||
-rw-r--r-- | src/map/mob.c | 44 | ||||
-rw-r--r-- | src/map/pc.c | 2 | ||||
-rw-r--r-- | src/map/skill.c | 7 | ||||
-rw-r--r-- | src/map/status.c | 2 |
6 files changed, 32 insertions, 30 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index ca661d2ea..35e009459 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EVERYTHING ELSE
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
2006/02/14
+ * pc_setinventorydata won't use itemdb_search on empty inventory slots (id
+ = 0) [Skotlex]
+ * Fixed the icon from Provoke being gone. [Skotlex]
+ * Fixed skill_timerskill (most notable skill broken: water ball doing 1
+ hit) [Skotlex]
* Removed the declaration of puchar and pchar from my_global.h which was
preventing compiles on native win NT systems. Drawback is now Win9X systems
will fail to compile instead... [Skotlex]
diff --git a/src/map/battle.c b/src/map/battle.c index a5b711bab..244cbe960 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -3098,7 +3098,7 @@ int battle_weapon_attack( struct block_list *src,struct block_list *target, int boss = status_get_mode(target)&MD_BOSS;
int rate = 0;
if (sd->weapon_coma_ele[ele] > 0)
- rate+=sd->weapon_coma_ele[ele];
+ rate += sd->weapon_coma_ele[ele];
if (sd->weapon_coma_race[race] > 0)
rate += sd->weapon_coma_race[race];
if (sd->weapon_coma_race[boss?10:11] > 0)
diff --git a/src/map/mob.c b/src/map/mob.c index 1c9ec49f3..40bf82cb6 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -1420,34 +1420,30 @@ static int mob_ai_sub_hard_slavemob(struct mob_data *md,unsigned int tick) return 0;
}
- // Although there is the master, since it is somewhat far, it approaches.
- if((!md->target_id || md->state.targettype == NONE_ATTACKABLE) && mob_can_move(md) &&
- md->master_dist<md->db->range3 && (md->walkpath.path_pos>=md->walkpath.path_len || md->walkpath.path_len==0)){
+ // Approach master if within view range, chase back to Master's area also if standing on top of the master.
+ if(md->master_dist<md->db->range3 && (md->master_dist>MOB_SLAVEDISTANCE || md->master_dist == 0) &&
+ mob_can_move(md) && md->state.state == MS_IDLE)
+ {
int i=0,dx,dy,ret;
- if(md->master_dist>MOB_SLAVEDISTANCE || md->master_dist == 0)
- { //Chase back to Master's area also if standing on top of the master.
- do {
- if(i<=5){
- dx=bl->x - md->bl.x;
- dy=bl->y - md->bl.y;
+ do {
+ if(i<=5){
+ dx=bl->x - md->bl.x;
+ dy=bl->y - md->bl.y;
- if(dx<0) dx+=rand()%MOB_SLAVEDISTANCE +1;
- else if(dx>0) dx-=rand()%MOB_SLAVEDISTANCE +1;
-
- if(dy<0) dy+=rand()%MOB_SLAVEDISTANCE +1;
- else if(dy>0) dy-=rand()%MOB_SLAVEDISTANCE +1;
+ if(dx<0) dx+=rand()%MOB_SLAVEDISTANCE +1;
+ else if(dx>0) dx-=rand()%MOB_SLAVEDISTANCE +1;
+ if(dy<0) dy+=rand()%MOB_SLAVEDISTANCE +1;
+ else if(dy>0) dy-=rand()%MOB_SLAVEDISTANCE +1;
- }else{
- ret = MOB_SLAVEDISTANCE*2+1;
- dx=bl->x - md->bl.x + rand()%ret - MOB_SLAVEDISTANCE;
- dy=bl->y - md->bl.y + rand()%ret - MOB_SLAVEDISTANCE;
- }
+ }else{
+ ret = MOB_SLAVEDISTANCE*2+1;
+ dx=bl->x - md->bl.x + rand()%ret - MOB_SLAVEDISTANCE;
+ dy=bl->y - md->bl.y + rand()%ret - MOB_SLAVEDISTANCE;
+ }
- ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0);
- i++;
- } while(ret && i<10);
- md->next_walktime=tick+1000;
- }
+ ret=mob_walktoxy(md,md->bl.x+dx,md->bl.y+dy,0);
+ i++;
+ } while(ret && i<10);
}
} else if (bl->m != md->bl.m && map_flag_gvg(md->bl.m)) {
//Delete the summoned mob if it's in a gvg ground and the master is elsewhere. [Skotlex]
diff --git a/src/map/pc.c b/src/map/pc.c index e4085c48f..fe435d73f 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -490,7 +490,7 @@ int pc_setinventorydata(struct map_session_data *sd) for(i=0;i<MAX_INVENTORY;i++) {
id = sd->status.inventory[i].nameid;
- sd->inventory_data[i] = itemdb_search(id);
+ sd->inventory_data[i] = id?itemdb_search(id):NULL;
}
return 0;
}
diff --git a/src/map/skill.c b/src/map/skill.c index b1836c6bc..24298fb82 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2330,7 +2330,7 @@ int skill_addtimerskill(struct block_list *src,unsigned int tick,int target,int }
for(i=0;i<max && sts[i].timer != -1;i++);
if (i>=max) return 1;
-
+
sts[i].timer = add_timer(tick, skill_timerskill, src->id, i);
sts[i].src_id = src->id;
sts[i].target_id = target;
@@ -2339,6 +2339,7 @@ int skill_addtimerskill(struct block_list *src,unsigned int tick,int target,int sts[i].map = src->m;
sts[i].x = x;
sts[i].y = y;
+ sts[i].type = type;
sts[i].flag = flag;
if (count)
(*count)++;
@@ -2532,11 +2533,11 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s case NPC_HOLYATTACK:
case NPC_DARKNESSATTACK:
case NPC_TELEKINESISATTACK:
+ case NPC_UNDEADATTACK:
case NPC_BREAKARMOR:
+ case NPC_BREAKWEAPON:
case NPC_BREAKHELM:
case NPC_BREAKSHIELD:
- case NPC_BREAKWEAPON:
- case NPC_UNDEADATTACK:
case LK_AURABLADE: /* オ?ラブレ?ド */
case LK_SPIRALPIERCE: /* スパイラルピア?ス */
case LK_HEADCRUSH: /* ヘッドクラッシュ */
diff --git a/src/map/status.c b/src/map/status.c index 856e0d4f5..f7f88aaa9 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -75,7 +75,7 @@ void initChangeTables(void) { if (StatusIconChangeTable[sc]==SI_BLANK) StatusIconChangeTable[sc] = icon;
set_sc(SM_BASH, SC_STUN, SI_BLANK);
- set_sc(SM_PROVOKE, SC_PROVOKE, SI_BLANK);
+ set_sc(SM_PROVOKE, SC_PROVOKE, SI_PROVOKE);
set_sc(SM_MAGNUM, SC_WATK_ELEMENT, SI_BLANK);
set_sc(SM_ENDURE, SC_ENDURE, SI_ENDURE);
set_sc(MG_SIGHT, SC_SIGHT, SI_BLANK);
|