summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorshadow <shadow@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-06-13 11:39:13 +0000
committershadow <shadow@54d463be-8e91-2dee-dedb-b68131a5f0ec>2008-06-13 11:39:13 +0000
commit304dbe79fc957d7fe757761a70ba0cd7a906d639 (patch)
treead411877badbc28c6e23687aab85ba71198deb3b /src/map
parent8605b217a7e1c6ed424a8cdf6a987502e4cd6917 (diff)
downloadhercules-304dbe79fc957d7fe757761a70ba0cd7a906d639.tar.gz
hercules-304dbe79fc957d7fe757761a70ba0cd7a906d639.tar.bz2
hercules-304dbe79fc957d7fe757761a70ba0cd7a906d639.tar.xz
hercules-304dbe79fc957d7fe757761a70ba0cd7a906d639.zip
Fixed some skills working on undead element when they were supposed to work on undead race.
Skills Fixed: GrandCross, Dark GrandCross, Cure, Head Crush, Signum Crusis, Blessing, Demons Bane, Divine Protection. Skills needing confirmation: Magnus Exorcismus, Evil Land, Sanctuary, Status Recovery. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12820 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map')
-rw-r--r--src/map/battle.c4
-rw-r--r--src/map/pc.c2
-rw-r--r--src/map/skill.c18
-rw-r--r--src/map/status.c10
4 files changed, 17 insertions, 17 deletions
diff --git a/src/map/battle.c b/src/map/battle.c
index a1f9f6e8b..348cd8ad0 100644
--- a/src/map/battle.c
+++ b/src/map/battle.c
@@ -614,7 +614,7 @@ int battle_addmastery(struct map_session_data *sd,struct block_list *target,int
nullpo_retr(0, sd);
if((skill = pc_checkskill(sd,AL_DEMONBANE)) > 0 &&
- (battle_check_undead(status->race,status->def_ele) || status->race==RC_DEMON) )
+ (status->race==RC_UNDEAD || status->race==RC_DEMON) )
damage += (skill*(int)(3+(sd->status.base_level+1)*0.05)); // submitted by orn
//damage += (skill * 3);
@@ -1713,7 +1713,7 @@ static struct Damage battle_calc_weapon_attack(struct block_list *src,struct blo
vit_def = def2*(def2-15)/150;
vit_def = def2/2 + (vit_def>0?rand()%vit_def:0);
- if((battle_check_undead(sstatus->race,sstatus->def_ele) || sstatus->race==RC_DEMON) &&
+ if((sstatus->race==RC_UNDEAD || sstatus->race==RC_DEMON) &&
src->type == BL_MOB && (skill=pc_checkskill(tsd,AL_DP)) > 0)
vit_def += skill*(int)(3 +(tsd->status.base_level+1)*0.04); // submitted by orn
} else { //Mob-Pet vit-eq
diff --git a/src/map/pc.c b/src/map/pc.c
index 643863ea6..620038d00 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] && !battle_check_undead(sd->battle_status.race,sd->battle_status.def_ele))
+ if(sd->sc.data[SC_SIGNUMCRUCIS] && (sd->battle_status.race != RC_UNDEAD))
status_change_end(&sd->bl,SC_SIGNUMCRUCIS,-1);
//OnUnEquip script [Skotlex]
diff --git a/src/map/skill.c b/src/map/skill.c
index 5bf2ee9c9..b2da0e8b5 100644
--- a/src/map/skill.c
+++ b/src/map/skill.c
@@ -3903,8 +3903,8 @@ 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 on undead won't trigger on undead players.
- if(!dstsd && battle_check_undead(tstatus->race,tstatus->def_ele))
+ //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;
@@ -6297,7 +6297,7 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
case DC_HUMMING:
val1 = 2*skilllv+status->dex/10; // Hit increase
if(sd)
- val1 += 2*pc_checkskill(sd,DC_DANCINGLESSON);
+ val1 += pc_checkskill(sd,DC_DANCINGLESSON);
break;
case BA_POEMBRAGI:
val1 = 3*skilllv+status->dex/10; // Casting time reduction
@@ -6312,8 +6312,8 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
val1 = 30*skilllv+status->dex; // ASPD decrease
val2 = 100 -2*skilllv -status->agi/10; // Movement speed adjustment.
if(sd){
- val1 += pc_checkskill(sd,DC_DANCINGLESSON);
- val2 -= pc_checkskill(sd,DC_DANCINGLESSON);
+ val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This is a guessed value
+ val2 -= pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This is a guessed value
}
if (val2 < 1) val2 = 1;
break;
@@ -6328,11 +6328,11 @@ struct skill_unit_group* skill_unitsetting (struct block_list *src, short skilli
}
break;
case DC_SERVICEFORYOU:
- val1 = 10+skilllv+(status->int_/10); // MaxSP percent increase
- val2 = 10+3*skilllv+(status->int_/10); // SP cost reduction
+ val1 = 15+skilllv+(status->int_/10); // MaxSP percent increase TO-DO: this INT bonus value is guessed
+ val2 = 20+3*skilllv+(status->int_/10); // SP cost reduction
if(sd){
- val1 += pc_checkskill(sd,DC_DANCINGLESSON);
- val2 += pc_checkskill(sd,DC_DANCINGLESSON);
+ val1 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO This bonus value is guessed
+ val2 += pc_checkskill(sd,DC_DANCINGLESSON); //TO-DO Should be half this value
}
break;
case BA_ASSASSINCROSS:
diff --git a/src/map/status.c b/src/map/status.c
index e8df69b3f..b92373a95 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.
- if(status->race != RC_DEMON && !undead_flag)
+ //Only affects demons and undead races
+ if(status->race!=RC_UNDEAD && status->race!=RC_DEMON)
return 0;
break;
case SC_AETERNA:
@@ -4818,7 +4818,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
return 0;
switch (type) {
case SC_BLESSING:
- if (!undead_flag && status->race != RC_DEMON)
+ if (status->race!=RC_UNDEAD && status->race!=RC_DEMON)
break;
case SC_QUAGMIRE:
case SC_DECREASEAGI:
@@ -4842,7 +4842,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
case SC_BLESSING:
//TO-DO Blessing and Agi up should do 1 damage against players on Undead Status, even on PvM
//but cannot be plagiarized (this requires aegis investigation on packets and official behavior) [Brainstorm]
- if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC) {
+ if (status->race!=RC_UNDEAD && status->race!=RC_DEMON) {
if (sc->data[SC_CURSE])
status_change_end(bl,SC_CURSE,-1);
if (sc->data[SC_STONE] && sc->opt1 == OPT1_STONE)
@@ -5717,7 +5717,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
val4 = -1; //Kaahi Timer.
break;
case SC_BLESSING:
- if ((!undead_flag && status->race!=RC_DEMON) || bl->type == BL_PC)
+ if (status->race!=RC_UNDEAD && status->race!=RC_DEMON)
val2 = val1;
else
val2 = 0; //0 -> Half stat.