소스 검색

* Follow up to r13895, added a battle.conf setting to control if ranges should be checked with autocasts.
'autospell_check_range', by default is set to no, as this is official behavior. This does not affect autospellwhenhit.
* Sonic Blow autocast now stops players attacking when it triggers. It's possible there is more depth to this
on official servers, and should 'stop' attacking on regular casts as well. It appears so far that this is the
only skill that behaves this way.
* Modified the default value for homunculus_auto_vapor in source to 1.
* pvp_points are no longer calculated in the gvg_dungeon flagged maps.
* Corrected a view ID and an equip location in the item database. (bugreport:4330)
* Corrected a typo in the DTS_Warper script.

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

L0ne_W0lf 15 년 전
부모
커밋
94ebad5ce0
12개의 변경된 파일36개의 추가작업 그리고 20개의 파일을 삭제
  1. 8 0
      Changelog-Trunk.txt
  2. 6 0
      conf/battle/battle.conf
  3. 2 0
      db/Changelog.txt
  4. 2 2
      db/item_db.txt
  5. 1 1
      doc/script_commands.txt
  6. 2 0
      npc/Changelog.txt
  7. 3 2
      npc/kafras/dts_warper.txt
  8. 2 1
      src/map/battle.c
  9. 1 0
      src/map/battle.h
  10. 0 8
      src/map/clif.c
  11. 2 2
      src/map/pc.c
  12. 7 4
      src/map/skill.c

+ 8 - 0
Changelog-Trunk.txt

@@ -3,6 +3,14 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 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.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 
 
+2010/06/27
+	* Rev. 14356 Follow up to r13895, added a battle.conf setting to control if ranges should be checked with autocasts. [L0ne_W0lf]
+	  'autospell_check_range', by default is set to no, as this is official behavior. This does not affect autospellwhenhit.
+	* Sonic Blow autocast now stops players attacking when it triggers. It's possible there is more depth to this 
+	  on official servers, and should 'stop' attacking on regular casts as well. It appears so far that this is the
+	  only skill that behaves this way.
+	* Modified the default value for homunculus_auto_vapor in source to 1.
+	* pvp_points are no longer calculated in the gvg_dungeon flagged maps.
 2010/06/22
 2010/06/22
 	* Rev. 14353 Added support for NPC names in the 'specialeffect' script command, go go copy/paste! [L0ne_W0lf]
 	* Rev. 14353 Added support for NPC names in the 'specialeffect' script command, go go copy/paste! [L0ne_W0lf]
 2010/06/20
 2010/06/20

+ 6 - 0
conf/battle/battle.conf

@@ -165,3 +165,9 @@ delay_battle_damage: yes
 //     skill is weapon-based and used with ranged weapons (auto-guesses which 
 //     skill is weapon-based and used with ranged weapons (auto-guesses which 
 //     skills should consume ammo when it's acquired via a card or plagiarize)
 //     skills should consume ammo when it's acquired via a card or plagiarize)
 arrow_decrement: 1
 arrow_decrement: 1
+
+// Should the item script bonus 'Autospell' check for range/obstacles before casting?
+// Official behavior is "no", setting this to "yes" will make skills use their defined
+// range. For example, Sonic Blow requires a 2 cell distance before autocasting is allowed.
+// This setting does not affect autospellwhenhit.
+autospell_check_range: no

+ 2 - 0
db/Changelog.txt

@@ -8,6 +8,8 @@
 	1475 Equestrian's Spear:	NEED INFO.
 	1475 Equestrian's Spear:	NEED INFO.
 	13005 Angelic Wing Dagger:	NEED INFO.
 	13005 Angelic Wing Dagger:	NEED INFO.
 =======================
 =======================
+2010/06/27
+	* Rev. 14356 Corrected a view ID and an equip location in the item database. (bugreport:4330) [L0ne_W0lf]
 2010/06/21
 2010/06/21
 	* Rev. 14352 Minor item database bug fixes! [L0ne_W0lf]
 	* Rev. 14352 Minor item database bug fixes! [L0ne_W0lf]
 	- Corrected some lower headgears being able to be refined. (bugreport:4328) 
 	- Corrected some lower headgears being able to be refined. (bugreport:4328) 

