Forráskód Böngészése

- Added debug command @displayskill. Should be used only by people searching for new skill IDs.
- 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.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10232 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 18 éve
szülő
commit
43d128ac3e

+ 4 - 0
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

+ 3 - 0
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

+ 3 - 0
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

+ 31 - 0
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 <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

+ 1 - 0
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,

+ 14 - 1
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;

+ 2 - 3
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)