diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/map/clif.c | 38 | ||||
-rw-r--r-- | src/map/party.c | 10 | ||||
-rw-r--r-- | src/map/pc.c | 14 | ||||
-rw-r--r-- | src/map/skill.c | 4 | ||||
-rw-r--r-- | src/map/skill.h | 9 |
5 files changed, 39 insertions, 36 deletions
diff --git a/src/map/clif.c b/src/map/clif.c index 401f6cc..6457e9b 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -3741,7 +3741,7 @@ int clif_skillinfo(struct map_session_data *sd,int skillid,int type,int range) } else WFIFOW(fd,12)= range; memset(WFIFOP(fd,14),0,24); - if(!(skill_get_inf2(id)&0x01) || battle_config.quest_skill_learn == 1 || (battle_config.gm_allskill > 0 && pc_isGM(sd) >= battle_config.gm_allskill) ) + if(skill_get_inf2(id)&0x01) WFIFOB(fd,38)= (sd->status.skill[skillid].lv < skill_get_max(id) && sd->status.skill[skillid].flag ==0 )? 1:0; else WFIFOB(fd,38) = 0; @@ -3765,8 +3765,7 @@ int clif_skillinfoblock(struct map_session_data *sd) WFIFOW(fd,0)=0x10f; for ( i = c = 0; i < MAX_SKILL; i++){ if( (id=sd->status.skill[i].id)!=0 - && (sd->tmw_version >= 1 // [Fate] Version 1 and later don't crash because of bad skill IDs anymore - || !QUEST_SKILL(i))){ // [Fate] Hack: Prevent killing the client + && (sd->tmw_version >= 1)){ // [Fate] Version 1 and later don't crash because of bad skill IDs anymore WFIFOW(fd,len ) = id; WFIFOW(fd,len+2) = skill_get_inf(id); WFIFOW(fd,len+4) = 0; @@ -3777,7 +3776,7 @@ int clif_skillinfoblock(struct map_session_data *sd) range = battle_get_range(&sd->bl) - (range + 1); WFIFOW(fd,len+10)= range; memset(WFIFOP(fd,len+12),0,24); - if(!(skill_get_inf2(id)&0x01) || battle_config.quest_skill_learn == 1 || (battle_config.gm_allskill > 0 && pc_isGM(sd) >= battle_config.gm_allskill) ) + if(skill_get_inf2(id)&0x01) WFIFOB(fd,len+36)= (sd->status.skill[i].lv < skill_get_max(id) && sd->status.skill[i].flag ==0 )? 1:0; else WFIFOB(fd,len+36) = 0; @@ -6648,7 +6647,7 @@ void clif_parse_Emotion(int fd, struct map_session_data *sd) { nullpo_retv(sd); - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 2) { + if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_EMOTE) >= 1) { WBUFW(buf,0) = 0xc0; WBUFL(buf,2) = sd->bl.id; WBUFB(buf,6) = RFIFOB(fd,2); @@ -6715,15 +6714,12 @@ void clif_parse_ActionRequest(int fd, struct map_session_data *sd) { pc_attack(sd, target_id, action_type != 0); break; case 0x02: // sitdown - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd, NV_BASIC) >= 3) { - if (tmw_CheckSitSpam(sd)) - break; - pc_stop_walking(sd, 1); - skill_gangsterparadise(sd, 1); // �M�����O�X�^�[�p���_�C�X�ݒ� - pc_setsit(sd); - clif_sitting(fd, sd); - } else - clif_skill_fail(sd, 1, 0, 2); + if (tmw_CheckSitSpam(sd)) + break; + pc_stop_walking(sd, 1); + skill_gangsterparadise(sd, 1); // �M�����O�X�^�[�p���_�C�X�ݒ� + pc_setsit(sd); + clif_sitting(fd, sd); break; case 0x03: // standup skill_gangsterparadise(sd, 0); // �M�����O�X�^�[�p���_�C�X���� @@ -7072,10 +7068,7 @@ void clif_parse_NpcSellListSend(int fd,struct map_session_data *sd) */ void clif_parse_CreateChatRoom(int fd,struct map_session_data *sd) { - if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 4){ - chat_createchat(sd,RFIFOW(fd,4),RFIFOB(fd,6),RFIFOP(fd,7),RFIFOP(fd,15),RFIFOW(fd,2)-15); - } else - clif_skill_fail(sd,1,0,3); + chat_createchat(sd,RFIFOW(fd,4),RFIFOB(fd,6),RFIFOP(fd,7),RFIFOP(fd,15),RFIFOW(fd,2)-15); } /*========================================== @@ -7131,7 +7124,7 @@ void clif_parse_TradeRequest(int fd,struct map_session_data *sd) { nullpo_retv(sd); - if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 1){ + if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_TRADE) >= 1){ if (tmw_CheckTradeSpam(sd)) return; trade_traderequest(sd,RFIFOL(sd->fd,2)); @@ -7664,7 +7657,7 @@ void clif_parse_CloseKafra(int fd, struct map_session_data *sd) { *------------------------------------------ */ void clif_parse_CreateParty(int fd, struct map_session_data *sd) { - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 7) { + if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_PARTY) >= 2) { party_create(sd,RFIFOP(fd,2)); } else clif_skill_fail(sd,1,0,4); @@ -7675,7 +7668,7 @@ void clif_parse_CreateParty(int fd, struct map_session_data *sd) { *------------------------------------------ */ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) { - if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 7){ + if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_PARTY) >= 2){ party_create(sd, RFIFOP(fd,2)); } else clif_skill_fail(sd, 1, 0, 4); @@ -7686,6 +7679,7 @@ void clif_parse_CreateParty2(int fd, struct map_session_data *sd) { *------------------------------------------ */ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) { + printf("Party Invite!\n"); party_invite(sd, RFIFOL(fd,2)); } @@ -7694,7 +7688,7 @@ void clif_parse_PartyInvite(int fd, struct map_session_data *sd) { *------------------------------------------ */ void clif_parse_ReplyPartyInvite(int fd,struct map_session_data *sd) { - if(battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_BASIC) >= 5){ + if (battle_config.basic_skill_check == 0 || pc_checkskill(sd,NV_PARTY) >= 1){ party_reply_invite(sd,RFIFOL(fd,2),RFIFOL(fd,6)); } else { party_reply_invite(sd,RFIFOL(fd,2),-1); diff --git a/src/map/party.c b/src/map/party.c index feacc25..62b30d8 100644 --- a/src/map/party.c +++ b/src/map/party.c @@ -14,6 +14,7 @@ #include "battle.h" #include "intif.h" #include "clif.h" +#include "skill.h" #ifdef MEMWATCH #include "memwatch.h" @@ -203,23 +204,28 @@ int party_invite(struct map_session_data *sd,int account_id) if(tsd==NULL || p==NULL) return 0; + + printf("\tA\n"); + if(!battle_config.invite_request_check) { - if (tsd->guild_invite>0 || tsd->trade_partner) { // 肪ǂ + if (tsd->guild_invite>0 || tsd->trade_partner || tsd->npc_id || tsd->npc_shopid || pc_checkskill(tsd,NV_PARTY) < 1) { clif_party_inviteack(sd,tsd->status.name,0); return 0; } } + printf("\tB\n"); if( tsd->status.party_id>0 || tsd->party_invite>0 ){ // ̏mF clif_party_inviteack(sd,tsd->status.name,0); return 0; } + printf("\tC\n"); for(i=0;i<MAX_PARTY;i++){ // AJEgmF if(p->member[i].account_id==account_id){ clif_party_inviteack(sd,tsd->status.name,0); return 0; } } - + printf("\tD\n"); tsd->party_invite=sd->status.party_id; tsd->party_invite_account=sd->status.account_id; diff --git a/src/map/pc.c b/src/map/pc.c index acec322..7d083d1 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -881,7 +881,7 @@ static int pc_calc_skillpoint(struct map_session_data* sd) for(i=1;i<MAX_SKILL;i++){ if( (skill = pc_checkskill(sd,i)) > 0) { - if(!(skill_get_inf2(i)&0x01) || battle_config.quest_skill_learn) { + if(skill_get_inf2(i)&0x01) { if(!sd->status.skill[i].flag) skill_point += skill; else if(sd->status.skill[i].flag > 2 && sd->status.skill[i].flag != 13) { @@ -997,6 +997,7 @@ int pc_calc_skilltree(struct map_session_data *sd) } } + /*Comment this out for now, as we manage skills differently for(i=0;i<MAX_SKILL;i++) if (i < TMW_MAGIC || i > TMW_MAGIC_END){ // [Fate] This hack gets TMW magic working and persisted without bothering about the skill tree. if (sd->status.skill[i].flag != 13) sd->status.skill[i].id=0; @@ -1005,6 +1006,7 @@ int pc_calc_skilltree(struct map_session_data *sd) sd->status.skill[i].flag=0; // flag��0�ɂ��Ă��� } } + */ if (battle_config.gm_allskill > 0 && pc_isGM(sd) >= battle_config.gm_allskill){ // �S�ẴX�L�� @@ -4761,8 +4763,8 @@ int pc_skillup(struct map_session_data *sd,int skill_num) if( sd->status.skill_point>0 && sd->status.skill[skill_num].id!=0 && - sd->status.skill[skill_num].lv < skill_get_max(skill_num) - && (skill_num < TMW_MAGIC || skill_num > TMW_MAGIC_END)) // [Fate] Hack: Prevent exploit for raising magic levels + sd->status.skill[skill_num].lv < skill_get_max(skill_num) && + skill_get_inf2(skill_num) & 0x01) { sd->status.skill[skill_num].lv++; sd->status.skill_point--; @@ -4811,7 +4813,7 @@ int pc_allskillup(struct map_session_data *sd) } else { for(i=0;(id=skill_tree[s][c][i].id)>0;i++){ - if(sd->status.skill[id].id==0 && (!(skill_get_inf2(id)&0x01) || battle_config.quest_skill_learn) ) + if(sd->status.skill[id].id==0 && skill_get_inf2(id)&0x01 ) sd->status.skill[id].lv=skill_get_max(id); } } @@ -4969,8 +4971,8 @@ int pc_resetskill(struct map_session_data* sd) for(i=1;i<MAX_SKILL;i++){ if( (skill = pc_checkskill(sd,i)) > 0) { - if(!(skill_get_inf2(i)&0x01) || battle_config.quest_skill_learn) { - if(!sd->status.skill[i].flag && !QUEST_SKILL(i)) + if(skill_get_inf2(i)&0x01) { + if(!sd->status.skill[i].flag) sd->status.skill_point += skill; else if(sd->status.skill[i].flag > 2 && sd->status.skill[i].flag != 13) { sd->status.skill_point += (sd->status.skill[i].flag - 2); diff --git a/src/map/skill.c b/src/map/skill.c index 778acea..22b8dcf 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -524,7 +524,9 @@ struct skill_name_db skill_names[] = { { NPC_TRANSFORMATION, "TRANSFORMATION", "NPC_TRANSFORMATION" } , { NPC_WATERATTACK, "WATERATTACK", "NPC_WATERATTACK" } , { NPC_WINDATTACK, "WINDATTACK", "NPC_WINDATTACK" } , - { NV_BASIC, "BASIC", "Basic_Skill" } , + { NV_EMOTE, "EMOTE", "Emote_Skill" } , + { NV_TRADE, "TRADE", "Trade_Skill" } , + { NV_PARTY, "PARTY", "Party_Skill" } , { NV_FIRSTAID, "FIRSTAID", "First Aid" } , { NV_TRICKDEAD, "TRICKDEAD", "Play_Dead" } , { PA_GOSPEL, "GOSPEL", "Gospel" } , diff --git a/src/map/skill.h b/src/map/skill.h index fdbe799..d0486f5 100644 --- a/src/map/skill.h +++ b/src/map/skill.h @@ -10,9 +10,6 @@ #define MAX_SKILL_ARROW_DB 150 #define MAX_SKILL_ABRA_DB 350 -#define QUEST_SKILL(i) ((i) >= TMW_MAGIC && (i) < TMW_MAGIC_END) -// [Fate] A `quest skill' is a skill handled via quests, i.e., one that can't be modified via skill points. - // XLf[^x[X struct skill_db { int range[MAX_SKILL_LEVEL],hit,inf,pl,nk,max; @@ -323,7 +320,9 @@ enum { // struct map_session_data status_change̔ԍe[u extern int SkillStatusChangeTable[]; enum { - NV_BASIC = 1, + NV_EMOTE = 1, + NV_TRADE, + NV_PARTY, SM_SWORD, SM_TWOHAND, @@ -677,7 +676,7 @@ enum { DC_FORTUNEKISS, DC_SERVICEFORYOU, - NPC_SELFDESTRUCTION2 = 331, + NPC_SELFDESTRUCTION2 = 333, WE_MALE = 334, WE_FEMALE, |