diff options
author | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-05-07 18:46:21 +0000 |
---|---|---|
committer | skotlex <skotlex@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2008-05-07 18:46:21 +0000 |
commit | 392e49a6097460851f10501cfe34a9ee86010468 (patch) | |
tree | 3d649616dfe3cb1066f0d4b269536c75716f6178 /src/map/status.c | |
parent | 7e744fbd4fbf444adc163a52696fe3e67f4b699c (diff) | |
download | hercules-392e49a6097460851f10501cfe34a9ee86010468.tar.gz hercules-392e49a6097460851f10501cfe34a9ee86010468.tar.bz2 hercules-392e49a6097460851f10501cfe34a9ee86010468.tar.xz hercules-392e49a6097460851f10501cfe34a9ee86010468.zip |
- Added function battle_attr_ratio to handle just getting the attribute table data. Fixes Sense messing up with elemental based statuses.
- Added Throw tomahawk to the list of items that do not trigger the equipment breaking code.
- Moved a bit around the SC_ start of dancing skills to fix Moonlight petals pushing back the casters.
- Modified status_damage to handle SC_KAZIEL. The return value of *_dead functions can pass 8 to specify that kaziel should not be triggered (ie: pvp/gvg)
- Infinite Endure won't be passed on to devoted characters.
- Infinite Endure is no longer saved on logout.
- Added check to avoid gms opening vending shops if they don't have the required level.
- Moved around the Steel Body S. Novice code, simplified it so it triggers before most of the penalties (death is cancelled).
- Fixed the flee penalty not applying when you walk into a gvg map.
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@12688 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/map/status.c')
-rw-r--r-- | src/map/status.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/map/status.c b/src/map/status.c index c30833314..575b6b4ff 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -599,7 +599,6 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s if (!hp && !sp) return 0; - if (target->type == BL_SKILL) return skill_unit_ondamaged((struct skill_unit *)target, src, hp, gettick()); @@ -731,7 +730,6 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s if (battle_config.clear_unit_ondeath && battle_config.clear_unit_ondeath&target->type) skill_clear_unitgroup(target); - status_change_clear(target,0); if(target->type&BL_REGEN) { //Reset regen ticks. @@ -744,6 +742,18 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s memset(®en->ssregen->tick, 0, sizeof(regen->ssregen->tick)); } } + + if (!(flag&8) && sc && sc->data[SC_KAIZEL]) { //flag&8 = disable Kaizel + int time = skill_get_time2(SL_KAIZEL,sc->data[SC_KAIZEL]->val1); + status_revive(target, sc->data[SC_KAIZEL]->val2, 0); + status_change_clear(target,0); + clif_skill_nodamage(target,target,ALL_RESURRECTION,1,1); + sc_start(target,status_skill2sc(PR_KYRIE),100,10,time); + return hp+sp; + } + + status_change_clear(target,0); + if(flag&4) //Delete from memory. (also invokes map removal code) unit_free(target,1); else @@ -5031,12 +5041,13 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val break; case SC_ENDURE: val2 = 7; // Hit-count [Celest] - if (!(flag&1) && sd && !map_flag_gvg(bl->m)) - { + if (!(flag&1) && sd && !map_flag_gvg(bl->m) && (type != SC_ENDURE || !val4)) + { //See if there are devoted characters, and pass the status to them. [Skotlex] + //(but do not pass infinite endure) struct map_session_data *tsd; int i; for (i = 0; i < 5; i++) - { //See if there are devoted characters, and pass the status to them. [Skotlex] + { if (sd->devotion[i] && (tsd = map_id2sd(sd->devotion[i]))) status_change_start(&tsd->bl,type,10000,val1,val2,val3,val4,tick,1); } @@ -6209,6 +6220,8 @@ int status_change_clear(struct block_list* bl, int type) case SC_READYTURN: case SC_DODGE: case SC_JAILED: + case SC_EXPBOOST: + case SC_ITEMBOOST: continue; } |