Pārlūkot izejas kodu

- Increased Run's walk speed bonus to 25->50%
- Modified emergency_call setting to allow for more specific configuration (woe/non-woe, gvg-grounds/non-gvg-grounds, disable from nowarpto maps), see skill.conf for details.


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

skotlex 19 gadi atpakaļ
vecāks
revīzija
41f2f3ca40
6 mainītis faili ar 44 papildinājumiem un 32 dzēšanām
  1. 4 0
      Changelog-Trunk.txt
  2. 5 0
      conf-tmpl/Changelog.txt
  3. 10 6
      conf-tmpl/battle/skill.conf
  4. 5 5
      src/map/script.c
  5. 11 15
      src/map/skill.c
  6. 9 6
      src/map/status.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/08/14
+	* Increased Run's walk speed bonus to 25->50% [Skotlex]
+	* Modified emergency_call setting to allow for more specific configuration
+	  (woe/non-woe, gvg-grounds/non-gvg-grounds, disable from nowarpto maps), see
+	  skill.conf for details. [Skotlex]
 	* Fixed script engine allowing scripts to set a player's zeny to negative
 	  values. [Skotlex]
 	* Fixed setting hide_woe_damage making even "miss" attacks seem to connect.

+ 5 - 0
conf-tmpl/Changelog.txt

@@ -1,4 +1,9 @@
 Date	Added
+
+2006/08/14
+	* Modified emergency_call setting to allow for more specific configuration
+	  (woe/non-woe, gvg-grounds/non-gvg-grounds, disable from nowarpto maps), see
+	  skill.conf for details. [Skotlex]
 2006/08/10
 	* Removed setting mob_ghostring_fix [Skotlex]
 	* Changed setting attack_attr_none to affect all neutral-element attacks.

+ 10 - 6
conf-tmpl/battle/skill.conf

@@ -220,12 +220,16 @@ berserk_cancels_buffs: no
 max_heal: 9999
 max_heal_lv: 11
 
-// Emergency Recall Guild Skill setting.
-// 0: Skill is disabled, can't be used anywhere.
-// 1: Skill fails when used on "nowarpto" maps
-//    (note that by default all GVG maps are nowarpto)
-// 2: Skill is usable everywhere.
-emergency_call: 2
+// Emergency Recall Guild Skill setting (add as appropiate).
+// Note that for the skill to be usable at all, 
+// you need at least one of 1/2 and 4/8
+// 1: Skill is usable outside of woe.
+// 2: Skill is usable during woe.
+// 4: Skill is usable outside of GvG grounds
+// 8: Skill is usable on GvG grounds
+//16: Disable skill from "nowarpto" maps
+//    (note that by default all Castles have the nowarpto flag)
+emergency_call: 15
 
 // Max Possible Level of Monster skills
 // Note: If your MVPs are too tough, reduce it to 10.

+ 5 - 5
src/map/script.c

