- Moved the mapflag skill restrictions from skill_checkcondition to skillnotok, this makes auto-spells not work in maps where they aren't allowed.

- Added TK_HIGHJUMP to skillnotok, the skill is blocked in noteleport maps (with the exception of gvg ones)


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6281 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2006-04-25 20:36:26 +00:00
parent b2b2a79c47
commit 6fff5230e5
2 changed files with 37 additions and 33 deletions

View File

@ -3,6 +3,11 @@ Date Added
AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/04/25 2006/04/25
* Moved the mapflag skill restrictions from skill_checkcondition to
skillnotok, this makes auto-spells not work in maps where they aren't
allowed. [Skotlex]
* Added TK_HIGHJUMP to skillnotok, the skill is blocked in noteleport maps
(with the exception of gvg ones) [Skotlex]
* Modified and simplified the random item group format. It now is * Modified and simplified the random item group format. It now is
<GroupID>,<ItemID>,<Rate>, where Rate normally is 1, greater numbers is the <GroupID>,<ItemID>,<Rate>, where Rate normally is 1, greater numbers is the
equivalent of adding the line multiple times. Also has support for import equivalent of adding the line multiple times. Also has support for import

View File

@ -835,7 +835,33 @@ int skillnotok(int skillid, struct map_session_data *sd)
switch (skillid) { switch (skillid) {
case AL_WARP: case AL_WARP:
if(map[sd->bl.m].flag.nowarp) {
clif_skill_teleportmessage(sd,0);
return 1;
}
return 0;
break;
case AL_TELEPORT: case AL_TELEPORT:
if(map[sd->bl.m].flag.noteleport) {
clif_skill_teleportmessage(sd,0);
return 1;
}
return 0;
case TK_HIGHJUMP:
if(map[sd->bl.m].flag.noteleport && !map_flag_gvg(sd->bl.m))
{ //Can't be used on noteleport maps, except for gvg maps [Skotlex]
clif_skill_fail(sd,skillid,0,0);
return 1;
}
break;
case WE_CALLPARTNER:
case WE_CALLPARENT:
case WE_CALLBABY:
if (map[sd->bl.m].flag.nomemo) {
clif_skill_teleportmessage(sd,1);
return 1;
}
break;
case MC_VENDING: case MC_VENDING:
case MC_IDENTIFY: case MC_IDENTIFY:
return 0; // always allowed return 0; // always allowed
@ -845,9 +871,8 @@ int skillnotok(int skillid, struct map_session_data *sd)
clif_skill_fail(sd,skillid,0,0); clif_skill_fail(sd,skillid,0,0);
return 1; return 1;
} }
default:
return (map[sd->bl.m].flag.noskill);
} }
return (map[sd->bl.m].flag.noskill);
} }
/* スキルユニットの配置?﨣<><EFA8A3>ヤす */ /* スキルユニットの配置?﨣<><EFA8A3>ヤす */
@ -6462,32 +6487,16 @@ struct skill_unit_group *skill_unitsetting( struct block_list *src, int skillid,
count=1; // Leave this at 1 [Valaris] count=1; // Leave this at 1 [Valaris]
break; break;
case WE_CALLPARTNER: case WE_CALLPARTNER:
if (!sd) if (sd ) val1 = sd->status.partner_id;
return NULL;
if (map[src->m].flag.nomemo) {
clif_skill_teleportmessage(sd,1);
return NULL;
}
val1 = sd->status.partner_id;
break; break;
case WE_CALLPARENT: case WE_CALLPARENT:
if (!sd) if (sd) {
return NULL; val1 = sd->status.father;
if (map[src->m].flag.nomemo) { val2 = sd->status.mother;
clif_skill_teleportmessage(sd,1);
return NULL;
} }
val1 = sd->status.father;
val2 = sd->status.mother;
break; break;
case WE_CALLBABY: case WE_CALLBABY:
if (!sd) if (sd) val1 = sd->status.child;
return NULL;
if (map[src->m].flag.nomemo) {
clif_skill_teleportmessage(sd,1);
return NULL;
}
val1 = sd->status.child;
break; break;
} }
@ -7717,21 +7726,11 @@ int skill_check_condition(struct map_session_data *sd,int skill, int lv, int typ
case AL_WARP: case AL_WARP:
if(!(type&2)) //Delete the item when the portal has been selected (type&2). [Skotlex] if(!(type&2)) //Delete the item when the portal has been selected (type&2). [Skotlex]
delitem_flag = 0; delitem_flag = 0;
if(map[sd->bl.m].flag.nowarp) {
clif_skill_teleportmessage(sd,0);
return 0;
}
if(!battle_config.duel_allow_teleport && sd->duel_group) { // duel restriction [LuzZza] if(!battle_config.duel_allow_teleport && sd->duel_group) { // duel restriction [LuzZza]
clif_displaymessage(sd->fd, "Duel: Can't use warp in duel."); clif_displaymessage(sd->fd, "Duel: Can't use warp in duel.");
return 0; return 0;
} }
break; break;
case AL_TELEPORT:
if(map[sd->bl.m].flag.noteleport) {
clif_skill_teleportmessage(sd,0);
return 0;
}
break;
case MO_CALLSPIRITS: /* ?功 */ case MO_CALLSPIRITS: /* ?功 */
if(sd->spiritball >= lv) { if(sd->spiritball >= lv) {
clif_skill_fail(sd,skill,0,0); clif_skill_fail(sd,skill,0,0);