summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/skill_db.txt2
-rw-r--r--src/map/battle.c6
-rw-r--r--src/map/path.c34
-rw-r--r--src/map/skill.c3
-rw-r--r--src/map/status.c16
5 files changed, 30 insertions, 31 deletions
diff --git a/db/re/skill_db.txt b/db/re/skill_db.txt
index 29ba70d69..152912337 100644
--- a/db/re/skill_db.txt
+++ b/db/re/skill_db.txt
@@ -915,7 +915,7 @@
2339,0,0,0,0,0,0,5,1,no,0,0,0,none,0, SR_GENTLETOUCH,Gentle Touch
2340,0,6,4,0,0x3,2,1,1,no,0,0,0,none,0, SR_ASSIMILATEPOWER,Assimilate Power
2341,3,6,16,0,0x1,0,1,1,yes,0,0x200,0,none,0, SR_POWERVELOCITY,Power Velocity
-2342,1,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,3, SR_CRESCENTELBOW_AUTOSPELL,Crescent Elbow Autospell //CHECK Does this ignore defense?
+2342,1,6,1,-1,0x20,0,5,1,no,0,0,0,weapon,7, SR_CRESCENTELBOW_AUTOSPELL,Crescent Elbow Autospell //CHECK Does this ignore defense?
2343,1:2:3:3:4:4:5:5:6:7,8,1,0,0,0,10,-7,yes,0,0,0,weapon,0, SR_GATEOFHELL,Gate of Hell //CHECK Need to fix to be enemy targeted and also combo after Fallen Empire
2344,2,6,1,-1,0,0,5,1,no,0,0,0,weapon,0, SR_GENTLETOUCH_QUIET,Gentle Touch - Quiet
2345,2,6,16,0,0x1,0,5,1,no,0,0,0,magic,0, SR_GENTLETOUCH_CURE,Gentle Touch - Cure //CHECK Its a healing skill. Guessing it has to be magic type? Healing isnt working.
diff --git a/src/map/battle.c b/src/map/battle.c
index 6836aa016..2217ccecc 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -3726,8 +3726,6 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
md.damage = 7 * targetVit * skill_lv * (atk + matk) / 100;
/*
// Pending [malufett]
- if( unknown condition )
- md.damage >>= 1;
if( unknown condition ){
md.damage = 7 * md.damage % 20;
md.damage = 7 * md.damage / 20;
@@ -3739,6 +3737,8 @@ struct Damage battle_calc_misc_attack(struct block_list *src,struct block_list *
vitfactor = (vitfactor * (matk + atk) / 10) / status_get_vit(target);
ftemp = max(0, vitfactor) + (targetVit * (matk + atk)) / 10;
md.damage = (int64)(ftemp * 70 * skill_lv / 100);
+ if (target->type == BL_PC)
+ md.damage >>= 1;
}
md.damage -= totaldef;
}
@@ -5325,7 +5325,7 @@ void battle_reflect_damage(struct block_list *target, struct block_list *src, st
//ATK [{(Target HP / 100) x Skill Level} x Caster Base Level / 125] % + [Received damage x {1 + (Skill Level x 0.2)}]
int ratio = (status_get_hp(src) / 100) * sc->data[SC_CRESCENTELBOW]->val1 * status->get_lv(target) / 125;
if (ratio > 5000) ratio = 5000; // Maximum of 5000% ATK
- rdamage = rdamage * ratio / 100 + (damage) * (10 + sc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10;
+ rdamage = ratio + (damage)* (10 + sc->data[SC_CRESCENTELBOW]->val1 * 20 / 10) / 10;
skill->blown(target, src, skill->get_blewcount(SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1), unit->getdir(src), 0);
clif->skill_damage(target, src, tick, status_get_amotion(src), 0, rdamage,
1, SR_CRESCENTELBOW_AUTOSPELL, sc->data[SC_CRESCENTELBOW]->val1, 6); // This is how official does
diff --git a/src/map/path.c b/src/map/path.c
index 21d14c815..3b33fce65 100644
--- a/src/map/path.c
+++ b/src/map/path.c
@@ -82,29 +82,17 @@ int path_blownpos(int16 m,int16 x0,int16 y0,int16 dx,int16 dy,int count)
dy=(dy>0)?1:((dy<0)?-1:0);
}
- while( count > 0 && (dx != 0 || dy != 0) ) {
- if( !md->getcellp(md,x0+dx,y0+dy,CELL_CHKPASS) ) {// attempt partial movement
- int fx = ( dx != 0 && md->getcellp(md,x0+dx,y0,CELL_CHKPASS) );
- int fy = ( dy != 0 && md->getcellp(md,x0,y0+dy,CELL_CHKPASS) );
- if( fx && fy )
- {
- if(rnd()&1)
- dx=0;
- else
- dy=0;
- }
- if( !fx )
- dx=0;
- if( !fy )
- dy=0;
- }
-
- x0 += dx;
- y0 += dy;
- count--;
- }
-
- return (x0<<16)|y0; //TODO: use 'struct point' here instead?
+ while( count > 0 && (dx != 0 || dy != 0) ) {
+ if( !md->getcellp(md,x0+dx,y0+dy,CELL_CHKPASS) ) {
+ break;
+ }
+
+ x0 += dx;
+ y0 += dy;
+ count--;
+ }
+
+ return (x0<<16)|y0; //TODO: use 'struct point' here instead?
}
/*==========================================
diff --git a/src/map/skill.c b/src/map/skill.c
index 22d97fff1..8e2e44883 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -2629,6 +2629,9 @@ int skill_attack(int attack_type, struct block_list* src, struct block_list *dsr
case WL_CRIMSONROCK:
dir = map->calc_dir(bl,skill->area_temp[4],skill->area_temp[5]);
break;
+ case MC_CARTREVOLUTION:
+ dir = 6; // Official servers push target to the West
+ break;
}
diff --git a/src/map/status.c b/src/map/status.c
index ee72f0319..56b0531cb 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -9206,8 +9206,12 @@ int status_change_start(struct block_list *src, struct block_list *bl, enum sc_t
case SC_ITEMSCRIPT:
if( sd ) {
switch( val1 ) {
- //case ITEMID_PHREEONI_CARD:
- //case ITEMID_GHOSTRING_CARD:
+ case ITEMID_PHREEONI_CARD:
+ clif->status_change(bl, SI_FOOD_BASICHIT, 1, tick, 0, 0, 0);
+ break;
+ case ITEMID_GHOSTRING_CARD:
+ clif->status_change(bl,SI_ARMOR_PROPERTY,1,tick,0,0,0);
+ break;
case ITEMID_TAO_GUNKA_CARD:
clif->status_change(bl,SI_MVPCARD_TAOGUNKA,1,tick,0,0,0);
break;
@@ -10084,8 +10088,12 @@ int status_change_end_(struct block_list* bl, enum sc_type type, int tid, const
case SC_ITEMSCRIPT:
if( sd ) {
switch( sce->val1 ) {
- //case ITEMID_PHREEONI_CARD:
- //case ITEMID_GHOSTRING_CARD:
+ case ITEMID_PHREEONI_CARD:
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_FOOD_BASICHIT);
+ break;
+ case ITEMID_GHOSTRING_CARD:
+ clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_ARMOR_PROPERTY);
+ break;
case ITEMID_TAO_GUNKA_CARD:
clif->sc_end(&sd->bl, sd->bl.id, SELF, SI_MVPCARD_TAOGUNKA);
break;