diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index 8b3a431459..8197c3ef12 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -3,6 +3,10 @@ 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/04/13 + * Now the bonus bAtkEle will be transferred directly to the weapon when the + script is in the ammunition, and you are wielding a weapon that consumes + ammo per atttack. 2007/04/12 * Trade-requests now fail if the target is in a NPC. * Some cleaning of the castend_map code to prevent the menuskill variable diff --git a/conf-tmpl/Changelog.txt b/conf-tmpl/Changelog.txt index ad372da7be..792bee400e 100644 --- a/conf-tmpl/Changelog.txt +++ b/conf-tmpl/Changelog.txt @@ -1,5 +1,8 @@ Date Added +2007/04/13 + * Added debug command @displayskill. Should be used only by people + searching for new skill IDs. [Skotlex] 2007/04/12 * Updated various mapflags with 11.2 maps [Playtester] 2007/04/11 diff --git a/conf-tmpl/atcommand_athena.conf b/conf-tmpl/atcommand_athena.conf index 0f2f43c7d8..e4eacc9c2e 100644 --- a/conf-tmpl/atcommand_athena.conf +++ b/conf-tmpl/atcommand_athena.conf @@ -715,6 +715,9 @@ packet: 99 // Give information about terrain/area (debug function) gat: 99 +// Displays the animation of a skill without really using it (debug function) +displayskill: 99 + // Allows viewing/changing the map's water level (debug function) // NOTE: Requires access to the .grf files since the map height properties are not stored in the map cache. waterlevel: 99 diff --git a/src/map/atcommand.c b/src/map/atcommand.c index 12c6e5ff36..19818a441a 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -190,6 +190,7 @@ ACMD_FUNC(storeall); // by MouseJstr ACMD_FUNC(charstoreall); // by MouseJstr ACMD_FUNC(skillid); // by MouseJstr ACMD_FUNC(useskill); // by MouseJstr +ACMD_FUNC(displayskill); // by MouseJstr ACMD_FUNC(summon); ACMD_FUNC(rain); ACMD_FUNC(snow); @@ -508,6 +509,7 @@ static AtCommandInfo atcommand_info[] = { { AtCommand_Charstoreall, "@charstoreall", 60, atcommand_charstoreall }, // MouseJstr { AtCommand_Skillid, "@skillid", 40, atcommand_skillid }, // MouseJstr { AtCommand_Useskill, "@useskill", 40, atcommand_useskill }, // MouseJstr + { AtCommand_DisplaySkill, "@displayskill", 99, atcommand_displayskill }, // MouseJstr // { AtCommand_Rain, "@rain", 99, atcommand_rain }, //Client no longer supports rain! { AtCommand_Snow, "@snow", 99, atcommand_snow }, { AtCommand_Sakura, "@sakura", 99, atcommand_sakura }, @@ -7216,6 +7218,35 @@ int atcommand_useskill(const int fd, struct map_session_data* sd, const char* co return 0; } +/*========================================== + * @showskill by [Skotlex] + * Debug command to locate new skill IDs. It sends the + * three possible skill-effect packets to the area. + *------------------------------------------ + */ +int atcommand_displayskill(const int fd, struct map_session_data* sd, const char* command, const char* message) +{ + struct status_data * status; + unsigned int tick; + int skillnum; + int skilllv = 1; + nullpo_retr(-1, sd); + + if (!message || !*message || + sscanf(message, "%d %d", &skillnum, &skilllv) < 1) + { + clif_displaymessage(fd, "Usage: @displayskill {}>"); + return -1; + } + status = status_get_status_data(&sd->bl); + tick = gettick(); + clif_skill_damage(&sd->bl,&sd->bl, tick, status->amotion, status->dmotion, + 1, 1, skillnum, skilllv, 5); + clif_skill_nodamage(&sd->bl, &sd->bl, skillnum, skilllv, 1); + clif_skill_poseffect(&sd->bl, skillnum, skilllv, sd->bl.x, sd->bl.y, tick); + return 0; +} + /*========================================== * @skilltree by [MouseJstr] * prints the skill tree for a player required to get to a skill diff --git a/src/map/atcommand.h b/src/map/atcommand.h index 19b0e27f47..9d4880cb34 100644 --- a/src/map/atcommand.h +++ b/src/map/atcommand.h @@ -172,6 +172,7 @@ enum AtCommandType { AtCommand_Charstoreall, // by MouseJstr AtCommand_Skillid, // by MouseJstr AtCommand_Useskill, // by MouseJstr + AtCommand_DisplaySkill, AtCommand_Summon, AtCommand_Rain, AtCommand_Snow, diff --git a/src/map/pc.c b/src/map/pc.c index eca06237d8..7ea0901137 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -1442,7 +1442,20 @@ int pc_bonus(struct map_session_data *sd,int type,int val) switch (sd->state.lr_flag) { case 2: - sd->arrow_ele=val; + switch (sd->status.weapon) { + case W_BOW: + case W_REVOLVER: + case W_RIFLE: + case W_SHOTGUN: + case W_GATLING: + case W_GRENADE: + //Become weapon element. + status->rhw.ele=val; + break; + default: //Become arrow element. + sd->arrow_ele=val; + break; + } break; case 1: status->lhw->ele=val; diff --git a/src/map/skill.c b/src/map/skill.c index ce6f81aafd..d7334a0799 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -6770,9 +6770,8 @@ struct skill_unit_group *skill_unitsetting (struct block_list *src, int skillid, { int element[5]={ELE_WIND,ELE_DARK,ELE_POISON,ELE_WATER,ELE_FIRE}; - if (sd) - val1=sd->arrow_ele; - else + val1 = status->rhw.ele; + if (!val1) val1=element[rand()%5]; switch (val1)