+ 2 - 2
db/item_db.txt

@@ -2717,7 +2717,7 @@
 5530,Raven_Cap,Raven Cap,5,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,30,1,524,{},{},{}
 5530,Raven_Cap,Raven Cap,5,20,,300,,3,,1,0xFFFFFFFF,7,2,256,,30,1,524,{},{},{}
 5531,B_Dragon_Hat,Baby Dragon Hat,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,525,{},{},{}
 5531,B_Dragon_Hat,Baby Dragon Hat,5,20,,100,,3,,1,0xFFFFFFFF,7,2,256,,0,1,525,{},{},{}
 5532,Pirate_Dagger_J,Pirate Dagger,5,,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,1,327,{ bonus bShortWeaponDamageReturn,1; },{},{}
 5532,Pirate_Dagger_J,Pirate Dagger,5,,,100,,0,,0,0xFFFFFFFF,7,2,1,,0,1,327,{ bonus bShortWeaponDamageReturn,1; },{},{}
-5533,Emperor_Wreath_J,Emperor Wreath,5,,,800,,3,,1,0xFFFFFFFF,7,2,1,,80,1,261,{ bonus bAllStats,1; },{},{}
+5533,Emperor_Wreath_J,Emperor Wreath,5,,,800,,3,,1,0xFFFFFFFF,7,2,256,,80,1,261,{ bonus bAllStats,1; },{},{}
 5534,Fox_Hat_J,Fox Hat,5,20,,100,,1,,0,0xFFFFFFFF,7,0,769,,70,1,403,{ bonus bAgi,1; bonus bFlee2,2; },{},{}
 5534,Fox_Hat_J,Fox Hat,5,20,,100,,1,,0,0xFFFFFFFF,7,0,769,,70,1,403,{ bonus bAgi,1; bonus bFlee2,2; },{},{}
 5535,Side_Cap,Side Cap,5,20,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,529,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
 5535,Side_Cap,Side Cap,5,20,,500,,3,,0,0xFFFFFFFF,7,2,256,,0,1,529,{ bonus2 bSubRace,RC_DemiHuman,5; bonus2 bAddRace,RC_DemiHuman,3; },{},{}
 5536,Spare_Card,Spare Card,5,20,,10,,1,,0,0xFFFFFFFF,7,2,1,,10,1,526,{ bonus2 bAddMonsterDropItem,6187,1000; },{},{}
 5536,Spare_Card,Spare Card,5,20,,10,,1,,0,0xFFFFFFFF,7,2,1,,10,1,526,{ bonus2 bAddMonsterDropItem,6187,1000; },{},{}
@@ -2754,7 +2754,7 @@
 5567,Bright_Fury,Bright Fury,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,548,{ bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2; },{},{}
 5567,Bright_Fury,Bright Fury,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,548,{ bonus2 bAddRace,RC_NonBoss,2; bonus2 bAddRace,RC_Boss,2; bonus bAspdRate,2; },{},{}
 5568,Rabbit_Bonnet,Rabbit Bonnet,5,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,549,{},{},{}
 5568,Rabbit_Bonnet,Rabbit Bonnet,5,20,,100,,1,,0,0xFFFFFFFF,7,2,256,,0,1,549,{},{},{}
 5569,Gemini_Diadem,Gemini Diadem,5,20,,300,,4,,1,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bMatkRate,2; if(getrefine()>6) { bonus bMDef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; } },{},{}
 5569,Gemini_Diadem,Gemini Diadem,5,20,,300,,4,,1,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bMatkRate,2; if(getrefine()>6) { bonus bMDef,7; bonus bMAtkRate,8; bonus2 bSubEle,Ele_Wind,5; } },{},{}
