From 6fd440ea35cf2a084ffa434ee3c8f651b3259c60 Mon Sep 17 00:00:00 2001 From: malufett Date: Sat, 15 Jun 2013 23:45:46 +0800 Subject: Initial release for Monster Transformation Scrolls.(Thanks to Beret) (http://hercules.ws/board/topic/1087-scroll-transform/) Fixed Bug#7372 -where bows should not benefit matk bonus from upgrade. Thanks to Ryuuzaki Signed-off-by: malufett --- src/map/status.c | 13 +++++++++++-- src/map/status.h | 2 ++ 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/status.c b/src/map/status.c index 8363b8021..597128b82 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -915,6 +915,7 @@ void initChangeTables(void) { StatusIconChangeTable[SC_PUSH_CART] = SI_ON_PUSH_CART; StatusIconChangeTable[SC_REBOUND] = SI_REBOUND; StatusIconChangeTable[SC_ALL_RIDING] = SI_ALL_RIDING; + StatusIconChangeTable[SC_MONSTER_TRANSFORM] = SI_MONSTER_TRANSFORM; //Other SC which are not necessarily associated to skills. StatusChangeFlagTable[SC_ATTHASTE_POTION1] = SCB_ASPD; @@ -2500,7 +2501,7 @@ int status_calc_pc_(struct map_session_data* sd, bool first) #ifdef RENEWAL wa->matk += sd->inventory_data[index]->matk; wa->wlv = wlv; - if( r ) // renewal magic attack refine bonus + if( r && sd->weapontype1 != W_BOW ) // renewal magic attack refine bonus wa->matk += refine_info[wlv].bonus[r-1] / 100; #endif @@ -8712,6 +8713,11 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val tick_time = 10000; val4 = tick / tick_time; break; + case SC_MONSTER_TRANSFORM: + if( !mobdb_checkid(val1) ) + val1 = 1002; // default poring + val_flag |= 1; + break; default: if( calc_flag == SCB_NONE && StatusSkillChangeTable[type] == 0 && StatusIconChangeTable[type] == 0 ) { //Status change with no calc, no icon, and no skill associated...? @@ -8739,8 +8745,12 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val case SC_SUMMON3: case SC_SUMMON4: case SC_SUMMON5: + case SC_MONSTER_TRANSFORM: val_flag |= 1; break; + case SC_KYOUGAKU: + clif->status_change(bl, SI_ACTIVE_MONSTER_TRANSFORM, 1, 0, 1002, 0, 0); // Poring in disguise + break; } } @@ -9646,7 +9656,6 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const } break; case SC_KYOUGAKU: - clif->sc_end(&sd->bl,sd->bl.id,AREA,SI_KYOUGAKU); clif->sc_end(&sd->bl,sd->bl.id,AREA,SI_ACTIVE_MONSTER_TRANSFORM); break; case SC_CLAIRVOYANCE: diff --git a/src/map/status.h b/src/map/status.h index 617cd9572..fbce95f17 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -671,6 +671,8 @@ typedef enum sc_type { SC_ALL_RIDING, SC_HANBOK, + SC_MONSTER_TRANSFORM, + SC_MAX, //Automatically updated max, used in for's to check we are within bounds. } sc_type; -- cgit v1.2.3-70-g09d2 From 9055b9c84bb915cbf29207484fef80550a88bf74 Mon Sep 17 00:00:00 2001 From: malufett Date: Sat, 15 Jun 2013 12:13:02 -0700 Subject: Fixed Bug#7373 -Transformation scroll can now be seen by other char. -Follow up 6fd440ea35cf2a084ffa434ee3c8f651b3259c60. Changed sc_config.txt hex values to integer. --- db/sc_config.txt | 783 ++++++++++++++++++++++++++++--------------------------- src/map/status.c | 1 + 2 files changed, 393 insertions(+), 391 deletions(-) (limited to 'src') diff --git a/db/sc_config.txt b/db/sc_config.txt index 2da6f3147..b0d0e5ba4 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -11,397 +11,398 @@ // 0x20 - SC considered as debuff and be removed by Gospel and etc. // 0x40 - SC cannot be reset when MADO Gear is taken off. -SC_PROVOKE, 0x20 -SC_ENDURE, 0x15 -SC_TWOHANDQUICKEN, 0x18 -SC_CONCENTRATION, 0x10 -SC_ENCHANTPOISON, 0x10 -SC_POISONREACT, 0x10 -SC_QUAGMIRE, 0x2A -SC_ANGELUS, 0x10 -SC_BLESSING, 0x50 -SC_INC_AGI, 0x50 -SC_DEC_AGI, 0x22 -SC_SLOWPOISON, 0x18 -SC_IMPOSITIO, 0x10 -SC_SUFFRAGIUM, 0x10 -SC_ASPERSIO, 0x50 -SC_BENEDICTIO, 0x1A -SC_KYRIE, 0x10 -SC_MAGNIFICAT, 0x12 -SC_GLORIA, 0x10 -SC_LEXAETERNA, 0x12 -SC_ADRENALINE, 0x10 -SC_WEAPONPERFECT, 0x10 -SC_OVERTHRUST, 0x10 -SC_MAXIMIZEPOWER, 0x10 -SC_TRICKDEAD, 0x1A -SC_SHOUT, 0x10 -SC_ENERGYCOAT, 0x10 -SC_ATTHASTE_POTION1, 0x18 -SC_ATTHASTE_POTION2, 0x18 -SC_ATTHASTE_POTION3, 0x10 -//SC_MOVHASTE_POTION, 0x1A -//SC_POSTDELAY, 0x1D -SC_BARRIER, 0x10 -SC_NOEQUIPWEAPON, 0x1E -SC_NOEQUIPSHIELD, 0x1E -SC_NOEQUIPARMOR, 0x1E -SC_NOEQUIPHELM, 0x1E -SC_PROTECTWEAPON, 0x1C -SC_PROTECTSHIELD, 0x1C -SC_PROTECTARMOR, 0x1C -SC_PROTECTHELM, 0x1C -SC_AUTOGUARD, 0x18 -SC_REFLECTSHIELD, 0x18 -SC_DEVOTION, 0x12 -SC_PROVIDENCE, 0x12 -SC_DEFENDER, 0x10 -SC_MAGICROD, 0x1A -//SC_WEAPONPROPERTY, 0x18 -SC_AUTOSPELL, 0x15 -//SC_SPECIALZONE, 0x1A -//SC_MASK, 0x1A -SC_SPEARQUICKEN, 0x10 -SC_BLADESTOP, 0x1A -SC_EXPLOSIONSPIRITS, 0x1A -SC_STEELBODY, 0x12 -SC_PROPERTYFIRE, 0x1D -SC_PROPERTYWATER, 0x1D -SC_PROPERTYWIND, 0x1D -SC_PROPERTYGROUND, 0x1D -SC_STOP, 0x1A -SC_PROPERTYUNDEAD, 0x1A -//SC_STATUSONE, 0x1A -SC_AURABLADE, 0x12 -SC_PARRYING, 0x1A -SC_LKCONCENTRATION, 0x12 -SC_TENSIONRELAX, 0x1A -SC_BERSERK, 0x12 -SC_SACRIFICE, 0x1A -SC_GOSPEL, 0x22 -SC_ASSUMPTIO, 0x10 -SC_BASILICA, 0x1A -//SC_GROUNDMAGIC, 0x1A //is divided to SC_VOLCANO, 0xSC_DELUGE, 0xSC_VIOLENTGALE -SC_VOLCANO, 0x1A -SC_DELUGE, 0x1A -SC_VIOLENTGALE, 0x1A -SC_MAGICPOWER, 0x12 -SC_EDP, 0x17 -SC_TRUESIGHT, 0x12 -SC_WINDWALK, 0x12 -SC_MELTDOWN, 0x17 -SC_CARTBOOST, 0x17 -SC_BLOODING, 0x1A -SC_JOINTBEAT, 0x2A -SC_MINDBREAKER, 0x12 -SC_MEMORIZE, 0x12 -SC_FOGWALL, 0x1A -SC_SPIDERWEB, 0x2F -//SC_SUB_WEAPONPROPERTY, 0x17 -SC_RUN, 0x1A -SC_STRUP, 0x1A -SC_PROPERTYDARK, 0x1A -SC_ADRENALINE2, 0x12 -SC_PROPERTYTELEKINESIS, 0x1A -SC_SOULLINK, 0x1A -SC_PLUSATTACKPOWER, 0x58 -SC_PLUSMAGICPOWER, 0x58 -SC_KAITE, 0x1A -SC_KAAHI, 0x1A -SC_KAUPE, 0x1A -SC_ONEHANDQUICKEN, 0x1A -//SC_GDSKILL_POSTDELAY, 0x1D -SC_PRESERVE, 0x12 -SC_CHASEWALK2, 0x1A -//SC_MOVESLOW_POTION, 0x1A -SC_DOUBLECASTING, 0x1A -SC_GRAVITATION, 0x1A -SC_OVERTHRUSTMAX, 0x12 -SC_TAROTCARD, 0x2A -SC_CR_SHRINK, 0x17 -SC_WZ_SIGHTBLASTER, 0x17 -SC_RG_CCONFINE_M, 0x1F -SC_RG_CCONFINE_S, 0x1F -SC_NJ_UTSUSEMI, 0x1A -SC_NJ_BUNSINJYUTSU, 0x1A -SC_NJ_SUITON, 0x2F -//SC_MENTAL, 0x1A -//SC_EXPMEMORY, 0x1A -//SC_PERFORMANCE, 0x1A -//SC_GAIN, 0x1A -//SC_DRIFT, 0x1A -//SC_WALLSHIFT, 0x1A -//SC_REINCARNATION, 0x1A -//SC_DENERGY, 0x1A -//SC_DAURA, 0x1A -//SC_DFREEZER, 0x1A -//SC_DPUNISH, 0x1A -//SC_DBARRIER, 0x1A -//SC_DWARNING, 0x1A -//SC_MOUSEWHEEL, 0x1E -//SC_DACCEL, 0x1A -//SC_DBLOCK, 0x1A -SC_FOOD_STR, 0x1C -SC_FOOD_AGI, 0x1C -SC_FOOD_VIT, 0x1C -SC_FOOD_DEX, 0x1C -SC_FOOD_INT, 0x1C -SC_FOOD_LUK, 0x1C -SC_FOOD_BASICAVOIDANCE, 0x58 -SC_FOOD_BASICHIT, 0x58 -//SC_FOOD_CRITICALSUCCESSVALUE, 0x18 -SC_CASH_PLUSEXP, 0x1D -SC_CASH_DEATHPENALTY, 0x1D -SC_CASH_RECEIVEITEM, 0x1D -SC_CASH_BOSS_ALARM, 0x1E -//SC_DA_ENERGY, 0x1A -//SC_DA_FIRSTSLOT, 0x1A -//SC_DA_HEADDEF, 0x1A -//SC_DA_SPACE, 0x1E -//SC_DA_ITEMREBUILD, 0x1E -//SC_DA_ILLUSION, 0x1A -//SC_DA_EARPLUG, 0x1E -//SC_DA_CONTRACT, 0x1D -//SC_DA_BLACK, 0x1E -//SC_DA_MAGICCART, 0x1A -//SC_CRYSTAL, 0x1E -//SC_DA_REBUILD, 0x1D -//SC_DA_EDARKNESS, 0x1A -//SC_DA_EGUARDIAN, 0x1A -//SC_DA_TIMEOUT, 0x1A -SC_FOOD_STR_CASH, 0x1D -SC_FOOD_AGI_CASH, 0x1D -SC_FOOD_VIT_CASH, 0x1D -SC_FOOD_DEX_CASH, 0x1D -SC_FOOD_INT_CASH, 0x1D -SC_FOOD_LUK_CASH, 0x1D -SC_MER_FLEE, 0x1C -SC_MER_ATK, 0x1C -SC_MER_HP, 0x1C -SC_MER_SP, 0x1C -SC_MER_HIT, 0x1C -SC_SLOWCAST, 0x1F -SC_CRITICALWOUND, 0x17 -SC_MOVHASTE_HORSE, 0x1F -SC_PROTECT_DEF, 0x1C -SC_PROTECT_MDEF, 0x1C -SC_HEALPLUS, 0x5C -SC_S_LIFEPOTION, 0x5C -SC_L_LIFEPOTION, 0x5C -SC_CRITICALPERCENT, 0x5C -SC_PLUSAVOIDVALUE, 0x5C -//SC_ATKER_ASPD, 0x1C -//SC_TARGET_ASPD, 0x5C -//SC_ATKER_MOVESPEED, 0x1C -SC_ATKER_BLOOD, 0x1C -SC_TARGET_BLOOD, 0x1E -SC_ARMOR_PROPERTY, 0x1D -//SC_REUSE_LIMIT_A, 0x1D -SC_HELLPOWER, 0x1D -//SC_STEAMPACK, 0x5C -//SC_REUSE_LIMIT_B, 0x1D -//SC_REUSE_LIMIT_C, 0x1D -//SC_REUSE_LIMIT_D, 0x1D -//SC_REUSE_LIMIT_E, 0x1D -//SC_REUSE_LIMIT_F, 0x1D -SC_CASH_PLUSONLYJOBEXP, 0x1D -SC_PARTYFLEE, 0x18 -//SC_ANGEL_PROTECT, 0x18 -//SC_ENDURE_MDEF, 0x15 -SC_ENCHANTBLADE, 0x10 -SC_DEATHBOUND, 0x1E -SC_REFRESH, 0x16 -SC_GIANTGROWTH, 0x14 -SC_STONEHARDSKIN, 0x17 -SC_VITALITYACTIVATION, 0x14 -SC_FIGHTINGSPIRIT, 0x14 -SC_ABUNDANCE, 0x14 -//SC_REUSE_MILLENNIUMSHIELD, 0x1D -//SC_REUSE_CRUSHSTRIKE, 0x1D -//SC_REUSE_REFRESH, 0x1D -//SC_REUSE_STORMBLAST, 0x1D -SC_EPICLESIS, 0x1D -SC_ORATIO, 0x14 -SC_LAUDAAGNUS, 0x14 -SC_LAUDARAMUS, 0x14 -SC_CLOAKINGEXCEED, 0x1E -SC_HALLUCINATIONWALK, 0x1C -SC_HALLUCINATIONWALK_POSTDELAY, 0x1F -SC_RENOVATIO, 0x14 -SC_WEAPONBLOCKING, 0x1C -//SC_WEAPONBLOCKING_POSTDELAY, 0x1F -SC_ROLLINGCUTTER, 0x1E -SC_EXPIATIO, 0x14 -SC_POISONINGWEAPON, 0x1C -SC_TOXIN, 0x14 -SC_PARALYSE, 0x14 -SC_VENOMBLEED, 0x14 -SC_MAGICMUSHROOM, 0x14 -SC_DEATHHURT, 0x14 -SC_PYREXIA, 0x14 -SC_OBLIVIONCURSE, 0x14 -SC_LEECHESEND, 0x14 -SC_DUPLELIGHT, 0x14 -SC_FEARBREEZE, 0x1C -SC_ELECTRICSHOCKER, 0x1E -SC_MARSHOFABYSS, 0x14 -SC_RECOGNIZEDSPELL, 0x14 -//SC_WUGRIDER, 0x1D -SC_WUGDASH, 0x1E -SC_WUGBITE, 0x1E -SC_CAMOUFLAGE, 0x1E -SC_ACCELERATION, 0x1C -SC_HOVERING, 0x1C -SC_SUMMON1, 0x18 -SC_SUMMON2, 0x18 -SC_SUMMON3, 0x18 -SC_SUMMON4, 0x18 -SC_SUMMON5, 0x18 -//SC_MVPCARD_TAOGUNKA, 0x1C -//SC_MVPCARD_MISTRESS, 0x1C -//SC_MVPCARD_ORCHERO, 0x1C -//SC_MVPCARD_ORCLORD, 0x1C -SC_OVERHEAT_LIMITPOINT, 0x1C -SC_OVERHEAT, 0x1C -SC_SHAPESHIFT, 0x1C -SC_INFRAREDSCAN, 0x1C -SC_MAGNETICFIELD, 0x1E -SC_NEUTRALBARRIER, 0x1E -SC_NEUTRALBARRIER_MASTER, 0x1E -SC_STEALTHFIELD_MASTER, 0x1E -SC_MANU_ATK, 0x1C -SC_MANU_DEF, 0x1C -SC_SPL_ATK, 0x1C -SC_SPL_DEF, 0x1C -SC__REPRODUCE, 0x1C -SC_MANU_MATK, 0x1C -SC_SPL_MATK, 0x1C -//SC_STR_SCROLL, 0x1D -//SC_INT_SCROLL, 0x1D -SC_FORCEOFVANGUARD, 0x1C -//SC_BUCHEDENOEL, 0x1C -SC__AUTOSHADOWSPELL, 0x10 -SC__SHADOWFORM, 0x1E -SC_RAID, 0x1C -SC_SHIELDSPELL_DEF, 0x10 -SC_SHIELDSPELL_MDEF, 0x10 -SC_SHIELDSPELL_REF, 0x10 -SC__BODYPAINT, 0x14 -SC_EXEEDBREAK, 0x1C -SC_ADORAMUS, 0x10 -SC_PRESTIGE, 0x10 -SC__INVISIBILITY, 0x1E -SC__DEADLYINFECT, 0x14 -SC_BANDING, 0x1C -SC_BANDING_DEFENCE, 0x1C -SC_EARTHDRIVE, 0x14 -SC_INSPIRATION, 0x1C -SC__ENERVATION, 0x10 -SC__GROOMY, 0x10 -SC_RAISINGDRAGON, 0x1E -SC__IGNORANCE, 0x10 -SC__LAZINESS, 0x10 -SC_LIGHTNINGWALK, 0x1C -//SC_ACARAJE, 0x18 -SC__UNLUCKY, 0x10 -SC_CURSEDCIRCLE_ATKER, 0x1C -SC_CURSEDCIRCLE_TARGET, 0x1C -SC__WEAKNESS, 0x10 -SC_CRESCENTELBOW, 0x1C -//SC_NOEQUIPACCESSARY, 0x1E -SC__STRIPACCESSARY, 0x1C -SC__MANHOLE, 0x5E -//SC_POPECOOKIE, 0x1C -SC__BLOODYLUST, 0x20 -SC_SWING, 0x1C -SC_SYMPHONY_LOVE, 0x1C -SC_PROPERTYWALK, 0x12 -SC_SPELLFIST, 0x10 -SC_NETHERWORLD, 0x10 -SC_SIREN, 0x10 -SC_DEEP_SLEEP, 0x22 -SC_SIRCLEOFNATURE, 0x10 -SC_GLOOMYDAY, 0x10 -SC_GLOOMYDAY_SK, 0x10 -SC_SONG_OF_MANA, 0x10 -SC_DANCE_WITH_WUG, 0x10 -SC_RUSH_WINDMILL, 0x1C -SC_ECHOSONG, 0x1C -SC_HARMONIZE, 0x10 -SC_MOONLIT_SERENADE, 0x1C -SC_SATURDAY_NIGHT_FEVER, 0x10 -SC_SITDOWN_FORCE, 0x1C -SC_ANALYZE, 0x1C -SC_LERADS_DEW, 0x1C -SC_MELODYOFSINK, 0x1C -SC_BEYOND_OF_WARCRY, 0x1C -SC_UNLIMITED_HUMMING_VOICE, 0x1C -SC_WARMER, 0x2 -SC_VENOMIMPRESS, 0x4 -SC_FROSTMISTY, 0x20 -//SC_ASSUMPTIO2, 0x10 -//SC_GN_TRAINING_SWORD, 0x1F -//SC_GN_REMODELING_CART, 0x1F -SC_STOMACHACHE, 0x20 -SC_MYSTERIOUS_POWDER, 0x20 -//SC_ELEMENTAL_AGGRESSIVE, 0x2 -//SC_ELEMENTAL_WAIT, 0x2 -//SC_ELEMENTAL_PASSIVE, 0x2 -//SC_ELEMENTAL_DEFENSIVE, 0x2 -SC_WATER_BARRIER, 0x2 -SC_ZEPHYR, 0x2 -SC_POWER_OF_GAIA, 0x2 -SC_FIRE_INSIGNIA, 0x2 -SC_WATER_INSIGNIA, 0x2 -SC_WIND_INSIGNIA, 0x2 -SC_EARTH_INSIGNIA, 0x2 -//SC_MORA_BUFF, 0x2 -//SC_REUSE_LIMIT_G, 0x1D -//SC_REUSE_LIMIT_H, 0x1D -SC_NEEDLE_OF_PARALYZE, 0x1 -SC_PAIN_KILLER, 0x1 -//SC_G_LIFEPOTION, 0x44 -//SC_VITALIZE_POTION, 0x4 -SC_LIGHT_OF_REGENE, 0x1 -//SC_SONIC_CLAW_POSTDELAY, 0x2 -//SC_SILVERVEIN_RUSH_POSTDELAY, 0x2 -//SC_MIDNIGHT_FRENZY_POSTDELAY, 0x2 -//SC_TINDER_BREAKER, 0x2 -//SC_TINDER_BREAKER_POSTDELAY, 0x2 -//SC_CBC, 0x2 -//SC_CBC_POSTDELAY, 0x2 -//SC_EQC, 0x2 -//SC_MAGIC_CANDY, 0x5C -//SC_ALL_RIDING_REUSE_LIMIT, 0x1 -//SC_HANDICAPSTATE_DEEP_SLEEP, 0x50 +SC_PROVOKE, 32 +SC_ENDURE, 21 +SC_TWOHANDQUICKEN, 24 +SC_CONCENTRATION, 16 +SC_ENCHANTPOISON, 16 +SC_POISONREACT, 16 +SC_QUAGMIRE, 42 +SC_ANGELUS, 16 +SC_BLESSING, 80 +SC_INC_AGI, 80 +SC_DEC_AGI, 34 +SC_SLOWPOISON, 24 +SC_IMPOSITIO, 16 +SC_SUFFRAGIUM, 16 +SC_ASPERSIO, 80 +SC_BENEDICTIO, 26 +SC_KYRIE, 16 +SC_MAGNIFICAT, 18 +SC_GLORIA, 16 +SC_LEXAETERNA, 18 +SC_ADRENALINE, 16 +SC_WEAPONPERFECT, 16 +SC_OVERTHRUST, 16 +SC_MAXIMIZEPOWER, 16 +SC_TRICKDEAD, 26 +SC_SHOUT, 16 +SC_ENERGYCOAT, 16 +SC_ATTHASTE_POTION1, 24 +SC_ATTHASTE_POTION2, 24 +SC_ATTHASTE_POTION3, 16 +//SC_MOVHASTE_POTION, 26 +//SC_POSTDELAY, 29 +SC_BARRIER, 16 +SC_NOEQUIPWEAPON, 30 +SC_NOEQUIPSHIELD, 30 +SC_NOEQUIPARMOR, 30 +SC_NOEQUIPHELM, 30 +SC_PROTECTWEAPON, 28 +SC_PROTECTSHIELD, 28 +SC_PROTECTARMOR, 28 +SC_PROTECTHELM, 28 +SC_AUTOGUARD, 24 +SC_REFLECTSHIELD, 24 +SC_DEVOTION, 18 +SC_PROVIDENCE, 18 +SC_DEFENDER, 16 +SC_MAGICROD, 26 +//SC_WEAPONPROPERTY, 24 +SC_AUTOSPELL, 21 +//SC_SPECIALZONE, 26 +//SC_MASK, 26 +SC_SPEARQUICKEN, 16 +SC_BLADESTOP, 26 +SC_EXPLOSIONSPIRITS, 26 +SC_STEELBODY, 18 +SC_PROPERTYFIRE, 29 +SC_PROPERTYWATER, 29 +SC_PROPERTYWIND, 29 +SC_PROPERTYGROUND, 29 +SC_STOP, 26 +SC_PROPERTYUNDEAD, 26 +//SC_STATUSONE, 26 +SC_AURABLADE, 18 +SC_PARRYING, 26 +SC_LKCONCENTRATION, 18 +SC_TENSIONRELAX, 26 +SC_BERSERK, 18 +SC_SACRIFICE, 26 +SC_GOSPEL, 34 +SC_ASSUMPTIO, 16 +SC_BASILICA, 26 +//SC_GROUNDMAGIC, 26 //is divided to SC_VOLCANO, 0xSC_DELUGE, 0xSC_VIOLENTGALE +SC_VOLCANO, 26 +SC_DELUGE, 26 +SC_VIOLENTGALE, 26 +SC_MAGICPOWER, 18 +SC_EDP, 23 +SC_TRUESIGHT, 18 +SC_WINDWALK, 18 +SC_MELTDOWN, 23 +SC_CARTBOOST, 23 +SC_BLOODING, 26 +SC_JOINTBEAT, 42 +SC_MINDBREAKER, 18 +SC_MEMORIZE, 18 +SC_FOGWALL, 26 +SC_SPIDERWEB, 47 +//SC_SUB_WEAPONPROPERTY, 23 +SC_RUN, 26 +SC_STRUP, 26 +SC_PROPERTYDARK, 26 +SC_ADRENALINE2, 18 +SC_PROPERTYTELEKINESIS, 26 +SC_SOULLINK, 26 +SC_PLUSATTACKPOWER, 88 +SC_PLUSMAGICPOWER, 88 +SC_KAITE, 26 +SC_KAAHI, 26 +SC_KAUPE, 26 +SC_ONEHANDQUICKEN, 26 +//SC_GDSKILL_POSTDELAY, 29 +SC_PRESERVE, 18 +SC_CHASEWALK2, 26 +//SC_MOVESLOW_POTION, 26 +SC_DOUBLECASTING, 26 +SC_GRAVITATION, 26 +SC_OVERTHRUSTMAX, 18 +SC_TAROTCARD, 42 +SC_CR_SHRINK, 23 +SC_WZ_SIGHTBLASTER, 23 +SC_RG_CCONFINE_M, 31 +SC_RG_CCONFINE_S, 31 +SC_NJ_UTSUSEMI, 26 +SC_NJ_BUNSINJYUTSU, 26 +SC_NJ_SUITON, 47 +//SC_MENTAL, 26 +//SC_EXPMEMORY, 26 +//SC_PERFORMANCE, 26 +//SC_GAIN, 26 +//SC_DRIFT, 26 +//SC_WALLSHIFT, 26 +//SC_REINCARNATION, 26 +//SC_DENERGY, 26 +//SC_DAURA, 26 +//SC_DFREEZER, 26 +//SC_DPUNISH, 26 +//SC_DBARRIER, 26 +//SC_DWARNING, 26 +//SC_MOUSEWHEEL, 30 +//SC_DACCEL, 26 +//SC_DBLOCK, 26 +SC_FOOD_STR, 28 +SC_FOOD_AGI, 28 +SC_FOOD_VIT, 28 +SC_FOOD_DEX, 28 +SC_FOOD_INT, 28 +SC_FOOD_LUK, 28 +SC_FOOD_BASICAVOIDANCE, 88 +SC_FOOD_BASICHIT, 88 +//SC_FOOD_CRITICALSUCCESSVALUE, 24 +SC_CASH_PLUSEXP, 29 +SC_CASH_DEATHPENALTY, 29 +SC_CASH_RECEIVEITEM, 29 +SC_CASH_BOSS_ALARM, 30 +//SC_DA_ENERGY, 26 +//SC_DA_FIRSTSLOT, 26 +//SC_DA_HEADDEF, 26 +//SC_DA_SPACE, 30 +//SC_DA_ITEMREBUILD, 30 +//SC_DA_ILLUSION, 26 +//SC_DA_EARPLUG, 30 +//SC_DA_CONTRACT, 29 +//SC_DA_BLACK, 30 +//SC_DA_MAGICCART, 26 +//SC_CRYSTAL, 30 +//SC_DA_REBUILD, 29 +//SC_DA_EDARKNESS, 26 +//SC_DA_EGUARDIAN, 26 +//SC_DA_TIMEOUT, 26 +SC_FOOD_STR_CASH, 29 +SC_FOOD_AGI_CASH, 29 +SC_FOOD_VIT_CASH, 29 +SC_FOOD_DEX_CASH, 29 +SC_FOOD_INT_CASH, 29 +SC_FOOD_LUK_CASH, 29 +SC_MER_FLEE, 28 +SC_MER_ATK, 28 +SC_MER_HP, 28 +SC_MER_SP, 28 +SC_MER_HIT, 28 +SC_SLOWCAST, 31 +SC_CRITICALWOUND, 23 +SC_MOVHASTE_HORSE, 31 +SC_PROTECT_DEF, 28 +SC_PROTECT_MDEF, 28 +SC_HEALPLUS, 92 +SC_S_LIFEPOTION, 92 +SC_L_LIFEPOTION, 92 +SC_CRITICALPERCENT, 92 +SC_PLUSAVOIDVALUE, 92 +//SC_ATKER_ASPD, 28 +//SC_TARGET_ASPD, 92 +//SC_ATKER_MOVESPEED, 28 +SC_ATKER_BLOOD, 28 +SC_TARGET_BLOOD, 30 +SC_ARMOR_PROPERTY, 29 +//SC_REUSE_LIMIT_A, 29 +SC_HELLPOWER, 29 +//SC_STEAMPACK, 92 +//SC_REUSE_LIMIT_B, 29 +//SC_REUSE_LIMIT_C, 29 +//SC_REUSE_LIMIT_D, 29 +//SC_REUSE_LIMIT_E, 29 +//SC_REUSE_LIMIT_F, 29 +SC_CASH_PLUSONLYJOBEXP, 29 +SC_PARTYFLEE, 24 +//SC_ANGEL_PROTECT, 24 +//SC_ENDURE_MDEF, 21 +SC_ENCHANTBLADE, 16 +SC_DEATHBOUND, 30 +SC_REFRESH, 22 +SC_GIANTGROWTH, 20 +SC_STONEHARDSKIN, 23 +SC_VITALITYACTIVATION, 20 +SC_FIGHTINGSPIRIT, 20 +SC_ABUNDANCE, 20 +//SC_REUSE_MILLENNIUMSHIELD, 29 +//SC_REUSE_CRUSHSTRIKE, 29 +//SC_REUSE_REFRESH, 29 +//SC_REUSE_STORMBLAST, 29 +SC_EPICLESIS, 29 +SC_ORATIO, 20 +SC_LAUDAAGNUS, 20 +SC_LAUDARAMUS, 20 +SC_CLOAKINGEXCEED, 30 +SC_HALLUCINATIONWALK, 28 +SC_HALLUCINATIONWALK_POSTDELAY, 31 +SC_RENOVATIO, 20 +SC_WEAPONBLOCKING, 28 +//SC_WEAPONBLOCKING_POSTDELAY, 31 +SC_ROLLINGCUTTER, 30 +SC_EXPIATIO, 20 +SC_POISONINGWEAPON, 28 +SC_TOXIN, 20 +SC_PARALYSE, 20 +SC_VENOMBLEED, 20 +SC_MAGICMUSHROOM, 20 +SC_DEATHHURT, 20 +SC_PYREXIA, 20 +SC_OBLIVIONCURSE, 20 +SC_LEECHESEND, 20 +SC_DUPLELIGHT, 20 +SC_FEARBREEZE, 28 +SC_ELECTRICSHOCKER, 30 +SC_MARSHOFABYSS, 20 +SC_RECOGNIZEDSPELL, 20 +//SC_WUGRIDER, 29 +SC_WUGDASH, 30 +SC_WUGBITE, 30 +SC_CAMOUFLAGE, 30 +SC_ACCELERATION, 28 +SC_HOVERING, 28 +SC_SUMMON1, 24 +SC_SUMMON2, 24 +SC_SUMMON3, 24 +SC_SUMMON4, 24 +SC_SUMMON5, 24 +//SC_MVPCARD_TAOGUNKA, 28 +//SC_MVPCARD_MISTRESS, 28 +//SC_MVPCARD_ORCHERO, 28 +//SC_MVPCARD_ORCLORD, 28 +SC_OVERHEAT_LIMITPOINT, 28 +SC_OVERHEAT, 28 +SC_SHAPESHIFT, 28 +SC_INFRAREDSCAN, 28 +SC_MAGNETICFIELD, 30 +SC_NEUTRALBARRIER, 30 +SC_NEUTRALBARRIER_MASTER, 30 +SC_STEALTHFIELD_MASTER, 30 +SC_MANU_ATK, 28 +SC_MANU_DEF, 28 +SC_SPL_ATK, 28 +SC_SPL_DEF, 28 +SC__REPRODUCE, 28 +SC_MANU_MATK, 28 +SC_SPL_MATK, 28 +//SC_STR_SCROLL, 29 +//SC_INT_SCROLL, 29 +SC_FORCEOFVANGUARD, 28 +//SC_BUCHEDENOEL, 28 +SC__AUTOSHADOWSPELL, 16 +SC__SHADOWFORM, 30 +SC_RAID, 28 +SC_SHIELDSPELL_DEF, 16 +SC_SHIELDSPELL_MDEF, 16 +SC_SHIELDSPELL_REF, 16 +SC__BODYPAINT, 20 +SC_EXEEDBREAK, 28 +SC_ADORAMUS, 16 +SC_PRESTIGE, 16 +SC__INVISIBILITY, 30 +SC__DEADLYINFECT, 20 +SC_BANDING, 28 +SC_BANDING_DEFENCE, 28 +SC_EARTHDRIVE, 20 +SC_INSPIRATION, 28 +SC__ENERVATION, 16 +SC__GROOMY, 16 +SC_RAISINGDRAGON, 30 +SC__IGNORANCE, 16 +SC__LAZINESS, 16 +SC_LIGHTNINGWALK, 28 +//SC_ACARAJE, 24 +SC__UNLUCKY, 16 +SC_CURSEDCIRCLE_ATKER, 28 +SC_CURSEDCIRCLE_TARGET, 28 +SC__WEAKNESS, 16 +SC_CRESCENTELBOW, 28 +//SC_NOEQUIPACCESSARY, 30 +SC__STRIPACCESSARY, 28 +SC__MANHOLE, 94 +//SC_POPECOOKIE, 28 +SC__BLOODYLUST, 32 +SC_SWING, 28 +SC_SYMPHONY_LOVE, 28 +SC_PROPERTYWALK, 18 +SC_SPELLFIST, 16 +SC_NETHERWORLD, 16 +SC_SIREN, 16 +SC_DEEP_SLEEP, 34 +SC_SIRCLEOFNATURE, 16 +SC_GLOOMYDAY, 16 +SC_GLOOMYDAY_SK, 16 +SC_SONG_OF_MANA, 16 +SC_DANCE_WITH_WUG, 16 +SC_RUSH_WINDMILL, 28 +SC_ECHOSONG, 28 +SC_HARMONIZE, 16 +SC_MOONLIT_SERENADE, 28 +SC_SATURDAY_NIGHT_FEVER, 16 +SC_SITDOWN_FORCE, 28 +SC_ANALYZE, 28 +SC_LERADS_DEW, 28 +SC_MELODYOFSINK, 28 +SC_BEYOND_OF_WARCRY, 28 +SC_UNLIMITED_HUMMING_VOICE, 28 +SC_WARMER, 2 +SC_VENOMIMPRESS, 4 +SC_FROSTMISTY, 32 +//SC_ASSUMPTIO2, 16 +//SC_GN_TRAINING_SWORD, 31 +//SC_GN_REMODELING_CART, 31 +SC_STOMACHACHE, 32 +SC_MYSTERIOUS_POWDER, 32 +//SC_ELEMENTAL_AGGRESSIVE, 2 +//SC_ELEMENTAL_WAIT, 2 +//SC_ELEMENTAL_PASSIVE, 2 +//SC_ELEMENTAL_DEFENSIVE, 2 +SC_WATER_BARRIER, 2 +SC_ZEPHYR, 2 +SC_POWER_OF_GAIA, 2 +SC_FIRE_INSIGNIA, 2 +SC_WATER_INSIGNIA, 2 +SC_WIND_INSIGNIA, 2 +SC_EARTH_INSIGNIA, 2 +//SC_MORA_BUFF, 2 +//SC_REUSE_LIMIT_G, 29 +//SC_REUSE_LIMIT_H, 29 +SC_NEEDLE_OF_PARALYZE, 1 +SC_PAIN_KILLER, 1 +//SC_G_LIFEPOTION, 68 +//SC_VITALIZE_POTION, 4 +SC_LIGHT_OF_REGENE, 1 +//SC_SONIC_CLAW_POSTDELAY, 2 +//SC_SILVERVEIN_RUSH_POSTDELAY, 2 +//SC_MIDNIGHT_FRENZY_POSTDELAY, 2 +//SC_TINDER_BREAKER, 2 +//SC_TINDER_BREAKER_POSTDELAY, 2 +//SC_CBC, 2 +//SC_CBC_POSTDELAY, 2 +//SC_EQC, 2 +//SC_MAGIC_CANDY, 92 +//SC_ALL_RIDING_REUSE_LIMIT, 1 +//SC_HANDICAPSTATE_DEEP_SLEEP, 80 +SC_MONSTER_TRANSFORM, 12 -SC_FULL_THROTTLE, 0x12 -SC_REBOUND, 0x12 -SC_TELEKINESIS_INTENSE, 0x12 +SC_FULL_THROTTLE, 18 +SC_REBOUND, 18 +SC_TELEKINESIS_INTENSE,18 // Unremovable -SC_WEIGHTOVER50, 0x4F -SC_WEIGHTOVER90, 0x4F -SC_XMAS, 0x4D -SC_SUMMER, 0x4D -SC_NOCHAT, 0x4D -SC_FUSION, 0x4D -SC_EARTHSCROLL, 0x4D -SC_STORMKICK_READY, 0x4D -SC_DOWNKICK_READY, 0x4D -SC_COUNTERKICK_READY, 0x4D -SC_TURNKICK_READY, 0x4D -SC_DODGE_READY, 0x4D -SC_JAILED, 0x4D -SC_AUTOTRADE, 0x4D -SC_WHISTLE, 0x4F -SC_ASSNCROS, 0x4F -SC_POEMBRAGI, 0x4F -SC_APPLEIDUN, 0x4F -SC_HUMMING, 0x4F -SC_DONTFORGETME, 0x4F -SC_FORTUNE, 0x4F -SC_SERVICEFORYOU, 0x4F -SC_INCHIT, 0x4D -SC_PUSH_CART, 0x4D \ No newline at end of file +SC_WEIGHTOVER50, 79 +SC_WEIGHTOVER90, 79 +SC_XMAS, 77 +SC_SUMMER, 77 +SC_NOCHAT, 77 +SC_FUSION, 77 +SC_EARTHSCROLL, 77 +SC_STORMKICK_READY, 77 +SC_DOWNKICK_READY, 77 +SC_COUNTERKICK_READY, 77 +SC_TURNKICK_READY, 77 +SC_DODGE_READY, 77 +SC_JAILED, 77 +SC_AUTOTRADE, 77 +SC_WHISTLE, 79 +SC_ASSNCROS, 79 +SC_POEMBRAGI, 79 +SC_APPLEIDUN, 79 +SC_HUMMING, 79 +SC_DONTFORGETME, 79 +SC_FORTUNE, 79 +SC_SERVICEFORYOU, 79 +SC_INCHIT, 77 +SC_PUSH_CART, 0x4D diff --git a/src/map/status.c b/src/map/status.c index 597128b82..992cc0855 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -1023,6 +1023,7 @@ void initChangeTables(void) { StatusDisplayType[SC_BLOOD_SUCKER] = true; StatusDisplayType[SC__SHADOWFORM] = true; StatusDisplayType[SC__MANHOLE] = true; + StatusDisplayType[SC_MONSTER_TRANSFORM] = true; #ifdef RENEWAL_EDP // renewal EDP increases your weapon atk -- cgit v1.2.3-70-g09d2 From 8568f179f5cefa638d564b75119235bac4b9a3b3 Mon Sep 17 00:00:00 2001 From: Matheus Macabu Date: Sat, 15 Jun 2013 17:23:31 -0300 Subject: Sending whisper to a player from an admin account (group 99 [is this right?]) will display the message as a self announce to player. (done a todo) Also added trade interface properly for HPM, forgot that. Signed-off-by: Matheus Macabu --- src/map/clif.c | 5 +++-- src/map/map.c | 2 ++ src/map/trade.h | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/map/clif.c b/src/map/clif.c index e8de09d70..a752f1bc1 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -5964,12 +5964,13 @@ void clif_wis_message(int fd, const char* nick, const char* mes, int mes_len) safestrncpy((char*)WFIFOP(fd,28), mes, mes_len); WFIFOSET(fd,WFIFOW(fd,2)); #else + struct map_session_data *ssd = iMap->nick2sd(nick); + WFIFOHEAD(fd, mes_len + NAME_LENGTH + 8); WFIFOW(fd,0) = 0x97; WFIFOW(fd,2) = mes_len + NAME_LENGTH + 8; safestrncpy((char*)WFIFOP(fd,4), nick, NAME_LENGTH); - WFIFOL(fd,28) = 0; // isAdmin; if nonzero, also displays text above char - // TODO: WFIFOL(fd,28) = pc->get_group_level(ssd); + WFIFOL(fd,28) = (pc->get_group_level(ssd) == 99) ? 1 : 0; // isAdmin; if nonzero, also displays text above char safestrncpy((char*)WFIFOP(fd,32), mes, mes_len); WFIFOSET(fd,WFIFOW(fd,2)); #endif diff --git a/src/map/map.c b/src/map/map.c index d74263d1a..5f86286e9 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -5246,6 +5246,7 @@ void map_hp_symbols(void) { HPM->share(vending,"vending"); HPM->share(pc,"pc"); HPM->share(party,"party"); + HPM->share(trade,"trade"); HPM->share(iMap,"iMap"); /* partial */ HPM->share(mapit,"mapit"); @@ -5278,6 +5279,7 @@ void load_defaults(void) { vending_defaults(); pc_defaults(); party_defaults(); + trade_defaults(); } int do_init(int argc, char *argv[]) { diff --git a/src/map/trade.h b/src/map/trade.h index 6bcefdb96..f66c70525 100644 --- a/src/map/trade.h +++ b/src/map/trade.h @@ -20,6 +20,6 @@ struct trade_interface { } trade_s; struct trade_interface *trade; -void trade_interface(void); +void trade_defaults(void); #endif /* _TRADE_H_ */ -- cgit v1.2.3-70-g09d2 From f33c54e76be4f3fea6a21aab40fe13feb952239d Mon Sep 17 00:00:00 2001 From: malufett Date: Sun, 16 Jun 2013 22:38:02 -0700 Subject: Fixed Bug#7382 -Map crash with AB_CLEARANCE --- src/map/skill.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/map/skill.c b/src/map/skill.c index 5a10038d8..664203f1a 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7965,12 +7965,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; for(i = 0; i < SC_MAX; i++) { - if( SC_COMMON_MAX > i ){ - if ( !tsc->data[i] || !status_get_sc_type(i) ) - continue; + if ( !tsc->data[i] ) + continue; + if( SC_COMMON_MAX > i ) if ( status_get_sc_type(i)&SC_NO_CLEARANCE ) continue; - } switch (i) { case SC_ASSUMPTIO: if( bl->type == BL_MOB ) -- cgit v1.2.3-70-g09d2 From 23167727ed5e798f12e2b9140b405b83003186e7 Mon Sep 17 00:00:00 2001 From: malufett Date: Sun, 16 Jun 2013 23:48:14 -0700 Subject: Fixed Bug#7381 & #7379 -Reins_of_Mount should now ignore delay(when fail) and sitting condition. --- src/map/pc.c | 7 ++++--- src/map/script.c | 5 +++-- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/map/pc.c b/src/map/pc.c index ef70aad97..635f48db5 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4295,8 +4295,8 @@ int pc_useitem(struct map_session_data *sd,int n) return 0; /* Items with delayed consume are not meant to work while in mounts except reins of mount(12622) */ - if( sd->inventory_data[n]->flag.delay_consume ) { - if( nameid != ITEMID_REINS_OF_MOUNT && sd->sc.data[SC_ALL_RIDING] ) + if( sd->inventory_data[n]->flag.delay_consume && nameid != ITEMID_REINS_OF_MOUNT ) { + if( sd->sc.data[SC_ALL_RIDING] ) return 0; else if( pc_issit(sd) ) return 0; @@ -4323,7 +4323,8 @@ int pc_useitem(struct map_session_data *sd,int n) } else {// not yet used item (all slots are initially empty) sd->item_delay[i].nameid = nameid; } - sd->item_delay[i].tick = tick + sd->inventory_data[n]->delay; + if( !(nameid == ITEMID_REINS_OF_MOUNT && sd->sc.option&(OPTION_WUGRIDER|OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR)) ) + sd->item_delay[i].tick = tick + sd->inventory_data[n]->delay; } else {// should not happen ShowError("pc_useitem: Exceeded item delay array capacity! (nameid=%d, char_id=%d)\n", nameid, sd->status.char_id); } diff --git a/src/map/script.c b/src/map/script.c index 15870aaa7..823febbc6 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -16520,9 +16520,10 @@ BUILDIN(setmounting) { TBL_PC* sd; if( (sd = script_rid2sd(st)) == NULL ) return true; - if( sd->sc.option&(OPTION_WUGRIDER|OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR) ) + if( sd->sc.option&(OPTION_WUGRIDER|OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR) ){ + clif->msgtable(sd->fd, 0X78b); script_pushint(st,0);//can't mount with one of these - else { + }else { if( sd->sc.data[SC_ALL_RIDING] ) status_change_end(&sd->bl, SC_ALL_RIDING, INVALID_TIMER); else -- cgit v1.2.3-70-g09d2 From 962d203f95fd8b81d504f60aa28bb17cc268395d Mon Sep 17 00:00:00 2001 From: malufett Date: Mon, 17 Jun 2013 00:31:23 -0700 Subject: Fixed Bug#7380 -showprogressbar should now work as official.(Thanks Kyeme & Ryuuzaki) Fixed insane damage of Hatred Skills. (http://hercules.ws/board/topic/1110-renewal-attack/ - Thanks Axiom) --- src/map/battle.c | 4 ++-- src/map/clif.c | 6 +++--- src/map/pc.c | 2 +- src/map/script.c | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 31fe502f6..731c6f618 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -753,8 +753,8 @@ int battle_calc_masteryfix(struct block_list *src, struct block_list *target, ui int ratio = sd->status.base_level + status_get_dex(src) + status_get_luk(src); if ( i == 2 ) ratio += status_get_str(src); //Star Anger if (skill < 4 ) - ratio /= 12 - 3 * skill; - damage += damage * ratio; + ratio /= (12 - 3 * skill); + damage += damage * ratio / 100; } if( sc ){ diff --git a/src/map/clif.c b/src/map/clif.c index a752f1bc1..9fae03ef0 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -9757,7 +9757,7 @@ void clif_parse_progressbar(int fd, struct map_session_data * sd) if( iTimer->gettick() < sd->progressbar.timeout && sd->st ) sd->st->state = END; - sd->progressbar.npc_id = sd->progressbar.timeout = 0; + sd->state.workinprogress = sd->progressbar.npc_id = sd->progressbar.timeout = 0; npc_scriptcont(sd, npc_id, false); } @@ -9777,8 +9777,8 @@ void clif_parse_WalkToXY(int fd, struct map_session_data *sd) if (sd->sc.opt1 && ( sd->sc.opt1 == OPT1_STONEWAIT || sd->sc.opt1 == OPT1_BURNING )) ; //You CAN walk on this OPT1 value. - else if( sd->progressbar.npc_id ) - clif->progressbar_abort(sd); + /*else if( sd->progressbar.npc_id ) + clif->progressbar_abort(sd);*/ else if (pc_cant_act(sd)) return; diff --git a/src/map/pc.c b/src/map/pc.c index 635f48db5..b7644f2fb 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -4255,7 +4255,7 @@ int pc_useitem(struct map_session_data *sd,int n) nullpo_ret(sd); - if( sd->npc_id ){ + if( sd->npc_id || sd->state.workinprogress&1 ){ /* TODO: add to clif->messages enum */ #ifdef RENEWAL clif->msg(sd, 0x783); // TODO look for the client date that has this message. diff --git a/src/map/script.c b/src/map/script.c index 823febbc6..682faa42b 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -16312,6 +16312,7 @@ BUILDIN(progressbar) sd->progressbar.npc_id = st->oid; sd->progressbar.timeout = iTimer->gettick() + second*1000; + sd->state.workinprogress = 3; clif->progressbar(sd, strtol(color, (char **)NULL, 0), second); return true; -- cgit v1.2.3-70-g09d2 From bfa7971e86fd7dc42b5668fb5ba1469e8a62c22f Mon Sep 17 00:00:00 2001 From: malufett Date: Mon, 17 Jun 2013 01:59:05 -0700 Subject: Fixed Bug#7385 -Fixed TK_DODGE + TK_JUMPKICK, SR_FALLENEMPIRE + SR_GATEOFHELL combo. --- src/map/skill.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/map/skill.c b/src/map/skill.c index 664203f1a..685fec353 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -2395,6 +2395,10 @@ int skill_attack (int attack_type, struct block_list* src, struct block_list *ds //Can't attack nor use items until skill's delay expires. [Skotlex] sd->ud.attackabletime = sd->canuseitem_tick = sd->ud.canact_tick; break; + case TK_DODGE: + if( pc->checkskill(sd, TK_JUMPKICK) > 0 ) + flag = 1; + break; case SR_DRAGONCOMBO: if( pc->checkskill(sd, SR_FALLENEMPIRE) > 0 ) flag = 1; @@ -3761,7 +3765,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint int sflag = skill_area_temp[0] & 0xFFF, heal; if( flag&SD_LEVEL ) sflag |= SD_LEVEL; // -1 will be used in packets instead of the skill level - if( skill_area_temp[1] != bl->id && !(skill->get_inf2(skill_id)&INF2_NPC_SKILL) ) + if( (skill_area_temp[1] != bl->id && !(skill->get_inf2(skill_id)&INF2_NPC_SKILL)) || flag&SD_ANIMATION ) sflag |= SD_ANIMATION; // original target gets no animation (as well as all NPC skills) heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag); @@ -3776,6 +3780,8 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint case GN_CARTCANNON: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); break; + case SR_TIGERCANNON: + flag |= SD_ANIMATION; case LG_MOONSLASHER: clif->skill_damage(src,bl,tick, status_get_amotion(src), 0, -30000, 1, skill_id, skill_lv, 6); break; @@ -8550,7 +8556,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui case SR_FLASHCOMBO: clif->skill_nodamage(src,bl,skill_id,skill_lv,1); for(i = SR_FLASHCOMBO_ATK_STEP1; i <= SR_FLASHCOMBO_ATK_STEP4; i++) - skill->addtimerskill(src, tick + 600 * (i - SR_FLASHCOMBO_ATK_STEP1), bl->id, 0, 0, i, skill_lv, BF_WEAPON, flag|SD_LEVEL); + skill->addtimerskill(src, tick + 500 * (i - SR_FLASHCOMBO_ATK_STEP1), bl->id, 0, 0, i, skill_lv, BF_WEAPON, flag|SD_LEVEL); break; case WA_SWING_DANCE: case WA_MOONLIT_SERENADE: @@ -13100,12 +13106,14 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id case TK_STORMKICK: case TK_DOWNKICK: case TK_COUNTER: + case TK_JUMPKICK: case HT_POWER: case GC_COUNTERSLASH: case GC_WEAPONCRUSH: case SR_FALLENEMPIRE: case SR_DRAGONCOMBO: case SR_TIGERCANNON: + case SR_GATEOFHELL: break; default: return 0; } -- cgit v1.2.3-70-g09d2 From 6f4b110965db43f49507e9492d29c0745d145760 Mon Sep 17 00:00:00 2001 From: malufett Date: Mon, 17 Jun 2013 21:27:58 +0800 Subject: Fixed Bug#7247 -while vending you can now change equipments. Updated sc_config.txt notes. Signed-off-by: malufett --- db/sc_config.txt | 16 +++++++++------- src/map/clif.c | 4 ++-- src/map/pc.h | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/db/sc_config.txt b/db/sc_config.txt index b0d0e5ba4..06de0bdf6 100644 --- a/db/sc_config.txt +++ b/db/sc_config.txt @@ -3,13 +3,15 @@ // Structure of Database: // SC_NAME, flag // -// flag 0x1 - SC cannot be removed by death. -// 0x2 - SC cannot be saved. -// 0x4 - SC cannot be reset by dispell. -// 0x8 - SC cannot be reset by clearance. -// 0x10 - SC considered as buff and be removed by Hermode and etc. -// 0x20 - SC considered as debuff and be removed by Gospel and etc. -// 0x40 - SC cannot be reset when MADO Gear is taken off. +// flag 1 - SC cannot be removed by death. +// 2 - SC cannot be saved. +// 4 - SC cannot be reset by dispell. +// 8 - SC cannot be reset by clearance. +// 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. +//Example: +//SC_ENDURE, 21 //SC_ENDURE: cannot be removed by death and dispell and cosidered as buff. (16 + 4 + 1 = 21) SC_PROVOKE, 32 SC_ENDURE, 21 diff --git a/src/map/clif.c b/src/map/clif.c index 9fae03ef0..73d4b6666 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -10573,7 +10573,7 @@ void clif_parse_DropItem(int fd, struct map_session_data *sd) if (pc_isdead(sd)) break; - if ( pc_cant_act2(sd) ) + if ( pc_cant_act2(sd) || sd->state.vending ) break; if (sd->sc.count && ( @@ -10795,7 +10795,7 @@ void clif_parse_NpcClicked(int fd,struct map_session_data *sd) #endif return; } - if ( pc_cant_act2(sd) || !(bl = iMap->id2bl(RFIFOL(fd,2))) ) + if ( pc_cant_act2(sd) || !(bl = iMap->id2bl(RFIFOL(fd,2))) || sd->state.vending ) return; switch (bl->type) { diff --git a/src/map/pc.h b/src/map/pc.h index 5c585af1c..43d5d40c7 100644 --- a/src/map/pc.h +++ b/src/map/pc.h @@ -603,7 +603,7 @@ enum equip_pos { #define pc_cant_act(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || (sd)->chatID || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend ) /* equals pc_cant_act except it doesn't check for chat rooms */ -#define pc_cant_act2(sd) ( (sd)->npc_id || (sd)->state.vending || (sd)->state.buyingstore || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend ) +#define pc_cant_act2(sd) ( (sd)->npc_id || (sd)->state.buyingstore || ((sd)->sc.opt1 && (sd)->sc.opt1 != OPT1_BURNING) || (sd)->state.trading || (sd)->state.storage_flag || (sd)->state.prevend ) #define pc_setdir(sd,b,h) ( (sd)->ud.dir = (b) ,(sd)->head_dir = (h) ) #define pc_setchatid(sd,n) ( (sd)->chatID = n ) -- cgit v1.2.3-70-g09d2 From ed15563c944aae732494d9a243a0591d06e04ec1 Mon Sep 17 00:00:00 2001 From: malufett Date: Tue, 18 Jun 2013 04:39:41 -0700 Subject: Fixed Bug#7396 -map crash in using GN_BLOOD_SUCKER. --- src/map/battle.c | 24 +++++++++++------------- src/map/status.c | 4 ++-- 2 files changed, 13 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/map/battle.c b/src/map/battle.c index 731c6f618..ace947aca 100644 --- a/src/map/battle.c +++ b/src/map/battle.c @@ -4345,15 +4345,11 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list wd.damage = sstatus->max_hp* 9/100; wd.damage2 = 0; break; - -#ifdef RENEWAL - case MO_EXTREMITYFIST: // [malufett] - wd.damage = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, n_ele, s_ele, s_ele_, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|8, wd.flag); - // first value is still not confirm. - wd.damage = status_get_sp(src) + 10 * status_get_sp(src) * wd.damage / 100 + 8 * wd.damage; - flag.tdef = 1; - break; case NJ_ISSEN: // [malufett] +#ifndef RENEWAL + wd.damage = 40*sstatus->str +skill_lv*(sstatus->hp/10 + 35); + wd.damage2 = 0; +#else { short totaldef = status_get_total_def(target); i = 0; @@ -4367,12 +4363,14 @@ struct Damage battle_calc_weapon_attack(struct block_list *src,struct block_list ATK_RATE(50); flag.idef = 1; } -#else - - wd.damage = 40*sstatus->str +skill_lv*(sstatus->hp/10 + 35); - wd.damage2 = 0; -#endif break; + case MO_EXTREMITYFIST: // [malufett] + wd.damage = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, n_ele, s_ele, s_ele_, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|8, wd.flag); + // first value is still not confirm. + wd.damage = status_get_sp(src) + 10 * status_get_sp(src) * wd.damage / 100 + 8 * wd.damage; + flag.tdef = 1; +#endif + break; #ifndef RENEWAL case LK_SPIRALPIERCE: case ML_SPIRALPIERCE: diff --git a/src/map/status.c b/src/map/status.c index 992cc0855..55b79fff7 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -8329,10 +8329,10 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val break; case SC_BLOOD_SUCKER: { - struct block_list *src = iMap->id2bl(sce->val2); + struct block_list *src = iMap->id2bl(val2); val3 = 1; if(src) - val3 = 200 + 100 * sce->val1 + status_get_int(src); + val3 = 200 + 100 * val1 + status_get_int(src); val4 = tick / 1000; tick_time = 1000; // [GodLesZ] tick time } -- cgit v1.2.3-70-g09d2