diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 8e8667ec09..b1930ae7c4 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -3,6 +3,16 @@ Date	Added
 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.
 
+2007/07/24
+	* Fixes on Venom Splasher and the like (see topic:152975) [DracoRPG]
+	- VS / Envenom / Throw Venom Knife poison chance raised to 10+4*lv %
+	- Removed chance to be poisoned when hit if you're a VS time-bomb
+	- Adjusted bomb timer to correct values (5.5+0.5*lv sec)
+	- Removed damage boost from Poison React
+	- Now ignores EDP damage boost
+	- Prevented use on bosses
+	- Fixes still needed for recast restriction and splash damage
+	* Removed Emperium-damaging ability from Gloria Domini [DracoRPG]
 2007/07/23
 	* Changed the restricting mapflag for @jump from nowarp/nowarpto
 	  to noteleport. Adjust your scripts if you were using it this way.
diff --git a/db/Changelog.txt b/db/Changelog.txt
index 5fb94087ed..e44401ce72 100644
--- a/db/Changelog.txt
+++ b/db/Changelog.txt
@@ -50,6 +50,7 @@
 ========================
 
 07/24
+	* Updated Venom Splasher's bomb timer [DracoRPG]
 	* Added Job_Alchemist constant, Job_Alchem should now be considered deprecated [DracoRPG]
 07/15
 	* Rev. 10885 Fixed incorrect skill ID for Lady Tany's Expulsion. [L0ne_W0lf]
diff --git a/db/skill_cast_db.txt b/db/skill_cast_db.txt
index 2b54bffe93..353d048e99 100644
--- a/db/skill_cast_db.txt
+++ b/db/skill_cast_db.txt
@@ -254,7 +254,7 @@
 //-- AS_VENOMDUST
 140,0,0,0,5000:10000:15000:20000:25000:30000:35000:40000:45000:50000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000
 //-- AS_SPLASHER
-141,1000,0,0,11000:10000:9000:8000:7000:6000:5000:4000:3000:2000,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000
+141,1000,0,0,6000:6500:7000:7500:8000:8500:9000:9500:10000:10500,15000:20000:25000:30000:35000:40000:45000:50000:55000:60000
 
 //==========================================
 
diff --git a/doc/map_cache.txt b/doc/map_cache.txt
index 47a236ab64..c235e80227 100644
--- a/doc/map_cache.txt
+++ b/doc/map_cache.txt
@@ -47,7 +47,7 @@ Here are the command-line arguments you can provide to the map cache builder to
    Allows to specify the file containing the list of maps to add to the map cache
  -cache path/to/map/cache
    Allows to specify the path to the generated map cache
- - rebuild
+ -rebuild
    Allows to force the rebuild mode (map cache will be overwritten even if it already exists)
 
 
diff --git a/src/map/battle.c b/src/map/battle.c
index 0a8fb57edb..b6d9dfd898 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -528,9 +528,8 @@ int battle_calc_gvg_damage(struct block_list *src,struct block_list *bl,int dama
 	
 	if(md && md->guardian_data) {
 		if(class_ == MOBID_EMPERIUM && flag&BF_SKILL)
-		//SKill inmunity.
+		//Skill immunity.
 			switch (skill_num) {
-			case PA_PRESSURE:
 			case MO_TRIPLEATTACK:
 			case HW_GRAVITATION:
 				break;
@@ -1067,8 +1066,8 @@ static struct Damage battle_calc_weapon_attack(
 		if (skill_num && !flag.hit)
 			switch(skill_num)
 			{
-				case AS_SPLASHER: //Reports say it always hits?
-					if (wflag) //Only if you were the one exploding.
+				case AS_SPLASHER:
+					if (wflag) // Always hits the one exploding.
 						break;
 					flag.hit = 1;
 					break;
@@ -1247,14 +1246,14 @@ static struct Damage battle_calc_weapon_attack(
 					(sc && sc->data[SC_WEAPONPERFECTION].timer!=-1?8:0);
 				if (flag.arrow && sd)
 				switch(sd->status.weapon) {
-				case W_BOW:
-				case W_REVOLVER:
-				case W_SHOTGUN:
-				case W_GATLING:
-				case W_GRENADE:
-				  break;
-				default:
-				  i |= 16; // for ex. shuriken must not be influenced by DEX
+					case W_BOW:
+					case W_REVOLVER:
+					case W_SHOTGUN:
+					case W_GATLING:
+					case W_GRENADE:
+						break;
+					default:
+						i |= 16; // for ex. shuriken must not be influenced by DEX
 				}
 				wd.damage = battle_calc_base_damage(sstatus, &sstatus->rhw, sc, tstatus->size, sd, i);
 				if (flag.lh)
@@ -1477,15 +1476,13 @@ static struct Damage battle_calc_weapon_attack(
 					break;
 				case AS_SPLASHER:
 					i = 400+50*skill_lv;
-					if (sd) i += 20*pc_checkskill(sd,AS_POISONREACT);
-					if (wflag>1) i/=wflag; //Splash damage is half.
+					if (wflag>1) i /= 4; // FIXME: Should be 25% of damage inflicted to target, not 25% of skillratio bonus
 					skillratio += i;
 					break;
 				case ASC_BREAKER:
 					skillratio += 100*skill_lv-100;
 					break;
 				case PA_SACRIFICE:
-					//40% less effective on siege maps. [Skotlex]
 					skillratio += 10*skill_lv-10;
 					break;
 				case PA_SHIELDCHAIN:
@@ -1615,6 +1612,7 @@ static struct Damage battle_calc_weapon_attack(
 			if(sc->data[SC_EDP].timer != -1 &&
 			  	skill_num != ASC_BREAKER &&
 				skill_num != ASC_METEORASSAULT &&
+				skill_num != AS_SPLASHER &&
 				skill_num != AS_VENOMKNIFE)
 				ATK_ADDRATE(sc->data[SC_EDP].val3);
 		}
diff --git a/src/map/skill.c b/src/map/skill.c
index 0f95a0f7be..07c0eddeba 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1088,12 +1088,6 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 				sc_start4(bl,SC_DPOISON,sc->data[SC_EDP].val2,
 					sc->data[SC_EDP].val1,0,0,0,skill_get_time2(ASC_EDP,sc->data[SC_EDP].val1));
 		}
-		if (tsc->count) {
-			if (tsc->data[SC_SPLASHER].timer != -1)
-				sc_start4(bl,SC_POISON,2*tsc->data[SC_SPLASHER].val1+10,
-					tsc->data[SC_SPLASHER].val1,0,0,0,
-					skill_get_time2(tsc->data[SC_SPLASHER].val2,tsc->data[SC_SPLASHER].val1));
-		}
 	}
 	break;
 
@@ -1110,7 +1104,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 			skilllv = pc_checkskill(sd, TF_POISON);
 	case TF_POISON:
 	case AS_SPLASHER:
-		if(!sc_start(bl,SC_POISON,(2*skilllv+10),skilllv,skill_get_time2(skillid,skilllv))
+		if(!sc_start(bl,SC_POISON,(4*skilllv+10),skilllv,skill_get_time2(skillid,skilllv))
 			&&	sd && skillid==TF_POISON
 		)
 			clif_skill_fail(sd,skillid,0,0);
@@ -5116,7 +5110,8 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
 		break;
 
 	case AS_SPLASHER:
-		if(tstatus->max_hp*3/4 < tstatus->hp) {
+		if(tstatus->mode&MD_BOSS || tstatus-> hp > tstatus->max_hp*3/4) {
+			if (sd) clif_skill_fail(sd,skillid,0,0);
 			map_freeblock_unlock();
 			return 1;
 		}