summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt3
-rw-r--r--conf-tmpl/battle/battle.conf4
-rw-r--r--conf-tmpl/battle/skill.conf2
-rw-r--r--src/map/log.c1
-rw-r--r--src/map/npc.c4
-rw-r--r--src/map/pc.c44
6 files changed, 29 insertions, 29 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index ee9d8a389..fd9d05f97 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,9 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
2006/10/25
+ * Some cleaning of the pc_eventtimer and pc enqueue code, it should fix
+ some memory leaks when the event counter does not matches with the actual
+ number of queued timers during logout. [Skotlex]
* Fixed "skill_sp_override_grffile: yes" causing crashes when parsing
Homuncuus/Guild skills. [Skotlex]
* Made the exp bonus settings be adjustable: [Skotlex]
diff --git a/conf-tmpl/battle/battle.conf b/conf-tmpl/battle/battle.conf
index 30a136ee8..f7516836f 100644
--- a/conf-tmpl/battle/battle.conf
+++ b/conf-tmpl/battle/battle.conf
@@ -141,7 +141,9 @@ vit_penalty_count_lv: 3
attack_direction_change: 15
// For those who is set, attacks of Neutral element will not get any elemental
-// modifiers (they will hit for full damage on Ghost types) (Note 4)
+// adjustment (100% versus on all defense-elements) (Note 4)
+// NOTE: This is the setting that makes it so non-players can hit for full
+// damage against Ghost-type targets (eg: Ghostring wearing players).
attack_attr_none: 14
// Rate at which equipment can break (base rate before it's modified by any skills)
diff --git a/conf-tmpl/battle/skill.conf b/conf-tmpl/battle/skill.conf
index 42c4486f0..87e37b4b2 100644
--- a/conf-tmpl/battle/skill.conf
+++ b/conf-tmpl/battle/skill.conf
@@ -132,7 +132,7 @@ traps_setting: 0
// Restrictions applied to the Alchemist's Summon Flora skill (add as necessary)
// 1: Enable players to damage the floras outside of versus grounds.
-// 3: Disable having different types out at the same time
+// 2: Disable having different types out at the same time
// (eg: forbid summoning anything except hydras when there's already
// one hydra out)
summon_flora_setting: 3
diff --git a/src/map/log.c b/src/map/log.c
index bb061a062..556c7c414 100644
--- a/src/map/log.c
+++ b/src/map/log.c
@@ -212,7 +212,6 @@ int log_pick_mob(struct mob_data *md, const char *type, int nameid, int amount,
return 1; //Logged
}
-
int log_zeny(struct map_session_data *sd, char *type, struct map_session_data *src_sd, int amount)
{
// FILE *logfp;
diff --git a/src/map/npc.c b/src/map/npc.c
index 89538052d..4e982b69d 100644
--- a/src/map/npc.c
+++ b/src/map/npc.c
@@ -182,8 +182,8 @@ int npc_event_dequeue(struct map_session_data *sd)
// clear the last event
sd->eventqueue[MAX_EVENTQUEUE-1][0]=0;
// add the timer
- sd->eventtimer[ev]=add_timer(gettick()+100,pc_eventtimer,sd->bl.id,(int)name);//!!todo!!
-
+ sd->eventtimer[ev]=add_timer(gettick()+100,pc_eventtimer,sd->bl.id,(int)name);//TODO: Someone wrote here "!!todo!!", but what the hell is missing?
+ sd->eventcount++;
}else
ShowWarning("npc_event_dequeue: event timer is full !\n");
}
diff --git a/src/map/pc.c b/src/map/pc.c
index 4a90929ea..c3e68a807 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6139,19 +6139,16 @@ int pc_eventtimer(int tid,unsigned int tick,int id,int data)
if(sd==NULL)
return 0;
- for(i=0;i < MAX_EVENTTIMER;i++){
- if( sd->eventtimer[i]==tid ){
- sd->eventtimer[i]=-1;
- npc_event(sd,p,0);
- break;
- }
- }
- if (p) aFree(p);
- if(i==MAX_EVENTTIMER) {
- if(battle_config.error_log)
- ShowError("pc_eventtimer: no such event timer\n");
- }
+ for(i=0;i < MAX_EVENTTIMER && sd->eventtimer[i]!=tid; i++);
+
+ if(i < MAX_EVENTTIMER){
+ sd->eventtimer[i]=-1;
+ npc_event(sd,p,0);
+ sd->eventcount--;
+ } else if(battle_config.error_log)
+ ShowError("pc_eventtimer: no such event timer\n");
+ if (p) aFree(p);
return 0;
}
@@ -6162,20 +6159,19 @@ int pc_eventtimer(int tid,unsigned int tick,int id,int data)
int pc_addeventtimer(struct map_session_data *sd,int tick,const char *name)
{
int i;
+ char *evname;
nullpo_retr(0, sd);
- for(i=0;i<MAX_EVENTTIMER;i++)
- if( sd->eventtimer[i]==-1 )
- break;
- if(i<MAX_EVENTTIMER){
- char *evname = aStrdup(name);
- //char *evname=(char *)aMallocA((strlen(name)+1)*sizeof(char));
- //memcpy(evname,name,(strlen(name)+1));
- sd->eventtimer[i]=add_timer(gettick()+tick,
- pc_eventtimer,sd->bl.id,(int)evname);
- sd->eventcount++;
- }
+ for(i=0;i<MAX_EVENTTIMER && sd->eventtimer[i]!=-1;i++);
+
+ if(i==MAX_EVENTTIMER)
+ return 0;
+
+ evname = aStrdup(name);
+ sd->eventtimer[i]=add_timer(gettick()+tick,
+ pc_eventtimer,sd->bl.id,(int)evname);
+ sd->eventcount++;
return 0;
}
@@ -6246,9 +6242,9 @@ int pc_cleareventtimer(struct map_session_data *sd)
char *p = (char *)(get_timer(sd->eventtimer[i])->data);
delete_timer(sd->eventtimer[i],pc_eventtimer);
sd->eventtimer[i]=-1;
+ sd->eventcount--;
if (p) aFree(p);
}
-
return 0;
}