- Removed the include of features.h from the console.c plugin. It is apparently not needed (and it was preventing compilation on FreeBSD)
- Fixed bug which totally broke item group bonuses. - Added warnings when setting a pvp/gvg flag removes the other flags on the same map (gvg and pvp can't coexist on the same map) - Optimized the unequip loop when changing sex. - Removed the check that prevented you from casting soul-collect when you already have 5 spirits. - Corrected Magic Rod so it doesn't displays any skill-use animation until it triggers. - Debuff on logout&2 is again set to default, instead of removing food bonuses now it removes Maximize Power, Maximum Overthrust and Steel Body. - Corrected Steel Body's icon (it actually belongs to AutoBerserk) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10317 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
f4907979c1
commit
f4dfd0d8ee
@ -4,6 +4,17 @@ 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.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2007/04/23
|
2007/04/23
|
||||||
|
* Fixed bug which totally broke item group bonuses.
|
||||||
|
* Added warnings when setting a pvp/gvg flag removes the other flags on the
|
||||||
|
same map (gvg and pvp can't coexist on the same map)
|
||||||
|
* Removed the check that prevented you from casting soul-collect when you
|
||||||
|
already have 5 spirits.
|
||||||
|
* Corrected Magic Rod so it doesn't displays any skill-use animation until
|
||||||
|
it triggers.
|
||||||
|
* Corrected Steel Body's icon (it actually belongs to AutoBerserk)
|
||||||
|
* Debuff on logout&2 is again set to default, instead of removing food
|
||||||
|
bonuses now it removes Maximize Power, Maximum Overthrust and Steel Body.
|
||||||
|
[Skotlex]
|
||||||
* Extended the functionality of StringBuf - length and appending a string.
|
* Extended the functionality of StringBuf - length and appending a string.
|
||||||
* menu/select/prompt script functions support grouped and empty options.
|
* menu/select/prompt script functions support grouped and empty options.
|
||||||
The selected option number is consistent with them.
|
The selected option number is consistent with them.
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
Date Added
|
Date Added
|
||||||
|
|
||||||
|
2007/04/23
|
||||||
|
* Debuff on logout&2 is again set to default, instead of removing food
|
||||||
|
bonuses now it removes Maximize Power, Maximum Overthrust and Steel Body.
|
||||||
2007/04/16
|
2007/04/16
|
||||||
* Changed the default setting for emergency_call to 11 (usable all the
|
* Changed the default setting for emergency_call to 11 (usable all the
|
||||||
time, but only in Gvg Maps) as described by Tharis (skill.conf). [Skotlex]
|
time, but only in Gvg Maps) as described by Tharis (skill.conf). [Skotlex]
|
||||||
|
@ -34,12 +34,12 @@ status_cast_cancel: 0
|
|||||||
|
|
||||||
// Will certain skill status-changes be removed on logout?
|
// Will certain skill status-changes be removed on logout?
|
||||||
// This mimics official servers, where Extremity Fist's no SP regen,
|
// This mimics official servers, where Extremity Fist's no SP regen,
|
||||||
// Strip Equipment, cooking effects are removed when you logout. Setting is:
|
// Strip Equipment, and some other buffs are removed when you logout. Setting is:
|
||||||
// 0 - remove nothing.
|
// 0 - remove nothing.
|
||||||
// 1 - remove negative buffs (stripping, EF)
|
// 1 - remove negative buffs (stripping, EF)
|
||||||
// 2 - remove positive buffs (cooking)
|
// 2 - remove positive buffs (maximize power, steel body...)
|
||||||
// 3 - remove both negative and positive buffs.
|
// 3 - remove both negative and positive buffs.
|
||||||
debuff_on_logout: 1
|
debuff_on_logout: 3
|
||||||
|
|
||||||
// Adjustment for the natural rate of resistance from status changes.
|
// Adjustment for the natural rate of resistance from status changes.
|
||||||
// If 50, status defense is halved, and you need twice as much stats to block
|
// If 50, status defense is halved, and you need twice as much stats to block
|
||||||
|
@ -821,9 +821,9 @@ int chrif_changedsex(int fd)
|
|||||||
sd->status.sex = !sd->status.sex;
|
sd->status.sex = !sd->status.sex;
|
||||||
|
|
||||||
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
// to avoid any problem with equipment and invalid sex, equipment is unequiped.
|
||||||
for (i = 0; i < MAX_INVENTORY; i++) {
|
for (i = 0; i < EQI_MAX; i++) {
|
||||||
if (sd->status.inventory[i].nameid && sd->status.inventory[i].equip)
|
if (sd->equip_index[i] >= 0)
|
||||||
pc_unequipitem((struct map_session_data*)sd, i, 2);
|
pc_unequipitem((struct map_session_data*)sd, sd->equip_index[i], 2);
|
||||||
}
|
}
|
||||||
// reset skill of some job
|
// reset skill of some job
|
||||||
if ((sd->class_&MAPID_UPPERMASK) == MAPID_BARDDANCER) {
|
if ((sd->class_&MAPID_UPPERMASK) == MAPID_BARDDANCER) {
|
||||||
|
@ -109,7 +109,7 @@ int itemdb_group_bonus(const int itemgrouphealrate[MAX_ITEMGROUP], int itemid)
|
|||||||
{
|
{
|
||||||
int bonus = 0, i, j;
|
int bonus = 0, i, j;
|
||||||
for (i=0; i < MAX_ITEMGROUP; i++) {
|
for (i=0; i < MAX_ITEMGROUP; i++) {
|
||||||
if (itemgrouphealrate[i])
|
if (!itemgrouphealrate[i])
|
||||||
continue;
|
continue;
|
||||||
for (j=0; j < itemgroup_db[i].qty; j++) {
|
for (j=0; j < itemgroup_db[i].qty; j++) {
|
||||||
if (itemgroup_db[i].nameid[j] == itemid)
|
if (itemgroup_db[i].nameid[j] == itemid)
|
||||||
|
@ -2579,7 +2579,8 @@ static int npc_parse_mapflag (char *w1, char *w2, char *w3, char *w4)
|
|||||||
else if (strcmpi(w3,"pvp")==0) {
|
else if (strcmpi(w3,"pvp")==0) {
|
||||||
map[m].flag.pvp=state;
|
map[m].flag.pvp=state;
|
||||||
if (state) {
|
if (state) {
|
||||||
map[m].flag.gvg=0;
|
if (map[m].flag.gvg || map[m].flag.gvg_dungeon || map[m].flag.gvg_castle)
|
||||||
|
ShowWarning("You can't set PvP and GvG flags for the same map! Removing GvG flags from %s\n", map[m].name);
|
||||||
map[m].flag.gvg=0;
|
map[m].flag.gvg=0;
|
||||||
map[m].flag.gvg_dungeon=0;
|
map[m].flag.gvg_dungeon=0;
|
||||||
map[m].flag.gvg_castle=0;
|
map[m].flag.gvg_castle=0;
|
||||||
@ -2626,7 +2627,11 @@ static int npc_parse_mapflag (char *w1, char *w2, char *w3, char *w4)
|
|||||||
}
|
}
|
||||||
else if (strcmpi(w3,"gvg")==0) {
|
else if (strcmpi(w3,"gvg")==0) {
|
||||||
map[m].flag.gvg=state;
|
map[m].flag.gvg=state;
|
||||||
if (state) map[m].flag.pvp=0;
|
if (state && map[m].flag.pvp)
|
||||||
|
{
|
||||||
|
map[m].flag.pvp=0;
|
||||||
|
ShowWarning("You can't set PvP and GvG flags for the same map! Removing PvP flag from %s\n", map[m].name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (strcmpi(w3,"gvg_noparty")==0) {
|
else if (strcmpi(w3,"gvg_noparty")==0) {
|
||||||
map[m].flag.gvg_noparty=state;
|
map[m].flag.gvg_noparty=state;
|
||||||
|
@ -4805,7 +4805,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SA_MAGICROD:
|
case SA_MAGICROD:
|
||||||
clif_skill_nodamage(src,bl,skillid,-1,0); //Skill animation with no yell.
|
//It activates silently, no use animation.
|
||||||
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv));
|
sc_start(bl,type,100,skilllv,skill_get_time(skillid,skilllv));
|
||||||
break;
|
break;
|
||||||
case SA_AUTOSPELL:
|
case SA_AUTOSPELL:
|
||||||
@ -8164,12 +8164,6 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CH_SOULCOLLECT:
|
|
||||||
if(sd->spiritball >= 5) {
|
|
||||||
clif_skill_fail(sd,skill,0,0);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case MO_FINGEROFFENSIVE: //指弾
|
case MO_FINGEROFFENSIVE: //指弾
|
||||||
case GS_FLING:
|
case GS_FLING:
|
||||||
if (sd->spiritball > 0 && sd->spiritball < spiritball) {
|
if (sd->spiritball > 0 && sd->spiritball < spiritball) {
|
||||||
|
@ -189,7 +189,7 @@ void initChangeTables(void) {
|
|||||||
add_sc(AS_VENOMDUST, SC_POISON);
|
add_sc(AS_VENOMDUST, SC_POISON);
|
||||||
add_sc(AS_SPLASHER, SC_SPLASHER);
|
add_sc(AS_SPLASHER, SC_SPLASHER);
|
||||||
set_sc(NV_TRICKDEAD, SC_TRICKDEAD, SI_TRICKDEAD, SCB_REGEN);
|
set_sc(NV_TRICKDEAD, SC_TRICKDEAD, SI_TRICKDEAD, SCB_REGEN);
|
||||||
set_sc(SM_AUTOBERSERK, SC_AUTOBERSERK, SI_STEELBODY, SCB_NONE);
|
set_sc(SM_AUTOBERSERK, SC_AUTOBERSERK, SI_AUTOBERSERK, SCB_NONE);
|
||||||
add_sc(TF_SPRINKLESAND, SC_BLIND);
|
add_sc(TF_SPRINKLESAND, SC_BLIND);
|
||||||
add_sc(TF_THROWSTONE, SC_STUN);
|
add_sc(TF_THROWSTONE, SC_STUN);
|
||||||
set_sc(MC_LOUD, SC_LOUD, SI_LOUD, SCB_STR);
|
set_sc(MC_LOUD, SC_LOUD, SI_LOUD, SCB_STR);
|
||||||
@ -238,7 +238,7 @@ void initChangeTables(void) {
|
|||||||
set_sc(CR_PROVIDENCE, SC_PROVIDENCE, SI_PROVIDENCE, SCB_PC);
|
set_sc(CR_PROVIDENCE, SC_PROVIDENCE, SI_PROVIDENCE, SCB_PC);
|
||||||
set_sc(CR_DEFENDER, SC_DEFENDER, SI_DEFENDER, SCB_SPEED|SCB_ASPD);
|
set_sc(CR_DEFENDER, SC_DEFENDER, SI_DEFENDER, SCB_SPEED|SCB_ASPD);
|
||||||
set_sc(CR_SPEARQUICKEN, SC_SPEARQUICKEN, SI_SPEARQUICKEN, SCB_ASPD);
|
set_sc(CR_SPEARQUICKEN, SC_SPEARQUICKEN, SI_SPEARQUICKEN, SCB_ASPD);
|
||||||
set_sc(MO_STEELBODY, SC_STEELBODY, SI_STEELBODY, SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED);
|
set_sc(MO_STEELBODY, SC_STEELBODY, SI_BLANK, SCB_DEF|SCB_MDEF|SCB_ASPD|SCB_SPEED);
|
||||||
add_sc(MO_BLADESTOP, SC_BLADESTOP_WAIT);
|
add_sc(MO_BLADESTOP, SC_BLADESTOP_WAIT);
|
||||||
add_sc(MO_BLADESTOP, SC_BLADESTOP);
|
add_sc(MO_BLADESTOP, SC_BLADESTOP);
|
||||||
set_sc(MO_EXPLOSIONSPIRITS, SC_EXPLOSIONSPIRITS, SI_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN);
|
set_sc(MO_EXPLOSIONSPIRITS, SC_EXPLOSIONSPIRITS, SI_EXPLOSIONSPIRITS, SCB_CRI|SCB_REGEN);
|
||||||
|
@ -353,7 +353,7 @@ enum {
|
|||||||
SI_BLEEDING = 124,
|
SI_BLEEDING = 124,
|
||||||
SI_JOINTBEAT = 125,
|
SI_JOINTBEAT = 125,
|
||||||
SI_BABY = 130,
|
SI_BABY = 130,
|
||||||
SI_STEELBODY = 132,
|
SI_AUTOBERSERK = 132,
|
||||||
SI_RUN = 133,
|
SI_RUN = 133,
|
||||||
SI_BUMP = 134,
|
SI_BUMP = 134,
|
||||||
SI_READYSTORM = 135,
|
SI_READYSTORM = 135,
|
||||||
|
@ -1787,28 +1787,12 @@ int unit_free(struct block_list *bl, int clrtype) {
|
|||||||
}
|
}
|
||||||
if (battle_config.debuff_on_logout&2)
|
if (battle_config.debuff_on_logout&2)
|
||||||
{ //Food items are removed on logout.
|
{ //Food items are removed on logout.
|
||||||
if(sd->sc.data[SC_STRFOOD].timer!=-1)
|
if(sd->sc.data[SC_MAXIMIZEPOWER].timer!=-1)
|
||||||
status_change_end(bl,SC_STRFOOD,-1);
|
status_change_end(bl,SC_MAXIMIZEPOWER,-1);
|
||||||
if(sd->sc.data[SC_AGIFOOD].timer!=-1)
|
if(sd->sc.data[SC_MAXOVERTHRUST].timer!=-1)
|
||||||
status_change_end(bl,SC_AGIFOOD,-1);
|
status_change_end(bl,SC_MAXOVERTHRUST,-1);
|
||||||
if(sd->sc.data[SC_VITFOOD].timer!=-1)
|
if(sd->sc.data[SC_STEELBODY].timer!=-1)
|
||||||
status_change_end(bl,SC_VITFOOD,-1);
|
status_change_end(bl,SC_STEELBODY,-1);
|
||||||
if(sd->sc.data[SC_INTFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_INTFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_DEXFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_DEXFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_LUKFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_LUKFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_HITFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_HITFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_FLEEFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_FLEEFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_BATKFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_BATKFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_WATKFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_WATKFOOD,-1);
|
|
||||||
if(sd->sc.data[SC_MATKFOOD].timer!=-1)
|
|
||||||
status_change_end(bl,SC_MATKFOOD,-1);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (sd->followtimer != -1)
|
if (sd->followtimer != -1)
|
||||||
|
@ -8,7 +8,6 @@
|
|||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#else
|
#else
|
||||||
#define __USE_XOPEN
|
#define __USE_XOPEN
|
||||||
#include <features.h>
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <poll.h>
|
#include <poll.h>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user