summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changelog-Trunk.txt4
-rw-r--r--src/map/skill.c33
2 files changed, 26 insertions, 11 deletions
diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt
index 489cb3464..bc536d128 100644
--- a/Changelog-Trunk.txt
+++ b/Changelog-Trunk.txt
@@ -4,6 +4,10 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. EVERYTHING ELSE
GOES INTO TRUNK AND WILL BE MERGED INTO STABLE BY VALARIS AND WIZPUTER. -- VALARIS
+
+2006/03/25
+ * Fixed Grandcross/Granddarkness showing no skill animation. [Skotlex]
+ * Fixed mob-casted grandcross doing nothing unless the target was "self" [Skotlex]
2006/03/24
* Fixed iteminfo only displaying first result when there were many. [Skotlex]
* Fixed pet hatching. [Skotlex]
diff --git a/src/map/skill.c b/src/map/skill.c
index 4a6032d2b..0c3ec8c7d 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -717,8 +717,13 @@ int skill_get_casttype(int id)
int inf = skill_get_inf(id);
if (inf&(INF_GROUND_SKILL))
return CAST_GROUND;
- if (inf&(INF_SELF_SKILL|INF_SUPPORT_SKILL))
+ if (inf&INF_SUPPORT_SKILL)
return CAST_NODAMAGE;
+ if (inf&INF_SELF_SKILL) {
+ if(skill_get_inf2(id)&INF2_NO_TARGET_SELF)
+ return CAST_DAMAGE; //Combo skill.
+ return CAST_NODAMAGE;
+ }
if (skill_get_nk(id)&NK_NO_DAMAGE)
return CAST_NODAMAGE;
return CAST_DAMAGE;
@@ -1872,8 +1877,6 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
//Skills who's damage should't show any skill-animation.
case SM_MAGNUM:
case AS_SPLASHER:
- case CR_GRANDCROSS:
- case NPC_GRANDDARKNESS:
case ASC_METEORASSAULT:
case SG_SUN_WARM:
case SG_MOON_WARM:
@@ -1906,6 +1909,13 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
case GS_CHAINACTION:
clif_damage(src,bl,tick,dmg.amotion,dmg.dmotion,damage,dmg.div_,dmg.type,dmg.damage2);
break;
+ case CR_GRANDCROSS:
+ case NPC_GRANDDARKNESS:
+ //Only show animation when hitting yourself. [Skotlex]
+ if (src!=bl) {
+ clif_skill_damage(dsrc,bl,tick,dmg.amotion,dmg.dmotion, damage, dmg.div_, skillid, -1, 5);
+ break;
+ }
default:
clif_skill_damage(dsrc,bl,tick,dmg.amotion,dmg.dmotion, damage, dmg.div_, skillid, (lv!=0)?lv:skilllv, (skillid==0)? 5:type );
}
@@ -3119,14 +3129,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
if(status_isdead(bl) && skillid != NPC_REBIRTH && skillid != ALL_RESURRECTION && skillid != PR_REDEMPTIO)
return 1;
- //Self skill with target changed? We assume these are offensive auto-select-target skills. [Skotlex]
- //But only do this on the first call (flag&~1)
- if (!(flag&1) && skill_get_inf(skillid)&INF_SELF_SKILL && src != bl && !(skill_get_nk(skillid)&NK_NO_DAMAGE))
- return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag);
-
- if (skillid > 0 && skillid < MAX_SKILL)
- type = SkillStatusChangeTable[skillid];
-
//Check for undead skills that convert a no-damage skill into a damage one. [Skotlex]
switch (skillid) {
case AL_HEAL:
@@ -3174,6 +3176,15 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
case NJ_RAIGEKISAI:
return skill_castend_pos2(src,src->x,src->y,skillid,skilllv,tick,0);
}
+
+ //Self skill with target changed? We assume these are offensive auto-select-target skills. [Skotlex]
+ //But only do this on the first call (flag&~1)
+ if (!(flag&1) && skill_get_inf(skillid)&INF_SELF_SKILL && src != bl && !(skill_get_nk(skillid)&NK_NO_DAMAGE))
+ return skill_castend_damage_id (src, bl, skillid, skilllv, tick, flag);
+
+ if (skillid > 0 && skillid < MAX_SKILL)
+ type = SkillStatusChangeTable[skillid];
+
tsc = status_get_sc(bl);
map_freeblock_lock();