summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshadow <shadow@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-06-13 13:22:36 +0000
committershadow <shadow@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-06-13 13:22:36 +0000
commitb978d7ec43d2f167a7395c2c19cc2e86bf5e4b6a (patch)
tree82b3193172c8630b1ea1a8f904e558bd232a8597 /src
parent304dbe79fc957d7fe757761a70ba0cd7a906d639 (diff)
downloadhercules-b978d7ec43d2f167a7395c2c19cc2e86bf5e4b6a.tar.gz
hercules-b978d7ec43d2f167a7395c2c19cc2e86bf5e4b6a.tar.bz2
hercules-b978d7ec43d2f167a7395c2c19cc2e86bf5e4b6a.tar.xz
hercules-b978d7ec43d2f167a7395c2c19cc2e86bf5e4b6a.zip
Fixed Grandcross and darkgrandcross, should only cause blind against undead race.
Also confirmed that ME, evil land, sanctuary, grandcross/DGC and status recovery are versus element, not race. Removed confusion effect part from AL_CURE, it doesnt work on official anymore. Partial revert of signum crucis modification, it doesnt work against players, but work on ELEMENT undead monsters. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12821 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src')
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/skill.c9
-rw-r--r--src/map/status.c4
3 files changed, 6 insertions, 9 deletions
diff --git a/src/map/pc.c b/src/map/pc.c
index 620038d00..643863ea6 100644
--- a/src/map/pc.c
+++ b/src/map/pc.c
@@ -6558,7 +6558,7 @@ int pc_unequipitem(struct map_session_data *sd,int n,int flag)
status_calc_pc(sd,0);
}
- if(sd->sc.data[SC_SIGNUMCRUCIS] && (sd->battle_status.race != RC_UNDEAD))
+ if(sd->sc.data[SC_SIGNUMCRUCIS] && !battle_check_undead(sd->battle_status.race,sd->battle_status.def_ele))
status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1);
//OnUnEquip script [Skotlex]
diff --git a/src/map/skill.c b/src/map/skill.c
index b2da0e8b5..e7052103e 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -602,7 +602,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
case CR_GRANDCROSS:
case NPC_GRANDDARKNESS:
- if(battle_check_undead(tstatus->race,tstatus->def_ele) || tstatus->race == RC_DEMON)
+ if(tstatus->race == RC_UNDEAD || tstatus->race == RC_DEMON)
sc_start(bl,SC_BLIND,100,skilllv,skill_get_time2(skillid,skilllv));
break;
@@ -713,7 +713,7 @@ int skill_additional_effect (struct block_list* src, struct block_list *bl, int
status_change_start(bl,SC_BLIND,10000,skilllv,0,0,0,skill_get_time2(skillid,skilllv),8);
break;
- case LK_HEADCRUSH: /* ヘッドクラッシュ */
+ case LK_HEADCRUSH: //Headcrush has chance of causing Bleeding status, except on demon and undead element
if (!(battle_check_undead(tstatus->race, tstatus->def_ele) || tstatus->race == RC_DEMON))
sc_start(bl, SC_BLEEDING,50, skilllv, skill_get_time2(skillid,skilllv));
break;
@@ -3903,9 +3903,6 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
status_change_end(bl, SC_SILENCE , -1 );
status_change_end(bl, SC_BLIND , -1 );
status_change_end(bl, SC_CONFUSION, -1 );
- //Confusion status will trigger against undead race.
- if(tstatus->race==RC_UNDEAD)
- sc_start(bl, SC_CONFUSION,100,1,skill_get_time2(skillid, skilllv));
clif_skill_nodamage(src,bl,skillid,skilllv,1);
break;
@@ -3927,7 +3924,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in
status_change_end(bl, SC_STUN, -1 );
}
//Is this equation really right? It looks so... special.
- if(battle_check_undead(tstatus->race,tstatus->def_ele) )
+ if(battle_check_undead(tstatus->race,tstatus->def_ele))
{
status_change_start(bl, SC_BLIND,
100*(100-(tstatus->int_/2+tstatus->vit/3+tstatus->luk/10)),
diff --git a/src/map/status.c b/src/map/status.c
index b92373a95..0eee43ed7 100644
--- a/src/map/status.c
+++ b/src/map/status.c
@@ -4672,8 +4672,8 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
return 0; //Cannot override other opt1 status changes. [Skotlex]
break;
case SC_SIGNUMCRUCIS:
- //Only affects demons and undead races
- if(status->race!=RC_UNDEAD && status->race!=RC_DEMON)
+ //Only affects demons and undead element (but not players)
+ if((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC)
return 0;
break;
case SC_AETERNA: