瀏覽代碼

- Fixed handling of the char_gm_read config for packet 0x2af7 (reloadgmdb)
- Added battle_config debuff_on_logout which removes Asura's SP regen delay and Strip-Equip effects on logout when set to yes (default).


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

skotlex 19 年之前
父節點
當前提交
cee086fece
共有 8 個文件被更改,包括 37 次插入20 次删除
  1. 5 0
      Changelog-Trunk.txt
  2. 5 0
      conf-tmpl/battle/skill.conf
  3. 1 1
      src/char/char.c
  4. 7 9
      src/char_sql/char.c
  5. 5 0
      src/map/battle.c
  6. 1 1
      src/map/battle.h
  7. 1 1
      src/map/chrif.c
  8. 12 8
      src/map/map.c

+ 5 - 0
Changelog-Trunk.txt

@@ -5,6 +5,11 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 2006/03/17
+	* Fixed handling of the char_gm_read config for packet 0x2af7 (reloadgmdb)
+	  [Skotlex]
+	* Added battle_config debuff_on_logout which removes Asura's SP regen delay
+	  and Strip-Equip effects on logout when set to yes (default,
+	  conf/battle/skill.conf). [Skotlex]
 	* removed auto-attaching of player-run scripts in initnpctimer. You must
 	  use attachnpctimer instead! [Skotlex]
 	* Final fix on Juperos NPC. [Lance]

+ 5 - 0
conf-tmpl/battle/skill.conf

@@ -80,6 +80,11 @@ skill_caster_check: yes
 // Should skill casting be cancelled when inflicted by curse/stun/sleep/etc?
 status_cast_cancel: no
 
+// Will certain negative skill status-changes be removed on logout?
+// This mimics official servers, where Extremity Fist's no SP regen and 
+// Strip Equipment effects are removed when you logout.
+debuff_on_logout: yes
+
 // Should ground placed skills be removed as soon as the caster dies?
 clear_skills_on_death: yes
 

+ 1 - 1
src/char/char.c

