From 264bf4fd6dfb501643cf9178e5471e9e0e55152b Mon Sep 17 00:00:00 2001 From: Fate Date: Sun, 20 Sep 2009 00:30:15 +0000 Subject: Initial support for skill pools --- src/map/skill.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 7 deletions(-) (limited to 'src/map/skill.c') diff --git a/src/map/skill.c b/src/map/skill.c index 22b8dcf..9e7d1d3 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -1569,6 +1569,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds if(MRAND(100) < rate) skill_addtimerskill(src,tick + 800,bl->id,0,0,skillid,skilllv,0,flag); } +/* if(damage > 0 && dmg.flag&BF_SKILL && bl->type==BL_PC && pc_checkskill((struct map_session_data *)bl,RG_PLAGIARISM)){ struct map_session_data *tsd = (struct map_session_data *)bl; nullpo_retr(0, tsd); @@ -1589,6 +1590,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds clif_skillinfoblock(tsd); } } +*/ /* ダメージがあるなら追加効果判定 */ if(bl->prev != NULL){ struct map_session_data *sd = (struct map_session_data *)bl; @@ -9879,6 +9881,31 @@ int skill_unit_move_unit_group( struct skill_unit_group *group, int m,int dx,int * 初期化系 */ +static int +scan_stat(char *statname) +{ + if (!strcmpi(statname, "str")) + return SP_STR; + if (!strcmpi(statname, "dex")) + return SP_DEX; + if (!strcmpi(statname, "agi")) + return SP_AGI; + if (!strcmpi(statname, "vit")) + return SP_VIT; + if (!strcmpi(statname, "int")) + return SP_INT; + if (!strcmpi(statname, "luk")) + return SP_LUK; + if (!strcmpi(statname, "none")) + return 0; + + else fprintf(stderr, "Unknown stat `%s'\n", statname); + return 0; +} + +extern void +skill_pool_register(int id); // [Fate] Remember that a certain skill ID belongs to a pool skill + /*========================================== * スキル関係ファイル読み込み * skill_db.txt スキルデータ @@ -9902,14 +9929,16 @@ int skill_readdb(void) char *split[50], *split2[MAX_SKILL_LEVEL]; if(line[0]=='/' && line[1]=='/') continue; - for(j=0,p=line;j<14 && p;j++){ + for(j=0,p=line;j<18 && p;j++){ while (*p == '\t' || *p == ' ') p++; split[j]=p; p=strchr(p,','); if(p) *p++=0; } - if(split[13]==NULL || j<14) + if(split[17]==NULL || j<18) { + fprintf(stderr, "Incomplete skill db data online (%d entries)\n", j); continue; + } i=atoi(split[0]); if(i<0 || i>MAX_SKILL_DB) @@ -9927,10 +9956,11 @@ int skill_readdb(void) skill_db[i].inf=atoi(split[3]); skill_db[i].pl=atoi(split[4]); skill_db[i].nk=atoi(split[5]); - skill_db[i].max=atoi(split[6]); + skill_db[i].max_raise=atoi(split[6]); + skill_db[i].max=atoi(split[7]); memset(split2,0,sizeof(split2)); - for(j=0,p=split[7];j