Selaa lähdekoodia

Added bonus bClassChange,%; to randomly transform monster into another monster.

git-svn-id: https://svn.code.sf.net/p/rathena/svn/athena@302 54d463be-8e91-2dee-dedb-b68131a5f0ec
valaris 20 vuotta sitten
vanhempi
commit
2b65088b92
7 muutettua tiedostoa jossa 51 lisäystä ja 9 poistoa
  1. 1 0
      Changelog.txt
  2. 10 5
      db/Changelog.txt
  3. 2 0
      db/const.txt
  4. 1 1
      db/item_db.txt
  5. 27 0
      src/map/battle.c
  6. 4 2
      src/map/map.h
  7. 6 1
      src/map/pc.c

+ 1 - 0
Changelog.txt

@@ -1,5 +1,6 @@
 Date	Added
 11/21
+	* Added bClassChange,%; Has random chance to turn monster into another monster. [Valaris]
 	* Re-Fixed Trade/Vending exploit [Lupus]
 	* Fixed @whozeny. [Valaris]
 	* Added rest of mapflags to const.txt. [Valaris]

+ 10 - 5
db/Changelog.txt

@@ -5,18 +5,23 @@
 	Ayathoya items == Added but no effect ( all are "ect" itens)
 	Skill databases == celest working on them i believe.
 
-11/21	* added mob stats: 1027,Raptice [Lupus]
+11/21
+	* added bClassChange to const.txt and added bClassChange,50; to azoth (.5% chance to transform monster into another.) [Valaris]
+	* added mob stats: 1027,Raptice [Lupus]
 
-11/20   - Added deadly poison bottle to produce_db.txt [celest]
+11/20
+	- Added deadly poison bottle to produce_db.txt [celest]
         - Edited ASC_CDP in skill_require_db.txt
         - Edited ASC_EDP in skill_cast_db.txt
 
-11/17   - Corrected max level for cloaking in skill_tree.txt [celest]
+11/17
+	- Corrected max level for cloaking in skill_tree.txt [celest]
 
 11/16
-	item 7110 fixed name -> Broken Sword (part of Bongun quest) [Lupus]
+	- Item 7110 fixed name -> Broken Sword (part of Bongun quest) [Lupus]
 	
-11/16   - Added BaseJob to const.txt [celest]
+11/16   
+	- Added BaseJob to const.txt [celest]
 
 11/15
 	- Minor fix on wedding skills, to use 15% of SP/HP . [shadowlady]

+ 2 - 0
db/const.txt

@@ -220,6 +220,7 @@ bAgiVit			1074
 bAgiDexStr		1075
 bPerfectHide		1076
 bDisguise		1077
+bClassChange	1078
 
 bRestartFullRecover	2000
 bNoCastCancel	2001
@@ -230,6 +231,7 @@ bNoGemStone	2005
 bNoCastCancel2	2006
 bInfiniteEndure	2007
 
+
 Eff_Stone	0
 Eff_Freeze	1
 Eff_Stan	2

+ 1 - 1
db/item_db.txt

@@ -518,7 +518,7 @@
 1232,Assassin_Dagger,Assasin Dagger,4,20,,600,140,,1,0,4096,2,2,4,36,1,{},{ bonus bMaxHPrate,20; bonus bMaxSPrate,15; bonus bAspdAddRate,2; bonus bAtkEle,7; },,
 1233,Exercise,Excorcise,4,20,,700,90,,1,0,2055918,2,2,4,36,1,{},{ bonus bIgnoreDefRace,6; bonus2 bSubRace,6,5; bonus2 bSubRace,7,-10; },
 1234,Moonlight_Sword,Walgwanggum,4,20,,700,50,,1,0,2055918,2,2,4,36,1,{},{ bonus bMaxSPrate,10; bonus2 bSPDrainRate,10000,1; },,,,,
-1235,Azoth,Azoth,4,20,,700,110,,1,0,262144,2,2,4,36,1,{},{},,,,,,
+1235,Azoth,Azoth,4,20,,700,110,,1,0,262144,2,2,4,36,1,{},{ bonus bClassChange,50; },,,,,,
 1236,Sucsamad,Sucsamad,4,20,,800,140,,1,0,2055918,2,2,4,36,1,{},{ bonus2 bAddEle,2,10; bonus2 bAddEle,4,10; bonus bUnbreakable,100; },,
 1237,Grimtooth_,Grimtooth,4,20,,800,180,,1,0,2055918,2,2,4,36,1,{},{ bonus bFlee,10; bonus bFlee2,5; bonus bDefRate,-50; bonus bDef2Rate,-50; },,
 1238,Zeny_Knife,Zeny Knife,4,20,,1200,64,,1,0,2055918,2,2,3,40,1,{},{ bonus bGetZenyNum,100; },,,,,

+ 27 - 0
src/map/battle.c

@@ -3866,6 +3866,33 @@ static struct Damage battle_calc_pc_weapon_attack(
 		}
 	/*					End addition					*/
 
