summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDastgir Pojee <dastgirp@gmail.com>2016-10-02 21:03:02 +0530
committerhemagx <ibrahem.h.basyone@gmail.com>2016-10-22 02:21:51 +0200
commit7b270b403ea24811305631d55da5f9d30252ca85 (patch)
treeacdf6b9690f04da77f0a35ba1e5a0bb2d19f322e /src
parentdad2f5b2ec24745287db1b068021ce6d859510b1 (diff)
downloadhercules-7b270b403ea24811305631d55da5f9d30252ca85.tar.gz
hercules-7b270b403ea24811305631d55da5f9d30252ca85.tar.bz2
hercules-7b270b403ea24811305631d55da5f9d30252ca85.tar.xz
hercules-7b270b403ea24811305631d55da5f9d30252ca85.zip
Implemented SU_SCRATCH:
Max Level: 3 Attack Increases by 50+(50+Level)% Base Level >= 30: Activates a Chance to cast skill again. Every 30 Base Level: Increases the chance to cast skill again.
Diffstat (limited to 'src')
-rw-r--r--src/map/battle.c3
-rw-r--r--src/map/skill.c14
-rw-r--r--src/map/status.c1
3 files changed, 16 insertions, 2 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index fabad4460..538f47bb0 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -1671,6 +1671,9 @@ int battle_calc_skillratio(int attack_type, struct block_list *src, struct block
case SU_BITE:
skillratio += 100;
break;
+ case SU_SCRATCH:
+ skillratio += -50 + 50 * skill_lv;
+ break;
/**
* Arch Bishop
**/
diff --git a/src/map/skill.c b/src/map/skill.c
index 637c8cdc9..5efe74825 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -1415,6 +1415,12 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
case MH_XENO_SLASHER:
sc_start2(src, bl, SC_BLOODING, 10 * skill_lv, skill_lv, src->id, skill->get_time(skill_id,skill_lv));
break;
+ /**
+ * Summoner
+ */
+ case SU_SCRATCH:
+ sc_start2(src, bl, SC_BLOODING, (skill_lv * 3), skill_lv, src->id, skill->get_time(skill_id, skill_lv)); // TODO: What's the chance/time?
+ break;
default:
skill->additional_effect_unknown(src, bl, &skill_id, &skill_lv, &attack_type, &dmg_lv, &tick);
break;
@@ -4020,7 +4026,8 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
case KO_BAKURETSU:
case GN_ILLUSIONDOPING:
case MH_XENO_SLASHER:
- if( flag&1 ) {//Recursive invocation
+ case SU_SCRATCH:
+ if (flag&1) { //Recursive invocation
// skill->area_temp[0] holds number of targets in area
// skill->area_temp[1] holds the id of the original target
// skill->area_temp[2] counts how many targets have already been processed
@@ -4035,15 +4042,18 @@ int skill_castend_damage_id(struct block_list* src, struct block_list *bl, uint1
break;
heal = skill->attack(skill->get_type(skill_id), src, src, bl, skill_id, skill_lv, tick, sflag);
- if( skill_id == NPC_VAMPIRE_GIFT && heal > 0 ) {
+ if (skill_id == NPC_VAMPIRE_GIFT && heal > 0) {
clif->skill_nodamage(NULL, src, AL_HEAL, heal, 1);
status->heal(src,heal,0,0);
}
+ if (skill_id == SU_SCRATCH && status->get_lv(src) >= 30 && (rnd() % 100 < (int)(status->get_lv(src) / 30) + 10)) // TODO: Need activation chance.
+ skill->addtimerskill(src, tick + skill->get_delay(skill_id, skill_lv), bl->id, 0, 0, skill_id, skill_lv, BF_WEAPON, flag);
} else {
switch ( skill_id ) {
case NJ_BAKUENRYU:
case LG_EARTHDRIVE:
case GN_CARTCANNON:
+ case SU_SCRATCH:
clif->skill_nodamage(src,bl,skill_id,skill_lv,1);
break;
case SR_TIGERCANNON:
diff --git a/src/map/status.c b/src/map/status.c
index a2a9a5e24..cde02d2bc 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -723,6 +723,7 @@ void initChangeTables(void)
* Summoner
*/
status->set_sc(SU_HIDE, SC_SUHIDE, SI_SUHIDE, SCB_SPEED);
+ add_sc(SU_SCRATCH, SC_BLOODING);
// Elemental Spirit summoner's 'side' status changes.
status->set_sc( EL_CIRCLE_OF_FIRE , SC_CIRCLE_OF_FIRE_OPTION, SI_CIRCLE_OF_FIRE_OPTION, SCB_NONE );