- Updated the stun length to 5 secs of: Meteor Storm, Sonic Blow, Throw Stone, Sightless Raid, Smite, Cart Termination
- SG Union will consume now SP if you use it while not soul linked. - Added variable "skip" to the mob spawn data, to know how many mobs to skip when spawning because they were not removed due to the "mob_remove_damaged" setting. - Corrected the Hp/Sp regen formulas from Hp/Sp/Spirit Recovery and Happy/Peaceful break according to recent forums discussions (formula is changed from x*lv +max*lv/500 to lv*(x+max/500). git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@9944 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
fbddee853b
commit
cf8a93db38
@ -4,6 +4,13 @@ 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.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2007/03/02
|
2007/03/02
|
||||||
|
* SG Union will consume now SP if you use it while not soul linked.
|
||||||
|
* Added variable "skip" to the mob spawn data, to know how many mobs to
|
||||||
|
skip when spawning because they were not removed due to the
|
||||||
|
"mob_remove_damaged" setting.
|
||||||
|
* Corrected the Hp/Sp regen formulas from Hp/Sp/Spirit Recovery and
|
||||||
|
Happy/Peaceful break according to recent forums discussions (formula is
|
||||||
|
changed from x*lv +max*lv/500 to lv*(x+max/500). [Skotlex]
|
||||||
* Added new script function: setiteminfo. Now you can make custom items [Lupus]
|
* Added new script function: setiteminfo. Now you can make custom items [Lupus]
|
||||||
- Updated script function setitemscript(itemID,script,WhichScript)
|
- Updated script function setitemscript(itemID,script,WhichScript)
|
||||||
now u can set one of 3 item scripts: use/update, equip, unequip
|
now u can set one of 3 item scripts: use/update, equip, unequip
|
||||||
|
@ -19,6 +19,9 @@
|
|||||||
-----
|
-----
|
||||||
|
|
||||||
========================
|
========================
|
||||||
|
03/02
|
||||||
|
* Updated the stun length to 5 secs of: Meteor Storm, Sonic Blow, Throw
|
||||||
|
Stone, Sightless Raid, Smite, Cart Termination.
|
||||||
02/24
|
02/24
|
||||||
* Updated skill_db.txt using the new nk values in hexadecimal. [Skotlex]
|
* Updated skill_db.txt using the new nk values in hexadecimal. [Skotlex]
|
||||||
02/23
|
02/23
|
||||||
|
@ -174,7 +174,7 @@
|
|||||||
81,700,2000,0,500,0
|
81,700,2000,0,500,0
|
||||||
|
|
||||||
//-- WZ_METEOR
|
//-- WZ_METEOR
|
||||||
83,15000,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,0,500,3000
|
83,15000,2000:3000:3000:4000:4000:5000:5000:6000:6000:7000,0,500,5000
|
||||||
//-- WZ_JUPITEL
|
//-- WZ_JUPITEL
|
||||||
84,2500:3000:3500:4000:4500:5000:5500:6000:6500:7000,0,0,0,0
|
84,2500:3000:3500:4000:4500:5000:5500:6000:6500:7000,0,0,0,0
|
||||||
//-- WZ_VERMILION
|
//-- WZ_VERMILION
|
||||||
@ -244,7 +244,7 @@
|
|||||||
//-- AS_CLOAKING
|
//-- AS_CLOAKING
|
||||||
135,0,0,0,500:1000:2000:3000:4000:5000:6000:7000:8000:9000,0
|
135,0,0,0,500:1000:2000:3000:4000:5000:6000:7000:8000:9000,0
|
||||||
//-- AS_SONICBLOW
|
//-- AS_SONICBLOW
|
||||||
136,0,2000,2000,0,3000
|
136,0,2000,2000,0,5000
|
||||||
//-- AS_GRIMTOOTH
|
//-- AS_GRIMTOOTH
|
||||||
137,0,0,0,0,1000
|
137,0,0,0,0,1000
|
||||||
//-- AS_ENCHANTPOISON
|
//-- AS_ENCHANTPOISON
|
||||||
@ -274,7 +274,7 @@
|
|||||||
//-- TF_PICKSTONE
|
//-- TF_PICKSTONE
|
||||||
151,500,0,0,0,0
|
151,500,0,0,0,0
|
||||||
//-- TF_THROWSTONE
|
//-- TF_THROWSTONE
|
||||||
152,0,100,0,3000,8000
|
152,0,100,0,5000,8000
|
||||||
|
|
||||||
//-- MC_LOUD
|
//-- MC_LOUD
|
||||||
155,0,0,0,300000,0
|
155,0,0,0,300000,0
|
||||||
@ -341,7 +341,7 @@
|
|||||||
212,0,500,0,0,0
|
212,0,500,0,0,0
|
||||||
|
|
||||||
//-- RG_RAID
|
//-- RG_RAID
|
||||||
214,0,0,0,3000,8000:9000:10000:11000:12000
|
214,0,0,0,5000,8000:9000:10000:11000:12000
|
||||||
//-- RG_STRIPEWEAPON
|
//-- RG_STRIPEWEAPON
|
||||||
215,1000,1000,0,75000:90000:105000:120000:135000,0
|
215,1000,1000,0,75000:90000:105000:120000:135000,0
|
||||||
//-- RG_STRIPSHIELD
|
//-- RG_STRIPSHIELD
|
||||||
@ -384,7 +384,7 @@
|
|||||||
//-- CR_AUTOGUARD
|
//-- CR_AUTOGUARD
|
||||||
249,0,0,0,300000,0
|
249,0,0,0,300000,0
|
||||||
//-- CR_SHIELDCHARGE
|
//-- CR_SHIELDCHARGE
|
||||||
250,0,0,0,0,3000
|
250,0,0,0,0,5000
|
||||||
//-- CR_SHIELDBOOMERANG
|
//-- CR_SHIELDBOOMERANG
|
||||||
251,0,700,0,0,0
|
251,0,700,0,0,0
|
||||||
//-- CR_REFLECTSHIELD
|
//-- CR_REFLECTSHIELD
|
||||||
@ -808,7 +808,7 @@
|
|||||||
//-- HW_GRAVITATION
|
//-- HW_GRAVITATION
|
||||||
484,5000,2000,0,5000:6000:7000:8000:9000,0
|
484,5000,2000,0,5000:6000:7000:8000:9000,0
|
||||||
//-- WS_CARTTERMINATION
|
//-- WS_CARTTERMINATION
|
||||||
485,0,0,0,0,3000
|
485,0,0,0,0,5000
|
||||||
//-- WS_OVERTHRUSTMAX
|
//-- WS_OVERTHRUSTMAX
|
||||||
486,0,0,0,180000,0
|
486,0,0,0,180000,0
|
||||||
//-- CG_LONGINGFREEDOM
|
//-- CG_LONGINGFREEDOM
|
||||||
|
@ -2025,7 +2025,11 @@ int mob_cache_cleanup_sub(struct block_list *bl, va_list ap) {
|
|||||||
return 0;
|
return 0;
|
||||||
if (!battle_config.mob_remove_damaged &&
|
if (!battle_config.mob_remove_damaged &&
|
||||||
md->status.hp < md->status.max_hp)
|
md->status.hp < md->status.max_hp)
|
||||||
|
{
|
||||||
|
if (md->spawn && md->spawn_n >= 0) //Do not respawn mob later.
|
||||||
|
map[md->spawn->m].moblist[md->spawn_n]->skip++;
|
||||||
return 0; //Do not remove damaged mobs.
|
return 0; //Do not remove damaged mobs.
|
||||||
|
}
|
||||||
|
|
||||||
unit_free(&md->bl,0);
|
unit_free(&md->bl,0);
|
||||||
|
|
||||||
|
@ -917,6 +917,7 @@ struct spawn_data {
|
|||||||
unsigned short m,x,y; //Spawn information (map, point, spawn-area around point)
|
unsigned short m,x,y; //Spawn information (map, point, spawn-area around point)
|
||||||
signed short xs,ys;
|
signed short xs,ys;
|
||||||
unsigned short num; //Number of mobs using this structure.
|
unsigned short num; //Number of mobs using this structure.
|
||||||
|
unsigned short skip; //Number of mobs to skip when spawning them (for mob_remove_damageed: no)
|
||||||
unsigned int level; //Custom level.
|
unsigned int level; //Custom level.
|
||||||
unsigned int delay1,delay2; //Min delay before respawning after spawn/death
|
unsigned int delay1,delay2; //Min delay before respawning after spawn/death
|
||||||
struct {
|
struct {
|
||||||
|
@ -2307,14 +2307,14 @@ int npc_parse_mob2 (struct spawn_data *mob, int index)
|
|||||||
int i;
|
int i;
|
||||||
struct mob_data *md;
|
struct mob_data *md;
|
||||||
|
|
||||||
for (i = 0; i < mob->num; i++) {
|
for (i = mob->skip; i < mob->num; i++) {
|
||||||
md = mob_spawn_dataset(mob);
|
md = mob_spawn_dataset(mob);
|
||||||
md->spawn = mob;
|
md->spawn = mob;
|
||||||
md->spawn_n = index;
|
md->spawn_n = index;
|
||||||
md->special_state.cached = (index>=0); //If mob is cached on map, it is dynamically removed
|
md->special_state.cached = (index>=0); //If mob is cached on map, it is dynamically removed
|
||||||
mob_spawn(md);
|
mob_spawn(md);
|
||||||
}
|
}
|
||||||
|
mob->skip = 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8331,6 +8331,14 @@ int skill_check_condition (struct map_session_data *sd, int skill, int lv, int t
|
|||||||
return 1;
|
return 1;
|
||||||
if (sc && sc->data[SC_SPIRIT].timer != -1 && sc->data[SC_SPIRIT].val2 == SL_STAR)
|
if (sc && sc->data[SC_SPIRIT].timer != -1 && sc->data[SC_SPIRIT].val2 == SL_STAR)
|
||||||
break;
|
break;
|
||||||
|
//Auron insists we should implement SP consumption when you are not Soul Linked. [Skotlex]
|
||||||
|
if(sp>0 && type&1)
|
||||||
|
{
|
||||||
|
if (status->sp < (unsigned int)sp)
|
||||||
|
clif_skill_fail(sd,skill,1,0);
|
||||||
|
else
|
||||||
|
status_zap(&sd->bl, 0, sp);
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
case GD_BATTLEORDER:
|
case GD_BATTLEORDER:
|
||||||
case GD_REGENERATION:
|
case GD_REGENERATION:
|
||||||
|
@ -2494,14 +2494,14 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
|
|||||||
|
|
||||||
val = 0;
|
val = 0;
|
||||||
if((skill=pc_checkskill(sd,SM_RECOVERY)) > 0)
|
if((skill=pc_checkskill(sd,SM_RECOVERY)) > 0)
|
||||||
val += skill*5 + (status->max_hp*skill/500);
|
val += skill*(5 + status->max_hp/500);
|
||||||
sregen->hp = cap_value(val, 0, SHRT_MAX);
|
sregen->hp = cap_value(val, 0, SHRT_MAX);
|
||||||
|
|
||||||
val = 0;
|
val = 0;
|
||||||
if((skill=pc_checkskill(sd,MG_SRECOVERY)) > 0)
|
if((skill=pc_checkskill(sd,MG_SRECOVERY)) > 0)
|
||||||
val += skill*3 + (status->max_sp*skill/500);
|
val += skill*(3 + status->max_sp/500);
|
||||||
if((skill=pc_checkskill(sd,NJ_NINPOU)) > 0)
|
if((skill=pc_checkskill(sd,NJ_NINPOU)) > 0)
|
||||||
val += skill*3 + (status->max_sp*skill/500);
|
val += skill*(3 + status->max_sp/500);
|
||||||
sregen->sp = cap_value(val, 0, SHRT_MAX);
|
sregen->sp = cap_value(val, 0, SHRT_MAX);
|
||||||
|
|
||||||
// Skill-related recovery (only when sit)
|
// Skill-related recovery (only when sit)
|
||||||
@ -2509,21 +2509,21 @@ void status_calc_regen(struct block_list *bl, struct status_data *status, struct
|
|||||||
|
|
||||||
val = 0;
|
val = 0;
|
||||||
if((skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0)
|
if((skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0)
|
||||||
val += skill*4 + (status->max_hp*skill/500);
|
val += skill*(4 + status->max_hp/500);
|
||||||
|
|
||||||
if((skill=pc_checkskill(sd,TK_HPTIME)) > 0 && sd->state.rest)
|
if((skill=pc_checkskill(sd,TK_HPTIME)) > 0 && sd->state.rest)
|
||||||
val += skill*30 + (status->max_hp*skill/500);
|
val += skill*(30 + status->max_hp/500);
|
||||||
sregen->hp = cap_value(val, 0, SHRT_MAX);
|
sregen->hp = cap_value(val, 0, SHRT_MAX);
|
||||||
|
|
||||||
val = 0;
|
val = 0;
|
||||||
if((skill=pc_checkskill(sd,TK_SPTIME)) > 0 && sd->state.rest)
|
if((skill=pc_checkskill(sd,TK_SPTIME)) > 0 && sd->state.rest)
|
||||||
{
|
{
|
||||||
val += skill*3 + (status->max_sp*skill/500);
|
val += skill*(3 + status->max_sp/500);
|
||||||
if ((skill=pc_checkskill(sd,SL_KAINA)) > 0) //Power up Enjoyable Rest
|
if ((skill=pc_checkskill(sd,SL_KAINA)) > 0) //Power up Enjoyable Rest
|
||||||
val += (30+10*skill)*val/100;
|
val += (30+10*skill)*val/100;
|
||||||
}
|
}
|
||||||
if((skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0)
|
if((skill=pc_checkskill(sd,MO_SPIRITSRECOVERY)) > 0)
|
||||||
val += skill*2 + (status->max_sp*skill/500);
|
val += skill*(2 + status->max_sp/500);
|
||||||
sregen->sp = cap_value(val, 0, SHRT_MAX);
|
sregen->sp = cap_value(val, 0, SHRT_MAX);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user