Kaynağa Gözat

Added Odin's Power skill.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15724 54d463be-8e91-2dee-dedb-b68131a5f0ec
protimus 13 yıl önce
ebeveyn
işleme
9a02d376d9
4 değiştirilmiş dosya ile 13 ekleme ve 2 silme
  1. 1 1
      db/re/skill_cast_db.txt
  2. 1 1
      db/re/skill_db.txt
  3. 9 0
      src/map/status.c
  4. 2 0
      src/map/status.h

+ 1 - 1
db/re/skill_cast_db.txt

@@ -1634,7 +1634,7 @@
 //-- ALL_GUARDIAN_RECALL
 2536,3000,0,0,0,0,300000
 //-- ALL_ODINS_POWER
-//2537,5000,5000,0,60000,0,60000
+2537,5000,5000,0,60000,0,60000
 //==========================================
 
 //===== Homunculus Skills ==================

+ 1 - 1
db/re/skill_db.txt

@@ -1200,7 +1200,7 @@
 2534,0,0,4,0,0x1,0,1,0,no,0,0,0,none,0,	RETURN_TO_ELDICASTES,Return To Eldicastes
 2535,0,0,4,0,0x1,0,1,0,no,0,0x1,0,none,0,	ALL_BUYING_STORE,Open Buying Store
 2536,0,0,4,0,0x1,0,1,0,no,0,0,0,none,0,	ALL_GUARDIAN_RECALL,Guardian's Recall
-//2537,9,6,16,0,0x1,0,2,1,yes,0,0,0,magic,0,	ALL_ODINS_POWER,Odin's Power
+2537,9,6,16,0,0x1,0,2,1,yes,0,0,0,magic,0,	ALL_ODINS_POWER,Odin's Power
 
 8001,9,6,4,0,0x1,0,5,1,no,0,0,0,magic,0,	HLIF_HEAL,Healing Touch
 8002,0,6,4,0,0x3,-1,5,1,no,0,0,0,none,0,	HLIF_AVOID,Avoid

+ 9 - 0
src/map/status.c

@@ -453,6 +453,7 @@ void initChangeTables(void)
 	set_sc( CASH_ASSUMPTIO       , SC_ASSUMPTIO       , SI_ASSUMPTIO       , SCB_NONE );
 
 	//set_sc( ALL_PARTYFLEE        , SC_INCFLEE         , SI_PARTYFLEE       , SCB_NONE );
+	set_sc( ALL_ODINS_POWER      , SC_ODINS_POWER     , SI_ODINS_POWER     , SCB_MATK|SCB_BATK|SCB_MDEF|SCB_DEF );
 
 	set_sc( CR_SHRINK            , SC_SHRINK          , SI_SHRINK          , SCB_NONE );
 	set_sc( RG_CLOSECONFINE      , SC_CLOSECONFINE2   , SI_CLOSECONFINE2   , SCB_NONE );
@@ -4056,6 +4057,8 @@ static unsigned short status_calc_batk(struct block_list *bl, struct status_chan
 		batk += batk * sc->data[SC_GT_CHANGE]->val3 / 100;
 	if(sc->data[SC_FULL_SWING_K])
 		batk += sc->data[SC_FULL_SWING_K]->val1;
+	if(sc->data[SC_ODINS_POWER])
+		batk += 70;
 #if RE_EDP
 	/**
 	 * in RE EDP increases your base atk by atk x Skill Level.
@@ -4174,6 +4177,8 @@ static unsigned short status_calc_matk(struct block_list *bl, struct status_chan
 		matk += sc->data[SC_CHILLY_AIR_OPTION]->val2;
 	if(sc->data[SC_WATER_BARRIER])
 		matk -= sc->data[SC_WATER_BARRIER]->val3;
+	if(sc->data[SC_ODINS_POWER])
+		matk += 70;
 
 	return (unsigned short)cap_value(matk,0,USHRT_MAX);
 }
@@ -4407,6 +4412,8 @@ static signed short status_calc_flee2(struct block_list *bl, struct status_chang
 		def += def * sc->data[SC_POWER_OF_GAIA]->val2 / 100;
 	if( sc->data[SC_PRESTIGE] )
 		def += def * sc->data[SC_PRESTIGE]->val1 / 100;
+	if(sc->data[SC_ODINS_POWER])
+		def -= 20;
 #if REMODE
 	return (short)cap_value(def,SHRT_MIN,SHRT_MAX);
 #else
@@ -4504,6 +4511,8 @@ static signed short status_calc_def2(struct block_list *bl, struct status_change
 		mdef -= mdef * sc->data[SC_GT_CHANGE]->val3 / 100;
 	if(sc->data[SC_WATER_BARRIER])
 		mdef += sc->data[SC_WATER_BARRIER]->val2;
+	if(sc->data[SC_ODINS_POWER])
+		mdef -= 20;
 
 
 #if REMODE

+ 2 - 0
src/map/status.h

@@ -572,6 +572,7 @@ typedef enum sc_type {
 	SC_GLORYWOUNDS,
 	SC_SOULCOLD, //510
 	SC_HAWKEYES,
+	SC_ODINS_POWER,
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 } sc_type;
 
@@ -1153,6 +1154,7 @@ enum si_type {
 	SI_WIND_INSIGNIA = 569,
 	SI_EARTH_INSIGNIA = 570,
 	SI_EQUIPED_FLOOR = 571,
+	SI_ODINS_POWER = 583,
 	SI_ALL_RIDING = 613,//awesome 571-613 gap, we're missing quite a few stuff here.
 
 	SI_MAX,