瀏覽代碼

Updates Monster Transform statuses (#5930)

* Fixes #5449.
* Updates several Monster Transform items with their updated bonuses.
Thanks to @Balferian!
Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>
Aleos 4 年之前
父節點
當前提交
58f2d2173f
共有 4 個文件被更改,包括 18 次插入11 次删除
  1. 4 4
      db/re/item_db_usable.yml
  2. 1 0
      src/map/itemdb.hpp
  3. 6 2
      src/map/pc.cpp
  4. 7 5
      src/map/status.cpp

+ 4 - 4
db/re/item_db_usable.yml

@@ -3312,7 +3312,7 @@ Body:
     Weight: 30
     Script: |
       itemheal 45,0;
-      transform 1507,600000,SC_MTF_MHP,1000;
+      transform 1507,600000,SC_MTF_MHP,20;
       specialeffect2 EF_CLOAKING;
       showscript "Trans-Form-!! Bloody Murderer Fo-rm!!";
   - Id: 11593
@@ -3323,7 +3323,7 @@ Body:
     Weight: 30
     Script: |
       itemheal 45,0;
-      transform 1102,600000,SC_MTF_MSP,100;
+      transform 1102,600000,SC_MTF_MSP,20;
       specialeffect2 EF_CLOAKING;
       showscript "Trans-Form-!!! Bathory Fo-rm!!";
   - Id: 11594
@@ -3334,7 +3334,7 @@ Body:
     Weight: 30
     Script: |
       itemheal 45,0;
-      transform 1130,600000,SC_MTF_PUMPKIN,2000;
+      transform 1130,600000,SC_MTF_PUMPKIN,2000,100;
       specialeffect2 EF_CLOAKING;
       showscript "Trans-Form-!! Jack Fo-rm!!";
   - Id: 11595
@@ -11572,7 +11572,7 @@ Body:
       NoMail: true
       NoAuction: true
     Script: |
-      transform 1002,1200000,SC_MTF_CRIDAMAGE,25;
+      transform 1002,1200000,SC_MTF_CRIDAMAGE,5;
       showscript "Traaaansformation-!! Poring form!!";
   - Id: 12664
     AegisName: Trans_Scroll_Golem

+ 1 - 0
src/map/itemdb.hpp

@@ -99,6 +99,7 @@ enum item_itemid : t_itemid
 	ITEMID_FRAGMENT_OF_CRYSTAL			= 7321,
 	ITEMID_SKULL_						= 7420,
 	ITEMID_TRAP_ALLOY					= 7940,
+	ITEMID_COOKIE_BAT					= 11605,
 	ITEMID_MERCENARY_RED_POTION			= 12184,
 	ITEMID_MERCENARY_BLUE_POTION		= 12185,
 	ITEMID_GIANT_FLY_WING				= 12212,

+ 6 - 2
src/map/pc.cpp

@@ -9228,8 +9228,12 @@ int pc_itemheal(struct map_session_data *sd, t_itemid itemid, int hp, int sp)
 		if (sd->sc.data[SC_INCHEALRATE])
 			bonus += bonus * sd->sc.data[SC_INCHEALRATE]->val1 / 100;
 		// 2014 Halloween Event : Pumpkin Bonus
-		if (sd->sc.data[SC_MTF_PUMPKIN] && itemid == ITEMID_PUMPKIN)
-			bonus += bonus * sd->sc.data[SC_MTF_PUMPKIN]->val1 / 100;
+		if (sd->sc.data[SC_MTF_PUMPKIN]) {
+			if (itemid == ITEMID_PUMPKIN)
+				bonus += bonus * sd->sc.data[SC_MTF_PUMPKIN]->val1 / 100;
+			else if (itemid == ITEMID_COOKIE_BAT)
+				bonus += sd->sc.data[SC_MTF_PUMPKIN]->val2;
+		}
 
 		tmp = hp * bonus / 100; // Overflow check
 		if (bonus != 100 && tmp > hp)

+ 7 - 5
src/map/status.cpp

@@ -1861,7 +1861,7 @@ void initChangeTables(void)
 	StatusChangeFlagTable[SC_MTF_ASPD2] |= SCB_ASPD|SCB_HIT;
 	StatusChangeFlagTable[SC_MTF_MATK2] |= SCB_MATK;
 	StatusChangeFlagTable[SC_2011RWC_SCROLL] |= SCB_BATK|SCB_MATK|SCB_STR|SCB_AGI|SCB_VIT|SCB_INT|SCB_DEX|SCB_LUK;
-	StatusChangeFlagTable[SC_MTF_HITFLEE] |= SCB_HIT|SCB_FLEE;
+	StatusChangeFlagTable[SC_MTF_HITFLEE] |= SCB_HIT|SCB_FLEE|SCB_CRI;
 	StatusChangeFlagTable[SC_MTF_MHP] |= SCB_MAXHP;
 	StatusChangeFlagTable[SC_MTF_MSP] |= SCB_MAXSP;
 
@@ -3700,8 +3700,6 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += sc->data[SC_PROMOTE_HEALTH_RESERCH]->val3;
 			if(sc->data[SC_SOLID_SKIN_OPTION])
 				bonus += 2000;
-			if(sc->data[SC_MTF_MHP])
-				bonus += sc->data[SC_MTF_MHP]->val1;
 			if(sc->data[SC_MARIONETTE])
 				bonus -= 1000;
 			if(sc->data[SC_SWORDCLAN])
@@ -3769,6 +3767,8 @@ static int status_get_hpbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += sc->data[SC_LUNARSTANCE]->val2;
 			if (sc->data[SC_LUXANIMA])
 				bonus += sc->data[SC_LUXANIMA]->val3;
+			if (sc->data[SC_MTF_MHP])
+				bonus += sc->data[SC_MTF_MHP]->val1;
 
 			//Decreasing
 			if (sc->data[SC_VENOMBLEED] && sc->data[SC_VENOMBLEED]->val3 == 1)
@@ -3865,8 +3865,6 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += sc->data[SC_INCMSP]->val1;
 			if(sc->data[SC_EARTH_INSIGNIA] && sc->data[SC_EARTH_INSIGNIA]->val1 == 3)
 				bonus += 50;
-			if(sc->data[SC_MTF_MSP])
-				bonus += sc->data[SC_MTF_MSP]->val1;
 			if(sc->data[SC_SWORDCLAN])
 				bonus += 10;
 			if(sc->data[SC_ARCWANDCLAN])
@@ -3911,6 +3909,8 @@ static int status_get_spbonus(struct block_list *bl, enum e_status_bonus type) {
 				bonus += sc->data[SC_MERC_SPUP]->val2;
 			if (sc->data[SC_LUXANIMA])
 				bonus += sc->data[SC_LUXANIMA]->val3;
+			if (sc->data[SC_MTF_MSP])
+				bonus += sc->data[SC_MTF_MSP]->val1;
 
 			//Decreasing
 			if (sc->data[SC_MELODYOFSINK])
@@ -7137,6 +7137,8 @@ static signed short status_calc_critical(struct block_list *bl, struct status_ch
 		critical += 10 * sc->data[SC_SOULSHADOW]->val3;
 	if(sc->data[SC_BEYONDOFWARCRY])
 		critical += sc->data[SC_BEYONDOFWARCRY]->val3;
+	if (sc->data[SC_MTF_HITFLEE])
+		critical += sc->data[SC_MTF_HITFLEE]->val1;
 
 	return (short)cap_value(critical,10,SHRT_MAX);
 }