-5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,1,0xFFFFFFFF,7,2,256,,70,1,550,{ bonus bAtk,2; bonus bMDef,5; if(getrefine()>6) { bonus bDef,1; bonus bMAtk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
+5570,Gemini_Crown,Gemini Crown,5,20,,300,,4,,1,0xFFFFFFFF,7,2,256,,70,1,551,{ bonus bAtk,2; bonus bMDef,5; if(getrefine()>6) { bonus bDef,1; bonus bMAtk,15; bonus bFlee,10; bonus2 bSubEle,Ele_Wind,5; } },{},{}
 //5571,Rasta_Wig,Rasta_Wig,5,20,,800,,1,,0,0xFFFFFFFF,7,2,256,,0,1,552,{},{},{}
 //5571,Rasta_Wig,Rasta_Wig,5,20,,800,,1,,0,0xFFFFFFFF,7,2,256,,0,1,552,{},{},{}
 5572,Savage_Babe_Hat,Savage Babe Hat,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,553,{},{},{}
 5572,Savage_Babe_Hat,Savage Babe Hat,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,553,{},{},{}
 5573,Dokebi_Horn,Dokebi Horn,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,554,{},{},{}
 5573,Dokebi_Horn,Dokebi Horn,5,20,,100,,1,,1,0xFFFFFFFF,7,2,256,,0,1,554,{},{},{}

+ 1 - 1
doc/script_commands.txt

@@ -4577,7 +4577,7 @@ will retain the default behavior of the command.
 	// this will make the NPC "John Doe#1"
 	// this will make the NPC "John Doe#1"
 	// show the effect "EF_HIT1" specified by
 	// show the effect "EF_HIT1" specified by
 	// Jane Doe. I wonder what John did...
 	// Jane Doe. I wonder what John did...
-	mes "[Jane Doe];
+	mes "[Jane Doe]";
 	mes "Well, I never!";
 	mes "Well, I never!";
 	specialeffect EF_HIT1,AREA,"John Doe#1";
 	specialeffect EF_HIT1,AREA,"John Doe#1";
 	close;
 	close;

+ 2 - 0
npc/Changelog.txt

@@ -1,5 +1,7 @@
 Date		Added
 Date		Added
 ======
 ======
+2010/06/27
+	* Rev. 14356 Corrected a typo in the DTS_Warper script. [L0ne_W0lf]
 2010/06/22
 2010/06/22
 	* Rev. 14353 Updated several NPCs to use the updated specialeffect command, updated more NPCs to use the updated emotion command. [L0ne_W0lf]
 	* Rev. 14353 Updated several NPCs to use the updated specialeffect command, updated more NPCs to use the updated emotion command. [L0ne_W0lf]
 2010/06/21
 2010/06/21

+ 3 - 2
npc/kafras/dts_warper.txt

@@ -3,7 +3,7 @@
 //===== By: ================================================== 
 //===== By: ================================================== 
 //= Evera
 //= Evera
 //===== Current Version: ===================================== 
 //===== Current Version: ===================================== 
-//= 2.6
+//= 2.7
 //===== Compatible With: ===================================== 
 //===== Compatible With: ===================================== 
 //= eAthena SVN
 //= eAthena SVN
 //===== Description: =========================================
 //===== Description: =========================================
@@ -51,6 +51,7 @@
 //= 2.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 2.4 Corrected NPC names to fall within proper restrictions. [L0ne_W0lf]
 //= 2.5 Converted from Aegis file. (11.3) [L0ne_W0lf]
 //= 2.5 Converted from Aegis file. (11.3) [L0ne_W0lf]
 //= 2.6 Moved Morroc NPCs to Morroc Ruins. [L0ne_W0lf]
 //= 2.6 Moved Morroc NPCs to Morroc Ruins. [L0ne_W0lf]
+//= 2.7 Fixed a typo, a - to a +. Not sure how that happened. [L0ne_w0lf]
 //============================================================ 
 //============================================================ 
 
 
 einbroch,246,70,0	script	Vote Timer#ein	-1,{
 einbroch,246,70,0	script	Vote Timer#ein	-1,{
@@ -287,7 +288,7 @@ OnTimer60000:
 		donpcevent "Vote Timer#ein::OnEnable";
 		donpcevent "Vote Timer#ein::OnEnable";
 	}
 	}
 	else {
 	else {
-		set $DTS_PeriodCheck,$DTS_PeriodCheck-1; //Global Variable
+		set $DTS_PeriodCheck,$DTS_PeriodCheck+1; //Global Variable
 		donpcevent "Vote Timer4#ein::OnEnable";
 		donpcevent "Vote Timer4#ein::OnEnable";
 	}
 	}
 	end;
 	end;

