From a8ed5bce482007aa96ff5f6674d6dfe6bbfaa487 Mon Sep 17 00:00:00 2001 From: skotlex Date: Thu, 4 May 2006 15:18:30 +0000 Subject: - Stun time for using ES magic on non-mobs reduced to 0.5 secs. - Eska is now usable on bosses. - Swoo will stun you if attempted on an already 'swooned' enemy. - clif_skill_failed will print out a debug line with the skill_id (since the current null_po does not helps at all to fix it) - Applied TheUltraMage's suggested fixes to the grfio module. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@6467 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/grfio.c | 10 +++++----- src/map/clif.c | 7 +++++-- src/map/pc.c | 12 ++++++++---- src/map/skill.c | 22 ++++++++++------------ 4 files changed, 28 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/common/grfio.c b/src/common/grfio.c index d0178d3e4..41e6864ae 100644 --- a/src/common/grfio.c +++ b/src/common/grfio.c @@ -858,7 +858,7 @@ static void grfio_resourcecheck(void) FILE *fp; // read resnametable from data directory and return if successful - sprintf(restable, "%sresnametable.txt", data_dir); + sprintf(restable, "%sdata\\resnametable.txt", data_dir); for (ptr = &restable[0]; *ptr != 0; ptr++) if (*ptr == '\\') *ptr = '/'; @@ -869,15 +869,15 @@ static void grfio_resourcecheck(void) // we only need the map names and text files (strstr(w2, ".gat") || strstr(w2, ".txt"))) { - sprintf(src, "%s", w1); - sprintf(dst, "%s", w2); + sprintf(src, "data\\%s", w1); + sprintf(dst, "data\\%s", w2); entry = filelist_find(dst); // create new entries reusing the original's info if (entry != NULL) { FILELIST fentry; memcpy(&fentry, entry, sizeof(FILELIST)); strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); - fentry.fnd = grfio_alloc_ptr(w2); + fentry.fnd = grfio_alloc_ptr(dst); filelist_modify(&fentry); i++; } @@ -906,7 +906,7 @@ static void grfio_resourcecheck(void) FILELIST fentry; memcpy(&fentry, entry, sizeof(FILELIST)); strncpy(fentry.fn, src, sizeof(fentry.fn) - 1); - fentry.fnd = grfio_alloc_ptr(w2); + fentry.fnd = grfio_alloc_ptr(dst); filelist_modify(&fentry); i++; } diff --git a/src/map/clif.c b/src/map/clif.c index d61ce3682..075f0fbfc 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -4338,8 +4338,11 @@ int clif_skill_fail(struct map_session_data *sd,int skill_id,int type,int btype) { int fd; - nullpo_retr(0, sd); - + if (!sd) { //Since this is the most common nullpo.... + ShowDebug("clif_skill_fail: Error, received NULL sd for skill %d\n", skill_id); + return 0; + } + fd=sd->fd; // reset all variables [celest] diff --git a/src/map/pc.c b/src/map/pc.c index 47efd18c0..d2d73acb5 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -6255,13 +6255,17 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag) clif_changelook(&sd->bl,LOOK_SHOES,0); clif_unequipitemack(sd,n,sd->status.inventory[n].equip,1); + + if((sd->status.inventory[n].equip&0x0022) && + sd->weapontype1 == 0 && sd->weapontype2 == 0) + skill_enchant_elemental_end(&sd->bl,-1); + sd->status.inventory[n].equip=0; - if(flag&1) + + if(flag&1) { pc_checkallowskill(sd); - if(sd->weapontype1 == 0 && sd->weapontype2 == 0) - skill_enchant_elemental_end(&sd->bl,-1); //武器持ち誓えは無?件で?性付?解除 - if(flag&1) status_calc_pc(sd,0); + } if(sd->sc.count && sd->sc.data[SC_SIGNUMCRUCIS].timer != -1 && !battle_check_undead(RC_DEMIHUMAN,sd->def_ele)) status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1); diff --git a/src/map/skill.c b/src/map/skill.c index 527480a6a..d6b18f158 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2944,7 +2944,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl,int s case SL_STUN: case SL_SMA: if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { - status_change_start(src,SC_STUN,10000,skilllv,0,0,0,3000,8); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); clif_skill_fail(sd,skillid,0,0); break; } @@ -5413,21 +5413,19 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SL_SKA: // [marquis007] if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { - status_change_start(src,SC_STUN,10000,skilllv,0,0,0,3000,8); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); clif_skill_fail(sd,skillid,0,0); break; } - if (sd && status_get_mode(bl)&MD_BOSS) - clif_skill_fail(sd,skillid,0,0); - else - { - clif_skill_nodamage(src,bl,skillid,skilllv, - sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); - } + clif_skill_nodamage(src,bl,skillid,skilllv, + sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv))); break; case SL_SWOO: - if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { - status_change_start(src,SC_STUN,10000,skilllv,0,0,0,3000,8); + if (sd && ( + (!battle_config.allow_es_magic_pc && bl->type != BL_MOB) || + (tsc && tsc->data[type].timer != -1) + )) { + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); clif_skill_fail(sd,skillid,0,0); break; } @@ -5437,7 +5435,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SL_SKE: if (sd && !battle_config.allow_es_magic_pc && bl->type != BL_MOB) { - status_change_start(src,SC_STUN,10000,skilllv,0,0,0,3000,8); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,10); clif_skill_fail(sd,skillid,0,0); break; } -- cgit v1.2.3-70-g09d2