summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt4
-rw-r--r--conf-tmpl/Changelog.txt3
-rw-r--r--conf-tmpl/atcommand_athena.conf3
-rw-r--r--src/map/atcommand.c31
-rw-r--r--src/map/atcommand.h1
-rw-r--r--src/map/pc.c15
-rw-r--r--src/map/skill.c5
7 files changed, 58 insertions, 4 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 8b3a43145..8197c3ef1 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 ad372da7b..792bee400 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 0f2f43c7d..e4eacc9c2 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 12c6e5ff3..19818a441 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 },
@@ -7217,6 +7219,35 @@ int atcommand_useskill(const int fd, struct map_session_data* sd, const char* co
}
/*==========================================
+ * @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 <skillnum> {<skillv>}>");
+ 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 19b0e27f4..9d4880cb3 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 eca06237d..7ea090113 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 ce6f81aaf..d7334a079 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)