diff options
author | Haru <haru@dotalux.com> | 2015-01-21 13:35:59 +0100 |
---|---|---|
committer | Haru <haru@dotalux.com> | 2015-01-23 03:53:38 +0100 |
commit | 5e4e0603799f170dcf985a57933110cd6ba3017a (patch) | |
tree | f334cbaf77b5cc54059c37f1a1b4463197682c5b | |
parent | 69c90e54ae1ee7374c59d65c91f0d20ce628ec9e (diff) | |
download | hercules-5e4e0603799f170dcf985a57933110cd6ba3017a.tar.gz hercules-5e4e0603799f170dcf985a57933110cd6ba3017a.tar.bz2 hercules-5e4e0603799f170dcf985a57933110cd6ba3017a.tar.xz hercules-5e4e0603799f170dcf985a57933110cd6ba3017a.zip |
Merged petskillattack and petskillattack2.
Existing custom scripts will need edits. In a nutshell:
- Existing calls to `petskillattack` should be changed to specify an
extra <number of attacks> argument (after <skill level>), set to 0.
- Existing calls to `petskillattack2` should be changed to
`petskillattack`, keeping the same arguments.
Signed-off-by: Haru <haru@dotalux.com>
-rw-r--r-- | db/pet_db.txt | 54 | ||||
-rw-r--r-- | db/pet_db2.txt | 14 | ||||
-rw-r--r-- | doc/script_commands.txt | 20 | ||||
-rw-r--r-- | src/map/script.c | 44 |
4 files changed, 50 insertions, 82 deletions
diff --git a/db/pet_db.txt b/db/pet_db.txt index bf7623c9b..a95154974 100644 --- a/db/pet_db.txt +++ b/db/pet_db.txt @@ -30,14 +30,12 @@ //In theory you can use any valid script, but it is run only once upon pet //loading, so it is recommended you use the specific pet scripts: -//petskillattack skillid, skilllv, rate, bonusrate +//petskillattack skillid, skilllv, hits, rate, bonusrate //Skill attack that triggers while the pet is attacking. Rate is the base //chance of execution per attack. Bonusrate is an additional success rate when -//intimacy reaches max. - -//petskillattack2 skillid, damage, hits, rate, bonusrate -//Same as petskillattack, but the damage and number of hits is fixed -//the damage specified is total, not per hit. +//intimacy reaches max. If hits is specified and different than 0, it will make +//the pet cast the skill with a fixed amount of damage inflicted and the +//specified number of hits. A value of zero uses the skill's defaults. //petskillsupport skillid, skilllv, delay, hp%, sp% //Casts a support skill when the health levels are below the specified hp% and @@ -50,8 +48,8 @@ //amount by which it is increased, duration signals how long the bonus lasts //delay is the time elapsed after the bonus ends and before it starts again. -//A single pet can have petloot, petskillbonus, petskillattack (or -//petskillattack2) and petskillsupport at the same time, but only one of each. +//A single pet can have petloot, petskillbonus, petskillattack and +//petskillsupport at the same time, but only one of each. 1002,PORING,Poring,619,9001,10013,531,80,60,50,100,250,20,2000,150,1,0,350,400,800,{ petloot 10; },{ bonus bLuk,2; bonus bCritical,1; } 1113,DROPS,Drops,620,9002,10013,508,80,60,40,100,250,20,1500,150,1,0,300,400,500,{ petloot 10; },{ bonus bHit,3; bonus bAtk,3; } @@ -60,40 +58,40 @@ 1049,PICKY,Picky,623,9005,10012,507,80,60,40,100,250,20,2000,150,1,0,500,600,50,{ petskillbonus bStr,3,10,50;},{ bonus bStr,1; bonus bAtk,5; } 1011,CHONCHON,ChonChon,624,9006,10002,537,80,60,30,100,250,20,1500,150,1,0,500,500,250,{ petskillbonus bAgi,4,10,50; },{ bonus bAgi,1; bonus bFlee,2; } 1042,STEEL_CHONCHON,Steel ChonChon,625,9007,10002,1002,80,60,20,100,250,20,1000,150,1,0,500,500,200,{ petskillbonus bAgiVit,4,20,40; },{ bonus bFlee,6; bonus bAgi,-1; } -1035,HUNTER_FLY,Hunter Fly,626,9008,10002,716,80,60,10,100,250,20,500,150,1,0,500,500,200,{ petskillattack2 "NPC_WINDATTACK",888,2,0,10; },{ bonus bFlee,-5; bonus bFlee2,2; } +1035,HUNTER_FLY,Hunter Fly,626,9008,10002,716,80,60,10,100,250,20,500,150,1,0,500,500,200,{ petskillattack "NPC_WINDATTACK",888,2,0,10; },{ bonus bFlee,-5; bonus bFlee2,2; } 1167,SAVAGE_BABE,Savage Babe,627,9009,10015,537,80,60,40,100,250,20,1500,150,0,0,500,500,200,{ petskillbonus bVit,4,10,50; },{ bonus bVit,1; bonus bMaxHP,50; } -1107,DESERT_WOLF_B,Baby Desert Wolf,628,9010,10003,537,80,60,40,100,250,20,1000,150,0,0,400,400,400,{ petskillattack "SM_PROVOKE",1,0,5;},{ bonus bInt,1; bonus bMaxSP,50; } +1107,DESERT_WOLF_B,Baby Desert Wolf,628,9010,10003,537,80,60,40,100,250,20,1000,150,0,0,400,400,400,{ petskillattack "SM_PROVOKE",1,0,0,5;},{ bonus bInt,1; bonus bMaxSP,50; } 1052,ROCKER,Rocker,629,9011,10014,537,80,60,30,100,250,20,1500,150,0,0,350,350,600,{ petskillbonus bAllStats,1,10,50; },{ bonus bHPrecovRate,5; bonus bMaxHP,25; } 1014,SPORE,Spore,630,9012,10017,537,80,60,30,100,250,20,1500,150,0,0,350,500,500,{ petrecovery SC_POISON,60; },{ bonus bHit,5; bonus bAtk,-2; } -1077,POISON_SPORE,Poison Spore,631,9013,10017,537,80,60,20,100,250,20,1000,150,0,0,600,200,400,{ petskillattack "NPC_POISON",20,0,10; },{ bonus bStr,1; bonus bInt,1; } +1077,POISON_SPORE,Poison Spore,631,9013,10017,537,80,60,20,100,250,20,1000,150,0,0,600,200,400,{ petskillattack "NPC_POISON",20,0,0,10; },{ bonus bStr,1; bonus bInt,1; } 1019,PECOPECO,PecoPeco,632,9014,10010,537,80,60,30,100,250,20,1000,150,1,0,400,500,800,{ petskillbonus bSpeedRate,25,20,20; },{ bonus bMaxHP,150; bonus bMaxSP,-10; } 1056,SMOKIE,Smokie,633,9015,10019,537,80,60,30,100,250,20,1000,150,1,0,600,600,100,{ petskillbonus bPerfectHide,1,3600,0; },{ bonus bAgi,1; bonus bFlee2,1; } 1057,YOYO,Yoyo,634,9016,10018,532,80,60,20,100,250,20,1000,150,1,0,300,800,400,{ petloot 20; },{ bonus bCritical,3; bonus bLuk,-1; } -1023,ORK_WARRIOR,Orc Warrior,635,9017,10009,537,80,60,20,100,250,20,500,150,1,0,600,200,300,{ petskillattack2 "NPC_PIERCINGATT",100,1,0,10; },{ bonus bAtk,10; bonus bDef,-3; } -1026,MUNAK,Munak,636,9018,10008,537,80,60,20,100,250,20,500,150,0,0,300,750,300,{ petskillattack2 "NPC_DARKNESSATTACK",444,1,0,10; },{ bonus bInt,1; bonus bDef,1; } -1110,DOKEBI,Dokebi,637,9019,10005,537,80,60,20,100,250,20,500,150,0,0,300,300,800,{ petskillattack "BS_HAMMERFALL",1,0,10; },{ bonus bMatkRate,1; bonus bAtkRate,-1; } +1023,ORK_WARRIOR,Orc Warrior,635,9017,10009,537,80,60,20,100,250,20,500,150,1,0,600,200,300,{ petskillattack "NPC_PIERCINGATT",100,1,0,10; },{ bonus bAtk,10; bonus bDef,-3; } +1026,MUNAK,Munak,636,9018,10008,537,80,60,20,100,250,20,500,150,0,0,300,750,300,{ petskillattack "NPC_DARKNESSATTACK",444,1,0,10; },{ bonus bInt,1; bonus bDef,1; } +1110,DOKEBI,Dokebi,637,9019,10005,537,80,60,20,100,250,20,500,150,0,0,300,300,800,{ petskillattack "BS_HAMMERFALL",1,0,0,10; },{ bonus bMatkRate,1; bonus bAtkRate,-1; } 1170,SOHEE,Sohee,638,9020,10016,537,80,60,10,100,250,20,500,150,0,0,100,1000,200,{ petskillsupport AL_HEAL,10,60,33,100; },{ bonus bStr,1; bonus bDex,1; } 1029,ISIS,Isis,639,9021,10006,537,80,60,10,100,250,20,500,150,0,0,650,450,150,{ petskillsupport "PR_MAGNIFICAT",2,60,50,50; },{ bonus bMatkRate,-1; bonus bAtkRate,1; } -1155,PETIT,Petite,640,9022,10011,537,80,60,20,100,250,20,500,150,0,0,800,400,100,{ petskillattack2 "WZ_HEAVENDRIVE",500,1,0,10; },{ bonus bDef,-2; bonus bMdef,-2; bonus bAspdRate,1; } +1155,PETIT,Petite,640,9022,10011,537,80,60,20,100,250,20,500,150,0,0,800,400,100,{ petskillattack "WZ_HEAVENDRIVE",500,1,0,10; },{ bonus bDef,-2; bonus bMdef,-2; bonus bAspdRate,1; } 1109,DEVIRUCHI,Deviruchi,641,9023,10004,711,80,60,10,100,250,20,500,150,0,0,800,200,100,{ petskillbonus bAgiDexStr,6,20,40; },{ bonus bMatkRate,1; bonus bAtkRate,1; bonus bMaxHPrate,-3; bonus bMaxSPrate,-3; } -1101,BAPHOMET_,Baphomet Jr.,642,9024,10001,518,80,60,10,100,250,20,200,150,0,0,1000,100,200,{ petskillattack2 "NPC_DARKNESSATTACK",1776,4,0,5; },{ bonus bDef,1; bonus bMdef,1; bonus2 bResEff,Eff_Stun,-100; } -1188,BON_GUN,Bon Gun,659,9025,10020,537,80,60,30,100,250,20,500,150,1,0,600,200,400,{ petskillattack2 "NPC_DARKNESSATTACK",555,1,1,1; },{ bonus bVit,1; bonus2 bResEff,Eff_Stun,100; } -1200,ZHERLTHSH,Zealotus,660,9026,0,929,80,60,10,100,250,20,300,150,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,3; },{ bonus2 bAddRace,RC_DemiHuman,2; bonus2 bMagicAddRace,RC_DemiHuman,2; } +1101,BAPHOMET_,Baphomet Jr.,642,9024,10001,518,80,60,10,100,250,20,200,150,0,0,1000,100,200,{ petskillattack "NPC_DARKNESSATTACK",1776,4,0,5; },{ bonus bDef,1; bonus bMdef,1; bonus2 bResEff,Eff_Stun,-100; } +1188,BON_GUN,Bon Gun,659,9025,10020,537,80,60,30,100,250,20,500,150,1,0,600,200,400,{ petskillattack "NPC_DARKNESSATTACK",555,1,1,1; },{ bonus bVit,1; bonus2 bResEff,Eff_Stun,100; } +1200,ZHERLTHSH,Zealotus,660,9026,0,929,80,60,10,100,250,20,300,150,0,0,1000,100,500,{ petskillattack "AS_SONICBLOW",1,0,0,3; },{ bonus2 bAddRace,RC_DemiHuman,2; bonus2 bMagicAddRace,RC_DemiHuman,2; } 1275,ALICE,Alice,661,9027,0,504,80,60,20,100,250,20,800,150,0,0,100,1000,200,{ petskillsupport "AL_HEAL",5,60,25,100; },{ bonus bMdef,1; bonus2 bSubRace,RC_DemiHuman,1; } 1815,EVENT_RICECAKE,Rice Cake,0,9028,0,511,80,60,50,100,250,20,2000,150,1,0,500,500,200,{ petskillsupport "CR_DEFENDER",3,240,50,100; },{ bonus2 bSubEle,Ele_Neutral,1; bonus bMaxHPrate,-1; } -1245,GOBLINE_XMAS,Christmas Goblin,12225,9029,0,911,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "MG_SIGHT",5,5,5; },{ bonus bMaxHP,30; bonus2 bSubEle,Ele_Water,1; } +1245,GOBLINE_XMAS,Christmas Goblin,12225,9029,0,911,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "MG_SIGHT",5,0,5,5; },{ bonus bMaxHP,30; bonus2 bSubEle,Ele_Water,1; } // Newest pets. -1519,CHUNG_E,Green Maiden,12395,9030,0,6115,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,5,5; },{ bonus bDef,1; bonus2 bSubRace,RC_DemiHuman,1; } -1879,ECLIPSE_P,Spring Rabbit,0,9031,0,7766,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "TF_THROWSTONE",1,5,5; },{} -1122,GOBLIN_1,Goblin,14569,9032,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_WINDATTACK",5,5,5; },{} -1123,GOBLIN_2,Goblin,14570,9033,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_FIREATTACK",5,5,5; },{} -1125,GOBLIN_4,Goblin,14571,9034,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_GROUNDATTACK",5,5,5; },{} -1385,DELETER_,Deleter,14572,9035,0,7822,80,60,20,100,250,20,800,150,0,0,300,300,800,{ petskillattack "SM_MAGNUM",5,5,5; },{} -1382,DIABOLIC,Diabolic,14573,9036,0,7823,80,60,10,100,250,20,800,150,0,0,300,300,800,{ petskillattack "WZ_METEOR",2,5,5; },{} -1208,WANDER_MAN,Wanderer,14574,9037,0,7824,80,60,20,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_UNDEADATTACK",5,5,5; },{} +1519,CHUNG_E,Green Maiden,12395,9030,0,6115,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,0,5,5; },{ bonus bDef,1; bonus2 bSubRace,RC_DemiHuman,1; } +1879,ECLIPSE_P,Spring Rabbit,0,9031,0,7766,80,60,50,100,250,20,2000,150,0,0,300,300,800,{ petskillattack "TF_THROWSTONE",1,0,5,5; },{} +1122,GOBLIN_1,Goblin,14569,9032,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_WINDATTACK",5,0,5,5; },{} +1123,GOBLIN_2,Goblin,14570,9033,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_FIREATTACK",5,0,5,5; },{} +1125,GOBLIN_4,Goblin,14571,9034,0,7821,80,60,50,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_GROUNDATTACK",5,0,5,5; },{} +1385,DELETER_,Deleter,14572,9035,0,7822,80,60,20,100,250,20,800,150,0,0,300,300,800,{ petskillattack "SM_MAGNUM",5,0,5,5; },{} +1382,DIABOLIC,Diabolic,14573,9036,0,7823,80,60,10,100,250,20,800,150,0,0,300,300,800,{ petskillattack "WZ_METEOR",2,0,5,5; },{} +1208,WANDER_MAN,Wanderer,14574,9037,0,7824,80,60,20,100,250,20,800,150,0,0,300,300,800,{ petskillattack "NPC_UNDEADATTACK",5,0,5,5; },{} -1963,P_CHUNG_E,New Year Doll,0,9038,0,554,80,60,30,100,250,20,800,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,5,5; },{} +1963,P_CHUNG_E,New Year Doll,0,9038,0,554,80,60,30,100,250,20,800,150,0,0,300,300,800,{ petskillattack "CR_SHIELDCHARGE",5,0,5,5; },{} // New pets JapanRO Mobile 1040,GOLEM,Golem,12371,9053,10035,6111,80,60,20,100,250,20,500,150,0,0,300,300,800,{},{ bonus bMaxHP,100; bonus bFlee,-5; } diff --git a/db/pet_db2.txt b/db/pet_db2.txt index ca5e4e14a..cf2248dc4 100644 --- a/db/pet_db2.txt +++ b/db/pet_db2.txt @@ -30,14 +30,12 @@ //In theory you can use any valid script, but it is run only once upon pet //loading, so it is recommended you use the specific pet scripts: -//petskillattack skillid, skilllv, rate, bonusrate +//petskillattack skillid, skilllv, hits, rate, bonusrate //Skill attack that triggers while the pet is attacking. Rate is the base //chance of execution per attack. Bonusrate is an additional success rate when -//intimacy reaches max. - -//petskillattack2 skillid, damage, hits, rate, bonusrate -//Same as petskillattack, but the damage and number of hits is fixed -//the damage specified is total, not per hit. +//intimacy reaches max. If hits is specified and different than 0, it will make +//the pet cast the skill with a fixed amount of damage inflicted and the +//specified number of hits. A value of zero uses the skill's defaults. //petskillsupport skillid, skilllv, delay, hp%, sp% //Casts a support skill when the health levels are below the specified hp% and @@ -50,6 +48,6 @@ //amount by which it is increased, duration signals how long the bonus lasts //delay is the time elapsed after the bonus ends and before it starts again. -//A single pet can have petloot, petskillbonus, petskillattack (or -//petskillattack2) and petskillsupport at the same time, but only one of each. +//A single pet can have petloot, petskillbonus, petskillattack and +//petskillsupport at the same time, but only one of each. diff --git a/doc/script_commands.txt b/doc/script_commands.txt index 90452751a..028c12791 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -8024,8 +8024,8 @@ meant to be executed from pet scripts. They will modify the pet AI decision-making for the current pet of the invoking character, and will NOT have any independent effect by themselves, which is why only one of them each may be in effect at any time for a specific pet. A pet may -have 'petloot', 'petskillbonus', 'petskillattack' OR 'petpetskillattack2' -and 'petskillsupport' at the same time. +have 'petloot', 'petskillbonus', 'petskillattack' and 'petskillsupport' at the +same time. *petskillbonus <bonus type>,<value>,<duration>,<delay>; @@ -8056,16 +8056,14 @@ time between activations. The skill numbers are as per It's not quite certain who's stats will be used for the skills cast, the character's or the pets. Probably, Skotlex can answer that question. -*petskillattack <skill id>,<skill level>,<rate>,<bonusrate>; -*petskillattack "<skill name>",<skill level>,<rate>,<bonusrate>; -*petskillattack2 <skill id>,<damage>,<number of attacks>,<rate>,<bonusrate>; -*petskillattack2 "<skill name>",<damage>,<number of attacks>,<rate>,<bonusrate>; +*petskillattack <skill id>,<damage>,<number of attacks>,<rate>,<bonusrate>; +*petskillattack "<skill name>",<damage>,<number of attacks>,<rate>,<bonusrate>; -These two commands will make the pet cast an attack skill on the enemy the -pet's owner is currently fighting. Skill IDs and levels are as per -'petskillsupport'. -'petskillattack2' will make the pet cast the skill with a fixed amount of -damage inflicted and the specified number of attacks. +This command will make the pet cast an attack skill on the enemy the pet's +owner is currently fighting. Skill IDs and levels are as per 'petskillsupport'. +If <number of attacks> is specified different than 0, it will make the pet cast +the skill with a fixed amount of damage inflicted and the specified number of +attacks. A value of zero uses the skill's defaults. All commands with delays and durations will only make the behavior active for the specified duration of seconds, with a delay of the specified diff --git a/src/map/script.c b/src/map/script.c index b098ed899..fc43aa94a 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -12731,51 +12731,26 @@ BUILDIN(petrecovery) } /*========================================== - * pet attack skills [Valaris] //Rewritten by [Skotlex] - *------------------------------------------*/ -/// petskillattack <skill id>,<level>,<rate>,<bonusrate> -/// petskillattack "<skill name>",<level>,<rate>,<bonusrate> -BUILDIN(petskillattack) { - struct pet_data *pd; - TBL_PC *sd=script->rid2sd(st); - - if(sd==NULL || sd->pd==NULL) - return true; - - pd=sd->pd; - if (pd->a_skill == NULL) - pd->a_skill = (struct pet_skill_attack *)aMalloc(sizeof(struct pet_skill_attack)); - - pd->a_skill->id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); - pd->a_skill->lv=script_getnum(st,3); - pd->a_skill->div_ = 0; - pd->a_skill->rate=script_getnum(st,4); - pd->a_skill->bonusrate=script_getnum(st,5); - - return true; -} - -/*========================================== * pet attack skills [Valaris] *------------------------------------------*/ -/// petskillattack2 <skill id>,<level>,<div>,<rate>,<bonusrate> -/// petskillattack2 "<skill name>",<level>,<div>,<rate>,<bonusrate> -BUILDIN(petskillattack2) { +/// petskillattack <skill id>,<level>,<div>,<rate>,<bonusrate> +/// petskillattack "<skill name>",<level>,<div>,<rate>,<bonusrate> +BUILDIN(petskillattack) { struct pet_data *pd; TBL_PC *sd=script->rid2sd(st); - if(sd==NULL || sd->pd==NULL) + if (sd==NULL || sd->pd==NULL) return true; pd=sd->pd; if (pd->a_skill == NULL) pd->a_skill = (struct pet_skill_attack *)aMalloc(sizeof(struct pet_skill_attack)); - pd->a_skill->id=( script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2) ); - pd->a_skill->lv=script_getnum(st,3); + pd->a_skill->id = script_isstringtype(st,2) ? skill->name2id(script_getstr(st,2)) : script_getnum(st,2); + pd->a_skill->lv = script_getnum(st,3); pd->a_skill->div_ = script_getnum(st,4); - pd->a_skill->rate=script_getnum(st,5); - pd->a_skill->bonusrate=script_getnum(st,6); + pd->a_skill->rate = script_getnum(st,5); + pd->a_skill->bonusrate = script_getnum(st,6); return true; } @@ -19378,8 +19353,7 @@ void script_parse_builtin(void) { BUILDIN_DEF(petskillbonus,"iiii"), // [Valaris] BUILDIN_DEF(petrecovery,"ii"), // [Valaris] BUILDIN_DEF(petloot,"i"), // [Valaris] - BUILDIN_DEF(petskillattack,"viii"), // [Skotlex] - BUILDIN_DEF(petskillattack2,"viiii"), // [Valaris] + BUILDIN_DEF(petskillattack,"viiii"), // [Skotlex] BUILDIN_DEF(petskillsupport,"viiii"), // [Skotlex] BUILDIN_DEF(skilleffect,"vi"), // skill effect [Celest] BUILDIN_DEF(npcskilleffect,"viii"), // npc skill effect [Valaris] |