@@ -2429,7 +2429,7 @@ int parse_frommap(int fd) {
 		// request from map-server to reload GM accounts. Transmission to login-server (by Yor)
 		case 0x2af7:
 			if (login_fd > 0) { // don't send request if no login-server
-                                WFIFOHEAD(login_fd, 2);
+				WFIFOHEAD(login_fd, 2);
 				WFIFOW(login_fd,0) = 0x2709;
 				WFIFOSET(login_fd, 2);
 //				printf("char : request from map-server to reload GM accounts -> login-server.\n");

+ 7 - 9
src/char_sql/char.c

@@ -2254,19 +2254,17 @@ int parse_frommap(int fd) {
 
 		// map-server alive packet
 		case 0x2718:
-			if (RFIFOREST(fd) < 2)
-				return 0;
 			RFIFOSKIP(fd,2);
 			break;
 
 		case 0x2af7:
-			if(char_gm_read)
-			{
-				RFIFOSKIP(fd,2);
-				if (login_fd > 0) { // don't send request if no login-server
-					WFIFOW(login_fd,0) = 0x2709;
-					WFIFOSET(login_fd, 2);
-				}
+			RFIFOSKIP(fd,2);
+			if(char_gm_read) //Re-read gm accounts.
+				read_gm_account();
+			//Send to login request to reload gm accounts.
+			else if (login_fd > 0) { // don't send request if no login-server
+				WFIFOW(login_fd,0) = 0x2709;
+				WFIFOSET(login_fd, 2);
 			}
 			break;
 

+ 5 - 0
src/map/battle.c

@@ -3990,6 +3990,8 @@ static const struct battle_data_short {
 	{ "ignore_items_gender",               &battle_config.ignore_items_gender}, // [Lupus]
 	{ "copyskill_restrict",		       &battle_config.copyskill_restrict}, // [Aru]
 	{ "berserk_cancels_buffs",		&battle_config.berserk_cancels_buffs}, // [Aru]
+
+	{ "debuff_on_logout",                  &battle_config.debuff_on_logout},
 	{ "monster_ai",                        &battle_config.mob_ai},
 	{ "dynamic_mobs",                      &battle_config.dynamic_mobs},
 	{ "mob_remove_damaged",                &battle_config.mob_remove_damaged},
@@ -4391,6 +4393,9 @@ void battle_set_defaults() {
 	battle_config.who_display_aid = 0;
 	battle_config.display_hallucination = 1;
 	battle_config.ignore_items_gender = 1;
+	battle_config.copyskill_restrict = 2;
+	battle_config.berserk_cancels_buffs = 1;
+	battle_config.debuff_on_logout = 1;
 	battle_config.use_statpoint_table = 1;
 	battle_config.mob_ai = 0;
 	battle_config.dynamic_mobs = 1; // use Dynamic Mobs [Wizputer]

+ 1 - 1
src/map/battle.h

@@ -385,7 +385,7 @@ extern struct Battle_Config {
 
 	unsigned short copyskill_restrict; // [Aru]
 	unsigned short berserk_cancels_buffs; // [Aru]
-
+	unsigned short debuff_on_logout; // Removes a few "official" negative Scs on logout. [Skotlex]
 	unsigned short mob_ai; //Configures various mob_ai settings to make them smarter or dumber(official). [Skotlex]
 	unsigned short dynamic_mobs; // Dynamic Mobs [Wizputer] - battle_athena flag implemented by [random]
 	unsigned short mob_remove_damaged; // Dynamic Mobs - Remove mobs even if damaged [Wizputer]

+ 1 - 1
src/map/chrif.c

@@ -1079,7 +1079,7 @@ int chrif_reloadGMdb(void)
 {
 	chrif_check(-1);
 
-        WFIFOHEAD(char_fd, 2);
+	WFIFOHEAD(char_fd, 2);
 	WFIFOW(char_fd,0) = 0x2af7;
 	WFIFOSET(char_fd, 2);
 

+ 12 - 8
src/map/map.c

@@ -1575,14 +1575,18 @@ int map_quit(struct map_session_data *sd) {
 				status_change_end(&sd->bl,SC_BERSERK,-1);
 			if(sd->sc.data[SC_TRICKDEAD].timer!=-1)
 				status_change_end(&sd->bl,SC_TRICKDEAD,-1);
-			if(sd->sc.data[SC_STRIPWEAPON].timer!=-1)
-				status_change_end(&sd->bl,SC_STRIPWEAPON,-1);
-			if(sd->sc.data[SC_STRIPARMOR].timer!=-1)
-				status_change_end(&sd->bl,SC_STRIPARMOR,-1);
-			if(sd->sc.data[SC_STRIPSHIELD].timer!=-1)
-				status_change_end(&sd->bl,SC_STRIPSHIELD,-1);
-			if(sd->sc.data[SC_STRIPHELM].timer!=-1)
-				status_change_end(&sd->bl,SC_STRIPHELM,-1);
+			if (battle_config.debuff_on_logout) {
+				if(sd->sc.data[SC_STRIPWEAPON].timer!=-1)
+					status_change_end(&sd->bl,SC_STRIPWEAPON,-1);
+				if(sd->sc.data[SC_STRIPARMOR].timer!=-1)
+					status_change_end(&sd->bl,SC_STRIPARMOR,-1);
+				if(sd->sc.data[SC_STRIPSHIELD].timer!=-1)
+					status_change_end(&sd->bl,SC_STRIPSHIELD,-1);
+				if(sd->sc.data[SC_STRIPHELM].timer!=-1)
+					status_change_end(&sd->bl,SC_STRIPHELM,-1);
+				if(sd->sc.data[SC_EXTREMITYFIST].timer!=-1)
+					status_change_end(&sd->bl,SC_EXTREMITYFIST,-1);
+			}
 		}
 		skill_clear_unitgroup(&sd->bl);	// スキルユニットグル?プの削除