Browse Source

- Added a check to prevent Deluge/Volcano/Violent Gale from being placed on top of each other. Reverted the previous 'fix' where atk was being increased based on armor element rather than element of attack.
- Added flag 0x002 (no reiteration) to Deluge/Volcano/Violent Gale (skill_unit_db)
- Removed the noreturn mapflag check from script command warp.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@7858 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 years ago
parent
commit
e66ac3dfce
6 changed files with 28 additions and 14 deletions
  1. 4 0
      Changelog-Trunk.txt
  2. 2 0
      db/Changelog.txt
  3. 3 3
      db/skill_unit_db.txt
  4. 3 3
      src/map/battle.c
  5. 0 6
      src/map/script.c
  6. 16 2
      src/map/skill.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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/07/24
+	* Added a check to prevent Deluge/Volcano/Violent Gale from being placed on
+	  top of each other. Reverted the previous 'fix' where atk was being
+	  increased based on armor element rather than element of attack. [Skotlex]
+	* Removed the noreturn mapflag check from script command warp. [Skotlex]
 	* Homuculus cleanup [DracoRPG]
 	  - Replaced nullpo's in parse functions by silent checks
 	  - Removed server-side effect for menu option 0 (view status window...

+ 2 - 0
db/Changelog.txt

@@ -25,6 +25,8 @@
 
 =========================
 07/24
+	* Added flag 0x002 (no reiteration) to Deluge/Volcano/Violent Gale
+	  (skill_unit_db) [Skotlex]
 	* Edited Rachel mobs a little and added Beret to Turtle General drops [Playtester]
 	* Changed Land Protector's range back to 3. [Skotlex]
 07/23

+ 3 - 3
db/skill_unit_db.txt

@@ -52,9 +52,9 @@
 220,0xb0,    ,  0, 0,  -1,all,   0x002	//RG_GRAFFITI
 229,0xb1,    ,  0, 1,1000,enemy, 0x006	//AM_DEMONSTRATION
 254,0x86,    , -1, 0, 400,enemy, 0x000	//CR_GRANDCROSS
-285,0x9a,    ,  3, 0,  -1,all,   0x000	//SA_VOLCANO
-286,0x9b,    ,  3, 0,  -1,all,   0x000	//SA_DELUGE
-287,0x9c,    ,  3, 0,  -1,all,   0x000	//SA_VIOLENTGALE
+285,0x9a,    ,  3, 0,  -1,all,   0x002	//SA_VOLCANO
+286,0x9b,    ,  3, 0,  -1,all,   0x002	//SA_DELUGE
+287,0x9c,    ,  3, 0,  -1,all,   0x002	//SA_VIOLENTGALE
 288,0x9d,,3:3:4:4:5,0, -1,all,   0x000	//SA_LANDPROTECTOR
 306,0x9e,    ,  4, 0,6000,all,   0x200	//BD_LULLABY
 307,0x9f,    ,  4, 0,  -1,enemy, 0x210	//BD_RICHMANKIM

+ 3 - 3
src/map/battle.c

@@ -198,11 +198,11 @@ int battle_attr_fix(struct block_list *src, struct block_list *target, int damag
 	ratio = attr_fix_table[def_lv-1][atk_elem][def_type];
 	if (sc && sc->count)
 	{
-		if(sc->data[SC_VOLCANO].timer!=-1 && status_get_element(src) == ELE_FIRE)
+		if(sc->data[SC_VOLCANO].timer!=-1 && atk_elem == ELE_FIRE)
 			ratio += enchant_eff[sc->data[SC_VOLCANO].val1-1];
-		if(sc->data[SC_VIOLENTGALE].timer!=-1 && status_get_element(src) == ELE_WIND)
+		if(sc->data[SC_VIOLENTGALE].timer!=-1 && atk_elem == ELE_WIND)
 			ratio += enchant_eff[sc->data[SC_VIOLENTGALE].val1-1];
-		if(sc->data[SC_DELUGE].timer!=-1 && status_get_element(src) == ELE_WATER)
+		if(sc->data[SC_DELUGE].timer!=-1 && atk_elem == ELE_WATER)
 			ratio += enchant_eff[sc->data[SC_DELUGE].val1-1];
 	}
 	if (tsc && tsc->count)

+ 0 - 6
src/map/script.c

@@ -3054,15 +3054,9 @@ int buildin_warp(struct script_state *st)
 	if(strcmp(str,"Random")==0)
 		pc_randomwarp(sd,3);
 	else if(strcmp(str,"SavePoint")==0){
-		if(map[sd->bl.m].flag.noreturn)	// ’±‹ÖŽ~
-			return 0;
-
 		pc_setpos(sd,sd->status.save_point.map,
 			sd->status.save_point.x,sd->status.save_point.y,3);
 	}else if(strcmp(str,"Save")==0){
-		if(map[sd->bl.m].flag.noreturn)	// ’±‹ÖŽ~
-			return 0;
-
 		pc_setpos(sd,sd->status.save_point.map,
 			sd->status.save_point.x,sd->status.save_point.y,3);
 	}else

+ 16 - 2
src/map/skill.c

@@ -2194,6 +2194,20 @@ static int skill_check_unit_range_sub (struct block_list *bl, va_list ap)
 			if(g_skillid != MG_SAFETYWALL && g_skillid != AL_PNEUMA)
 				return 0;
 			break;
+		//Cannot stack among themselves.
+		case SA_VOLCANO:
+		case SA_DELUGE:
+		case SA_VIOLENTGALE:
+			switch (g_skillid)
+			{
+				case SA_VOLCANO:
+				case SA_DELUGE:
+				case SA_VIOLENTGALE:
+					break;
+				default:
+					return 0;
+			}
+			break;
 		case AL_WARP:
 		case HT_SKIDTRAP:
 		case HT_LANDMINE:
@@ -5831,7 +5845,7 @@ int skill_castend_id (int tid, unsigned int tick, int id, int data)
 			break;
 		}
 
-		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1))		/* 使用条件チェック */
+		if(sd && !skill_check_condition(sd,ud->skillid, ud->skilllv,1))
 			break;
 			
 		if(hd && !skill_check_condition_hom(hd,ud->skillid, ud->skilllv,1))	//[orn]
@@ -7683,7 +7697,7 @@ static int skill_check_condition_char_sub (struct block_list *bl, va_list ap)
 	if(pc_isdead(tsd))
 		return 0;
 
-	if (tsd->sc.count && (tsd->sc.data[SC_SILENCE].timer != -1 || tsd->sc.data[SC_STUN].timer != -1))
+	if (tsd->sc.count && (tsd->sc.data[SC_SILENCE].timer != -1 || tsd->sc.opt1))
 		return 0;
 	
 	switch(skillid)