- Removed backup.pl (for TXT servers) and vs9-to-vs8.php (outdated versions);
- Merged @killmonster2 with @killmonster tid:73632; - Fixed bugreport:6764, auction code was misplaced; - Follow up to r16753 (bugreport:6523), fixed bugreport:6673, using Gravitational Field with Safety Wall would keep the character immobilized. Blame myself, thankyou Lunar for the fix; - Fixed bugreport:6514, @slaveclone wouldn't be targeted by monster. Thanks to zippy; - Fixed bugreport:6837, some code was duplicated; - Fixed bugreport:6768, removed some leftovers from TXT removal; - Fixed bugreport:6868, Unequipping a weapon with Incantation Samurai card will not kill you if you have less than 999 hp and are on a non-pvp map; - Fixed wrong bit field on ai field in mob_data structure. Credits to Ind. git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@16881 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
07512c2353
commit
aae7d1d129
@ -1888,7 +1888,7 @@
|
||||
4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
|
||||
4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
|
||||
4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
|
||||
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ heal -999,0; }
|
||||
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; } }
|
||||
4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
|
||||
4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
|
||||
4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}
|
||||
|
@ -2168,7 +2168,7 @@
|
||||
4260,Wootan_Shooter_Card,Wootan Shooter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000; },{},{}
|
||||
4261,Wootan_Fighter_Card,Wootan Fighter Card,6,20,,10,,,,,,,,769,,,,,{ bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000; },{},{}
|
||||
4262,Evil_Cloud_Hermit_Card,Cloud Hermit Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12029,RC_Plant,100; },{},{}
|
||||
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ heal -999,0; }
|
||||
4263,Incant_Samurai_Card,Samurai Spector Card,6,20,,10,,,,,,,,2,,,,,{ bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000; },{},{ if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; } }
|
||||
4264,Wind_Ghost_Card,Wind Ghost Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20; },{},{}
|
||||
4265,Li_Me_Mang_Ryang_Card,Jing Guai Card,6,20,,10,,,,,,,,136,,,,,{ bonus3 bAddMonsterDropItem,12033,RC_Angel,100; },{},{}
|
||||
4266,Eclipse_Card,Eclipse Card,6,20,,10,,,,,,,,4,,,,,{ bonus bVit,1; },{},{}
|
||||
|
@ -1919,7 +1919,7 @@ REPLACE INTO `item_db` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6,20
|
||||
REPLACE INTO `item_db` VALUES (4260,'Wootan_Shooter_Card','Wootan Shooter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4261,'Wootan_Fighter_Card','Wootan Fighter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4262,'Evil_Cloud_Hermit_Card','Cloud Hermit Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12029,RC_Plant,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'heal -999,0;');
|
||||
REPLACE INTO `item_db` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; }');
|
||||
REPLACE INTO `item_db` VALUES (4264,'Wind_Ghost_Card','Wind Ghost Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4265,'Li_Me_Mang_Ryang_Card','Jing Guai Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12033,RC_Angel,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db` VALUES (4266,'Eclipse_Card','Eclipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bVit,1;',NULL,NULL);
|
||||
|
@ -2199,7 +2199,7 @@ REPLACE INTO `item_db_re` VALUES (4259,'Wooden_Golem_Card','Wooden Golem Card',6
|
||||
REPLACE INTO `item_db_re` VALUES (4260,'Wootan_Shooter_Card','Wootan Shooter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Confusion,2000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4261,'Wootan_Fighter_Card','Wootan Fighter Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,769,NULL,NULL,NULL,NULL,'bonus bDef,1; bonus2 bResEff,Eff_Bleeding,2000;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4262,'Evil_Cloud_Hermit_Card','Cloud Hermit Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12029,RC_Plant,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'heal -999,0;');
|
||||
REPLACE INTO `item_db_re` VALUES (4263,'Incant_Samurai_Card','Samurai Spector Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,NULL,NULL,'bonus bIgnoreDefRace,RC_NonBoss; bonus bHPrecovRate,-100; bonus2 bHPLossRate,666,10000;',NULL,'if( (Hp <= 999) && !getmapflag(strcharinfo(3),6) && !getmapflag(strcharinfo(3),7) && !getmapflag(strcharinfo(3),8) ) { heal (1 - Hp), 0; } else { heal -999, 0; }');
|
||||
REPLACE INTO `item_db_re` VALUES (4264,'Wind_Ghost_Card','Wind Ghost Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAutoSpell,"WZ_JUPITEL",3+7*(getskilllv("WZ_JUPITEL")==10),20;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4265,'Li_Me_Mang_Ryang_Card','Jing Guai Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,136,NULL,NULL,NULL,NULL,'bonus3 bAddMonsterDropItem,12033,RC_Angel,100;',NULL,NULL);
|
||||
REPLACE INTO `item_db_re` VALUES (4266,'Eclipse_Card','Eclipse Card',6,20,NULL,10,NULL,NULL,NULL,NULL,NULL,NULL,NULL,4,NULL,NULL,NULL,NULL,'bonus bVit,1;',NULL,NULL);
|
||||
|
@ -90,8 +90,6 @@ bool mapif_elemental_delete(int ele_id) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifndef TXT_SQL_CONVERT
|
||||
|
||||
static void mapif_elemental_send(int fd, struct s_elemental *ele, unsigned char flag) {
|
||||
int size = sizeof(struct s_elemental) + 5;
|
||||
|
||||
@ -161,4 +159,3 @@ int inter_elemental_parse_frommap(int fd) {
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif //TXT_SQL_CONVERT
|
||||
|
@ -34,8 +34,4 @@ int inter_guild_charname_changed(int guild_id,int account_id, int char_id, char
|
||||
int inter_guild_CharOnline(int char_id, int guild_id);
|
||||
int inter_guild_CharOffline(int char_id, int guild_id);
|
||||
|
||||
//For the TXT->SQL converter.
|
||||
int inter_guild_tosql(struct guild *g,int flag);
|
||||
int inter_guildcastle_tosql(struct guild_castle *gc);
|
||||
|
||||
#endif /* _INT_GUILD_SQL_H_ */
|
||||
|
@ -22,7 +22,5 @@ void inter_party_sql_final(void);
|
||||
int inter_party_leave(int party_id,int account_id, int char_id);
|
||||
int inter_party_CharOnline(int char_id, int party_id);
|
||||
int inter_party_CharOffline(int char_id, int party_id);
|
||||
//Required for the TXT->SQL converter
|
||||
int inter_party_tosql(struct party *p, int flag, int index);
|
||||
|
||||
#endif /* _INT_PARTY_SQL_H_ */
|
||||
|
@ -2179,12 +2179,11 @@ static int atkillmonster_sub(struct block_list *bl, va_list ap)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void atcommand_killmonster_sub(const int fd, struct map_session_data* sd, const char* message, const int drop)
|
||||
ACMD_FUNC(killmonster)
|
||||
{
|
||||
int map_id;
|
||||
int map_id, drop_flag;
|
||||
char map_name[MAP_NAME_LENGTH_EXT];
|
||||
|
||||
if (!sd) return;
|
||||
nullpo_retr(-1, sd);
|
||||
|
||||
memset(map_name, '\0', sizeof(map_name));
|
||||
|
||||
@ -2194,26 +2193,13 @@ void atcommand_killmonster_sub(const int fd, struct map_session_data* sd, const
|
||||
if ((map_id = map_mapname2mapid(map_name)) < 0)
|
||||
map_id = sd->bl.m;
|
||||
}
|
||||
|
||||
drop_flag = strcmp(command+1, "killmonster2");
|
||||
|
||||
map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, drop);
|
||||
map_foreachinmap(atkillmonster_sub, map_id, BL_MOB, -drop_flag);
|
||||
|
||||
clif_displaymessage(fd, msg_txt(165)); // All monsters killed!
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
ACMD_FUNC(killmonster)
|
||||
{
|
||||
atcommand_killmonster_sub(fd, sd, message, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*==========================================
|
||||
*
|
||||
*------------------------------------------*/
|
||||
ACMD_FUNC(killmonster2)
|
||||
{
|
||||
atcommand_killmonster_sub(fd, sd, message, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -8866,7 +8852,7 @@ void atcommand_basecommands(void) {
|
||||
ACMD_DEF2("monstersmall", monster),
|
||||
ACMD_DEF2("monsterbig", monster),
|
||||
ACMD_DEF(killmonster),
|
||||
ACMD_DEF(killmonster2),
|
||||
ACMD_DEF2("killmonster2", killmonster),
|
||||
ACMD_DEF(refine),
|
||||
ACMD_DEF(produce),
|
||||
ACMD_DEF(memo),
|
||||
|
@ -5230,8 +5230,10 @@ int battle_check_target( struct block_list *src, struct block_list *target,int f
|
||||
|
||||
if( !md->special_state.ai )
|
||||
{ //Normal mobs
|
||||
if( (target->type == BL_MOB && t_bl->type == BL_PC && ((TBL_MOB*)target)->special_state.ai < 4) ||
|
||||
( t_bl->type == BL_MOB && !((TBL_MOB*)t_bl)->special_state.ai ) )
|
||||
if(
|
||||
( target->type == BL_MOB && t_bl->type == BL_PC && ( ((TBL_MOB*)target)->special_state.ai != 4 && ((TBL_MOB*)target)->special_state.ai != 1 ) ) ||
|
||||
( t_bl->type == BL_MOB && !((TBL_MOB*)t_bl)->special_state.ai )
|
||||
)
|
||||
state |= BCT_PARTY; //Normal mobs with no ai are friends.
|
||||
else
|
||||
state |= BCT_ENEMY; //However, all else are enemies.
|
||||
|
@ -457,13 +457,6 @@ int elemental_change_mode(struct elemental_data *ed, int mode) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void elemental_damage(struct elemental_data *ed, int hp, int sp) {
|
||||
if( hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_HP);
|
||||
if( sp )
|
||||
clif_elemental_updatestatus(ed->master, SP_SP);
|
||||
}
|
||||
|
||||
void elemental_heal(struct elemental_data *ed, int hp, int sp) {
|
||||
if( hp )
|
||||
clif_elemental_updatestatus(ed->master, SP_HP);
|
||||
@ -471,7 +464,7 @@ void elemental_heal(struct elemental_data *ed, int hp, int sp) {
|
||||
clif_elemental_updatestatus(ed->master, SP_SP);
|
||||
}
|
||||
|
||||
int elemental_dead(struct elemental_data *ed, struct block_list *src) {
|
||||
int elemental_dead(struct elemental_data *ed) {
|
||||
elemental_delete(ed, 1);
|
||||
return 0;
|
||||
}
|
||||
@ -645,7 +638,6 @@ static int elemental_ai_sub_foreachclient(struct map_session_data *sd, va_list a
|
||||
|
||||
static int elemental_ai_timer(int tid, unsigned int tick, int id, intptr_t data) {
|
||||
map_foreachpc(elemental_ai_sub_foreachclient,tick);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -67,9 +67,8 @@ int elemental_save(struct elemental_data *ed);
|
||||
int elemental_change_mode_ack(struct elemental_data *ed, int mode);
|
||||
int elemental_change_mode(struct elemental_data *ed, int mode);
|
||||
|
||||
void elemental_damage(struct elemental_data *ed, int hp, int sp);
|
||||
void elemental_heal(struct elemental_data *ed, int hp, int sp);
|
||||
int elemental_dead(struct elemental_data *ed, struct block_list *src);
|
||||
int elemental_dead(struct elemental_data *ed);
|
||||
|
||||
int elemental_delete(struct elemental_data *ed, int reply);
|
||||
void elemental_summon_stop(struct elemental_data *ed);
|
||||
|
@ -85,7 +85,7 @@ void merc_damage(struct homun_data *hd) {
|
||||
clif_hominfo(hd->master,hd,0);
|
||||
}
|
||||
|
||||
int merc_hom_dead(struct homun_data *hd, struct block_list *src)
|
||||
int merc_hom_dead(struct homun_data *hd)
|
||||
{
|
||||
//There's no intimacy penalties on death (from Tharis)
|
||||
struct map_session_data *sd = hd->master;
|
||||
|
@ -80,7 +80,7 @@ int merc_hom_recv_data(int account_id, struct s_homunculus *sh, int flag); //alb
|
||||
struct view_data* merc_get_hom_viewdata(int class_);
|
||||
int hom_class2mapid(int hom_class);
|
||||
void merc_damage(struct homun_data *hd);
|
||||
int merc_hom_dead(struct homun_data *hd, struct block_list *src);
|
||||
int merc_hom_dead(struct homun_data *hd);
|
||||
void merc_hom_skillup(struct homun_data *hd,int skillnum);
|
||||
int merc_hom_calc_skilltree(struct homun_data *hd);
|
||||
int merc_hom_checkskill(struct homun_data *hd,int skill_id);
|
||||
|
@ -20,7 +20,6 @@ void mail_clear(struct map_session_data *sd)
|
||||
sd->mail.index = 0;
|
||||
sd->mail.amount = 0;
|
||||
sd->mail.zeny = 0;
|
||||
sd->auction.amount = 0;
|
||||
|
||||
return;
|
||||
}
|
||||
|
@ -344,14 +344,6 @@ int merc_data_received(struct s_mercenary *merc, bool flag)
|
||||
return 1;
|
||||
}
|
||||
|
||||
void mercenary_damage(struct mercenary_data *md, int hp, int sp)
|
||||
{
|
||||
if( hp )
|
||||
clif_mercenary_updatestatus(md->master, SP_HP);
|
||||
if( sp )
|
||||
clif_mercenary_updatestatus(md->master, SP_SP);
|
||||
}
|
||||
|
||||
void mercenary_heal(struct mercenary_data *md, int hp, int sp)
|
||||
{
|
||||
if( hp )
|
||||
@ -360,7 +352,7 @@ void mercenary_heal(struct mercenary_data *md, int hp, int sp)
|
||||
clif_mercenary_updatestatus(md->master, SP_SP);
|
||||
}
|
||||
|
||||
int mercenary_dead(struct mercenary_data *md, struct block_list *src)
|
||||
int mercenary_dead(struct mercenary_data *md)
|
||||
{
|
||||
merc_delete(md, 1);
|
||||
return 0;
|
||||
|
@ -56,9 +56,8 @@ int merc_create(struct map_session_data *sd, int class_, unsigned int lifetime);
|
||||
int merc_data_received(struct s_mercenary *merc, bool flag);
|
||||
int mercenary_save(struct mercenary_data *md);
|
||||
|
||||
void mercenary_damage(struct mercenary_data *md, int hp, int sp);
|
||||
void mercenary_heal(struct mercenary_data *md, int hp, int sp);
|
||||
int mercenary_dead(struct mercenary_data *md, struct block_list *src);
|
||||
int mercenary_dead(struct mercenary_data *md);
|
||||
|
||||
int merc_delete(struct mercenary_data *md, int reply);
|
||||
void merc_contract_stop(struct mercenary_data *md);
|
||||
|
@ -121,7 +121,7 @@ struct mob_data {
|
||||
char name[NAME_LENGTH];
|
||||
struct {
|
||||
unsigned int size : 2; //Small/Big monsters.
|
||||
unsigned int ai : 3; //Special ai for summoned monsters.
|
||||
unsigned int ai : 4; //Special ai for summoned monsters.
|
||||
//0: Normal mob.
|
||||
//1: Standard summon, attacks mobs.
|
||||
//2: Alchemist Marine Sphere
|
||||
|
@ -11902,8 +11902,8 @@ static int skill_unit_effect (struct block_list* bl, va_list ap)
|
||||
skill_id = group->skill_id;
|
||||
|
||||
//Target-type check.
|
||||
if( !(group->bl_flag&bl->type && battle_check_target(&unit->bl,bl,group->target_flag)>0) && (flag&4) ) {
|
||||
if( group->state.song_dance&0x1 || (group->src_id == bl->id && group->state.song_dance&0x2) )
|
||||
if( !(group->bl_flag&bl->type && battle_check_target(&unit->bl,bl,group->target_flag)>0) ) {
|
||||
if( flag&4 && ((group->src_id == bl->id && group->state.song_dance&0x2) || skill_get_inf2(skill_id)&INF2_SONG_DANCE) )
|
||||
skill_unit_onleft(skill_id, bl, tick);//Ensemble check to terminate it.
|
||||
} else {
|
||||
if( flag&1 )
|
||||
|
@ -1224,8 +1224,8 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
|
||||
case BL_PC: pc_damage((TBL_PC*)target,src,hp,sp); break;
|
||||
case BL_MOB: mob_damage((TBL_MOB*)target, src, hp); break;
|
||||
case BL_HOM: merc_damage((TBL_HOM*)target); break;
|
||||
case BL_MER: mercenary_damage((TBL_MER*)target,hp,sp); break;
|
||||
case BL_ELEM: elemental_damage((TBL_ELEM*)target,hp,sp); break;
|
||||
case BL_MER: mercenary_heal((TBL_MER*)target,hp,sp); break;
|
||||
case BL_ELEM: elemental_heal((TBL_ELEM*)target,hp,sp); break;
|
||||
}
|
||||
|
||||
if( src && target->type == BL_PC && ((TBL_PC*)target)->disguise ) {// stop walking when attacked in disguise to prevent walk-delay bug
|
||||
@ -1248,9 +1248,9 @@ int status_damage(struct block_list *src,struct block_list *target,int hp, int s
|
||||
switch (target->type) {
|
||||
case BL_PC: flag = pc_dead((TBL_PC*)target,src); break;
|
||||
case BL_MOB: flag = mob_dead((TBL_MOB*)target, src, flag&4?3:0); break;
|
||||
case BL_HOM: flag = merc_hom_dead((TBL_HOM*)target,src); break;
|
||||
case BL_MER: flag = mercenary_dead((TBL_MER*)target,src); break;
|
||||
case BL_ELEM: flag = elemental_dead((TBL_ELEM*)target,src); break;
|
||||
case BL_HOM: flag = merc_hom_dead((TBL_HOM*)target); break;
|
||||
case BL_MER: flag = mercenary_dead((TBL_MER*)target); break;
|
||||
case BL_ELEM: flag = elemental_dead((TBL_ELEM*)target); break;
|
||||
default: //Unhandled case, do nothing to object.
|
||||
flag = 0;
|
||||
break;
|
||||
|
100
tools/backup.pl
100
tools/backup.pl
@ -1,100 +0,0 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
##########################################################################
|
||||
# Athena用データバックアップツール
|
||||
#
|
||||
# Athenaの各種データファイル*.txtをバックアップするツール
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
# 設定方法
|
||||
# 実行する時のカレントフォルダからのデータへのパス、ファイルのリストを
|
||||
# 正しく設定します。バックアップ先のフォルダは自動作成されないので、
|
||||
# 自分で作成しておく必要があります。
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# フォルダは引数でも指定できます。例>./backup ../save/ ./backup_data/
|
||||
# フォルダの最後の「/」は省略できません。
|
||||
#
|
||||
# 実行するとバックアップ先のフォルダへ、ファイル名に現在の日付と時刻を
|
||||
# つけてファイルをコピーします。
|
||||
#
|
||||
# * toolフォルダ内にbackup_dataフォルダを作成し、
|
||||
# athena.shの中に「./tool/backup ./save/ ./tool/backup_data/」
|
||||
# という行を追加すると、athenaを起動するたびにバックアップが取れます
|
||||
#
|
||||
# 復元するときは引数に「-r 日付と時刻」を指定します。
|
||||
# またその後ろにフォルダを指定することも出来ます
|
||||
# 例1> ./backup -r 200309191607
|
||||
# 例2> ./backup -r 200309191607 ../save ./backup_data/
|
||||
# この例では2003/09/19の16:07分にバックアップしたデータを復元しています
|
||||
#
|
||||
# 復元するとき、Athenaディレクトリにあるデータは *.bak に名前を変更して
|
||||
# 残しているので、いらない場合は rm *.bak などで消してください。
|
||||
#
|
||||
##########################################################################
|
||||
|
||||
$sdir="../save/"; #バックアップ元(Athenaのディレクトリ/save/)
|
||||
$tdir="./backup_data/"; #バックアップ先
|
||||
|
||||
@files=( #ファイルのリスト
|
||||
"account","athena","storage","party","guild","castle","pet"
|
||||
);
|
||||
|
||||
|
||||
#-------------------------------設定ここまで-----------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if($ARGV[0]=~/^\-r$/i || $ARGV[0]=~/\-\-(recover|restore)/i){
|
||||
#復元処理
|
||||
|
||||
$file=$ARGV[1];
|
||||
$sdir=$ARGV[2]||$sdir;
|
||||
$tdir=$ARGV[3]||$tdir;
|
||||
&restorecopy($_) foreach @files;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
#バックアップ処理
|
||||
$sdir=$ARGV[0]||$sdir;
|
||||
$tdir=$ARGV[1]||$tdir;
|
||||
|
||||
unless( -d $tdir ){
|
||||
print "$0: \"$tdir\" : No such directory\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
(undef,$min,$hour,$day,$month,$year)=localtime;
|
||||
|
||||
$file=sprintf("%04d%02d%02d%02d%02d",
|
||||
$year+1900, $month+1, $day, $hour, $min );
|
||||
|
||||
&backupcopy($_) foreach @files;
|
||||
exit(0);
|
||||
|
||||
sub backupcopy {
|
||||
my($name)= @_;
|
||||
system("cp $sdir$name.txt $tdir$name$file.txt");
|
||||
}
|
||||
|
||||
sub restorecopy {
|
||||
my($name)= @_;
|
||||
unless( -f "$sdir$name.txt" ){
|
||||
printf("$0: \"$sdir$name.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
unless( -f "$tdir$name$file.txt" ){
|
||||
printf("$0: \"$tdir$name$file.txt\" not found!\n");
|
||||
return 0;
|
||||
}
|
||||
rename "$sdir$name.txt","$sdir$name.bak";
|
||||
system("cp $tdir$name$file.txt $sdir$name.txt");
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
<?php
|
||||
// Visual Studio 9 to Visual Studio 8 project file converter
|
||||
// author : theultramage
|
||||
// version: 16. august 2008
|
||||
?>
|
||||
<?php
|
||||
fwrite(STDERR, "VS9 to VS8 project file converter".PHP_EOL);
|
||||
fwrite(STDERR, "---------------------------------".PHP_EOL);
|
||||
if( @$_SERVER["argc"] < 2 )
|
||||
{
|
||||
fwrite(STDERR, "Usage: {$_SERVER["argv"][0]} file.vcproj".PHP_EOL);
|
||||
exit();
|
||||
}
|
||||
|
||||
$input = @$_SERVER["argv"][1];
|
||||
$data = file($input);
|
||||
if( $data === FALSE )
|
||||
die("invalid input file '".$input."'");
|
||||
|
||||
fwrite(STDERR, "Converting {$input}...".PHP_EOL);
|
||||
|
||||
$eol = ( strstr($data[0], "\r\n") !== FALSE ) ? "\r\n" : "\n";
|
||||
define("EOL", $eol);
|
||||
|
||||
foreach( $data as $line )
|
||||
{
|
||||
if( strstr($line,'Version="9,00"') !== FALSE )
|
||||
fwrite(STDOUT, "\t".'Version="8,00"'.EOL);
|
||||
else
|
||||
if( strstr($line,'Version="9.00"') !== FALSE )
|
||||
fwrite(STDOUT, "\t".'Version="8.00"'.EOL);
|
||||
else
|
||||
if( strstr($line,'TargetFrameworkVersion') !== FALSE )
|
||||
;
|
||||
else
|
||||
if( strstr($line,'RandomizedBaseAddress') !== FALSE )
|
||||
;
|
||||
else
|
||||
if( strstr($line,'DataExecutionPrevention') !== FALSE )
|
||||
;
|
||||
else // default
|
||||
fwrite(STDOUT, $line);
|
||||
}
|
||||
|
||||
fwrite(STDERR, "done.".PHP_EOL);
|
||||
?>
|
Loading…
x
Reference in New Issue
Block a user