diff options
-rw-r--r-- | Changelog-Trunk.txt | 1 | ||||
-rw-r--r-- | src/map/map.h | 3 | ||||
-rw-r--r-- | src/map/mob.c | 20 | ||||
-rw-r--r-- | src/map/pc.c | 25 | ||||
-rw-r--r-- | src/map/script.c | 13 | ||||
-rw-r--r-- | src/map/script.h | 3 |
6 files changed, 40 insertions, 25 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index bc6d3161d..31231db07 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -5,6 +5,7 @@ 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 misleading and inaccurately documented events and added a missing flag. [Lance]
* Fixed npc_cleanup_dbsub not removing key and caused pointer being freed problem. [Lance]
* Fixed handling of the char_gm_read config for packet 0x2af7 (reloadgmdb)
[Skotlex]
diff --git a/src/map/map.h b/src/map/map.h index cfedf527b..77044ee8c 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -431,8 +431,9 @@ struct map_session_data { unsigned snovice_flag : 4;
// originally by Qamera, adapted by celest
unsigned event_death : 1;
- unsigned event_kill : 1;
+ unsigned event_kill_pc : 1;
unsigned event_disconnect : 1;
+ unsigned event_kill_mob : 1;
// Abracadabra bugfix by Aru
unsigned abra_flag : 1;
unsigned autotrade : 1; //By Fantik
diff --git a/src/map/mob.c b/src/map/mob.c index b54edaab7..24806b374 100644 --- a/src/map/mob.c +++ b/src/map/mob.c @@ -2848,16 +2848,18 @@ int mob_damage(struct block_list *src,struct mob_data *md,int damage,int type) } else if (mvp_sd) {
//lordalfa
- pc_setglobalreg(mvp_sd,"killedrid",(md->class_));
- if (script_config.event_script_type == 0) {
- struct npc_data *npc;
- if ((npc = npc_name2id("NPCKillEvent"))) {
- run_script(npc->u.scr.script,0,mvp_sd->bl.id,npc->bl.id); // NPCKillNPC
- ShowStatus("Event '"CL_WHITE"NPCKillEvent"CL_RESET"' executed.\n");
- }
+ pc_setglobalreg(mvp_sd,"killedrid",(md->class_));
+ if(sd->state.event_kill_mob){
+ if (script_config.event_script_type == 0) {
+ struct npc_data *npc;
+ if ((npc = npc_name2id(script_config.kill_mob_event_name))) {
+ run_script(npc->u.scr.script,0,mvp_sd->bl.id,npc->bl.id); // PCKillNPC [Lance]
+ ShowStatus("Event '"CL_WHITE"%s"CL_RESET"' executed.\n",script_config.kill_mob_event_name);
+ }
} else {
- ShowStatus("%d '"CL_WHITE"%s"CL_RESET"' events executed.\n",
- npc_event_doall_id("NPCKillEvent", mvp_sd->bl.id), "NPCKillEvent");
+ ShowStatus("%d '"CL_WHITE"%s"CL_RESET"' events executed.\n",
+ npc_event_doall_id(script_config.kill_mob_event_name, mvp_sd->bl.id), script_config.kill_mob_event_name);
+ }
}
}
//[lordalfa]
diff --git a/src/map/pc.c b/src/map/pc.c index 5673e91dc..2a47ab2ae 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -803,8 +803,9 @@ int pc_authok(struct map_session_data *sd, int login_id2, time_t connect_until_t sd->die_counter=-1;
//Until the reg values arrive, set them to not require trigger...
sd->state.event_death = 1;
- sd->state.event_kill = 1;
+ sd->state.event_kill_pc = 1;
sd->state.event_disconnect = 1;
+ sd->state.event_kill_mob = 1;
if (night_flag) {
char tmpstr[1024];
@@ -927,13 +928,15 @@ int pc_reg_received(struct map_session_data *sd) // Automated script events
if (script_config.event_requires_trigger) {
sd->state.event_death = pc_readglobalreg(sd, script_config.die_event_name);
- sd->state.event_kill = pc_readglobalreg(sd, script_config.kill_event_name);
+ sd->state.event_kill_pc = pc_readglobalreg(sd, script_config.kill_pc_event_name);
+ sd->state.event_kill_mob = pc_readglobalreg(sd, script_config.kill_mob_event_name);
sd->state.event_disconnect = pc_readglobalreg(sd, script_config.logout_event_name);
// if script triggers are not required
} else {
sd->state.event_death = 1;
- sd->state.event_kill = 1;
+ sd->state.event_kill_pc = 1;
sd->state.event_disconnect = 1;
+ sd->state.event_kill_mob = 1;
}
if (script_config.event_script_type == 0) {
@@ -5328,16 +5331,16 @@ int pc_damage(struct block_list *src,struct map_session_data *sd,int damage) if (ssd) {
if (sd->state.event_death)
pc_setglobalreg(sd,"killerrid",(ssd->status.account_id));
- if (ssd->state.event_kill) {
+ if (ssd->state.event_kill_pc) {
if (script_config.event_script_type == 0) {
struct npc_data *npc;
- if ((npc = npc_name2id(script_config.kill_event_name))) {
- run_script(npc->u.scr.script,0,sd->bl.id,npc->bl.id); // PCKillNPC
- ShowStatus("Event '"CL_WHITE"%s"CL_RESET"' executed.\n", script_config.kill_event_name);
+ if ((npc = npc_name2id(script_config.kill_pc_event_name))) {
+ run_script(npc->u.scr.script,0,sd->bl.id,npc->bl.id); // PCKillPC [Lance]
+ ShowStatus("Event '"CL_WHITE"%s"CL_RESET"' executed.\n", script_config.kill_pc_event_name);
}
} else {
ShowStatus("%d '"CL_WHITE"%s"CL_RESET"' events executed.\n",
- npc_event_doall_id(script_config.kill_event_name, sd->bl.id), script_config.kill_event_name);
+ npc_event_doall_id(script_config.kill_pc_event_name, sd->bl.id), script_config.kill_pc_event_name);
}
}
if (battle_config.pk_mode && ssd->status.manner >= 0 && battle_config.manner_system) {
@@ -6541,8 +6544,10 @@ int pc_setregistry(struct map_session_data *sd,char *reg,int val,int type) { // status_calc_pc(sd,0); //I doubt this is needed....
} else if(strcmp(reg,script_config.die_event_name) == 0){
sd->state.event_death = val;
- } else if(strcmp(reg,script_config.kill_event_name) == 0){
- sd->state.event_kill = val;
+ } else if(strcmp(reg,script_config.kill_pc_event_name) == 0){
+ sd->state.event_kill_pc = val;
+ } else if(strcmp(reg,script_config.kill_mob_event_name) == 0){
+ sd->state.event_kill_mob = val;
} else if(strcmp(reg,script_config.logout_event_name) == 0){
sd->state.event_disconnect = val;
}
diff --git a/src/map/script.c b/src/map/script.c index e38e55c85..b39eba0fa 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -11140,10 +11140,15 @@ int script_config_read_sub(char *cfgName) if (strlen(script_config.die_event_name) != strlen(w2))
ShowWarning("script_config_read: Event label truncated (max length is 23 chars): %d\n", script_config.die_event_name);
}
- else if(strcmpi(w1,"kill_event_name")==0) {
- strncpy(script_config.kill_event_name, w2, NAME_LENGTH-1);
- if (strlen(script_config.kill_event_name) != strlen(w2))
- ShowWarning("script_config_read: Event label truncated (max length is 23 chars): %d\n", script_config.kill_event_name);
+ else if(strcmpi(w1,"kill_pc_event_name")==0) {
+ strncpy(script_config.kill_pc_event_name, w2, NAME_LENGTH-1);
+ if (strlen(script_config.kill_pc_event_name) != strlen(w2))
+ ShowWarning("script_config_read: Event label truncated (max length is 23 chars): %d\n", script_config.kill_pc_event_name);
+ }
+ else if(strcmpi(w1,"kill_mob_event_name")==0) {
+ strncpy(script_config.kill_mob_event_name, w2, NAME_LENGTH-1);
+ if (strlen(script_config.kill_mob_event_name) != strlen(w2))
+ ShowWarning("script_config_read: Event label truncated (max length is 23 chars): %d\n", script_config.kill_mob_event_name);
}
else if(strcmpi(w1,"login_event_name")==0) {
strncpy(script_config.login_event_name, w2, NAME_LENGTH-1);
diff --git a/src/map/script.h b/src/map/script.h index ecd326de9..9baff784e 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -20,7 +20,8 @@ extern struct Script_Config { unsigned event_script_type : 1;
unsigned event_requires_trigger : 1;
char die_event_name[NAME_LENGTH];
- char kill_event_name[NAME_LENGTH];
+ char kill_pc_event_name[NAME_LENGTH];
+ char kill_mob_event_name[NAME_LENGTH];
char login_event_name[NAME_LENGTH];
char logout_event_name[NAME_LENGTH];
char loadmap_event_name[NAME_LENGTH];
|