* Follow-up r16835: Some cleanup.
* Updated Hunting Missions script to v1.2b, which adds experience multipliers to config (custom\quests\hunting_missions.txt) git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16839 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
8b074051ea
commit
9fcdb56b2e
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
// 0-410: reserved for GM commands
|
// 0-410: reserved for GM commands
|
||||||
// 500-900 reserved for others
|
// 500-900 reserved for others
|
||||||
// 900-1300 @atcommand
|
// 900-1300: @atcommand
|
||||||
|
|
||||||
// To disable a string (%s) field, make it's max length 0:
|
// To disable a string (%s) field, make it's max length 0:
|
||||||
// eg:
|
// eg:
|
||||||
@ -611,20 +611,20 @@
|
|||||||
662: You're too close to a NPC, you must be at least %d cells away from any NPC.
|
662: You're too close to a NPC, you must be at least %d cells away from any NPC.
|
||||||
663: Duel: Can't use this item in duel.
|
663: Duel: Can't use this item in duel.
|
||||||
664: You cannot use this command when dead.
|
664: You cannot use this command when dead.
|
||||||
665: Can't create chat rooms in this Area.
|
665: Can't create chat rooms in this area.
|
||||||
666: Pets are not allowed in Guild Wars.
|
666: Pets are not allowed in Guild Wars.
|
||||||
667: You're not dead.
|
667: You're not dead.
|
||||||
668: Your actual memo positions are:
|
668: Your actual memo positions are:
|
||||||
669: You broke target's weapon
|
669: You broke the target's weapon.
|
||||||
670: You can't leave battleground guilds.
|
670: You can't leave battleground guilds.
|
||||||
671: Friend already exists.
|
671: Friend already exists.
|
||||||
672: Name not found in list.
|
672: Name not found in list.
|
||||||
673: This action can't be performed at the moment. Please try again later.
|
673: This action can't be performed at the moment. Please try again later.
|
||||||
674: Friend removed
|
674: Friend removed.
|
||||||
675: Cannot send mails too fast!!.
|
675: Cannot send mails too fast!!
|
||||||
676: Alliances cannot be made during Guild Wars!
|
676: Alliances cannot be made during Guild Wars!
|
||||||
677: Alliances cannot be broken during Guild Wars!
|
677: Alliances cannot be broken during Guild Wars!
|
||||||
678: You no longer are the Guild Master.
|
678: You are no longer the Guild Master.
|
||||||
679: You have become the Guild Master!
|
679: You have become the Guild Master!
|
||||||
680: You have been recovered!
|
680: You have been recovered!
|
||||||
//681-899 free
|
//681-899 free
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
//===== By: ==================================================
|
//===== By: ==================================================
|
||||||
//= Euphy
|
//= Euphy
|
||||||
//===== Current Version: =====================================
|
//===== Current Version: =====================================
|
||||||
//= 1.2a
|
//= 1.2b
|
||||||
//===== Compatible With: =====================================
|
//===== Compatible With: =====================================
|
||||||
//= rAthena SVN
|
//= rAthena SVN
|
||||||
//===== Description: =========================================
|
//===== Description: =========================================
|
||||||
@ -124,8 +124,8 @@ Mission_Status:
|
|||||||
for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
|
for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
|
||||||
set .@j[.@i], getd("Mission"+.@i);
|
set .@j[.@i], getd("Mission"+.@i);
|
||||||
set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]);
|
set .@j[.Quests], .@j[.Quests]+strmobinfo(3,.@j[.@i]);
|
||||||
set .@j[.Quests+1], .@j[.Quests+1]+strmobinfo(6,.@j[.@i]);
|
set .@j[.Quests+1], .@j[.Quests+1]+(strmobinfo(6,.@j[.@i])/(getbattleflag("base_exp_rate")/100)*.Modifier[0]);
|
||||||
set .@j[.Quests+2], .@j[.Quests+2]+strmobinfo(7,.@j[.@i]);
|
set .@j[.Quests+2], .@j[.Quests+2]+(strmobinfo(7,.@j[.@i])/(getbattleflag("job_exp_rate")/100)*.Modifier[1]);
|
||||||
mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000";
|
mes " > "+Chk(getd("Mission"+.@i+"_"),#Mission_Count)+strmobinfo(1,.@j[.@i])+" ("+getd("Mission"+.@i+"_")+"/"+#Mission_Count+")^000000";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ Mission_Status:
|
|||||||
set .@Mission_Points, 3+(.@j[.Quests]/.Quests/6);
|
set .@Mission_Points, 3+(.@j[.Quests]/.Quests/6);
|
||||||
set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5;
|
set .@Base_Exp, #Mission_Count*.@j[.Quests+1]/5;
|
||||||
set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5;
|
set .@Job_Exp, #Mission_Count*.@j[.Quests+2]/5;
|
||||||
set .@Zeny, #Mission_Count*.Quests*.@j[.@i]*.Multiplier;
|
set .@Zeny, #Mission_Count*.Quests*.@j[.@i]*.Modifier[2];
|
||||||
|
|
||||||
next;
|
next;
|
||||||
mes "[Hunting Missions]";
|
mes "[Hunting Missions]";
|
||||||
@ -152,7 +152,8 @@ Mission_Status:
|
|||||||
specialeffect2 EF_ANGEL;
|
specialeffect2 EF_ANGEL;
|
||||||
specialeffect2 EF_TRUESIGHT;
|
specialeffect2 EF_TRUESIGHT;
|
||||||
set #Mission_Points, #Mission_Points+.@Mission_Points;
|
set #Mission_Points, #Mission_Points+.@Mission_Points;
|
||||||
getexp .@Base_Exp,.@Job_Exp;
|
set BaseExp, BaseExp+.@Base_Exp;
|
||||||
|
set JobExp, JobExp+.@Job_Exp;
|
||||||
set Zeny, Zeny+.@Zeny;
|
set Zeny, Zeny+.@Zeny;
|
||||||
for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
|
for(set .@i,0; .@i<.Quests; set .@i,.@i+1) {
|
||||||
setd "Mission"+.@i,0;
|
setd "Mission"+.@i,0;
|
||||||
@ -259,11 +260,12 @@ OnNPCKillEvent:
|
|||||||
|
|
||||||
OnInit:
|
OnInit:
|
||||||
set .Delay,12; // Quest delay, in hours (0 to disable).
|
set .Delay,12; // Quest delay, in hours (0 to disable).
|
||||||
set .Quests,4; // Number of subquests per quest (increases rewards).
|
set .Quests,4; // Number of subquests per mission (increases rewards).
|
||||||
set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
|
set .Party,3; // Party options: 0 (exclude party kills), 1 (include party kills), 2 (same map only), 3 (screen area only)
|
||||||
set .Multiplier,60; // Multiplier for Zeny reward calculation.
|
|
||||||
setarray .Count[0], // Min and max monsters per subquest (increases rewards).
|
setarray .Count[0], // Min and max monsters per subquest (increases rewards).
|
||||||
40,70;
|
40,70;
|
||||||
|
setarray .Modifier[0], // Multipliers for Base Exp, Job Exp, and Zeny rewards.
|
||||||
|
getbattleflag("base_exp_rate")/100,getbattleflag("job_exp_rate")/100,60;
|
||||||
setarray .Shop[0], // Reward items: <ID>,<point cost> (about 10~20 points per hunt).
|
setarray .Shop[0], // Reward items: <ID>,<point cost> (about 10~20 points per hunt).
|
||||||
512,1,513,1,514,1,538,5,539,5,558,10,561,10;
|
512,1,513,1,514,1,538,5,539,5,558,10,561,10;
|
||||||
|
|
||||||
|
@ -393,7 +393,7 @@ int guild_create(struct map_session_data *sd, const char *name)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Whether or not to create guilde
|
//Whether or not to create guild
|
||||||
int guild_created(int account_id,int guild_id)
|
int guild_created(int account_id,int guild_id)
|
||||||
{
|
{
|
||||||
struct map_session_data *sd=map_id2sd(account_id);
|
struct map_session_data *sd=map_id2sd(account_id);
|
||||||
@ -744,7 +744,7 @@ int guild_member_added(int guild_id,int account_id,int char_id,int flag)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if all ok adding player to guild
|
//if all ok add player to guild
|
||||||
sd->status.guild_id = g->guild_id;
|
sd->status.guild_id = g->guild_id;
|
||||||
sd->guild_emblem_id = g->emblem_id;
|
sd->guild_emblem_id = g->emblem_id;
|
||||||
//Packets which were sent in the previous 'guild_sent' implementation.
|
//Packets which were sent in the previous 'guild_sent' implementation.
|
||||||
@ -1033,7 +1033,7 @@ int guild_change_position(int guild_id,int idx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Notification of member has changed his guild tiltle
|
* Notification of member has changed his guild title
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_position_changed(int guild_id,int idx,struct guild_position *p)
|
int guild_position_changed(int guild_id,int idx,struct guild_position *p)
|
||||||
{
|
{
|
||||||
@ -1184,7 +1184,7 @@ static DBData create_expcache(DBKey key, va_list args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* return Taxed experience from player sd to guild
|
* Return taxed experience from player sd to guild
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
|
unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
|
||||||
{
|
{
|
||||||
@ -1218,7 +1218,7 @@ unsigned int guild_payexp(struct map_session_data *sd,unsigned int exp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Player sd pay a tribue experience exp to his guild
|
* Player sd pay a tribute experience to his guild
|
||||||
* Add this experience to guild exp
|
* Add this experience to guild exp
|
||||||
* [Celest]
|
* [Celest]
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
@ -1314,10 +1314,10 @@ void guild_guildaura_refresh(struct map_session_data *sd, int skill_num, int ski
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Count number of relation the guild have
|
* Count number of relations the guild has.
|
||||||
* flag :
|
* Flag:
|
||||||
* 0 = allied
|
* 0 = allied
|
||||||
* 1 = ennemy
|
* 1 = enemy
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_get_alliance_count(struct guild *g,int flag)
|
int guild_get_alliance_count(struct guild *g,int flag)
|
||||||
{
|
{
|
||||||
@ -1343,11 +1343,11 @@ void guild_block_skill(struct map_session_data *sd, int time)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Check relation between guild_id1 and guild_id2
|
* Check relation between guild_id1 and guild_id2.
|
||||||
* flag :
|
* Flag:
|
||||||
* 0 = allied
|
* 0 = allied
|
||||||
* 1 = ennemy
|
* 1 = enemy
|
||||||
* return true if yes
|
* Returns true if yes.
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_check_alliance(int guild_id1, int guild_id2, int flag)
|
int guild_check_alliance(int guild_id1, int guild_id2, int flag)
|
||||||
{
|
{
|
||||||
@ -1363,7 +1363,7 @@ int guild_check_alliance(int guild_id1, int guild_id2, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Player sd, asking player tsd an alliance between there 2 guild
|
* Player sd, asking player tsd an alliance between their 2 guilds
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
|
int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
|
||||||
{
|
{
|
||||||
@ -1421,7 +1421,7 @@ int guild_reqalliance(struct map_session_data *sd,struct map_session_data *tsd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Player sd, awsser to player tsd (account_id) for an alliance request
|
* Player sd, answer to player tsd (account_id) for an alliance request
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
|
int guild_reply_reqalliance(struct map_session_data *sd,int account_id,int flag)
|
||||||
{
|
{
|
||||||
@ -1498,7 +1498,7 @@ int guild_delalliance(struct map_session_data *sd,int guild_id,int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Player sd, asking player tsd a formal ennemy relation between there 2 guild
|
* Player sd, asking player tsd a formal enemy relation between their 2 guilds
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
|
int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
|
||||||
{
|
{
|
||||||
@ -1541,7 +1541,7 @@ int guild_opposition(struct map_session_data *sd,struct map_session_data *tsd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*====================================================
|
/*====================================================
|
||||||
* Notification of a relationship between 2 guild
|
* Notification of a relationship between 2 guilds
|
||||||
*---------------------------------------------------*/
|
*---------------------------------------------------*/
|
||||||
int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag,const char *name1,const char *name2)
|
int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id2,int flag,const char *name1,const char *name2)
|
||||||
{
|
{
|
||||||
@ -1604,7 +1604,7 @@ int guild_allianceack(int guild_id1,int guild_id2,int account_id1,int account_id
|
|||||||
if ((flag & 0x0f) == 0) { // alliance notification
|
if ((flag & 0x0f) == 0) { // alliance notification
|
||||||
if( sd[1]!=NULL )
|
if( sd[1]!=NULL )
|
||||||
clif_guild_allianceack(sd[1],2);
|
clif_guild_allianceack(sd[1],2);
|
||||||
} else if ((flag & 0x0f) == 1) { // ennemy notification
|
} else if ((flag & 0x0f) == 1) { // enemy notification
|
||||||
if( sd[0]!=NULL )
|
if( sd[0]!=NULL )
|
||||||
clif_guild_oppositionack(sd[0],0);
|
clif_guild_oppositionack(sd[0],0);
|
||||||
}
|
}
|
||||||
@ -1923,7 +1923,7 @@ void guild_castle_reconnect(int castle_id, int index, int value)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loadcastle data then invoque OnAgitInit* on last
|
// Load castle data then invoke OnAgitInit* on last
|
||||||
int guild_castledataloadack(int len, struct guild_castle *gc)
|
int guild_castledataloadack(int len, struct guild_castle *gc)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -136,7 +136,7 @@ int itemdb_searchname_array(struct item_data** data, int size, const char *str)
|
|||||||
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Return a random item id from group. (take in account % chance giving/tot group)
|
* Return a random item id from group. (takes into account % chance giving/tot group)
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int itemdb_searchrandomid(int group)
|
int itemdb_searchrandomid(int group)
|
||||||
{
|
{
|
||||||
@ -586,7 +586,7 @@ static void itemdb_read_itemgroup(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Read item forbiden by mapflag (can't equip item)
|
* Read item forbidden by mapflag (can't equip item)
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static bool itemdb_read_noequip(char* str[], int columns, int current)
|
static bool itemdb_read_noequip(char* str[], int columns, int current)
|
||||||
{// <nameid>,<mode>
|
{// <nameid>,<mode>
|
||||||
|
@ -229,7 +229,7 @@ int map_freeblock_unlock (void)
|
|||||||
return block_free_lock;
|
return block_free_lock;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Timer fonction to check if there some remaining lock and remove them if so.
|
// Timer function to check if there some remaining lock and remove them if so.
|
||||||
// Called each 1s
|
// Called each 1s
|
||||||
int map_freeblock_timer(int tid, unsigned int tick, int id, intptr_t data)
|
int map_freeblock_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||||
{
|
{
|
||||||
@ -1314,7 +1314,7 @@ int map_get_new_object_id(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Timered fonction to clear the floor (remove remaining item)
|
* Timered function to clear the floor (remove remaining item)
|
||||||
* Called each flooritem_lifetime ms
|
* Called each flooritem_lifetime ms
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data)
|
int map_clearflooritem_timer(int tid, unsigned int tick, int id, intptr_t data)
|
||||||
|
@ -2834,7 +2834,7 @@ int mob_warpslave(struct block_list *bl, int range)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Count slave sub, curently chking if mob master is the given id
|
* Counts slave sub, curently checking if mob master is the given ID.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_countslave_sub(struct block_list *bl,va_list ap)
|
int mob_countslave_sub(struct block_list *bl,va_list ap)
|
||||||
{
|
{
|
||||||
@ -2849,7 +2849,7 @@ int mob_countslave_sub(struct block_list *bl,va_list ap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Cout how many slave a mob got on map
|
* Counts the number of slaves a mob has on the map.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_countslave(struct block_list *bl)
|
int mob_countslave(struct block_list *bl)
|
||||||
{
|
{
|
||||||
@ -2955,8 +2955,8 @@ int mob_summonslave(struct mob_data *md2,int *value,int amount,int skill_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* MOBskill lookup (get skillindex trough skillid)
|
* MOBskill lookup (get skillindex through skillid)
|
||||||
* return -1 if not found
|
* Returns -1 if not found.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int mob_skillid2skillidx(int class_,int skillid)
|
int mob_skillid2skillidx(int class_,int skillid)
|
||||||
{
|
{
|
||||||
|
@ -138,7 +138,7 @@ int npc_ontouch2_event(struct map_session_data *sd, struct npc_data *nd)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* sub fonction of npc_enable, Run OnTouch event when enabled
|
* Sub-function of npc_enable, runs OnTouch event when enabled
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int npc_enable_sub(struct block_list *bl, va_list ap)
|
int npc_enable_sub(struct block_list *bl, va_list ap)
|
||||||
{
|
{
|
||||||
@ -206,7 +206,7 @@ int npc_enable(const char* name, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* NPC lookup (get npc_data trough npcname)
|
* NPC lookup (get npc_data through npcname)
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
struct npc_data* npc_name2id(const char* name)
|
struct npc_data* npc_name2id(const char* name)
|
||||||
{
|
{
|
||||||
@ -846,7 +846,7 @@ int npc_touch_areanpc_sub(struct block_list *bl, va_list ap)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Chk if sd is still touching his assigned npc.
|
* Chk if sd is still touching his assigned npc.
|
||||||
* if not then it unsets it and searches for another player in range
|
* If not, it unsets it and searches for another player in range.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap)
|
int npc_touchnext_areanpc(struct map_session_data* sd, bool leavemap)
|
||||||
{
|
{
|
||||||
@ -1062,10 +1062,8 @@ int npc_check_areanpc(int flag, int m, int x, int y, int range)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Chk if player not too far to acces the npc
|
* Chk if player not too far to access the npc.
|
||||||
* return
|
* Returns npc_data (success) or NULL (fail).
|
||||||
* npc_data : succes
|
|
||||||
* NULL : fail
|
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* bl)
|
struct npc_data* npc_checknear(struct map_session_data* sd, struct block_list* bl)
|
||||||
{
|
{
|
||||||
@ -1134,7 +1132,7 @@ void run_tomb(struct map_session_data* sd, struct npc_data* nd)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* NPC 1st call when clicking on npc
|
* NPC 1st call when clicking on npc
|
||||||
* Do specific action for npc type (openshop, run scripts...)
|
* Do specific action for NPC type (openshop, run scripts...)
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int npc_click(struct map_session_data* sd, struct npc_data* nd)
|
int npc_click(struct map_session_data* sd, struct npc_data* nd)
|
||||||
{
|
{
|
||||||
@ -1753,8 +1751,8 @@ static int npc_unload_ev(DBKey key, DBData *data, va_list ap)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Chk if npc match src_id then unload
|
//Chk if npc matches src_id, then unload.
|
||||||
//Sub fonction used to found duplicate
|
//Sub-function used to find duplicates.
|
||||||
static int npc_unload_dup_sub(struct npc_data* nd, va_list args)
|
static int npc_unload_dup_sub(struct npc_data* nd, va_list args)
|
||||||
{
|
{
|
||||||
int src_id;
|
int src_id;
|
||||||
@ -1771,8 +1769,8 @@ void npc_unload_duplicates(struct npc_data* nd)
|
|||||||
map_foreachnpc(npc_unload_dup_sub,nd->bl.id);
|
map_foreachnpc(npc_unload_dup_sub,nd->bl.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Remove an npc from map and db
|
//Removes an npc from map and db.
|
||||||
//single is to free name (for duplicate one I suppose)
|
//Single is to free name (for duplicates).
|
||||||
int npc_unload(struct npc_data* nd, bool single) {
|
int npc_unload(struct npc_data* nd, bool single) {
|
||||||
nullpo_ret(nd);
|
nullpo_ret(nd);
|
||||||
|
|
||||||
@ -3350,7 +3348,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con
|
|||||||
return strchr(start,'\n');// continue
|
return strchr(start,'\n');// continue
|
||||||
}
|
}
|
||||||
|
|
||||||
//Read file and create npc/func/mapflag/monster.. accordly
|
//Read file and create npc/func/mapflag/monster... accordingly.
|
||||||
//@runOnInit should we exec OnInit when it's done ?
|
//@runOnInit should we exec OnInit when it's done ?
|
||||||
void npc_parsesrcfile(const char* filepath, bool runOnInit)
|
void npc_parsesrcfile(const char* filepath, bool runOnInit)
|
||||||
{
|
{
|
||||||
|
@ -45,7 +45,7 @@ static void push_heap_path(int *heap,struct tmp_path *tp,int index)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* heap update (helper function)
|
* heap update (helper function)
|
||||||
* move toward the root Because cost has decreased
|
* Move toward the root because cost has decreased.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static void update_heap_path(int *heap,struct tmp_path *tp,int index)
|
static void update_heap_path(int *heap,struct tmp_path *tp,int index)
|
||||||
{
|
{
|
||||||
|
96
src/map/pc.c
96
src/map/pc.c
@ -834,10 +834,8 @@ bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*=================================================
|
/*=================================================
|
||||||
* Can the player equip the item at index n in inventory
|
* Checks if the player can equip the item at index n in inventory.
|
||||||
* return
|
* Returns 0 (no) or 1 (yes).
|
||||||
* 0 = no
|
|
||||||
* 1 = yes
|
|
||||||
*------------------------------------------------*/
|
*------------------------------------------------*/
|
||||||
int pc_isequip(struct map_session_data *sd,int n)
|
int pc_isequip(struct map_session_data *sd,int n)
|
||||||
{
|
{
|
||||||
@ -1277,7 +1275,7 @@ static int pc_calc_skillpoint(struct map_session_data* sd)
|
|||||||
|
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Calculation of Skills lvls
|
* Calculation of skill level.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_calc_skilltree(struct map_session_data *sd)
|
int pc_calc_skilltree(struct map_session_data *sd)
|
||||||
{
|
{
|
||||||
@ -3744,8 +3742,8 @@ int pc_search_inventory(struct map_session_data *sd,int item_id)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Attempt tp add a new item in inventory
|
* Attempt to add a new item to inventory.
|
||||||
* return
|
* Return:
|
||||||
0 = success
|
0 = success
|
||||||
1 = invalid itemid not found or negative amount
|
1 = invalid itemid not found or negative amount
|
||||||
2 = overweight
|
2 = overweight
|
||||||
@ -3836,9 +3834,9 @@ int pc_additem(struct map_session_data *sd,struct item *item_data,int amount,e_l
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Remove an item at index n from inventory by amount
|
* Remove an item at index n from inventory by amount.
|
||||||
* return
|
* Return:
|
||||||
* 0 = succes
|
* 0 = success
|
||||||
* 1 = invalid itemid or negative amount
|
* 1 = invalid itemid or negative amount
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
|
int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reason, e_log_pick_type log_type)
|
||||||
@ -3867,8 +3865,8 @@ int pc_delitem(struct map_session_data *sd,int n,int amount,int type, short reas
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Attempt to drop an item
|
* Attempt to drop an item.
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail
|
* 0 = fail
|
||||||
* 1 = success
|
* 1 = success
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -3911,8 +3909,8 @@ int pc_dropitem(struct map_session_data *sd,int n,int amount)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Attempt to pickup an item
|
* Attempt to pick up an item.
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail
|
* 0 = fail
|
||||||
* 1 = success
|
* 1 = success
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -3982,8 +3980,8 @@ int pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Can we use the item ?
|
* Check if item is usable.
|
||||||
* Return
|
* Return:
|
||||||
* 0 = no
|
* 0 = no
|
||||||
* 1 = yes
|
* 1 = yes
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4147,8 +4145,8 @@ int pc_isUseitem(struct map_session_data *sd,int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Last checks et use item
|
* Last checks to use an item.
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail
|
* 0 = fail
|
||||||
* 1 = success
|
* 1 = success
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4273,8 +4271,8 @@ int pc_useitem(struct map_session_data *sd,int n)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Add item on cart for given index
|
* Add item on cart for given index.
|
||||||
* return
|
* Return:
|
||||||
* 0 = success
|
* 0 = success
|
||||||
* 1 = fail
|
* 1 = fail
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4342,8 +4340,8 @@ int pc_cart_additem(struct map_session_data *sd,struct item *item_data,int amoun
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Delete item on cart for given index
|
* Delete item on cart for given index.
|
||||||
* return
|
* Return:
|
||||||
* 0 = success
|
* 0 = success
|
||||||
* 1 = fail
|
* 1 = fail
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4372,8 +4370,8 @@ int pc_cart_delitem(struct map_session_data *sd,int n,int amount,int type,e_log_
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Transfert item from inventory to cart
|
* Transfer item from inventory to cart.
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail
|
* 0 = fail
|
||||||
* 1 = succes
|
* 1 = succes
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4398,8 +4396,8 @@ int pc_putitemtocart(struct map_session_data *sd,int idx,int amount)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Get number of item on cart
|
* Get number of item in cart.
|
||||||
* return
|
* Return:
|
||||||
-1 = itemid not found or no amount found
|
-1 = itemid not found or no amount found
|
||||||
x = remaining itemid on cart after get
|
x = remaining itemid on cart after get
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4417,8 +4415,8 @@ int pc_cartitem_amount(struct map_session_data* sd, int idx, int amount)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Retrieve an item at index idx from cart
|
* Retrieve an item at index idx from cart.
|
||||||
* return
|
* Return:
|
||||||
* 0 = player not found or (FIXME) succes (from pc_cart_delitem)
|
* 0 = player not found or (FIXME) succes (from pc_cart_delitem)
|
||||||
* 1 = failure
|
* 1 = failure
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4466,8 +4464,8 @@ int pc_show_steal(struct block_list *bl,va_list ap)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Stole an item from bl (mob)
|
* Steal an item from bl (mob).
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail
|
* 0 = fail
|
||||||
* 1 = succes
|
* 1 = succes
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -4753,10 +4751,10 @@ int pc_setpos(struct map_session_data* sd, unsigned short mapindex, int x, int y
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Warp player sd to random location on current map
|
* Warp player sd to random location on current map.
|
||||||
* may fail if no Cell walkable found (1000 attempt)
|
* May fail if no walkable cell found (1000 attempts).
|
||||||
* return
|
* Return:
|
||||||
* 0 = fail or FIXME succes (from pc_setpos)
|
* 0 = fail or FIXME success (from pc_setpos)
|
||||||
* x(1|2) = fail
|
* x(1|2) = fail
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_randomwarp(struct map_session_data *sd, clr_type type)
|
int pc_randomwarp(struct map_session_data *sd, clr_type type)
|
||||||
@ -4768,7 +4766,7 @@ int pc_randomwarp(struct map_session_data *sd, clr_type type)
|
|||||||
|
|
||||||
m=sd->bl.m;
|
m=sd->bl.m;
|
||||||
|
|
||||||
if (map[sd->bl.m].flag.noteleport) //Teleport forbiden
|
if (map[sd->bl.m].flag.noteleport) //Teleport forbidden
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
do{
|
do{
|
||||||
@ -5717,7 +5715,7 @@ unsigned int pc_maxjoblv(struct map_session_data *sd)
|
|||||||
* base level exp lookup.
|
* base level exp lookup.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
|
|
||||||
///How much bexp do player need for next level
|
//Base exp needed for next level.
|
||||||
unsigned int pc_nextbaseexp(struct map_session_data *sd)
|
unsigned int pc_nextbaseexp(struct map_session_data *sd)
|
||||||
{
|
{
|
||||||
nullpo_ret(sd);
|
nullpo_ret(sd);
|
||||||
@ -5728,7 +5726,7 @@ unsigned int pc_nextbaseexp(struct map_session_data *sd)
|
|||||||
return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-1];
|
return exp_table[pc_class2idx(sd->status.class_)][0][sd->status.base_level-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
///How much bexp do player need for this level
|
//Base exp needed for this level.
|
||||||
unsigned int pc_thisbaseexp(struct map_session_data *sd)
|
unsigned int pc_thisbaseexp(struct map_session_data *sd)
|
||||||
{
|
{
|
||||||
if(sd->status.base_level>pc_maxbaselv(sd) || sd->status.base_level<=1)
|
if(sd->status.base_level>pc_maxbaselv(sd) || sd->status.base_level<=1)
|
||||||
@ -5740,12 +5738,12 @@ unsigned int pc_thisbaseexp(struct map_session_data *sd)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* job level exp lookup
|
* job level exp lookup
|
||||||
* return
|
* Return:
|
||||||
* 0 = not found
|
* 0 = not found
|
||||||
* x = exp for level
|
* x = exp for level
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
|
|
||||||
///How much jexp do player need for next level
|
//Job exp needed for next level.
|
||||||
unsigned int pc_nextjobexp(struct map_session_data *sd)
|
unsigned int pc_nextjobexp(struct map_session_data *sd)
|
||||||
{
|
{
|
||||||
nullpo_ret(sd);
|
nullpo_ret(sd);
|
||||||
@ -5755,7 +5753,7 @@ unsigned int pc_nextjobexp(struct map_session_data *sd)
|
|||||||
return exp_table[pc_class2idx(sd->status.class_)][1][sd->status.job_level-1];
|
return exp_table[pc_class2idx(sd->status.class_)][1][sd->status.job_level-1];
|
||||||
}
|
}
|
||||||
|
|
||||||
///How much jexp do player need for next level
|
//Job exp needed for this level.
|
||||||
unsigned int pc_thisjobexp(struct map_session_data *sd)
|
unsigned int pc_thisjobexp(struct map_session_data *sd)
|
||||||
{
|
{
|
||||||
if(sd->status.job_level>pc_maxjoblv(sd) || sd->status.job_level<=1)
|
if(sd->status.job_level>pc_maxjoblv(sd) || sd->status.job_level<=1)
|
||||||
@ -6423,7 +6421,7 @@ void pc_damage(struct map_session_data *sd,struct block_list *src,unsigned int h
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Invoked when a player have negative current hp
|
* Invoked when a player has negative current hp
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_dead(struct map_session_data *sd,struct block_list *src)
|
int pc_dead(struct map_session_data *sd,struct block_list *src)
|
||||||
{
|
{
|
||||||
@ -6974,8 +6972,8 @@ void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int ty
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* HP/SP Recovery
|
* HP/SP Recovery
|
||||||
* Heal player hp nad/or sp linearly
|
* Heal player hp and/or sp linearly.
|
||||||
* Calculate bonus by status
|
* Calculate bonus by status.
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
|
int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp)
|
||||||
{
|
{
|
||||||
@ -7080,7 +7078,7 @@ int pc_percentheal(struct map_session_data *sd,int hp,int sp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Called when player changing job
|
* Called when player changes job
|
||||||
* Rewrote to make it tidider [Celest]
|
* Rewrote to make it tidider [Celest]
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_jobchange(struct map_session_data *sd,int job, int upper)
|
int pc_jobchange(struct map_session_data *sd,int job, int upper)
|
||||||
@ -8648,8 +8646,8 @@ int pc_calc_pvprank_timer(int tid, unsigned int tick, int id, intptr_t data)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Checking if sd is married
|
* Checking if sd is married
|
||||||
* Return
|
* Return:
|
||||||
* partner_id = yes,
|
* partner_id = yes
|
||||||
* 0 = no
|
* 0 = no
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
int pc_ismarried(struct map_session_data *sd)
|
int pc_ismarried(struct map_session_data *sd)
|
||||||
@ -8663,7 +8661,7 @@ int pc_ismarried(struct map_session_data *sd)
|
|||||||
}
|
}
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Marry player sd to player dstsd
|
* Marry player sd to player dstsd
|
||||||
* return
|
* Return:
|
||||||
* -1 = fail
|
* -1 = fail
|
||||||
* 0 = success
|
* 0 = success
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -8680,7 +8678,7 @@ int pc_marriage(struct map_session_data *sd,struct map_session_data *dstsd)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* Divorce sd from its partner
|
* Divorce sd from its partner
|
||||||
* return
|
* Return:
|
||||||
* -1 = fail
|
* -1 = fail
|
||||||
* 0 = success
|
* 0 = success
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
@ -9167,7 +9165,7 @@ int pc_split_atoui(char* str, unsigned int* val, char sep, int max)
|
|||||||
|
|
||||||
/*==========================================
|
/*==========================================
|
||||||
* sub DB reading.
|
* sub DB reading.
|
||||||
* fonction used to read skill_tree.txt
|
* Function used to read skill_tree.txt
|
||||||
*------------------------------------------*/
|
*------------------------------------------*/
|
||||||
static bool pc_readdb_skilltree(char* fields[], int columns, int current)
|
static bool pc_readdb_skilltree(char* fields[], int columns, int current)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user