From 73c59399d732b6d5c88ccbf4fcb9ced38e777aca Mon Sep 17 00:00:00 2001 From: skotlex Date: Thu, 17 Aug 2006 00:38:19 +0000 Subject: - Fixed being unable to recast Adrenaline Rush to reset the duration timers. - Added structure regen_data to handle unified regen logic for bl objects. Eh... this is wip, so it isn't used yet, just the preliminar structure is there... (somehow I lost all other progress I had done on it x.x) git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@8323 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/map/map.h | 28 ++++++++++++++++++++++++++++ src/map/status.c | 12 ++++++------ 2 files changed, 34 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/map/map.h b/src/map/map.h index f2403ec1e..ee8a9836e 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -465,6 +465,34 @@ struct view_data { unsigned dead_sit : 2; }; +struct regen_data { + + int flag; //Marks what stuff you may heal or not. + unsigned int + hp_tick, //tick accumulation before healing. + sp_tick, + shp_tick, + ssp_tick; + + unsigned short + hp, //natural heal + sp, + s_hp, //natural heal from skills + s_sp; + + unsigned char //Skill related regen rates. + hpfactor, + spfactor, + shpfactor, + sspfactor; + + struct { + unsigned walk_regen :1; //Can you regen even when walking? + unsigned overweight :1; //Block regen due to overweight. + unsigned block :2; //Block regen flag (1: Hp, 2: Sp) + } state; +}; + struct party_member_data { struct map_session_data *sd; unsigned int hp; //For HP,x,y refreshing. diff --git a/src/map/status.c b/src/map/status.c index 57eb86d7e..a966849a0 100644 --- a/src/map/status.c +++ b/src/map/status.c @@ -3509,12 +3509,12 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change * max = sc->data[SC_ONEHAND].val2; if(sc->data[SC_ADRENALINE2].timer!=-1 && - max < sc->data[SC_ADRENALINE2].val2) - max = sc->data[SC_ADRENALINE2].val2; + max < sc->data[SC_ADRENALINE2].val3) + max = sc->data[SC_ADRENALINE2].val3; if(sc->data[SC_ADRENALINE].timer!=-1 && - max < sc->data[SC_ADRENALINE].val2) - max = sc->data[SC_ADRENALINE].val2; + max < sc->data[SC_ADRENALINE].val3) + max = sc->data[SC_ADRENALINE].val3; if(sc->data[SC_SPEARQUICKEN].timer!=-1 && max < sc->data[SC_SPEARQUICKEN].val2) @@ -5304,9 +5304,9 @@ int status_change_start(struct block_list *bl,int type,int rate,int val1,int val case SC_ADRENALINE2: case SC_ADRENALINE: if (val2 || !battle_config.party_skill_penalty) - val2 = 300; + val3 = 300; else - val2 = 200; + val3 = 200; break; case SC_CONCENTRATION: val2 = 5*val1; //Batk/Watk Increase -- cgit v1.2.3-70-g09d2