From f2465bfa9245ae73e0320f36b766df352bd71d44 Mon Sep 17 00:00:00 2001 From: skotlex Date: Tue, 25 Jul 2006 00:42:38 +0000 Subject: - Cleaned up the skill_landprotector function to correctly block only magic skills from being placed on land protectors. - Corrected itemdb_group so that it will not return the random item givers (should give priority to actual item groups, so that the item heal bonuses work correctly) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@7867 54d463be-8e91-2dee-dedb-b68131a5f0ec --- Changelog-Trunk.txt | 5 +++++ src/map/itemdb.c | 17 ++++++++++++++++- src/map/skill.c | 27 +++++++++++++++------------ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 1b04897c4..c267f3796 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/24 + * Cleaned up the skill_landprotector function to correctly block only magic + skills from being placed on land protectors. [Skotlex] + * Corrected itemdb_group so that it will not return the random item givers + (should give priority to actual item groups, so that the item heal bonuses + work correctly) [Skotlex] * Cleaned up the Mistress Card related code so that the no-gemstone bonus reduces item requirements by one rather than totally skip them. [Skotlex] * Cleaned up the logs "can log"function to use the IT constants. Also diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 29b676aed..4b40a93e7 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -113,13 +113,28 @@ int itemdb_searchrandomid(int group) } /*========================================== - * + * Returns the group this item belongs to. + * Skips general random item givers (gift/blue/violet box) *------------------------------------------ */ int itemdb_group (int nameid) { int i, j; for (i=0; i < MAX_ITEMGROUP; i++) { + switch (i) { + case IG_BLUEBOX: + case IG_VIOLETBOX: + case IG_CARDALBUM: + case IG_GIFTBOX: + case IG_COOKIEBAG: + case IG_GIFTBOX_1: + case IG_GIFTBOX_2: + case IG_GIFTBOX_3: + case IG_GIFTBOX_4: + case IG_GIFTBOXCHINA: + continue; + } + for (j=0; j < itemgroup_db[i].qty; j++) { if (itemgroup_db[i].id[j] == nameid) return i; diff --git a/src/map/skill.c b/src/map/skill.c index e360680b6..364d87b1b 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -9320,21 +9320,24 @@ int skill_landprotector (struct block_list *bl, va_list ap) return 1; } - if (skill_get_type(unit->group->skill_id) != BF_MAGIC) - return 0; //Only blocks out magical skills. - - if (skillid == SA_LANDPROTECTOR || skillid == HW_GANBANTEIN ) { + if((skillid == SA_LANDPROTECTOR || skillid == HW_GANBANTEIN) && + skill_get_type(unit->group->skill_id) == BF_MAGIC) + { //Delete Magical effects skill_delunit(unit); - } else - if (unit->group->skill_id == SA_LANDPROTECTOR) { + return 1; + } + if (unit->group->skill_id == SA_LANDPROTECTOR && + skill_get_type(skillid) == BF_MAGIC) + { //Magic tile won't be activated (*alive) = 0; - } else - if (skillid == HP_BASILICA && unit->group->skill_id == HP_BASILICA) { - //Basilica can't be placed on top of itself to avoid map-cell stacking problems. [Skotlex] + return 1; + } + if (skillid == HP_BASILICA && unit->group->skill_id == HP_BASILICA) + { //Basilica can't be placed on top of itself to avoid map-cell stacking problems. [Skotlex] (*alive) = 0; - } else - return 0; - return 1; + return 1; + } + return 0; } /*========================================== -- cgit v1.2.3-70-g09d2