Partial fix for bugreport:4337.
A new field was added to homun_skill_tree.txt containing the minimum level of intimacy to unlock a skill. This is used in some skills where the homunculus has to reach a amount of 910 of intimacy. The default value is 0 and it should only affect evolved homunculus. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16954 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
1c7e4e1e0f
commit
87696fb2f1
@ -1,7 +1,7 @@
|
||||
// Homunculus Skill Tree Database
|
||||
//
|
||||
// Structure of Database:
|
||||
// Class,SkillID,MaxLv[,JobLevel],Prerequisite SkillID1,Prerequisite SkillLv1,PrereqSkillID2,PrereqSkillLv2,PrereqSkillID3,PrereqSkillLv3,PrereqSkillID4,PrereqSkillLv4,PrereqSkillID5,PrereqSkillLv5 //SKILLNAME#Skill Name#
|
||||
// Class,SkillID,MaxLv[,JobLevel],Prerequisite SkillID1,Prerequisite SkillLv1,PrereqSkillID2,PrereqSkillLv2,PrereqSkillID3,PrereqSkillLv3,PrereqSkillID4,PrereqSkillLv4,PrereqSkillID5,PrereqSkillLv5,IntimacyLvReq //SKILLNAME#Skill Name#
|
||||
//
|
||||
// 01. Class Homunculus ID.
|
||||
// 02. SkillID Skill ID of the homunuculus skill.
|
||||
@ -10,109 +10,110 @@
|
||||
// 05. Prerequisite SkillID Homunculus skill required for the skill to become available.
|
||||
// 06. Prerequisite SkillLv Level of the required homunculus skill.
|
||||
// ...
|
||||
// 15. IntimacyLvReq Minimum level of intimacy to unlock skill.
|
||||
//
|
||||
// NOTE: MAX_PC_SKILL_REQUIRE (typically 5) ID/Lv pairs must be specified.
|
||||
|
||||
//Lif
|
||||
6001,8001,5,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6001,8002,5,8001,3,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6001,8003,5,8001,5,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6001,8001,5,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6001,8002,5,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6001,8003,5,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
//Amistr
|
||||
6002,8005,5,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6002,8006,5,8005,5,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6002,8007,5,8006,3,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6002,8005,5,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6002,8006,5,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6002,8007,5,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
//Filir
|
||||
6003,8009,5,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6003,8010,5,8009,3,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6003,8011,5,8010,3,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6003,8009,5,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6003,8010,5,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6003,8011,5,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
//Vanilmirth
|
||||
6004,8013,5,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6004,8014,5,8013,3,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6004,8015,5,8013,5,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6004,8013,5,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6004,8014,5,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6004,8015,5,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
//Lif2
|
||||
6005,8001,5,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6005,8002,5,8001,3,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6005,8003,5,8001,5,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6005,8001,5,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6005,8002,5,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6005,8003,5,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
//Amistr2
|
||||
6006,8005,5,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6006,8006,5,8005,5,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6006,8007,5,8006,3,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6006,8005,5,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6006,8006,5,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6006,8007,5,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
//Filir2
|
||||
6007,8009,5,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6007,8010,5,8009,3,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6007,8011,5,8010,3,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6007,8009,5,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6007,8010,5,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6007,8011,5,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
//Vanilmirth2
|
||||
6008,8013,5,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6008,8014,5,8013,3,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6008,8015,5,8013,5,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6008,8013,5,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6008,8014,5,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6008,8015,5,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
//Lif_H
|
||||
6009,8001,5,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6009,8002,5,8001,3,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6009,8003,5,8001,5,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6009,8004,3,0,0,0,0,0,0,0,0,0,0 //HLIF_CHANGE
|
||||
6009,8001,5,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6009,8002,5,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6009,8003,5,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6009,8004,3,0,0,0,0,0,0,0,0,0,0,910 //HLIF_CHANGE
|
||||
//Amistr_H
|
||||
6010,8005,5,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6010,8006,5,8005,5,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6010,8007,5,8006,3,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6010,8008,3,0,0,0,0,0,0,0,0,0,0 //HAMI_BLOODLUST
|
||||
6010,8005,5,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6010,8006,5,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6010,8007,5,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6010,8008,3,0,0,0,0,0,0,0,0,0,0,910 //HAMI_BLOODLUST
|
||||
//Filir_H
|
||||
6011,8009,5,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6011,8010,5,8009,3,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6011,8011,5,8010,3,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6011,8012,3,0,0,0,0,0,0,0,0,0,0 //HFLI_SBR44
|
||||
6011,8009,5,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6011,8010,5,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6011,8011,5,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6011,8012,3,0,0,0,0,0,0,0,0,0,0,910 //HFLI_SBR44
|
||||
//Vanilmirth_H
|
||||
6012,8013,5,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6012,8014,5,8013,3,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6012,8015,5,8013,5,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6012,8016,3,0,0,0,0,0,0,0,0,0,0 //HVAN_EXPLOSION
|
||||
6012,8013,5,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6012,8014,5,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6012,8015,5,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6012,8016,3,0,0,0,0,0,0,0,0,0,0,910 //HVAN_EXPLOSION
|
||||
//Lif2_H
|
||||
6013,8001,5,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6013,8002,5,8001,3,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6013,8003,5,8001,5,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6013,8004,3,0,0,0,0,0,0,0,0,0,0 //HLIF_CHANGE
|
||||
6013,8001,5,0,0,0,0,0,0,0,0,0,0,0 //HLIF_HEAL
|
||||
6013,8002,5,8001,3,0,0,0,0,0,0,0,0,0 //HLIF_AVOID
|
||||
6013,8003,5,8001,5,0,0,0,0,0,0,0,0,0 //HLIF_BRAIN
|
||||
6013,8004,3,0,0,0,0,0,0,0,0,0,0,910 //HLIF_CHANGE
|
||||
//Amistr2_H
|
||||
6014,8005,5,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6014,8006,5,8005,5,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6014,8007,5,8006,3,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6014,8008,3,0,0,0,0,0,0,0,0,0,0 //HAMI_BLOODLUST
|
||||
6014,8005,5,0,0,0,0,0,0,0,0,0,0,0 //HAMI_CASTLE
|
||||
6014,8006,5,8005,5,0,0,0,0,0,0,0,0,0 //HAMI_DEFENCE
|
||||
6014,8007,5,8006,3,0,0,0,0,0,0,0,0,0 //HAMI_SKIN
|
||||
6014,8008,3,0,0,0,0,0,0,0,0,0,0,910 //HAMI_BLOODLUST
|
||||
//Filir2_H
|
||||
6015,8009,5,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6015,8010,5,8009,3,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6015,8011,5,8010,3,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6015,8012,3,0,0,0,0,0,0,0,0,0,0 //HFLI_SBR44
|
||||
6015,8009,5,0,0,0,0,0,0,0,0,0,0,0 //HFLI_MOON
|
||||
6015,8010,5,8009,3,0,0,0,0,0,0,0,0,0 //HFLI_FLEET
|
||||
6015,8011,5,8010,3,0,0,0,0,0,0,0,0,0 //HFLI_SPEED
|
||||
6015,8012,3,0,0,0,0,0,0,0,0,0,0,910 //HFLI_SBR44
|
||||
//Vanilmirth2_H
|
||||
6016,8013,5,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6016,8014,5,8013,3,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6016,8015,5,8013,5,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6016,8016,3,0,0,0,0,0,0,0,0,0,0 //HVAN_EXPLOSION
|
||||
6016,8013,5,0,0,0,0,0,0,0,0,0,0,0 //HVAN_CAPRICE
|
||||
6016,8014,5,8013,3,0,0,0,0,0,0,0,0,0 //HVAN_CHAOTIC
|
||||
6016,8015,5,8013,5,0,0,0,0,0,0,0,0,0 //HVAN_INSTRUCT
|
||||
6016,8016,3,0,0,0,0,0,0,0,0,0,0,910 //HVAN_EXPLOSION
|
||||
//Eira
|
||||
6048,8022,5,0,0,0,0,0,0,0,0,0,0 //MH_LIGHT_OF_REGENE
|
||||
6048,8023,5,0,0,0,0,0,0,0,0,0,0 //MH_OVERED_BOOST
|
||||
6048,8024,5,0,0,0,0,0,0,0,0,0,0 //MH_ERASER_CUTTER
|
||||
6048,8025,5,0,0,0,0,0,0,0,0,0,0 //MH_XENO_SLASHER
|
||||
6048,8026,5,0,0,0,0,0,0,0,0,0,0 //MH_SILENT_BREEZE
|
||||
6048,8022,5,0,0,0,0,0,0,0,0,0,0,0 //MH_LIGHT_OF_REGENE
|
||||
6048,8023,5,0,0,0,0,0,0,0,0,0,0,0 //MH_OVERED_BOOST
|
||||
6048,8024,5,0,0,0,0,0,0,0,0,0,0,0 //MH_ERASER_CUTTER
|
||||
6048,8025,5,0,0,0,0,0,0,0,0,0,0,0 //MH_XENO_SLASHER
|
||||
6048,8026,5,0,0,0,0,0,0,0,0,0,0,0 //MH_SILENT_BREEZE
|
||||
//Bayeri
|
||||
6049,8031,5,0,0,0,0,0,0,0,0,0,0 //MH_STAHL_HORN
|
||||
6049,8032,5,0,0,0,0,0,0,0,0,0,0 //MH_GOLDENE_FERSE
|
||||
6049,8033,5,0,0,0,0,0,0,0,0,0,0 //MH_STEINWAND
|
||||
6049,8034,5,0,0,0,0,0,0,0,0,0,0 //MH_HEILIGE_STANGE
|
||||
6049,8035,5,0,0,0,0,0,0,0,0,0,0 //MH_ANGRIFFS_MODUS
|
||||
6049,8031,5,0,0,0,0,0,0,0,0,0,0,0 //MH_STAHL_HORN
|
||||
6049,8032,5,0,0,0,0,0,0,0,0,0,0,0 //MH_GOLDENE_FERSE
|
||||
6049,8033,5,0,0,0,0,0,0,0,0,0,0,0 //MH_STEINWAND
|
||||
6049,8034,5,0,0,0,0,0,0,0,0,0,0,0 //MH_HEILIGE_STANGE
|
||||
6049,8035,5,0,0,0,0,0,0,0,0,0,0,0 //MH_ANGRIFFS_MODUS
|
||||
//Sera
|
||||
6050,8018,5,0,0,0,0,0,0,0,0,0,0 //MH_SUMMON_LEGION
|
||||
6050,8019,5,0,0,0,0,0,0,0,0,0,0 //MH_NEEDLE_OF_PARALYZE
|
||||
6050,8020,5,0,0,0,0,0,0,0,0,0,0 //MH_POISON_MIST
|
||||
6050,8021,5,0,0,0,0,0,0,0,0,0,0 //MH_PAIN_KILLER
|
||||
6050,8018,5,0,0,0,0,0,0,0,0,0,0,0 //MH_SUMMON_LEGION
|
||||
6050,8019,5,0,0,0,0,0,0,0,0,0,0,0 //MH_NEEDLE_OF_PARALYZE
|
||||
6050,8020,5,0,0,0,0,0,0,0,0,0,0,0 //MH_POISON_MIST
|
||||
6050,8021,5,0,0,0,0,0,0,0,0,0,0,0 //MH_PAIN_KILLER
|
||||
//Dieter
|
||||
6051,8039,5,0,0,0,0,0,0,0,0,0,0 //MH_MAGMA_FLOW
|
||||
6051,8040,5,0,0,0,0,0,0,0,0,0,0 //MH_GRANITIC_ARMOR
|
||||
6051,8041,5,0,0,0,0,0,0,0,0,0,0 //MH_LAVA_SLIDE
|
||||
6051,8042,5,0,0,0,0,0,0,0,0,0,0 //MH_PYROCLASTIC
|
||||
6051,8043,5,0,0,0,0,0,0,0,0,0,0 //MH_VOLCANIC_ASH
|
||||
6051,8039,5,0,0,0,0,0,0,0,0,0,0,0 //MH_MAGMA_FLOW
|
||||
6051,8040,5,0,0,0,0,0,0,0,0,0,0,0 //MH_GRANITIC_ARMOR
|
||||
6051,8041,5,0,0,0,0,0,0,0,0,0,0,0 //MH_LAVA_SLIDE
|
||||
6051,8042,5,0,0,0,0,0,0,0,0,0,0,0 //MH_PYROCLASTIC
|
||||
6051,8043,5,0,0,0,0,0,0,0,0,0,0,0 //MH_VOLCANIC_ASH
|
||||
//Elanor
|
||||
6052,8027,1,0,0,0,0,0,0,0,0,0,0 //MH_STYLE_CHANGE
|
||||
6052,8028,5,0,0,0,0,0,0,0,0,0,0 //MH_SONIC_CRAW
|
||||
6052,8029,5,0,0,0,0,0,0,0,0,0,0 //MH_SILVERVEIN_RUSH
|
||||
6052,8030,5,0,0,0,0,0,0,0,0,0,0 //MH_MIDNIGHT_FRENZY
|
||||
6052,8036,5,0,0,0,0,0,0,0,0,0,0 //MH_TINDER_BREAKER
|
||||
6052,8037,5,0,0,0,0,0,0,0,0,0,0 //MH_CBC
|
||||
6052,8038,5,0,0,0,0,0,0,0,0,0,0 //MH_EQC
|
||||
6052,8027,1,0,0,0,0,0,0,0,0,0,0,0 //MH_STYLE_CHANGE
|
||||
6052,8028,5,0,0,0,0,0,0,0,0,0,0,0 //MH_SONIC_CRAW
|
||||
6052,8029,5,0,0,0,0,0,0,0,0,0,0,0 //MH_SILVERVEIN_RUSH
|
||||
6052,8030,5,0,0,0,0,0,0,0,0,0,0,0 //MH_MIDNIGHT_FRENZY
|
||||
6052,8036,5,0,0,0,0,0,0,0,0,0,0,0 //MH_TINDER_BREAKER
|
||||
6052,8037,5,0,0,0,0,0,0,0,0,0,0,0 //MH_CBC
|
||||
6052,8038,5,0,0,0,0,0,0,0,0,0,0,0 //MH_EQC
|
@ -1478,6 +1478,9 @@ void clif_hominfo(struct map_session_data *sd, struct homun_data *hd, int flag)
|
||||
void clif_send_homdata(struct map_session_data *sd, int state, int param)
|
||||
{ //[orn]
|
||||
int fd = sd->fd;
|
||||
|
||||
if ( (state == SP_INTIMATE) && (param >= 910) && (sd->hd->homunculus.class_ == sd->hd->homunculusDB->evo_class) )
|
||||
merc_hom_calc_skilltree(sd->hd, 0);
|
||||
|
||||
WFIFOHEAD(fd, packet_len(0x230));
|
||||
WFIFOW(fd,0)=0x230;
|
||||
|
@ -40,7 +40,7 @@
|
||||
#include <math.h>
|
||||
|
||||
struct s_homunculus_db homunculus_db[MAX_HOMUNCULUS_CLASS]; //[orn]
|
||||
struct skill_tree_entry hskill_tree[MAX_HOMUNCULUS_CLASS][MAX_SKILL_TREE];
|
||||
struct homun_skill_tree_entry hskill_tree[MAX_HOMUNCULUS_CLASS][MAX_SKILL_TREE];
|
||||
|
||||
static int merc_hom_hungry(int tid, unsigned int tick, int id, intptr_t data);
|
||||
|
||||
@ -194,7 +194,7 @@ int merc_hom_delete(struct homun_data *hd, int emote)
|
||||
return unit_remove_map(&hd->bl,CLR_OUTSIGHT);
|
||||
}
|
||||
|
||||
int merc_hom_calc_skilltree(struct homun_data *hd)
|
||||
int merc_hom_calc_skilltree(struct homun_data *hd, int flag_evolve)
|
||||
{
|
||||
int i, id = 0;
|
||||
int j, f = 1;
|
||||
@ -229,6 +229,9 @@ int merc_hom_calc_skilltree(struct homun_data *hd)
|
||||
for( i = 0; i < MAX_SKILL_TREE && ( id = hskill_tree[c][i].id ) > 0; i++ ) {
|
||||
if( hd->homunculus.hskill[ id - HM_SKILLBASE ].id )
|
||||
continue; //Skill already known.
|
||||
j = ( flag_evolve ) ? 10 : hd->homunculus.intimacy;
|
||||
if( j < hskill_tree[c][i].intimacylv )
|
||||
continue;
|
||||
if(!battle_config.skillfree) {
|
||||
for( j = 0; j < MAX_PC_SKILL_REQUIRE; j++ ) {
|
||||
if( hskill_tree[c][i].need[j].id &&
|
||||
@ -368,7 +371,7 @@ int merc_hom_change_class(struct homun_data *hd, short class_)
|
||||
hd->homunculusDB = &homunculus_db[i];
|
||||
hd->homunculus.class_ = class_;
|
||||
status_set_viewdata(&hd->bl, class_);
|
||||
merc_hom_calc_skilltree(hd);
|
||||
merc_hom_calc_skilltree(hd, 1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -1164,7 +1167,7 @@ int read_homunculusdb(void)
|
||||
}
|
||||
|
||||
static bool read_homunculus_skilldb_sub(char* split[], int columns, int current)
|
||||
{// <hom class>,<skill id>,<max level>[,<job level>],<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>
|
||||
{// <hom class>,<skill id>,<max level>[,<job level>],<req id1>,<req lv1>,<req id2>,<req lv2>,<req id3>,<req lv3>,<req id4>,<req lv4>,<req id5>,<req lv5>,<intimacy lv req>
|
||||
int k, classid;
|
||||
int j;
|
||||
int minJobLevelPresent = 0;
|
||||
@ -1199,6 +1202,8 @@ static bool read_homunculus_skilldb_sub(char* split[], int columns, int current)
|
||||
hskill_tree[classid][j].need[k].id = atoi(split[3+k*2+minJobLevelPresent]);
|
||||
hskill_tree[classid][j].need[k].lv = atoi(split[3+k*2+minJobLevelPresent+1]);
|
||||
}
|
||||
|
||||
hskill_tree[classid][j].intimacylv = atoi(split[13+minJobLevelPresent]);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1206,7 +1211,7 @@ static bool read_homunculus_skilldb_sub(char* split[], int columns, int current)
|
||||
int read_homunculus_skilldb(void)
|
||||
{
|
||||
memset(hskill_tree,0,sizeof(hskill_tree));
|
||||
sv_readdb(db_path, "homun_skill_tree.txt", ',', 13, 14, -1, &read_homunculus_skilldb_sub);
|
||||
sv_readdb(db_path, "homun_skill_tree.txt", ',', 13, 15, -1, &read_homunculus_skilldb_sub);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -49,6 +49,18 @@ struct homun_data {
|
||||
int spiritball; //for homun S [lighta]
|
||||
};
|
||||
|
||||
#define MAX_HOM_SKILL_REQUIRE 5
|
||||
struct homun_skill_tree_entry {
|
||||
short id;
|
||||
unsigned char max;
|
||||
unsigned char joblv;
|
||||
short intimacylv;
|
||||
struct {
|
||||
short id;
|
||||
unsigned char lv;
|
||||
} need[MAX_HOM_SKILL_REQUIRE];
|
||||
}; // Celest
|
||||
|
||||
#define HOM_EVO 0x100 //256
|
||||
#define HOM_S 0x200 //512
|
||||
|
||||
@ -84,7 +96,7 @@ int hom_class2mapid(int hom_class);
|
||||
void merc_damage(struct homun_data *hd);
|
||||
int merc_hom_dead(struct homun_data *hd);
|
||||
void merc_hom_skillup(struct homun_data *hd,int skillnum);
|
||||
int merc_hom_calc_skilltree(struct homun_data *hd);
|
||||
int merc_hom_calc_skilltree(struct homun_data *hd, int flag_evolve);
|
||||
int merc_hom_checkskill(struct homun_data *hd,int skill_id);
|
||||
int merc_hom_gainexp(struct homun_data *hd,int exp);
|
||||
int merc_hom_levelup(struct homun_data *hd);
|
||||
|
@ -3175,7 +3175,7 @@ int status_calc_homunculus_(struct homun_data *hd, bool first)
|
||||
status->max_hp = hom->max_hp ;
|
||||
status->max_sp = hom->max_sp ;
|
||||
|
||||
merc_hom_calc_skilltree(hd);
|
||||
merc_hom_calc_skilltree(hd, 0);
|
||||
|
||||
if((skill=merc_hom_checkskill(hd,HAMI_SKIN)) > 0)
|
||||
status->def += skill * 4;
|
||||
|
Loading…
x
Reference in New Issue
Block a user