+		// for azoth weapon [Valaris]
+		if(src->type == BL_PC && target->type == BL_MOB && sd->classchange) {
+			 if(rand()%10000 < sd->classchange) {
+ 			 	int changeclass[]={
+				1001,1002,1004,1005,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1018,1019,1020,
+				1021,1023,1024,1025,1026,1028,1029,1030,1031,1032,1033,1034,1035,1036,1037,1040,1041,
+				1042,1044,1045,1047,1048,1049,1050,1051,1052,1053,1054,1055,1056,1057,1058,1060,1061,
+				1062,1063,1064,1065,1066,1067,1068,1069,1070,1071,1076,1077,1078,1079,1080,1081,1083,
+				1084,1085,1094,1095,1097,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,
+				1111,1113,1114,1116,1117,1118,1119,1121,1122,1123,1124,1125,1126,1127,1128,1129,1130,
+				1131,1132,1133,1134,1135,1138,1139,1140,1141,1142,1143,1144,1145,1146,1148,1149,1151,
+				1152,1153,1154,1155,1156,1158,1160,1161,1163,1164,1165,1166,1167,1169,1170,1174,1175,
+				1176,1177,1178,1179,1180,1182,1183,1184,1185,1188,1189,1191,1192,1193,1194,1195,1196,
+				1197,1199,1200,1201,1202,1204,1205,1206,1207,1208,1209,1211,1212,1213,1214,1215,1216,
+				1219,1242,1243,1245,1246,1247,1248,1249,1250,1253,1254,1255,1256,1257,1258,1260,1261,
+				1263,1264,1265,1266,1267,1269,1270,1271,1273,1274,1275,1276,1277,1278,1280,1281,1282,
+				1291,1292,1293,1294,1295,1297,1298,1300,1301,1302,1304,1305,1306,1308,1309,1310,1311,
+				1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1364,1365,1366,1367,1368,1369,
+				1370,1371,1372,1374,1375,1376,1377,1378,1379,1380,1381,1382,1383,1384,1385,1386,1387,
+				1390,1391,1392,1400,1401,1402,1403,1404,1405,1406,1408,1409,1410,1412,1413,1415,1416,
+				1417,1493,1494,1495,1497,1498,1499,1500,1502,1503,1504,1505,1506,1507,1508,1509,1510,
+				1511,1512,1513,1514,1515,1516,1517,1519,1520,1582,1584,1585,1586,1587 };
+				mob_class_change(((struct mob_data *)target),changeclass);
+			}
+		}
+
+
 // -- moonsoul (final combination of phys, mag damage for ASC_BREAKER)
 	if(skill_num == ASC_BREAKER) {
 		damage += damage3;

+ 4 - 2
src/map/map.h

@@ -266,7 +266,9 @@ struct map_session_data {
 	int random_attack_increase_add,random_attack_increase_per; // [Valaris]
 	int perfect_hiding; // [Valaris]
 	int unbreakable;
+	int classchange; // [Valaris]
 
+	
 	int die_counter;
 	short doridori_counter;
 
@@ -578,8 +580,8 @@ enum {
 	SP_SPLASH_RANGE,SP_SPLASH_ADD_RANGE,SP_AUTOSPELL,SP_HP_DRAIN_RATE,SP_SP_DRAIN_RATE, // 1058-1062
 	SP_SHORT_WEAPON_DAMAGE_RETURN,SP_LONG_WEAPON_DAMAGE_RETURN,SP_WEAPON_COMA_ELE,SP_WEAPON_COMA_RACE, // 1063-1066
 	SP_ADDEFF2,SP_BREAK_WEAPON_RATE,SP_BREAK_ARMOR_RATE,SP_ADD_STEAL_RATE, // 1067-1070
-	SP_MAGIC_DAMAGE_RETURN,SP_RANDOM_ATTACK_INCREASE,SP_ALL_STATS,SP_AGI_VIT,SP_AGI_DEX_STR,SP_PERFECT_HIDE, // 1071-1077
-	SP_DISGUISE, // 1077
+	SP_MAGIC_DAMAGE_RETURN,SP_RANDOM_ATTACK_INCREASE,SP_ALL_STATS,SP_AGI_VIT,SP_AGI_DEX_STR,SP_PERFECT_HIDE, // 1071-1076
+	SP_DISGUISE,SP_CLASSCHANGE, // 1077-1078
 
 	SP_RESTART_FULL_RECORVER=2000,SP_NO_CASTCANCEL,SP_NO_SIZEFIX,SP_NO_MAGIC_DAMAGE,SP_NO_WEAPON_DAMAGE,SP_NO_GEMSTONE, // 2000-2005
 	SP_NO_CASTCANCEL2,SP_INFINITE_ENDURE,SP_UNBREAKABLE_WEAPON,SP_UNBREAKABLE_ARMOR // 2006-2009

+ 6 - 1
src/map/pc.c

@@ -2436,6 +2436,11 @@ int pc_bonus(struct map_session_data *sd,int type,int val)
 			sd->unbreakable += val;
 		}
 		break;
+	case SP_CLASSCHANGE: // [Valaris]
+		if(sd->state.lr_flag !=2){
+			sd->classchange=val;
+		}
+		break;
 	default:
 		if(battle_config.error_log)
 			printf("pc_bonus: unknown type %d %d !\n",type,val);
@@ -2620,8 +2625,8 @@ int pc_bonus2(struct map_session_data *sd,int type,int type2,int val)
 		if(sd->state.lr_flag !=2){
 			sd->random_attack_increase_add = type2;
 			sd->random_attack_increase_per += val;
+		}	
 		break;
-		}	// end addition
 	default:
 		if(battle_config.error_log)
 			printf("pc_bonus2: unknown type %d %d %d!\n",type,type2,val);