summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt5
-rw-r--r--conf-tmpl/battle/skill.conf5
-rw-r--r--src/char/char.c2
-rw-r--r--src/char_sql/char.c16
-rw-r--r--src/map/battle.c5
-rw-r--r--src/map/battle.h2
-rw-r--r--src/map/chrif.c2
-rw-r--r--src/map/map.c20
8 files changed, 37 insertions, 20 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index a2a838bdb..ad1ff1127 100644
--- a/Changelog-Trunk.txt
+++ b/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]
diff --git a/conf-tmpl/battle/skill.conf b/conf-tmpl/battle/skill.conf
index 1c33be10d..3512faee8 100644
--- a/conf-tmpl/battle/skill.conf
+++ b/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
diff --git a/src/char/char.c b/src/char/char.c
index ba97a4139..6f6ece4d2 100644
--- a/src/char/char.c
+++ b/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");
diff --git a/src/char_sql/char.c b/src/char_sql/char.c
index 058ab1f2b..33a6c8f6a 100644
--- a/src/char_sql/char.c
+++ b/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;
diff --git a/src/map/battle.c b/src/map/battle.c
index 6de02dc23..ace030d10 100644
--- a/src/map/battle.c
+++ b/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]
diff --git a/src/map/battle.h b/src/map/battle.h
index 6ad232e37..0f92c3160 100644
--- a/src/map/battle.h
+++ b/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]
diff --git a/src/map/chrif.c b/src/map/chrif.c
index 4a37e1f1a..06b1946cc 100644
--- a/src/map/chrif.c
+++ b/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);
diff --git a/src/map/map.c b/src/map/map.c
index 92bddc3c5..9c9e99d5f 100644
--- a/src/map/map.c
+++ b/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); // スキルユニットグル?プの削除