Browse Source

Venom Splasher and Gloria Domini fixes and updates

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@10907 54d463be-8e91-2dee-dedb-b68131a5f0ec
DracoRPG 18 years ago
parent
commit
63929dccf1
6 changed files with 29 additions and 25 deletions
  1. 10 0
      Changelog-Trunk.txt
  2. 1 0
      db/Changelog.txt
  3. 1 1
      db/skill_cast_db.txt
  4. 1 1
      doc/map_cache.txt
  5. 13 15
      src/map/battle.c
  6. 3 8
      src/map/skill.c

+ 10 - 0
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.
 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.
 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
 2007/07/23
 	* Changed the restricting mapflag for @jump from nowarp/nowarpto
 	* Changed the restricting mapflag for @jump from nowarp/nowarpto
 	  to noteleport. Adjust your scripts if you were using it this way.
 	  to noteleport. Adjust your scripts if you were using it this way.

+ 1 - 0
db/Changelog.txt

@@ -50,6 +50,7 @@
 ========================
 ========================
 
 
 07/24
 07/24
+	* Updated Venom Splasher's bomb timer [DracoRPG]
 	* Added Job_Alchemist constant, Job_Alchem should now be considered deprecated [DracoRPG]
 	* Added Job_Alchemist constant, Job_Alchem should now be considered deprecated [DracoRPG]
 07/15
 07/15
 	* Rev. 10885 Fixed incorrect skill ID for Lady Tany's Expulsion. [L0ne_W0lf]
 	* Rev. 10885 Fixed incorrect skill ID for Lady Tany's Expulsion. [L0ne_W0lf]

+ 1 - 1
db/skill_cast_db.txt

@@ -254,7 +254,7 @@
 //-- AS_VENOMDUST
 //-- 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
 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
 //-- 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
 
 
 //==========================================
 //==========================================
 
 

+ 1 - 1
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
    Allows to specify the file containing the list of maps to add to the map cache
  -cache path/to/map/cache
  -cache path/to/map/cache
    Allows to specify the path to the generated 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)
    Allows to force the rebuild mode (map cache will be overwritten even if it already exists)
 
 
 
 

+ 13 - 15
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(md && md->guardian_data) {
 		if(class_ == MOBID_EMPERIUM && flag&BF_SKILL)
 		if(class_ == MOBID_EMPERIUM && flag&BF_SKILL)
-		//SKill inmunity.
+		//Skill immunity.
 			switch (skill_num) {
 			switch (skill_num) {
-			case PA_PRESSURE:
 			case MO_TRIPLEATTACK:
 			case MO_TRIPLEATTACK:
 			case HW_GRAVITATION:
 			case HW_GRAVITATION:
 				break;
 				break;
@@ -1067,8 +1066,8 @@ static struct Damage battle_calc_weapon_attack(
 		if (skill_num && !flag.hit)
 		if (skill_num && !flag.hit)
 			switch(skill_num)
 			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;
 						break;
 					flag.hit = 1;
 					flag.hit = 1;
 					break;
 					break;
@@ -1247,14 +1246,14 @@ static struct Damage battle_calc_weapon_attack(
 					(sc && sc->data[SC_WEAPONPERFECTION].timer!=-1?8:0);
 					(sc && sc->data[SC_WEAPONPERFECTION].timer!=-1?8:0);
 				if (flag.arrow && sd)
 				if (flag.arrow && sd)
 				switch(sd->status.weapon) {
 				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);
 				wd.damage = battle_calc_base_damage(sstatus, &sstatus->rhw, sc, tstatus->size, sd, i);
 				if (flag.lh)
 				if (flag.lh)
@@ -1477,15 +1476,13 @@ static struct Damage battle_calc_weapon_attack(
 					break;
 					break;
 				case AS_SPLASHER:
 				case AS_SPLASHER:
 					i = 400+50*skill_lv;
 					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;
 					skillratio += i;
 					break;
 					break;
 				case ASC_BREAKER:
 				case ASC_BREAKER:
 					skillratio += 100*skill_lv-100;
 					skillratio += 100*skill_lv-100;
 					break;
 					break;
 				case PA_SACRIFICE:
 				case PA_SACRIFICE:
-					//40% less effective on siege maps. [Skotlex]
 					skillratio += 10*skill_lv-10;
 					skillratio += 10*skill_lv-10;
 					break;
 					break;
 				case PA_SHIELDCHAIN:
 				case PA_SHIELDCHAIN:
@@ -1615,6 +1612,7 @@ static struct Damage battle_calc_weapon_attack(
 			if(sc->data[SC_EDP].timer != -1 &&
 			if(sc->data[SC_EDP].timer != -1 &&
 			  	skill_num != ASC_BREAKER &&
 			  	skill_num != ASC_BREAKER &&
 				skill_num != ASC_METEORASSAULT &&
 				skill_num != ASC_METEORASSAULT &&
+				skill_num != AS_SPLASHER &&
 				skill_num != AS_VENOMKNIFE)
 				skill_num != AS_VENOMKNIFE)
 				ATK_ADDRATE(sc->data[SC_EDP].val3);
 				ATK_ADDRATE(sc->data[SC_EDP].val3);
 		}
 		}

+ 3 - 8
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_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));
 					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;
 	break;
 
 
@@ -1110,7 +1104,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
 			skilllv = pc_checkskill(sd, TF_POISON);
 			skilllv = pc_checkskill(sd, TF_POISON);
 	case TF_POISON:
 	case TF_POISON:
 	case AS_SPLASHER:
 	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
 			&&	sd && skillid==TF_POISON
 		)
 		)
 			clif_skill_fail(sd,skillid,0,0);
 			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;
 		break;
 
 
 	case AS_SPLASHER:
 	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();
 			map_freeblock_unlock();
 			return 1;
 			return 1;
 		}
 		}