Browse Source

- Fixed SG_FUSION costing SP to deactivate.
- Some cleaning up at pc_setpos to prevent calling pc_clean_skilltree
- Added pc_clean_skilltree on pc_recv_reg
- Enabled use of TF_HIDING while Cloaked.
- pc_resetstate won't remove wedding skills now


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

skotlex 19 years ago
parent
commit
ff483b7810
4 changed files with 20 additions and 10 deletions
  1. 5 0
      Changelog-Trunk.txt
  2. 12 8
      src/map/pc.c
  3. 1 0
      src/map/skill.c
  4. 2 2
      src/map/status.c

+ 5 - 0
Changelog-Trunk.txt

@@ -5,6 +5,11 @@ IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.  EV
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
 
 
 2006/02/13
 2006/02/13
+	* Fixed SG_FUSION costing SP to deactivate. [Skotlex]
+	* Some cleaning up at pc_setpos to prevent calling pc_clean_skilltree
+	  [Skotlex]
+	* Enabled use of TF_HIDING while Cloaked. [Skotlex]
+	* pc_resetstate won't remove wedding skills now [Skotlex]
 	* NPC_POWERUP now gives +40% atk per level. [Skotlex]
 	* NPC_POWERUP now gives +40% atk per level. [Skotlex]
 	* Water elementals can be frozen again. [Skotlex]
 	* Water elementals can be frozen again. [Skotlex]
 	* Fixed the sc_def equation in status_change_start. [Skotlex]
 	* Fixed the sc_def equation in status_change_start. [Skotlex]

+ 12 - 8
src/map/pc.c

@@ -925,6 +925,7 @@ int pc_reg_received(struct map_session_data *sd)
 	char feel_var[3][NAME_LENGTH] = {"PC_FEEL_SUN","PC_FEEL_MOON","PC_FEEL_STAR"};
 	char feel_var[3][NAME_LENGTH] = {"PC_FEEL_SUN","PC_FEEL_MOON","PC_FEEL_STAR"};
 	char hate_var[3][NAME_LENGTH] = {"PC_HATE_MOB_SUN","PC_HATE_MOB_MOON","PC_HATE_MOB_STAR"};
 	char hate_var[3][NAME_LENGTH] = {"PC_HATE_MOB_SUN","PC_HATE_MOB_MOON","PC_HATE_MOB_STAR"};
 	
 	
+	pc_clean_skilltree(sd); //Clean skill tree before loading reg-based skills
 	sd->change_level = pc_readglobalreg(sd,"jobchange_level");
 	sd->change_level = pc_readglobalreg(sd,"jobchange_level");
 	sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");
 	sd->die_counter = pc_readglobalreg(sd,"PC_DIE_COUNTER");
 	if (!sd->die_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE)
 	if (!sd->die_counter && (sd->class_&MAPID_UPPERMASK) == MAPID_SUPER_NOVICE)
@@ -3334,12 +3335,6 @@ int pc_setpos(struct map_session_data *sd,unsigned short mapindex,int x,int y,in
 				sd->petDB = NULL;
 				sd->petDB = NULL;
 				if(battle_config.pet_status_support)
 				if(battle_config.pet_status_support)
 					status_calc_pc(sd,2);
 					status_calc_pc(sd,2);
-				pc_clean_skilltree(sd);
-
-				if (sd->state.storage_flag == 1)
-					storage_storageclose(sd);
-				else if (sd->state.storage_flag == 2)
-					storage_guild_storageclose(sd);
 			}
 			}
 			else if(sd->pet.intimate > 0) {
 			else if(sd->pet.intimate > 0) {
 				pet_stopattack(sd->pd);
 				pet_stopattack(sd->pd);
@@ -3348,6 +3343,11 @@ int pc_setpos(struct map_session_data *sd,unsigned short mapindex,int x,int y,in
 				map_delblock(&sd->pd->bl);
 				map_delblock(&sd->pd->bl);
 			}
 			}
 		}
 		}
+		if (sd->state.storage_flag == 1)
+			storage_storageclose(sd);
+		else if (sd->state.storage_flag == 2)
+			storage_guild_storageclose(sd);
+
 		clif_changemap(sd,map[m].index,x,y); // [MouseJstr]
 		clif_changemap(sd,map[m].index,x,y); // [MouseJstr]
 	}
 	}
 		
 		
@@ -5065,8 +5065,12 @@ int pc_resetlvl(struct map_session_data* sd,int type)
 
 
 	nullpo_retr(0, sd);
 	nullpo_retr(0, sd);
 
 
-	for(i=1;i<MAX_SKILL;i++){
-		sd->status.skill[i].lv = 0;
+	if (type != 3) {
+		for(i=1;i<MAX_SKILL;i++){
+			if (sd->status.skill[i].lv &&
+				!skill_get_inf2(i)&INF2_WEDDING_SKILL) //Do not reset Wedding Skills. [Skotlex]
+				sd->status.skill[i].lv = 0; 
+		}
 	}
 	}
 
 
 	if(type == 1){
 	if(type == 1){

+ 1 - 0
src/map/skill.c

@@ -7861,6 +7861,7 @@ int skill_check_condition(struct map_session_data *sd,int type)
 	case PA_GOSPEL:
 	case PA_GOSPEL:
 	case CR_SHRINK:
 	case CR_SHRINK:
 	case TK_RUN:
 	case TK_RUN:
+	case SG_FUSION:
 		if(sd->sc.data[SkillStatusChangeTable[skill]].timer!=-1)
 		if(sd->sc.data[SkillStatusChangeTable[skill]].timer!=-1)
 			return 1;			/* ‰ð?œ‚·‚é?ê?‡‚ÍSP?Á”‚È‚¢ */
 			return 1;			/* ‰ð?œ‚·‚é?ê?‡‚ÍSP?Á”‚È‚¢ */
 		break;
 		break;

+ 2 - 2
src/map/status.c

@@ -708,8 +708,8 @@ int status_check_skilluse(struct block_list *src, struct block_list *target, int
 		if (sc->option&OPTION_HIDE && skill_num != TF_HIDING && skill_num != AS_GRIMTOOTH
 		if (sc->option&OPTION_HIDE && skill_num != TF_HIDING && skill_num != AS_GRIMTOOTH
 			&& skill_num != RG_BACKSTAP && skill_num != RG_RAID)
 			&& skill_num != RG_BACKSTAP && skill_num != RG_RAID)
 			return 0;
 			return 0;
-		if (sc->option&OPTION_CLOAK && skill_num == TF_HIDING)
-			return 0;
+//		if (sc->option&OPTION_CLOAK && skill_num == TF_HIDING)
+//			return 0; //Latest reports indicate Hiding is usable while Cloaking. [Skotlex]
 		if (sc->option&OPTION_CHASEWALK && skill_num != ST_CHASEWALK)
 		if (sc->option&OPTION_CHASEWALK && skill_num != ST_CHASEWALK)
 			return 0;
 			return 0;
 	}
 	}