Browse Source

Implemented SC_EP16_DEF, RC2_EP16_DEF and corrected pre-renewal Acaraje item script (#8733)

* Corrected pre-renewal Acaraje (id: 12375) item script
* Implemented SC_EP16_DEF
* Implemented RC2_EP16_DEF
Atemo 7 months ago
parent
commit
0354e7009a

+ 1 - 1
db/pre-re/item_db_usable.yml

@@ -6875,7 +6875,7 @@ Body:
       NoAuction: true
     Script: |
       specialeffect2 EF_STEAL;
-      bonus_script "{ bonus bHit,5; bonus bAspdRate,10; }",1200,0,0,EFST_ACARAJE;
+      sc_start SC_ACARAJE,1200000,0;
   - Id: 12376
     AegisName: Mysterious_Can2
     Name: Mysterious Can2

+ 1 - 8
db/re/item_db_equip.yml

@@ -141952,14 +141952,7 @@ Body:
     Script: |
       bonus2 bHPRegenRate,100,10000;
       bonus2 bSPRegenRate,5,10000;
-      bonus2 bAddDefMonster,3445,20;
-      bonus2 bAddDefMonster,3446,20;
-      bonus2 bAddDefMonster,3447,20;
-      bonus2 bAddDefMonster,3448,20;
-      bonus2 bAddDefMonster,3449,20;
-      bonus2 bAddDefMonster,3450,20;
-      bonus2 bAddDefMonster,3451,20;
-      bonus2 bAddDefMonster,3452,20;
+      bonus2 bSubRace2,RC2_Ep16_def,20;
   - Id: 28356
     AegisName: BadgeOfProntera_
     Name: Prontera Badge

+ 2 - 8
db/re/item_db_usable.yml

@@ -3997,14 +3997,8 @@ Body:
     Flags:
       BuyingStore: true
     Script: |
-      if (strcharinfo(3) == "prt_q") {
-         specialeffect2 EF_GUARD;
-         bonus_script "{ bonus2 bSubSize,Size_All,10; }",600;
-         sc_end SC_SILENCE;
-         sc_end SC_POISON;
-         sc_end SC_CURSE;
-         heal 1000,0;
-      }
+      specialeffect2 EF_GUARD;
+      sc_start SC_EP16_DEF,180000,10;
   - Id: 11601
     AegisName: Tasty_Anchovy
     Name: Delicious Anchovy

+ 16 - 0
db/re/mob_db.yml

@@ -91467,6 +91467,8 @@ Body:
     ChaseRange: 12
     Size: Medium
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 3
     WalkSpeed: 300
@@ -91509,6 +91511,8 @@ Body:
     ChaseRange: 12
     Size: Medium
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 3
     WalkSpeed: 250
@@ -91551,6 +91555,8 @@ Body:
     ChaseRange: 12
     Size: Medium
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 3
     WalkSpeed: 250
@@ -91591,6 +91597,8 @@ Body:
     ChaseRange: 12
     Size: Large
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 1
     WalkSpeed: 200
@@ -91633,6 +91641,8 @@ Body:
     ChaseRange: 12
     Size: Large
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 1
     WalkSpeed: 200
@@ -91667,6 +91677,8 @@ Body:
     ChaseRange: 12
     Size: Large
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 4
     WalkSpeed: 200
@@ -91722,6 +91734,8 @@ Body:
     ChaseRange: 12
     Size: Medium
     Race: Demon
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 4
     WalkSpeed: 150
@@ -91772,6 +91786,8 @@ Body:
     ChaseRange: 12
     Size: Medium
     Race: Undead
+    RaceGroups:
+      Ep16_def: true
     Element: Undead
     ElementLevel: 4
     WalkSpeed: 400

+ 13 - 0
db/re/status.yml

@@ -9010,3 +9010,16 @@ Body:
       NoDispell: true
       NoBanishingBuster: true
       NoClearance: true
+  - Status: Ep16_def
+    Icon: EFST_EP16_DEF
+    CalcFlags:
+      All: true
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+    EndOnStart:
+      Curse: true
+      Silence: true
+      Poison: true

+ 2 - 1
doc/item_bonus.txt

@@ -31,7 +31,8 @@ This list contains all available constants referenced in the 'bonus' commands.
 	RC2_Bio5_Swordman_Thief, RC2_Bio5_Acolyte_Merchant, RC2_Bio5_Mage_Archer, RC2_Bio5_MVP,
 	RC2_Clocktower, RC2_Thanatos, RC2_Faceworm, RC2_Hearthunter, RC2_Rockridge, RC2_Werner_Lab,
 	RC2_Temple_Demon, RC2_Illusion_Vampire, RC2_Malangdo, RC2_EP172ALPHA, RC2_EP172BETA, RC2_EP172BATH,
-	RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda, RC2_Illusion_Frozen, RC2_Illusion_Moonlight
+	RC2_Illusion_Turtle, RC2_Rachel_Sanctuary, RC2_Illusion_Luanda, RC2_Illusion_Frozen, RC2_Illusion_Moonlight,
+	RC2_Ep16_def
 
 * Class (c)
 	Class_Normal, Class_Boss, Class_Guardian, Class_All

+ 7 - 3
doc/status_change.txt

@@ -2850,16 +2850,20 @@ SC_AGIUP
 	val2: +% Flee
 
 SC_BATH_FOAM_A	()
-	desc: Increases physical and magical damage against Meditathio Dungeon Monsters by 5%.
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
 	val1: +% damage
 
 SC_BATH_FOAM_B	()
-	desc: Increases physical and magical damage against Meditathio Dungeon Monsters by 10%.
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
 	val1: +% damage
 
 SC_BATH_FOAM_C	()
-	desc: Increases physical and magical damage against Meditathio Dungeon Monsters by 15%.
+	desc: Increases physical and magical damage against Meditathio Dungeon Monsters.
 	val1: +% damage
 
 SC_BUCHEDENOEL ()
 	desc: Increases HP & SP restoration by 3%, Hit +3, and Critical +7.
+
+SC_EP16_DEF	()
+	desc: Decrease physical and magical damage against monsters in the Room of Consciousness and Prontera Invasion Dungeon. Restores 1000 HP. Cures Curse, Poison and Silence.
+	val1: +% reduction

+ 1 - 0
sql-files/mob_db.sql

@@ -65,6 +65,7 @@ CREATE TABLE `mob_db` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 0
sql-files/mob_db2.sql

@@ -65,6 +65,7 @@ CREATE TABLE `mob_db2` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 0
sql-files/mob_db2_re.sql

@@ -67,6 +67,7 @@ CREATE TABLE `mob_db2_re` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 0
sql-files/mob_db_re.sql

@@ -67,6 +67,7 @@ CREATE TABLE `mob_db_re` (
   `racegroup_illusion_luanda` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_frozen` tinyint(1) unsigned DEFAULT NULL,
   `racegroup_illusion_moonlight` tinyint(1) unsigned DEFAULT NULL,
+  `racegroup_ep16_def` tinyint(1) unsigned DEFAULT NULL,
   `element` varchar(24) DEFAULT NULL,
   `element_level` tinyint(4) unsigned DEFAULT NULL,
   `walk_speed` smallint(6) unsigned DEFAULT NULL,

+ 1 - 0
src/map/map.hpp

@@ -369,6 +369,7 @@ enum e_race2 : uint8{
 	RC2_ILLUSION_LUANDA,
 	RC2_ILLUSION_FROZEN,
 	RC2_ILLUSION_MOONLIGHT,
+	RC2_EP16_DEF,
 	RC2_MAX
 };
 

+ 1 - 1
src/map/mob.cpp

@@ -5338,7 +5338,7 @@ static int mob_read_sqldb(void)
 	for( uint8 fi = 0; fi < ARRAYLENGTH(mob_db_name); ++fi ) {
 		// retrieve all rows from the mob database
 		if( SQL_ERROR == Sql_Query(mmysql_handle, "SELECT `id`,`name_aegis`,`name_english`,`name_japanese`,`level`,`hp`,`sp`,`base_exp`,`job_exp`,`mvp_exp`,`attack`,`attack2`,`defense`,`magic_defense`,`str`,`agi`,`vit`,`int`,`dex`,`luk`,`attack_range`,`skill_range`,`chase_range`,`size`,`race`,"
-			"`racegroup_goblin`,`racegroup_kobold`,`racegroup_orc`,`racegroup_golem`,`racegroup_guardian`,`racegroup_ninja`,`racegroup_gvg`,`racegroup_battlefield`,`racegroup_treasure`,`racegroup_biolab`,`racegroup_manuk`,`racegroup_splendide`,`racegroup_scaraba`,`racegroup_ogh_atk_def`,`racegroup_ogh_hidden`,`racegroup_bio5_swordman_thief`,`racegroup_bio5_acolyte_merchant`,`racegroup_bio5_mage_archer`,`racegroup_bio5_mvp`,`racegroup_clocktower`,`racegroup_thanatos`,`racegroup_faceworm`,`racegroup_hearthunter`,`racegroup_rockridge`,`racegroup_werner_lab`,`racegroup_temple_demon`,`racegroup_illusion_vampire`,`racegroup_malangdo`,`racegroup_ep172alpha`,`racegroup_ep172beta`,`racegroup_ep172bath`,`racegroup_illusion_turtle`,`racegroup_rachel_sanctuary`,`racegroup_illusion_luanda`,`racegroup_illusion_frozen`,`racegroup_illusion_moonlight`,"
+			"`racegroup_goblin`,`racegroup_kobold`,`racegroup_orc`,`racegroup_golem`,`racegroup_guardian`,`racegroup_ninja`,`racegroup_gvg`,`racegroup_battlefield`,`racegroup_treasure`,`racegroup_biolab`,`racegroup_manuk`,`racegroup_splendide`,`racegroup_scaraba`,`racegroup_ogh_atk_def`,`racegroup_ogh_hidden`,`racegroup_bio5_swordman_thief`,`racegroup_bio5_acolyte_merchant`,`racegroup_bio5_mage_archer`,`racegroup_bio5_mvp`,`racegroup_clocktower`,`racegroup_thanatos`,`racegroup_faceworm`,`racegroup_hearthunter`,`racegroup_rockridge`,`racegroup_werner_lab`,`racegroup_temple_demon`,`racegroup_illusion_vampire`,`racegroup_malangdo`,`racegroup_ep172alpha`,`racegroup_ep172beta`,`racegroup_ep172bath`,`racegroup_illusion_turtle`,`racegroup_rachel_sanctuary`,`racegroup_illusion_luanda`,`racegroup_illusion_frozen`,`racegroup_illusion_moonlight`,`racegroup_ep16_def`,"
 			"`element`,`element_level`,`walk_speed`,`attack_delay`,`attack_motion`,`damage_motion`,`damage_taken`,`ai`,`class`,"
 			"`mode_canmove`,`mode_looter`,`mode_aggressive`,`mode_assist`,`mode_castsensoridle`,`mode_norandomwalk`,`mode_nocast`,`mode_canattack`,`mode_castsensorchase`,`mode_changechase`,`mode_angry`,`mode_changetargetmelee`,`mode_changetargetchase`,`mode_targetweak`,`mode_randomtarget`,`mode_ignoremelee`,`mode_ignoremagic`,`mode_ignoreranged`,`mode_mvp`,`mode_ignoremisc`,`mode_knockbackimmune`,`mode_teleportblock`,`mode_fixeditemdrop`,`mode_detector`,`mode_statusimmune`,`mode_skillimmune`,"
 			"`mvpdrop1_item`,`mvpdrop1_rate`,`mvpdrop1_option`,`mvpdrop1_index`,`mvpdrop2_item`,`mvpdrop2_rate`,`mvpdrop2_option`,`mvpdrop2_index`,`mvpdrop3_item`,`mvpdrop3_rate`,`mvpdrop3_option`,`mvpdrop3_index`,"

+ 2 - 0
src/map/script_constants.hpp

@@ -1920,6 +1920,7 @@
 	export_constant(SC_BATH_FOAM_B);
 	export_constant(SC_BATH_FOAM_C);
 	export_constant(SC_BUCHEDENOEL);
+	export_constant(SC_EP16_DEF);
 
 	/* status icons */
 	export_deprecated_constant2("SI_BLANK",-1);
@@ -4287,6 +4288,7 @@
 	export_constant(RC2_ILLUSION_LUANDA);
 	export_constant(RC2_ILLUSION_FROZEN);
 	export_constant(RC2_ILLUSION_MOONLIGHT);
+	export_constant(RC2_EP16_DEF);
 	export_constant(RC2_MAX);
 
 	/* monster ai */

+ 6 - 0
src/map/status.cpp

@@ -4942,6 +4942,9 @@ int status_calc_pc_sub(map_session_data* sd, uint8 opt)
 				sd->left_weapon.addrace2[RC2_EP172BATH] += sc->getSCE(SC_BATH_FOAM_C)->val1;
 			}
 		}
+		if (sc->getSCE(SC_EP16_DEF)) {
+			sd->indexed_bonus.subrace2[RC2_EP16_DEF] += sc->getSCE(SC_EP16_DEF)->val1;
+		}
 	}
 	status_cpy(&sd->battle_status, base_status);
 
@@ -12903,6 +12906,9 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 3;	// HP & SP restoration by 3%, Hit +3
 			val3 = 7;	// Critical +7
 			break;
+		case SC_EP16_DEF:
+			status_heal(bl, 1000, 0, 1);
+			break;
 
 		default:
 			if (calc_flag.none() && scdb->skill_id == 0 && scdb->icon == EFST_BLANK && scdb->opt1 == OPT1_NONE && scdb->opt2 == OPT2_NONE && scdb->state.none() && scdb->flag.none() && scdb->endonstart.empty() && scdb->endreturn.empty() && scdb->fail.empty() && scdb->endonend.empty()) {

+ 1 - 0
src/map/status.hpp

@@ -1315,6 +1315,7 @@ enum sc_type : int16 {
 	SC_BATH_FOAM_B,
 	SC_BATH_FOAM_C,
 	SC_BUCHEDENOEL,
+	SC_EP16_DEF,
 
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 };