diff options
-rw-r--r-- | Changelog-Trunk.txt | 5 | ||||
-rw-r--r-- | db/Changelog.txt | 6 | ||||
-rw-r--r-- | db/skill_cast_db.txt | 8 | ||||
-rw-r--r-- | db/skill_db.txt | 6 | ||||
-rw-r--r-- | src/map/pc.c | 5 | ||||
-rw-r--r-- | src/map/skill.c | 22 | ||||
-rw-r--r-- | src/map/status.c | 4 | ||||
-rw-r--r-- | src/map/unit.c | 1 |
8 files changed, 33 insertions, 24 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 43061be97..0ec0556b2 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.
2006/07/10
+ * Corrected Warp Portal being unable to warp people who are standing on it
+ on the moment it triggers. [Skotlex]
+ * Fixed @follow stopping the moment you are warped. [Skotlex]
+ * Fixed pc_additem messing with the equip field of the passed item data.
+ Fixes the famous "equip stuff on your arrow slot" bug. [Skotlex]
* Fixed cart-termination crashing the server if you used level 16 of it.
[Skotlex]
* Fixed check_connect_login_server check in char-sql server. Fixes
diff --git a/db/Changelog.txt b/db/Changelog.txt index 67b1de271..ab77686ab 100644 --- a/db/Changelog.txt +++ b/db/Changelog.txt @@ -26,6 +26,12 @@ =========================
07/10
+ * Corrected Frost Nova's splash range and Land Protector's cast range.
+ Thanks to Haplo. [Skotlex]
+ * Fixed Beast Strafing not having inf2 = 512 (to make it a
+ target-auto-select skill) [Skotlex]
+ * Fixed the duration of Land Protector, removed unused time2 value from
+ their entries in skill_cast_db. Thanks to Haplo. [Skotlex]
* Corrected skill require entry from the Twilight Pharmacy skills.
[Skotlex]
* Removed Frost Nova's skill_unit_db entry. [Skotlex]
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt index a159a2afc..52a0574d2 100644 --- a/db/skill_cast_db.txt +++ b/db/skill_cast_db.txt @@ -441,13 +441,13 @@ 283,3000,0,0,1200000:1200000:1200000:1200000:1800000,0
//-- SA_VOLCANO
-285,5000,0,0,60000:120000:180000:240000:300000,60000:120000:180000:240000:300000
+285,5000,0,0,60000:120000:180000:240000:300000,0
//-- SA_DELUGE
-286,5000,0,0,60000:120000:180000:240000:300000,60000:120000:180000:240000:300000
+286,5000,0,0,60000:120000:180000:240000:300000,0
//-- SA_VIOLENTGALE
-287,5000,0,0,60000:120000:180000:240000:300000,60000:120000:180000:240000:300000
+287,5000,0,0,60000:120000:180000:240000:300000,0
//-- SA_LANDPROTECTOR
-288,5000,0,0,60000:120000:180000:240000:300000,60000:120000:180000:240000:300000
+288,5000,0,0,120000:165000:210000:245000:300000,0
//-- SA_DISPELL
289,2000,0,0,0,0
//-- SA_REVERSEORCISH
diff --git a/db/skill_db.txt b/db/skill_db.txt index 640120899..e84ca61fb 100644 --- a/db/skill_db.txt +++ b/db/skill_db.txt @@ -108,7 +108,7 @@ 85,9,8,2,4,0,0,10,-10,yes,0,0,0,magic,0 //WZ_VERMILION#Lord of Vermilion#
86,9,8,1,1,0,0,5,1,yes,0,0,0,magic,0 //WZ_WATERBALL#Water Ball#
87,9,6,2,1,0,0,10,1,yes,0,0,0,magic,0 //WZ_ICEWALL#Ice Wall#
-88,9,6,4,1,2,5,10,1,yes,0,0,0,magic,0 //WZ_FROSTNOVA#Frost Nova#
+88,0,6,4,1,2,2,10,1,yes,0,0,0,magic,0 //WZ_FROSTNOVA#Frost Nova#
89,9,6,2,1,0,0,10,1,yes,0,0,0,magic,2 //WZ_STORMGUST#Storm Gust#
90,9,8,1,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_EARTHSPIKE#Earth Spike#
91,9,8,2,2,0,0,5,1:2:3:4:5,yes,0,0,0,magic,0 //WZ_HEAVENDRIVE#Heaven's Drive#
@@ -308,7 +308,7 @@ 285,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0 //SA_VOLCANO#Volcano#
286,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0 //SA_DELUGE#Deluge#
287,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0 //SA_VIOLENTGALE#Whirlwind#
-288,2,6,2,0,1,0,5,1,yes,0,0,0,magic,0 //SA_LANDPROTECTOR#Magnetic Earth#
+288,7:7:9:9:11,6,2,0,1,0,5,1,yes,0,0,0,magic,0 //SA_LANDPROTECTOR#Magnetic Earth#
289,9,6,1,0,1,0,5,1,yes,0,0,0,magic,0 //SA_DISPELL#Dispel#
290,0,6,4,0,1,0,10,1,yes,0,0,0,magic,0 //SA_ABRACADABRA#Hocus-pocus#
291,9,6,1,0,1,0,1,1,yes,0,2,0,magic,0 //SA_MONOCELL#Monocell#
@@ -519,7 +519,7 @@ 496,0,6,4,0,1,0,1,0,no,0,8,0,none,0 //AM_TWILIGHT1#Twilight Alchemy 1#
497,0,6,4,0,1,0,1,0,no,0,8,0,none,0 //AM_TWILIGHT2#Twilight Alchemy 2#
498,0,6,4,0,1,0,1,0,no,0,8,0,none,0 //AM_TWILIGHT3#Twilight Alchemy 3#
-499,-9,8,4,-1,0,0,1,2,no,0,8,0,weapon,0 //HT_POWER#Beast Strafing#
+499,-9,8,4,-1,0,0,1,2,no,0,520,0,weapon,0 //HT_POWER#Beast Strafing#
//Temp Plugs(using bash as base)
500,0,6,4,0,0,0,5,1,no,0,0,0,none,0 //GS_GLITTERING#Flip the Coin#
501,-3,6,1,0,0,0,1,1,no,0,0,0,weapon,0 //GS_FLING#Fling#
diff --git a/src/map/pc.c b/src/map/pc.c index d79ca7319..5ce2a8394 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2603,10 +2603,11 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount) if (i >= MAX_INVENTORY){ i = pc_search_inventory(sd,0); if(i<0) return 4; + memcpy(&sd->status.inventory[i], item_data, sizeof(sd->status.inventory[0])); // clear equips field first, just in case if (item_data->equip) - item_data->equip = 0; - memcpy(&sd->status.inventory[i], item_data, sizeof(sd->status.inventory[0])); + sd->status.inventory[i].equip = 0; + sd->status.inventory[i].amount = amount; sd->inventory_data[i] = data; clif_additem(sd,i,amount,0); diff --git a/src/map/skill.c b/src/map/skill.c index 8b3576e94..164a6c7c2 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6242,6 +6242,15 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid, unit_flag = skill_get_unit_flag(skillid); layout = skill_get_unit_layout(skillid,skilllv,src,x,y); + if (skillid == AL_WARP && flag && src->type == BL_SKILL) + { //Warp Portal morphing to active mode, extract relevant data from src. [Skotlex] + group= ((TBL_SKILL*)src)->group; + src = map_id2bl(group->src_id); + if (!src) return NULL; + val2=group->val2; //Copy the (x,y) position you warp to + val3=group->val3; //as well as the mapindex to warp to. + } + BL_CAST(BL_PC, src, sd); status = status_get_status_data(src); sc= status_get_sc(src); // for traps, firewall and fogwall - celest @@ -6263,7 +6272,6 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid, val1=skilllv+6; if(!(flag&1)) limit=2000; - active_flag=0; break; case PR_SANCTUARY: /* サンクチュアリ */ @@ -7259,16 +7267,8 @@ int skill_unit_onlimit (struct skill_unit *src, unsigned int tick) nullpo_retr(0, sg=src->group); switch(sg->unit_id){ - case UNT_WARP_ACTIVE: /* ワープポータル(発動前) */ - { - struct skill_unit_group *group= - skill_unitsetting(map_id2bl(sg->src_id),sg->skill_id,sg->skill_lv, - src->bl.x,src->bl.y,1); - if(group == NULL) - return 0; - group->val2=sg->val2; //Copy the (x,y) position you warp to - group->val3=sg->val3; //as well as the mapindex to warp to. - } + case UNT_WARP_ACTIVE: + skill_unitsetting(&src->bl,sg->skill_id,sg->skill_lv,src->bl.x,src->bl.y,1); break; case UNT_ICEWALL: /* アイスウォール */ diff --git a/src/map/status.c b/src/map/status.c index daa6a17d4..bb928def5 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1744,9 +1744,7 @@ int status_calc_pc(struct map_session_data* sd,int first) if(sd->equip_index[EQI_AMMO] >= 0){ // index = sd->equip_index[EQI_AMMO]; - //FIXME: The equip check is a temporary measure until a speed exploit - // that has yet to be fixed! - if(sd->inventory_data[index] && sd->status.inventory[index].equip&EQP_AMMO){ // Arrows + if(sd->inventory_data[index]){ // Arrows sd->state.lr_flag = 2; run_script(sd->inventory_data[index]->script,0,sd->bl.id,0); sd->state.lr_flag = 0; diff --git a/src/map/unit.c b/src/map/unit.c index 5586db0b2..57a557395 100644 --- a/src/map/unit.c +++ b/src/map/unit.c @@ -1524,7 +1524,6 @@ int unit_remove_map(struct block_list *bl, int clrtype) { if(sd->guild_alliance>0) guild_reply_reqalliance(sd,sd->guild_alliance_account,0); - pc_stop_following(sd); pc_delinvincibletimer(sd); if(sd->pvp_timer!=-1) { |