- NPC_MAGICALATTACK now starts a state similar to Sacrificial Ritual, in the sense that every normal attack afterwards becomes a Magical Attack. The skill duration is 15 secs.

- Corrected some trade-cancel calls in trade_traderequest.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10346 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
skotlex 2007-04-24 19:33:37 +00:00
parent 605f912e22
commit 9c8f2cbb52
8 changed files with 22 additions and 6 deletions

View File

@ -4,6 +4,9 @@ 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.
2007/04/25
* NPC_MAGICALATTACK now starts a state similar to Sacrificial Ritual, in
the sense that every normal attack afterwards becomes a Magical Attack. The
skill duration is 15 secs. [Skotlex]
* Added missing Rachel quest map [Playtester]
* Ganbantein now deletes individual skill cells instead of the whole skill
in the area it is casted.

View File

@ -323,6 +323,9 @@
//-- NPC_SLEEPATTACK
182,0,0,0,0,8000:10000:12000:14000:16000:18000:20000:22000:24000:26000
//-- NPC_MAGICALATTACK
192,0,0,0,15000,0
//-- NPC_KEEPING
201,0,0,0,60000:70000:80000:90000:100000:110000:120000:130000:140000:150000,0

View File

@ -2899,8 +2899,12 @@ int battle_weapon_attack(struct block_list* src, struct block_list* target, unsi
if (rand()%100 < triple_rate)
return skill_attack(BF_WEAPON,src,src,target,MO_TRIPLEATTACK,damage,tick,0);
}
else if (sc && sc->data[SC_SACRIFICE].timer != -1)
return skill_attack(BF_WEAPON,src,src,target,PA_SACRIFICE,sc->data[SC_SACRIFICE].val1,tick,0);
else if (sc) {
if (sc->data[SC_SACRIFICE].timer != -1)
return skill_attack(BF_WEAPON,src,src,target,PA_SACRIFICE,sc->data[SC_SACRIFICE].val1,tick,0);
if (sc->data[SC_MAGICALATTACK].timer != -1)
return skill_attack(BF_MAGIC,src,src,target,NPC_MAGICALATTACK,sc->data[SC_MAGICALATTACK].val1,tick,0);
}
wd = battle_calc_weapon_attack(src, target, 0, 0, flag);

View File

@ -53,7 +53,7 @@ struct Clif_Config {
struct packet_db packet_db[MAX_PACKET_VER + 1][MAX_PACKET_DB + 1];
//Converts item type in case of pet eggs.
#define itemtype(a) (a == 7)?4:a
#define itemtype(a) (a == IT_PETEGG)?IT_WEAPON:a
#define WBUFPOS(p,pos,x,y,dir) \
do { \

View File

@ -3133,7 +3133,6 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
case AL_HOLYLIGHT:
case WZ_JUPITEL:
case NPC_DARKTHUNDER:
case NPC_MAGICALATTACK:
case PR_ASPERSIO:
case MG_FROSTDIVER:
case WZ_SIGHTBLASTER:
@ -3144,6 +3143,11 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, int
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
break;
case NPC_MAGICALATTACK:
skill_attack(BF_MAGIC,src,src,bl,skillid,skilllv,tick,flag);
sc_start(src,SkillStatusChangeTable(skillid),100,skilllv,skill_get_time(skillid,skilllv));
break;
case HVAN_CAPRICE: //[blackhole89]
{
int ran=rand()%4;

View File

@ -212,6 +212,7 @@ void initChangeTables(void) {
add_sc(NPC_PETRIFYATTACK, SC_STONE);
add_sc(NPC_CURSEATTACK, SC_CURSE);
add_sc(NPC_SLEEPATTACK, SC_SLEEP);
add_sc(NPC_MAGICALATTACK, SC_MAGICALATTACK);
set_sc(NPC_KEEPING, SC_KEEPING, SI_BLANK, SCB_DEF);
add_sc(NPC_DARKBLESSING, SC_COMA);
set_sc(NPC_BARRIER, SC_BARRIER, SI_BLANK, SCB_MDEF|SCB_DEF);

View File

@ -259,6 +259,7 @@ enum {
SC_INCDEXRATE,
SC_JAILED,
SC_ENCHANTARMS,
SC_MAGICALATTACK,
SC_MAX, //Automatically updated max, used in for's and at startup to check we are within bounds. [Skotlex]
};
int SkillStatusChangeTable(int skill);

View File

@ -54,7 +54,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
}
if ((target_sd->trade_partner != 0) || (sd->trade_partner != 0)) {
trade_tradecancel(sd); // person is in another trade
clif_tradestart(sd, 2); // person is in another trade
return;
}
@ -62,7 +62,7 @@ void trade_traderequest(struct map_session_data *sd, struct map_session_data *ta
if ( pc_can_give_items(level) || pc_can_give_items(pc_isGM(target_sd)) ) //check if both GMs are allowed to trade
{
clif_displaymessage(sd->fd, msg_txt(246));
trade_tradecancel(sd); // GM is not allowed to trade
clif_tradestart(sd, 2); // GM is not allowed to trade
return;
}