@@ -162,7 +162,7 @@ enum {
 };
 
 enum {
-	MF_NOMEMO,
+	MF_NOMEMO,	//0
 	MF_NOTELEPORT,
 	MF_NOSAVE,
 	MF_NOBRANCH,
@@ -172,7 +172,7 @@ enum {
 	MF_PVP_NOPARTY,
 	MF_PVP_NOGUILD,
 	MF_GVG,
-	MF_GVG_NOPARTY,
+	MF_GVG_NOPARTY,	//10
 	MF_NOTRADE,
 	MF_NOSKILL,
 	MF_NOWARP,
@@ -182,7 +182,7 @@ enum {
 	MF_FOG,
 	MF_SAKURA,
 	MF_LEAVES,
-	MF_RAIN,
+	MF_RAIN,	//20
 	MF_INDOORS,
 	MF_NOGO,
 	MF_CLOUDS,
@@ -192,7 +192,7 @@ enum {
 	MF_GVG_DUNGEON,
 	MF_NIGHTENABLED,
 	MF_NOBASEEXP,
-	MF_NOJOBEXP,
+	MF_NOJOBEXP,	//30
 	MF_NOMOBLOOT,
 	MF_NOMVPLOOT,
 	MF_NORETURN,
@@ -202,7 +202,7 @@ enum {
 	MF_NOCOMMAND,
 	MF_NODROP,
 	MF_JEXP,
-	MF_BEXP,
+	MF_BEXP,	//40
 	MF_NOVENDING,
 	MF_LOADEVENT,
 	MF_NOCHAT

+ 11 - 15
src/map/skill.c

@@ -925,9 +925,11 @@ int skillnotok (int skillid, struct map_session_data *sd)
 			}
 			break;
 		case GD_EMERGENCYCALL:
-			if (!battle_config.emergency_call ||
-				(map[sd->bl.m].flag.nowarpto && battle_config.emergency_call&1))
-			{
+			if (
+				!(battle_config.emergency_call&(agit_flag?2:1)) ||
+				!(battle_config.emergency_call&(map_flag_gvg(sd->bl.m)?8:4)) ||
+				(battle_config.emergency_call&16 && map[sd->bl.m].flag.nowarpto)
+			)	{
 				clif_skill_fail(sd,skillid,0,0);
 				return 1;
 			}
@@ -6898,7 +6900,7 @@ int skill_unit_onplace (struct skill_unit *src, struct block_list *bl, unsigned
 	case UNT_HERMODE:
 		 //Needed to check when a dancer/bard leaves their ensemble area.
 		if (sg->src_id==bl->id &&
-			!(sc && sc->data[SC_SPIRIT].timer == -1 && sc->data[SC_SPIRIT].val2 != SL_BARDDANCER))
+			!(sc && sc->data[SC_SPIRIT].timer != -1 && sc->data[SC_SPIRIT].val2 == SL_BARDDANCER))
 			return skillid;
 		if (sc && sc->data[type].timer==-1)
 			sc_start4(bl,type,100,sg->skill_lv,sg->val1,sg->val2,0,sg->limit);
@@ -8286,22 +8288,16 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
 	case GD_BATTLEORDER:
 	case GD_REGENERATION:
 	case GD_RESTORE:
+		//Emergency Recall is handled on skill_notok
+		if (skill != GD_EMERGENCYCALL && !agit_flag) {
+			clif_skill_fail(sd,skill,0,0);
+			return 0;
+		}
 	case GD_EMERGENCYCALL:
 		if (!sd->status.guild_id || !sd->state.gmaster_flag)
 			return 0;
 		if (lv <= 0)
 			return 0;
-			
-		if	(skill == GD_EMERGENCYCALL) {
-			if (!map_flag_gvg(sd->bl.m))
-			{	//if not allowed to warp to the map (castles are always allowed)
-				clif_skill_fail(sd,skill,0,0);
-				return 0;
-			}
-		} else if (!agit_flag) {
-			clif_skill_fail(sd,skill,0,0);
-			return 0;
-		}
 		break;
 
 	case GS_GLITTERING:

+ 9 - 6
src/map/status.c

@@ -308,7 +308,7 @@ void initChangeTables(void) {
 	add_sc(PF_FOGWALL, SC_FOGWALL);
 	set_sc(PF_SPIDERWEB, SC_SPIDERWEB, SI_BLANK, SCB_FLEE);
 	add_sc(WE_BABY, SC_BABY);
-	set_sc(TK_RUN, SC_RUN, SI_RUN, SCB_SPEED);
+	set_sc(TK_RUN, SC_RUN, SI_RUN, SCB_SPEED|SCB_DSPD);
 	set_sc(TK_RUN, SC_SPURT, SI_SPURT, SCB_STR);
 	set_sc(TK_READYSTORM, SC_READYSTORM, SI_READYSTORM, SCB_NONE);
 	set_sc(TK_READYDOWN, SC_READYDOWN, SI_READYDOWN, SCB_NONE);
@@ -3420,12 +3420,12 @@ static unsigned short status_calc_speed(struct block_list *bl, struct status_cha
 	//% increases (they don't stack, with the exception of Speedup1? @.@)
 	if(sc->data[SC_SPEEDUP1].timer!=-1)
 		speed -= speed * 50/100;
-	if(sc->data[SC_SPEEDUP0].timer!=-1)
+	if(sc->data[SC_RUN].timer!=-1)
+		speed -= speed * 50/100;
+	else if(sc->data[SC_SPEEDUP0].timer!=-1)
 		speed -= speed * 25/100;
 	else if(sc->data[SC_INCREASEAGI].timer!=-1)
 		speed -= speed * 25/100;
-	else if(sc->data[SC_RUN].timer!=-1)
-		speed -= speed * 25/100;
 	else if(sc->data[SC_FUSION].timer != -1)
 		speed -= speed * 25/100;
 	else if(sc->data[SC_CARTBOOST].timer!=-1)
@@ -3584,8 +3584,11 @@ static unsigned short status_calc_dmotion(struct block_list *bl, struct status_c
 	if(!sc || !sc->count || map_flag_gvg(bl->m))
 		return cap_value(dmotion,0,USHRT_MAX);
 		
-	if (sc->data[SC_ENDURE].timer!=-1 ||
-		sc->data[SC_CONCENTRATION].timer!=-1)
+	if (sc->data[SC_ENDURE].timer!=-1)
+		return 0;
+	if (sc->data[SC_CONCENTRATION].timer!=-1)
+		return 0;
+	if(sc->data[SC_RUN].timer!=-1)
 		return 0;
 
 	return cap_value(dmotion,0,USHRT_MAX);