diff options
author | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-30 20:40:06 +0000 |
---|---|---|
committer | ultramage <ultramage@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-07-30 20:40:06 +0000 |
commit | e8a9dd12348aa0e504a5e0b24122a5b268128fda (patch) | |
tree | 69ca6b9e01f2574464feb054ae89b8e314d55331 | |
parent | abc7dd378cdad5c3f067f21b422f51ba7c06c585 (diff) | |
download | hercules-e8a9dd12348aa0e504a5e0b24122a5b268128fda.tar.gz hercules-e8a9dd12348aa0e504a5e0b24122a5b268128fda.tar.bz2 hercules-e8a9dd12348aa0e504a5e0b24122a5b268128fda.tar.xz hercules-e8a9dd12348aa0e504a5e0b24122a5b268128fda.zip |
* Corrected pet taming code; items are consumed immediately and only 1x
- TODO: add proper code for people who want delayed consumption
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10930 54d463be-8e91-2dee-dedb-b68131a5f0ec
-rw-r--r-- | Changelog-Trunk.txt | 3 | ||||
-rw-r--r-- | db/item_db.txt | 48 | ||||
-rw-r--r-- | src/map/clif.c | 5 | ||||
-rw-r--r-- | src/map/pet.c | 48 |
4 files changed, 40 insertions, 64 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 6b8a022e2..605e4a749 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,9 @@ Date Added AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK. IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. +2007/07/30 + * Corrected pet taming code; items are consumed immediately and only 1x + - TODO: add proper code for people who want delayed consumption 2007/07/28 * Removed ridiculous refine_posword config switch - TODO: remove getequipname() func, it can be fully replaced by editing diff --git a/db/item_db.txt b/db/item_db.txt index caa68a37d..a9f96d55b 100644 --- a/db/item_db.txt +++ b/db/item_db.txt @@ -126,30 +126,30 @@ 617,Old_Violet_Box,Old Purple Box,2,10000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_VioletBox),1; },{},{} 618,Worn_Out_Scroll,Worn Out Scroll,2,50,,20,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_ScrollBox),1; },{},{} // Pet Tames -619,Unripe_Apple,Unripe Apple,11,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1002; },{},{} -620,Orange_Juice,Orange Juice,11,1500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1113; },{},{} -621,Bitter_Herb,Bitter Herb,11,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1031; },{},{} -622,Rainbow_Carrot,Rainbow Carrot,11,2500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1063; },{},{} -623,Earthworm_The_Dude,Earthworm the Dude,11,4000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1049; },{},{} -624,Rotten_Fish,Rotten Fish,11,2500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1011; },{},{} -625,Lusty_Iron,Rusty Iron,11,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1042; },{},{} -626,Monster_Juice,Monster Juice,11,1500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1035; },{},{} -627,Sweet_Milk,Sweet Milk,11,7000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1167; },{},{} -628,Well_Dried_Bone,Well-Dried Bone,11,10000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1107; },{},{} -629,Singing_Flower,Singing Flower,11,300,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1052; },{},{} -630,Dew_Laden_Moss,Dew Laden Moss,11,10,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1014; },{},{} -631,Deadly_Noxious_Herb,Deadly Noxious Herb,11,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1077; },{},{} -632,Fatty_Chubby_Earthworm,Fatty Chubby Earthworm,11,5000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1019; },{},{} -633,Baked_Yam,Sweet Potato,11,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1056; },{},{} -634,Tropical_Banana,Tropical Banana,11,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1057; },{},{} -635,Horror_Of_Tribe,Orc Trophy,11,300,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1023; },{},{} -636,No_Recipient,No Recipient,11,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1026; },{},{} -637,Old_Broom,Old Broom,11,350,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1110; },{},{} -638,Silver_Knife_Of_Chaste,Silver Knife of Chastity,11,12000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1170; },{},{} -639,Armlet_Of_Obedience,Armlet of Obedience,11,18000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1029; },{},{} -640,Shining_Stone,Shining Stone,11,3000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1155; },{},{} -641,Contracts_In_Shadow,Contracts in Shadow,11,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1109; },{},{} -642,Book_Of_Devil,Book of the Devil,11,1800,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1101; },{},{} +619,Unripe_Apple,Unripe Apple,2,1000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1002; },{},{} +620,Orange_Juice,Orange Juice,2,1500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1113; },{},{} +621,Bitter_Herb,Bitter Herb,2,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1031; },{},{} +622,Rainbow_Carrot,Rainbow Carrot,2,2500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1063; },{},{} +623,Earthworm_The_Dude,Earthworm the Dude,2,4000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1049; },{},{} +624,Rotten_Fish,Rotten Fish,2,2500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1011; },{},{} +625,Lusty_Iron,Rusty Iron,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1042; },{},{} +626,Monster_Juice,Monster Juice,2,1500,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1035; },{},{} +627,Sweet_Milk,Sweet Milk,2,7000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1167; },{},{} +628,Well_Dried_Bone,Well-Dried Bone,2,10000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1107; },{},{} +629,Singing_Flower,Singing Flower,2,300,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1052; },{},{} +630,Dew_Laden_Moss,Dew Laden Moss,2,10,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1014; },{},{} +631,Deadly_Noxious_Herb,Deadly Noxious Herb,2,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1077; },{},{} +632,Fatty_Chubby_Earthworm,Fatty Chubby Earthworm,2,5000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1019; },{},{} +633,Baked_Yam,Sweet Potato,2,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1056; },{},{} +634,Tropical_Banana,Tropical Banana,2,,10,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1057; },{},{} +635,Horror_Of_Tribe,Orc Trophy,2,300,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1023; },{},{} +636,No_Recipient,No Recipient,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1026; },{},{} +637,Old_Broom,Old Broom,2,350,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1110; },{},{} +638,Silver_Knife_Of_Chaste,Silver Knife of Chastity,2,12000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1170; },{},{} +639,Armlet_Of_Obedience,Armlet of Obedience,2,18000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1029; },{},{} +640,Shining_Stone,Shining Stone,2,3000,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1155; },{},{} +641,Contracts_In_Shadow,Contracts in Shadow,2,100,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1109; },{},{} +642,Book_Of_Devil,Book of the Devil,2,1800,,50,,,,,0xFFFFFFFF,7,2,,,,,,{ pet 1101; },{},{} 643,Pet_Incubator,Pet Incubator,2,3000,,30,,,,,0xFFFFFFFF,7,2,,,,,,{ bpet; },{},{} 644,Gift_Box,Gift Box,2,1000,,200,,,,,0xFFFFFFFF,7,2,,,,,,{ getitem groupranditem(IG_GiftBox),1; },{},{} // ASPD Potions diff --git a/src/map/clif.c b/src/map/clif.c index d6c320756..c79305fc3 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -6036,11 +6036,6 @@ int clif_catch_process(struct map_session_data *sd) WFIFOHEAD(fd,packet_len(0x19e)); WFIFOW(fd,0)=0x19e; WFIFOSET(fd,packet_len(0x19e)); - sd->menuskill_id = SA_TAMINGMONSTER; - if (sd->ud.skillid == SA_TAMINGMONSTER) - sd->menuskill_lv = 0; //Free catch - else - sd->menuskill_lv = sd->itemid; //Consume catch return 0; } diff --git a/src/map/pet.c b/src/map/pet.c index 22237279e..ef0ade4fd 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -539,47 +539,26 @@ int pet_catch_process1(struct map_session_data *sd,int target_class) return 0; } -int pet_catch_process2(struct map_session_data *sd,int target_id) +int pet_catch_process2(struct map_session_data* sd, int target_id) { - struct mob_data *md; - int i=0,pet_catch_rate=0; + struct mob_data* md; + int i = 0, pet_catch_rate = 0; nullpo_retr(1, sd); - md=(struct mob_data*)map_id2bl(target_id); - if(!md || md->bl.type != BL_MOB || md->bl.prev == NULL){ - //Abort capture. - sd->catch_target_class = -1; - sd->itemid = sd->itemindex = -1; - return 1; - } - - if (sd->menuskill_id != SA_TAMINGMONSTER) - { //Exploit? + md = (struct mob_data*)map_id2bl(target_id); + if(!md || md->bl.type != BL_MOB || md->bl.prev == NULL) + { // Invalid inputs/state, abort capture. clif_pet_roulette(sd,0); sd->catch_target_class = -1; + sd->itemid = sd->itemindex = -1; return 1; } - - if (sd->menuskill_lv > 0) - { //Consume the pet lure [Skotlex] - i=pc_search_inventory(sd,sd->menuskill_lv); - if (i < 0) - { //they tried an exploit? - clif_pet_roulette(sd,0); - sd->catch_target_class = -1; - return 1; - } - //Delete the item - if (sd->itemid == sd->menuskill_lv) - sd->itemid = sd->itemindex = -1; - sd->menuskill_id = sd->menuskill_lv = 0; - pc_delitem(sd,i,1,0); - } + + //FIXME: delete taming item here, if this was an item-invoked capture and the item was flagged as delay-consume i = search_petDB_index(md->class_,PET_CLASS); - //catch_target_class == 0 is used for universal lures. [Skotlex] - //for now universal lures do not include bosses. + //catch_target_class == 0 is used for universal lures (except bosses for now). [Skotlex] if (sd->catch_target_class == 0 && !(md->status.mode&MD_BOSS)) sd->catch_target_class = md->class_; if(i < 0 || sd->catch_target_class != md->class_) { @@ -594,19 +573,18 @@ int pet_catch_process2(struct map_session_data *sd,int target_id) if(battle_config.pet_catch_rate != 100) pet_catch_rate = (pet_catch_rate*battle_config.pet_catch_rate)/100; - if(rand()%10000 < pet_catch_rate) { + if(rand()%10000 < pet_catch_rate) + { unit_remove_map(&md->bl,0); status_kill(&md->bl); clif_pet_roulette(sd,1); -// if(battle_config.etc_log) -// printf("roulette success %d\n",target_id); intif_create_pet(sd->status.account_id,sd->status.char_id,pet_db[i].class_,mob_db(pet_db[i].class_)->lv, pet_db[i].EggID,0,pet_db[i].intimate,100,0,1,pet_db[i].jname); } else { - sd->catch_target_class = -1; clif_pet_roulette(sd,0); + sd->catch_target_class = -1; } return 0; |