+ 2 - 1
src/map/battle.c

@@ -3871,12 +3871,13 @@ static const struct _battle_data {
 	{ "auction_feeperhour",                 &battle_config.auction_feeperhour,              12000,  0,      INT_MAX,        },
 	{ "auction_feeperhour",                 &battle_config.auction_feeperhour,              12000,  0,      INT_MAX,        },
 	{ "auction_maximumprice",               &battle_config.auction_maximumprice,            500000000, 0,   MAX_ZENY,       },
 	{ "auction_maximumprice",               &battle_config.auction_maximumprice,            500000000, 0,   MAX_ZENY,       },
 	{ "gm_viewequip_min_lv",                &battle_config.gm_viewequip_min_lv,             0,      0,      99,             },
 	{ "gm_viewequip_min_lv",                &battle_config.gm_viewequip_min_lv,             0,      0,      99,             },
-	{ "homunculus_auto_vapor",              &battle_config.homunculus_auto_vapor,           0,      0,      1,              },
+	{ "homunculus_auto_vapor",              &battle_config.homunculus_auto_vapor,           1,      0,      1,              },
 	{ "display_status_timers",              &battle_config.display_status_timers,           1,      0,      1,              },
 	{ "display_status_timers",              &battle_config.display_status_timers,           1,      0,      1,              },
 	{ "skill_add_heal_rate",                &battle_config.skill_add_heal_rate,             7,      0,      INT_MAX,        },
 	{ "skill_add_heal_rate",                &battle_config.skill_add_heal_rate,             7,      0,      INT_MAX,        },
 	{ "eq_single_target_reflectable",       &battle_config.eq_single_target_reflectable,    1,      0,      1,              },
 	{ "eq_single_target_reflectable",       &battle_config.eq_single_target_reflectable,    1,      0,      1,              },
 	{ "invincible.nodamage",                &battle_config.invincible_nodamage,             0,      0,      1,              },
 	{ "invincible.nodamage",                &battle_config.invincible_nodamage,             0,      0,      1,              },
 	{ "mob_slave_keep_target",              &battle_config.mob_slave_keep_target,           0,      0,      1,              },
 	{ "mob_slave_keep_target",              &battle_config.mob_slave_keep_target,           0,      0,      1,              },
+	{ "autospell_check_range",              &battle_config.autospell_check_range,           0,      0,      1,              },
 // BattleGround Settings
 // BattleGround Settings
 	{ "bg_update_interval",                 &battle_config.bg_update_interval,              1000,   100,    INT_MAX,        },
 	{ "bg_update_interval",                 &battle_config.bg_update_interval,              1000,   100,    INT_MAX,        },
 	{ "bg_short_attack_damage_rate",        &battle_config.bg_short_damage_rate,            80,     0,      INT_MAX,        },
 	{ "bg_short_attack_damage_rate",        &battle_config.bg_short_damage_rate,            80,     0,      INT_MAX,        },

+ 1 - 0
src/map/battle.h

@@ -469,6 +469,7 @@ extern struct Battle_Config
 	int eq_single_target_reflectable;
 	int eq_single_target_reflectable;
 	int invincible_nodamage;
 	int invincible_nodamage;
 	int mob_slave_keep_target;
 	int mob_slave_keep_target;
+	int autospell_check_range;	//Enable range check for autospell bonus. [L0ne_W0lf]
 
 
 	// [BattleGround Settings]
 	// [BattleGround Settings]
 	int bg_update_interval;
 	int bg_update_interval;

+ 0 - 8
src/map/clif.c

@@ -8310,15 +8310,7 @@ void clif_parse_LoadEndAck(int fd,struct map_session_data *sd)
 		clif_set0199(sd,1);
 		clif_set0199(sd,1);
 
 
 	if (map[sd->bl.m].flag.gvg_dungeon)
 	if (map[sd->bl.m].flag.gvg_dungeon)
-	{
 		clif_set0199(sd,1); //TODO: Figure out the real packet to send here.
 		clif_set0199(sd,1); //TODO: Figure out the real packet to send here.
-		if (!sd->pvp_point)
-		{
-			sd->pvp_point = 5; //Need to die twice to be warped out.
-			sd->pvp_won = 0;
-			sd->pvp_lost = 0;
-		}
-	}
 
 
 	if( map_flag_gvg(sd->bl.m) )
 	if( map_flag_gvg(sd->bl.m) )
 		clif_set0199(sd,3);
 		clif_set0199(sd,3);

+ 2 - 2
src/map/pc.c

@@ -5721,8 +5721,8 @@ int pc_dead(struct map_session_data *sd,struct block_list *src)
 	}
 	}
 	// pvp
 	// pvp
 	// disable certain pvp functions on pk_mode [Valaris]
 	// disable certain pvp functions on pk_mode [Valaris]
