From 84e4e6ee1dcaf37d73ec6f590c675ce4b17352b9 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Sat, 2 Nov 2013 18:02:36 -0200 Subject: Fixed Shadow System Bonuses Item in shadow slots are now able to give bonuses properly, thanks to rosfus for pointing it out! Also added the missing constants for script handling. Signed-off-by: shennetsind --- db/const.txt | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'db') diff --git a/db/const.txt b/db/const.txt index 3c20abc4a..cdb000417 100644 --- a/db/const.txt +++ b/db/const.txt @@ -610,6 +610,12 @@ EQI_COSTUME_HEAD_LOW 11 EQI_COSTUME_HEAD_MID 12 EQI_COSTUME_HEAD_TOP 13 EQI_COSTUME_GARMENT 14 +EQI_SHADOW_ARMOR 15 +EQI_SHADOW_WEAPON 16 +EQI_SHADOW_SHIELD 17 +EQI_SHADOW_SHOES 18 +EQI_SHADOW_ACC_R 19 +EQI_SHADOW_ACC_L 20 LOOK_BASE 0 LOOK_HAIR 1 -- cgit v1.2.3-60-g2f50 From 6577a59de9b71273fdef0310b21b42d53151e6f3 Mon Sep 17 00:00:00 2001 From: Haru Date: Mon, 4 Nov 2013 00:22:48 +0100 Subject: Implemented correct refine success rates above +10 - Refine rates above +10 are updated with the official values obtained from Aegis. Note: There are no safe refines above +10 anymore. - Corrected the above +10 refine NPC to decrease the refine level by 3 in case of failure, according to what observed in Aegis. - Special thanks to malufett, Ind. Signed-off-by: Haru --- db/re/refine_db.txt | 11 +++++------ npc/re/merchants/refine.txt | 14 +++++++------- 2 files changed, 12 insertions(+), 13 deletions(-) (limited to 'db') diff --git a/db/re/refine_db.txt b/db/re/refine_db.txt index a9b7fedd1..2b78a9d44 100644 --- a/db/re/refine_db.txt +++ b/db/re/refine_db.txt @@ -27,15 +27,14 @@ // Chance: // 100 = 100% // -// Note: Chances for +11 and higher are not verified - 10% is a rumor from iRO wiki. // A note about renewal Armors, there may or may not be another bonus, according to iRO wiki: Every upgrade gives floor[( 3 + current upgrade ) / 4] equipment DEF) -0,0,0,0,100:100,100:100,100:100,100:100,60:200,40:200,40:200,20:200,20:300,10:300,100:300,100:300,100:400,100:400,90:400,60:400,60:500,30:500,30:500,10:500 +0,0,0,0,100:100,100:100,100:100,100:100,60:200,40:200,40:200,20:200,20:300,10:300,8:300,8:300,8:400,8:400,7:400,7:400,7:500,7:500,5:500,5:500 // Level 1 weapons -1,200,8,300,100:0,100:0,100:0,100:0,100:0,100:0,100:0,60:0,40:0,20:0,100:0,100:0,100:0,100:0,100:0,100:300,100:300,90:300,60:300,20:300 +1,200,8,300,100:0,100:0,100:0,100:0,100:0,100:0,100:0,60:0,40:0,20:0,18:0,18:0,18:0,18:0,18:0,17:300,17:300,17:300,15:300,15:300 // Level 2 weapons -2,300,7,500,100:0,100:0,100:0,100:0,100:0,100:0,60:0,40:0,20:0,20:0,100:0,100:0,100:0,100:0,100:0,100:600,90:600,60:600,30:600,20:600 +2,300,7,500,100:0,100:0,100:0,100:0,100:0,100:0,60:0,40:0,20:0,20:0,18:0,18:0,18:0,18:0,18:0,17:600,17:600,17:600,15:600,15:600 // Level 3 weapons -3,500,6,800,100:0,100:0,100:0,100:0,100:0,60:0,50:0,20:0,20:0,20:0,100:0,100:0,100:0,100:0,100:0,90:900,75:900,30:900,30:900,20:900 +3,500,6,800,100:0,100:0,100:0,100:0,100:0,60:0,50:0,20:0,20:0,20:0,18:0,18:0,18:0,18:0,18:0,17:900,17:900,17:900,15:900,15:900 // Level 4 weapons -4,700,5,1400,100:0,100:0,100:0,100:0,60:0,40:0,40:0,20:0,20:0,10:0,100:0,100:0,100:0,100:0,90:0,60:1200,60:1200,30:1200,30:1200,10:1200 +4,700,5,1400,100:0,100:0,100:0,100:0,60:0,40:0,40:0,20:0,20:0,10:0,8:0,8:0,8:0,8:0,8:0,7:1200,7:1200,7:1200,5:1200,5:1200 diff --git a/npc/re/merchants/refine.txt b/npc/re/merchants/refine.txt index fa1853520..fa5bab042 100644 --- a/npc/re/merchants/refine.txt +++ b/npc/re/merchants/refine.txt @@ -102,10 +102,10 @@ function script refinenew { set .@material,6224; //Bradium set .@price,100000; switch(getequipweaponlv(.@part)) { - case 1: set .@safe,17; break; - case 2: set .@safe,16; break; - case 3: set .@safe,15; break; - case 4: set .@safe,14; break; + case 1: set .@safe,10; break; + case 2: set .@safe,10; break; + case 3: set .@safe,10; break; + case 4: set .@safe,10; break; } mes "["+ getarg(0) +"]"; mes "Hmm a weapon, is that ok?"; @@ -115,7 +115,7 @@ function script refinenew { set .@type$,"armor"; set .@material,6223; //Carnium set .@price,100000; - set .@safe,14; + set .@safe,10; mes "["+ getarg(0) +"]"; mes "Hmm an armor, is that ok?"; mes "If you want to refine this armor,"; @@ -187,7 +187,7 @@ function script refinenew { if (rand(100) < 80) { mes "["+ getarg(0) +"]"; mes "Clang! Clang! Clang! Clang!"; - downrefitem .@part; + downrefitem .@part, 3; // Failed refine attempts decrease the item's refine level by 3 next; emotion (!rand(5))?e_cash:e_omg; mes "["+ getarg(0) +"]"; @@ -296,7 +296,7 @@ function script refinenew { if (rand(100) < 80) { mes "["+ getarg(0) +"]"; mes "Clang! Clang! Clang! Clang!"; - downrefitem .@part; + downrefitem .@part, 3; // Failed refine attempts decrease the item's refine level by 3 next; emotion (!rand(5))?e_cash:e_omg; mes "["+ getarg(0) +"]"; -- cgit v1.2.3-60-g2f50 From 665f1306a130d4b8c359972bf4e58ef9d3bd9cd8 Mon Sep 17 00:00:00 2001 From: shennetsind Date: Wed, 6 Nov 2013 20:28:45 -0200 Subject: Fixed Bug 7799 SC_MOONSTAR, SC_SUPER_STAR are no longer removeable by sc_end all, and sc clear. Modified sc_config.txt, added a new flag (0x80/128) for such cases. http://hercules.ws/board/tracker/issue-7799-sc-moonstar/ Special Thanks to kyeme. Signed-off-by: shennetsind --- db/const.txt | 2 ++ db/sc_config.txt | 18 +++++++++++------- src/map/script.c | 11 ++--------- src/map/status.c | 13 ++----------- src/map/status.h | 15 ++++++++------- 5 files changed, 25 insertions(+), 34 deletions(-) (limited to 'db') diff --git a/db/const.txt b/db/const.txt index cdb000417..ddc4a188a 100644 --- a/db/const.txt +++ b/db/const.txt @@ -1242,6 +1242,8 @@ SC_KINGS_GRACE 557 SC_TELEKINESIS_INTENSE 558 SC_OFFERTORIUM 559 SC_FRIGG_SONG 560 +SC_ALL_RIDING 561 +SC_HANBOK 562 SC_MONSTER_TRANSFORM 563 SC_ANGEL_PROTECT 564 SC_ILLUSIONDOPING 565 diff --git a/db/sc_config.txt b/db/sc_config.txt index 9e0b8b268..38e10e4c2 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -10,6 +10,7 @@ // 16 - SC considered as buff and be removed by Hermode and etc. // 32 - SC considered as debuff and be removed by Gospel and etc. // 64 - SC cannot be reset when MADO Gear is taken off. +// 128 - SC cannot be reset by sc_end and change clear. //Example: //SC_ENDURE, 21 //SC_ENDURE: cannot be removed by death and dispell and cosidered as buff. (16 + 4 + 1 = 21) @@ -395,12 +396,12 @@ SC_SOULCOLD,78 SC_HAWKEYES,78 // Unremovable -SC_WEIGHTOVER50, 79 -SC_WEIGHTOVER90, 79 +SC_WEIGHTOVER50, 207 +SC_WEIGHTOVER90, 207 SC_WEDDING, 77 SC_XMAS, 77 SC_SUMMER, 77 -SC_NOCHAT, 77 +SC_NOCHAT, 205 SC_FUSION, 77 SC_EARTHSCROLL, 77 SC_STORMKICK_READY, 77 @@ -408,7 +409,7 @@ SC_DOWNKICK_READY, 77 SC_COUNTERKICK_READY, 77 SC_TURNKICK_READY, 77 SC_DODGE_READY, 77 -SC_JAILED, 77 +SC_JAILED, 205 SC_AUTOTRADE, 77 SC_WHISTLE, 79 SC_ASSNCROS, 79 @@ -419,6 +420,9 @@ SC_DONTFORGETME, 79 SC_FORTUNE, 79 SC_SERVICEFORYOU, 79 SC_INCHIT, 77 -SC_PUSH_CART, 0x4D -SC_MOONSTAR, 79 -SC_SUPER_STAR, 79 +SC_PUSH_CART, 205 +SC_MOONSTAR, 207 +SC_SUPER_STAR, 207 + +//Cant Clear +SC_ALL_RIDING, 128 \ No newline at end of file diff --git a/src/map/script.c b/src/map/script.c index 8fd7f425c..a944447e2 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -9425,15 +9425,8 @@ BUILDIN(sc_end) { if (!sce) return true; - switch (type) { - case SC_WEIGHTOVER50: - case SC_WEIGHTOVER90: - case SC_NOCHAT: - case SC_PUSH_CART: - return true; - default: - break; - } + if( status->get_sc_type(type)&SC_NO_CLEAR ) + return true; //This should help status_change_end force disabling the SC in case it has no limit. sce->val1 = sce->val2 = sce->val3 = sce->val4 = 0; diff --git a/src/map/status.c b/src/map/status.c index 1df98a957..e2cc39a70 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -9223,17 +9223,8 @@ int status_change_clear(struct block_list* bl, int type) { } } } - if( type == 3 ) { - switch (i) {// TODO: This list may be incomplete - case SC_WEIGHTOVER50: - case SC_WEIGHTOVER90: - case SC_NOCHAT: - case SC_PUSH_CART: - case SC_JAILED: - case SC_ALL_RIDING: - continue; - } - } + if( type == 3 && status->get_sc_type(i)&SC_NO_CLEAR ) + continue; status_change_end(bl, (sc_type)i, INVALID_TIMER); diff --git a/src/map/status.h b/src/map/status.h index e588fbb3f..784c8ca5f 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -34,13 +34,14 @@ enum refine_type { }; typedef enum sc_conf_type { - SC_NO_REM_DEATH = 0x1, - SC_NO_SAVE = 0x2, - SC_NO_DISPELL = 0x4, - SC_NO_CLEARANCE = 0x8, - SC_BUFF = 0x10, - SC_DEBUFF = 0x20, - SC_MADO_NO_RESET = 0x40 + SC_NO_REM_DEATH = 0x01, + SC_NO_SAVE = 0x02, + SC_NO_DISPELL = 0x04, + SC_NO_CLEARANCE = 0x08, + SC_BUFF = 0x10, + SC_DEBUFF = 0x20, + SC_MADO_NO_RESET = 0x40, + SC_NO_CLEAR = 0x80, } sc_conf_type; // Status changes listing. These code are for use by the server. -- cgit v1.2.3-60-g2f50