summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog.txt1
-rw-r--r--db/Changelog.txt15
-rw-r--r--db/const.txt2
-rw-r--r--db/item_db.txt2
-rw-r--r--src/map/battle.c27
-rw-r--r--src/map/map.h6
-rw-r--r--src/map/pc.c7
7 files changed, 51 insertions, 9 deletions
diff --git a/Changelog.txt b/Changelog.txt
index 5b18ed4bb..e62911227 100644
--- a/Changelog.txt
+++ b/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]
diff --git a/db/Changelog.txt b/db/Changelog.txt
index 11ab3f0c2..a3bfc043e 100644
--- a/db/Changelog.txt
+++ b/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]
diff --git a/db/const.txt b/db/const.txt
index f42728602..4d14917a7 100644
--- a/db/const.txt
+++ b/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
diff --git a/db/item_db.txt b/db/item_db.txt
index 172729544..ab829784e 100644
--- a/db/item_db.txt
+++ b/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; },,,,,
diff --git a/src/map/battle.c b/src/map/battle.c
index a83df2ba8..7c2090b6b 100644
--- a/src/map/battle.c
+++ b/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;
diff --git a/src/map/map.h b/src/map/map.h
index 1d0e6b900..f54579ea2 100644
--- a/src/map/map.h
+++ b/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
diff --git a/src/map/pc.c b/src/map/pc.c
index 799fc2f59..b2fb1e120 100644
--- a/src/map/pc.c
+++ b/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);