-	if( map[sd->bl.m].flag.gvg_dungeon || (map[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map[sd->bl.m].flag.pvp_nocalcrank) )
-	{ // Pvp points always take effect on gvg_dungeon maps.
+	if( map[sd->bl.m].flag.pvp && !battle_config.pk_mode && !map[sd->bl.m].flag.pvp_nocalcrank )
+	{
 		sd->pvp_point -= 5;
 		sd->pvp_point -= 5;
 		sd->pvp_lost++;
 		sd->pvp_lost++;
 		if( src && src->type == BL_PC )
 		if( src && src->type == BL_PC )

+ 7 - 4
src/map/skill.c

@@ -1010,8 +1010,11 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 
 
 			tbl = (sd->autospell[i].id < 0) ? src : bl;
 			tbl = (sd->autospell[i].id < 0) ? src : bl;
 
 
-			if( !battle_check_range(src, tbl, skill_get_range2(src, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) )
-				continue; //Autocasts should always fail if the target is outside the skill range or an obstacle is in between.[Inkfish]
+			if( !battle_check_range(src, tbl, skill_get_range2(src, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
+				continue; // If autospell_check_range is yes, fail the autocast.
+
+			if (skill == AS_SONICBLOW)
+				pc_stop_attack(sd); //Special case, Sonic Blow autospell should stop the player attacking.
 
 
 			sd->state.autocast = 1;
 			sd->state.autocast = 1;
 			skill_consume_requirement(sd,skill,skilllv,1);
 			skill_consume_requirement(sd,skill,skilllv,1);
@@ -1109,7 +1112,7 @@ int skill_onskillusage(struct map_session_data *sd, struct block_list *bl, int s
 			continue;
 			continue;
 		tbl = (sd->autospell3[i].id < 0) ? &sd->bl : bl;
 		tbl = (sd->autospell3[i].id < 0) ? &sd->bl : bl;
 
 
-		if( !battle_check_range(&sd->bl, tbl, skill_get_range2(&sd->bl, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) )
+		if( !battle_check_range(&sd->bl, tbl, skill_get_range2(&sd->bl, skill,skilllv) + (skill == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
 			continue;
 			continue;
 
 
 		sd->state.autocast = 1;
 		sd->state.autocast = 1;
@@ -1281,7 +1284,7 @@ int skill_counter_additional_effect (struct block_list* src, struct block_list *
 
 
 			tbl = (dstsd->autospell2[i].id < 0) ? bl : src;
 			tbl = (dstsd->autospell2[i].id < 0) ? bl : src;
 
 
-			if( !battle_check_range(src, tbl, skill_get_range2(src, skillid,skilllv) + (skillid == RG_CLOSECONFINE?0:1)) )
+			if( !battle_check_range(src, tbl, skill_get_range2(src, skillid,skilllv) + (skillid == RG_CLOSECONFINE?0:1)) && battle_config.autospell_check_range )
 				continue;
 				continue;
 
 
 			dstsd->state.autocast = 1;
 			dstsd->state.autocast = 1;