From aae1026c0336f9bd280ac0d5cc8d523004adad21 Mon Sep 17 00:00:00 2001 From: skotlex Date: Wed, 9 Jan 2008 16:08:57 +0000 Subject: - corrected duration of sphere mines to be 30 secs regardless of skill level - Corrected duel_count/duel_list (you DON'T place variables in a .h file! That is what 'extern' is for) - Script command warpportal now places a warp in its initial state (as if a real warp portal was casted) - Updated dispell to also not remove the following effects: Hindsight, Inc Hit/Atk Rate (NPC_POWERUP), Nen, TK stances and tumble, warm and speedup1 (the other speed potion) - Chase-walking characters can now loot. - Hiding characters can't drop items now. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12036 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/atcommand.c | 2 -- src/map/clif.c | 7 +++---- src/map/map.h | 8 -------- src/map/pc.c | 5 +++++ src/map/pc.h | 9 +++++++++ src/map/script.c | 2 +- src/map/skill.c | 6 +++++- 7 files changed, 23 insertions(+), 16 deletions(-) (limited to 'src/map') diff --git a/src/map/atcommand.c b/src/map/atcommand.c index b9ec2c72c..07dc0d3a4 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -8548,8 +8548,6 @@ int atcommand_config_read(const char* cfgName) void do_init_atcommand() { users_db = uidb_alloc(DB_OPT_BASE); - duel_count = 0; - memset(&duel_list[0], 0, sizeof(duel_list)); add_timer_func_list(atshowmobs_timer, "atshowmobs_timer"); return; } diff --git a/src/map/clif.c b/src/map/clif.c index bb1b6f964..b74f4f582 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -8566,11 +8566,9 @@ void clif_parse_TakeItem(int fd, struct map_session_data *sd) if (pc_cant_act(sd)) break; - //Disable cloaking/chasewalking characters from looting [Skotlex] - if(pc_iscloaking(sd) || pc_ischasewalk(sd)) - break; - if(sd->sc.count && ( + sd->sc.data[SC_HIDING] || + sd->sc.data[SC_CLOAKING] || sd->sc.data[SC_TRICKDEAD] || sd->sc.data[SC_BLADESTOP] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM)) @@ -8601,6 +8599,7 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd) break; if (sd->sc.count && ( + sd->sc.data[SC_HIDING] || sd->sc.data[SC_AUTOCOUNTER] || sd->sc.data[SC_BLADESTOP] || (sd->sc.data[SC_NOCHAT] && sd->sc.data[SC_NOCHAT]->val1&MANNER_NOITEM) diff --git a/src/map/map.h b/src/map/map.h index 2eaf4c2c1..266572680 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -794,14 +794,6 @@ struct map_session_data { } mail; }; -struct { - int members_count; - int invites_count; - int max_players_limit; -} duel_list[MAX_DUEL]; - -int duel_count; - struct npc_timerevent_list { int timer,pos; }; diff --git a/src/map/pc.c b/src/map/pc.c index f16f57336..6d59c1897 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -66,6 +66,9 @@ static int GM_num = 0; #define MOTD_LINE_SIZE 128 char motd_text[MOTD_LINE_SIZE][256]; // Message of the day buffer [Valaris] +struct duel duel_list[MAX_DUEL]; +int duel_count = 0; + //Links related info to the sd->hate_mob[]/sd->feel_map[] entries const struct sg_data sg_info[3] = { { SG_SUN_ANGER, SG_SUN_BLESS, SG_SUN_COMFORT, "PC_FEEL_SUN", "PC_HATE_MOB_SUN", is_day_of_sun }, @@ -7552,6 +7555,8 @@ int do_init_pc(void) pc_readdb(); pc_read_motd(); // Read MOTD [Valaris] + memset(&duel_list[0], 0, sizeof(duel_list)); + add_timer_func_list(pc_invincible_timer, "pc_invincible_timer"); add_timer_func_list(pc_eventtimer, "pc_eventtimer"); add_timer_func_list(pc_calc_pvprank_timer, "pc_calc_pvprank_timer"); diff --git a/src/map/pc.h b/src/map/pc.h index 85f0d7ee0..d179ec770 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -98,6 +98,15 @@ enum { EQI_MAX } equip_index_enum; +struct duel { + int members_count; + int invites_count; + int max_players_limit; +}; + +extern struct duel duel_list[MAX_DUEL]; +extern int duel_count; + #define pc_setdead(sd) ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 1 ) #define pc_setsit(sd) ( (sd)->state.dead_sit = (sd)->vd.dead_sit = 2 ) #define pc_isdead(sd) ( (sd)->state.dead_sit == 1 ) diff --git a/src/map/script.c b/src/map/script.c index ffd40aa68..a56135dd8 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -12941,7 +12941,7 @@ BUILDIN_FUNC(warpportal) if( mapindex == 0 ) return 0;// map not found - group = skill_unitsetting(bl, AL_WARP, 4, spx, spy, 1); + group = skill_unitsetting(bl, AL_WARP, 4, spx, spy, 0); if( group == NULL ) return 0;// failed group->val2 = (tpx<<16) | tpy; diff --git a/src/map/skill.c b/src/map/skill.c index b5f28ba27..c948b0e7c 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4188,7 +4188,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in case SC_SMA: case SC_SPEEDUP0: case SC_NOCHAT: case SC_ANKLE: case SC_SPIDERWEB: case SC_JAILED: case SC_ITEMBOOST: case SC_EXPBOOST: case SC_LIFEINSURANCE: - case SC_BOSSMAPINFO: case SC_PNEUMA: + case SC_BOSSMAPINFO: case SC_PNEUMA: case SC_AUTOSPELL: + case SC_INCHITRATE: case SC_INCATKRATE: case SC_NEN: + case SC_READYSTORM: case SC_READYDOWN: case SC_READYTURN: + case SC_READYCOUNTER:case SC_DODGE: case SC_WARM: + case SC_SPEEDUP1: continue; } if(i==SC_BERSERK) tsc->data[i]->val2=0; //Mark a dispelled berserk to avoid setting hp to 100 by setting hp penalty to 0. -- cgit v1.2.3-60-g2f50