summaryrefslogtreecommitdiff
path: root/src/emap
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2016-12-13 17:42:54 +0300
committerAndrei Karas <akaras@inbox.ru>2016-12-13 17:42:54 +0300
commitcada1361b6225b4bafcab0f54400b24ce74678f6 (patch)
treed81d12f018c5c16c349c76f8b3c62d119cf3b0f0 /src/emap
parent84e7b04c06143973ca06a165b17e910f6a488bfb (diff)
downloadevol-hercules-cada1361b6225b4bafcab0f54400b24ce74678f6.tar.gz
evol-hercules-cada1361b6225b4bafcab0f54400b24ce74678f6.tar.bz2
evol-hercules-cada1361b6225b4bafcab0f54400b24ce74678f6.tar.xz
evol-hercules-cada1361b6225b4bafcab0f54400b24ce74678f6.zip
Fix plugin after server update.
Diffstat (limited to 'src/emap')
-rw-r--r--src/emap/clif.c32
-rw-r--r--src/emap/pc.c57
-rw-r--r--src/emap/script_buildins.c6
-rw-r--r--src/emap/status.c2
4 files changed, 51 insertions, 46 deletions
diff --git a/src/emap/clif.c b/src/emap/clif.c
index a62c47f..54df930 100644
--- a/src/emap/clif.c
+++ b/src/emap/clif.c
@@ -801,13 +801,13 @@ static inline unsigned char clif_bl_type_old(struct block_list *bl)
nullpo_retr(0x1, bl);
switch (bl->type)
{
- case BL_PC: return (disguised(bl) && !pc->db_checkid(status->get_viewdata(bl)->class_))? 0x1:0x0; //PC_TYPE
+ case BL_PC: return (disguised(bl) && !pc->db_checkid(status->get_viewdata(bl)->class))? 0x1:0x0; //PC_TYPE
case BL_ITEM: return 0x2; //ITEM_TYPE
case BL_SKILL: return 0x3; //SKILL_TYPE
case BL_CHAT: return 0x4; //UNKNOWN_TYPE
- case BL_MOB: return pc->db_checkid(status->get_viewdata(bl)->class_)?0x0:0x5; //NPC_MOB_TYPE
- case BL_NPC: return pc->db_checkid(status->get_viewdata(bl)->class_)?0x0:0x6; //NPC_EVT_TYPE
- case BL_PET: return pc->db_checkid(status->get_viewdata(bl)->class_)?0x0:0x7; //NPC_PET_TYPE
+ case BL_MOB: return pc->db_checkid(status->get_viewdata(bl)->class)?0x0:0x5; //NPC_MOB_TYPE
+ case BL_NPC: return pc->db_checkid(status->get_viewdata(bl)->class)?0x0:0x6; //NPC_EVT_TYPE
+ case BL_PET: return pc->db_checkid(status->get_viewdata(bl)->class)?0x0:0x7; //NPC_PET_TYPE
case BL_HOM: return 0x8; //NPC_HOM_TYPE
case BL_MER: return 0x9; //NPC_MERSOL_TYPE
case BL_ELEM: return 0xa; //NPC_ELEMENTAL_TYPE
@@ -847,13 +847,13 @@ void eclif_set_unit_idle_old(struct block_list* bl,
p.bodyState = (sc) ? sc->opt1 : 0;
p.healthState = (sc) ? sc->opt2 : 0;
p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0;
- p.job = vd->class_;
+ p.job = vd->class;
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
p.accessory2 = vd->head_top;
p.accessory3 = vd->head_mid;
- if (bl->type == BL_NPC && vd->class_ == FLAG_CLASS)
+ if (bl->type == BL_NPC && vd->class == FLAG_CLASS)
{ //The hell, why flags work like this?
p.accessory = status->get_emblem_id(bl);
p.accessory2 = GetWord(g_id, 1);
@@ -891,7 +891,7 @@ void eclif_set_unit_idle_old(struct block_list* bl,
if (disguised(bl))
{
- p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+ p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
p.GID = -bl->id;
clif->send(&p,sizeof(p),bl,SELF);
}
@@ -920,13 +920,13 @@ void eclif_spawn_unit_old(struct block_list* bl, enum send_target target)
p.bodyState = (sc) ? sc->opt1 : 0;
p.healthState = (sc) ? sc->opt2 : 0;
p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0;
- p.job = vd->class_;
+ p.job = vd->class;
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
p.accessory2 = vd->head_top;
p.accessory3 = vd->head_mid;
- if (bl->type == BL_NPC && vd->class_ == FLAG_CLASS)
+ if (bl->type == BL_NPC && vd->class == FLAG_CLASS)
{ //The hell, why flags work like this?
p.accessory = status->get_emblem_id(bl);
p.accessory2 = GetWord(g_id, 1);
@@ -961,9 +961,9 @@ void eclif_spawn_unit_old(struct block_list* bl, enum send_target target)
if (disguised(bl))
{
nullpo_retv(sd);
- if (sd->status.class_ != sd->disguise)
+ if (sd->status.class != sd->disguise)
clif->send(&p, sizeof(p), bl, target);
- p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+ p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
p.GID = -bl->id;
clif->send(&p, sizeof(p), bl, SELF);
}
@@ -999,7 +999,7 @@ void eclif_set_unit_walking_old(struct block_list* bl,
p.bodyState = (sc) ? sc->opt1 : 0;
p.healthState = (sc) ? sc->opt2 : 0;
p.effectState = (sc) ? sc->option : bl->type == BL_NPC ? ((TBL_NPC*)bl)->option : 0;
- p.job = vd->class_;
+ p.job = vd->class;
p.head = vd->hair_style;
p.weapon = vd->weapon;
p.accessory = vd->head_bottom;
@@ -1037,7 +1037,7 @@ void eclif_set_unit_walking_old(struct block_list* bl,
if (disguised(bl))
{
- p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class_) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
+ p.objecttype = pc->db_checkid(status->get_viewdata(bl)->class) ? 0x0 : 0x5; //PC_TYPE : NPC_MOB_TYPE
p.GID = -bl->id;
clif->send(&p, sizeof(p), bl, SELF);
}
@@ -1632,7 +1632,7 @@ void eclif_skillinfoblock_pre(struct map_session_data **sdPtr)
}
safestrncpy(WFIFOP(fd, len + 16), skill->get_name(id), NAME_LENGTH);
if (sd->status.skill[i].flag == SKILL_FLAG_PERMANENT)
- WFIFOB(fd, len + 40) = (sd->status.skill[i].lv < skill->tree_get_max(id, sd->status.class_)) ? 1 : 0;
+ WFIFOB(fd, len + 40) = (sd->status.skill[i].lv < skill->tree_get_max(id, sd->status.class)) ? 1 : 0;
else
WFIFOB(fd, len + 40) = 0;
len += skillSize;
@@ -1704,7 +1704,7 @@ void eclif_addskill_pre(struct map_session_data **sdPtr,
}
safestrncpy(WFIFOP(fd, 20), skill->get_name(id), NAME_LENGTH);
if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT)
- WFIFOB(fd, 44) = (skill_lv < skill->tree_get_max(id, sd->status.class_)) ? 1 : 0;
+ WFIFOB(fd, 44) = (skill_lv < skill->tree_get_max(id, sd->status.class)) ? 1 : 0;
else
WFIFOB(fd, 44) = 0;
WFIFOSET(fd, sz);
@@ -1749,7 +1749,7 @@ void eclif_skillinfo_pre(struct map_session_data **sdPtr,
WFIFOW(fd, 18) = 0;
}
if (sd->status.skill[idx].flag == SKILL_FLAG_PERMANENT)
- WFIFOB(fd, 20) = (skill_lv < skill->tree_get_max(skill_id, sd->status.class_)) ? 1 : 0;
+ WFIFOB(fd, 20) = (skill_lv < skill->tree_get_max(skill_id, sd->status.class)) ? 1 : 0;
else
WFIFOB(fd, 20) = 0;
WFIFOSET(fd, sz);
diff --git a/src/emap/pc.c b/src/emap/pc.c
index 8c372f0..92e6fca 100644
--- a/src/emap/pc.c
+++ b/src/emap/pc.c
@@ -781,51 +781,51 @@ int epc_dead_post(int retVal,
* Rewrote to make it tidider [Celest]
*------------------------------------------*/
int epc_jobchange(struct map_session_data *sd,
- int job,
+ int class,
int upper __attribute__ ((unused)))
{
int i, fame_flag=0;
- int b_class, idx = 0;
+ int job, idx = 0;
nullpo_ret(sd);
- if (job < 0)
+ if (class < 0)
return 1;
//Normalize job.
- b_class = pc->jobid2mapid(job);
- if (b_class == -1)
+ job = pc->jobid2mapid(class);
+ if (job == -1)
return 1;
/*
switch (upper)
{
case 1:
- b_class|= JOBL_UPPER;
+ job |= JOBL_UPPER;
break;
case 2:
- b_class|= JOBL_BABY;
+ job |= JOBL_BABY;
break;
}
//This will automatically adjust bard/dancer classes to the correct gender
//That is, if you try to jobchange into dancer, it will turn you to bard.
- job = pc->mapid2jobid(b_class, sd->status.sex);
- if (job == -1)
+ class = pc->mapid2jobid(job, sd->status.sex);
+ if (class == -1)
return 1;
*/
- if ((unsigned short)b_class == sd->class_)
+ if ((uint16)job == sd->job)
return 1; //Nothing to change.
/*
- // changing from 1st to 2nd job
- if ((b_class&JOBL_2) && !(sd->class_&JOBL_2) && (b_class&MAPID_UPPERMASK) != MAPID_SUPER_NOVICE)
+ if ((job & JOBL_2) && !(sd->job & JOBL_2) && (job & MAPID_UPPERMASK) != MAPID_SUPER_NOVICE)
{
+ // changing from 1st to 2nd job
sd->change_level_2nd = sd->status.job_level;
pc_setglobalreg(sd, script->add_str("jobchange_level"), sd->change_level_2nd);
}
- // changing from 2nd to 3rd job
- else if((b_class&JOBL_THIRD) && !(sd->class_&JOBL_THIRD))
+ else if ((job & JOBL_THIRD) != 0 && (sd->job & JOBL_THIRD) == 0)
{
+ // changing from 2nd to 3rd job
sd->change_level_3rd = sd->status.job_level;
pc_setglobalreg(sd, script->add_str("jobchange_level_3rd"), sd->change_level_3rd);
}
@@ -862,9 +862,9 @@ int epc_jobchange(struct map_session_data *sd,
}
/*
- if ((b_class&MAPID_UPPERMASK) != (sd->class_&MAPID_UPPERMASK))
+ if ((job & MAPID_UPPERMASK) != (sd->job & MAPID_UPPERMASK))
{ //Things to remove when changing class tree.
- const int class_ = pc->class2idx(sd->status.class_);
+ const int class_idx = pc->class2idx(sd->status.class_);
short id;
for (i = 0; i < MAX_SKILL_TREE && (id = pc->skill_tree[class_][i].id) > 0; i++)
{
@@ -875,16 +875,21 @@ int epc_jobchange(struct map_session_data *sd,
}
}
- if ((sd->class_&MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR && (b_class&MAPID_UPPERMASK) != MAPID_STAR_GLADIATOR)
+ if ((sd->job & MAPID_UPPERMASK) == MAPID_STAR_GLADIATOR && (job & MAPID_UPPERMASK) != MAPID_STAR_GLADIATOR)
{
// going off star glad lineage, reset feel to not store no-longer-used vars in the database
pc->resetfeel(sd);
}
*/
- sd->status.class_ = job;
- fame_flag = pc->famerank(sd->status.char_id, sd->class_ & MAPID_UPPERMASK);
- sd->class_ = (unsigned short)b_class;
+ sd->status.class = class;
+ {
+ int fame_list_type = pc->famelist_type(sd->job);
+ if (fame_list_type != RANKTYPE_UNKNOWN)
+ fame_flag = pc->fame_rank(sd->status.char_id, fame_list_type);
+ }
+ sd->job = (uint16)job;
+
// sd->status.job_level = 1;
// sd->status.job_exp = 0;
@@ -917,9 +922,9 @@ int epc_jobchange(struct map_session_data *sd,
if (sd->disguise != -1)
pc->disguise(sd, -1);
- status->set_viewdata(&sd->bl, job);
- send_changelook2(sd, &sd->bl, sd->bl.id, LOOK_BASE, sd->vd.class_, 0, NULL, 0, AREA);
-// clif->changelook(&sd->bl, LOOK_BASE, sd->vd.class_); // move sprite update to prevent client crashes with incompatible equipment [Valaris]
+ status->set_viewdata(&sd->bl, class);
+ send_changelook2(sd, &sd->bl, sd->bl.id, LOOK_BASE, sd->vd.class, 0, NULL, 0, AREA);
+// clif->changelook(&sd->bl, LOOK_BASE, sd->vd.class); // move sprite update to prevent client crashes with incompatible equipment [Valaris]
if (sd->vd.cloth_color)
clif->changelook(&sd->bl, LOOK_CLOTHES_COLOR, sd->vd.cloth_color);
if (sd->vd.body_style)
@@ -938,7 +943,7 @@ int epc_jobchange(struct map_session_data *sd,
//Remove peco/cart/falcon
i = sd->sc.option;
- if (i & OPTION_RIDING && (!pc->checkskill(sd, KN_RIDING) || (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT))
+ if (i & OPTION_RIDING && (!pc->checkskill(sd, KN_RIDING) || (sd->job & MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT))
i &= ~ OPTION_RIDING;
if (i & OPTION_FALCON && !pc->checkskill(sd, HT_FALCON))
i &= ~ OPTION_FALCON;
@@ -974,7 +979,7 @@ int epc_jobchange(struct map_session_data *sd,
pc->equiplookall(sd);
//if you were previously famous, not anymore.
- if (fame_flag)
+ if (fame_flag != 0)
{
chrif->save(sd, 0);
chrif->buildfamelist();
@@ -982,7 +987,7 @@ int epc_jobchange(struct map_session_data *sd,
else if (sd->status.fame > 0)
{
//It may be that now they are famous?
- switch (sd->class_&MAPID_UPPERMASK)
+ switch (sd->job & MAPID_UPPERMASK)
{
case MAPID_BLACKSMITH:
case MAPID_ALCHEMIST:
diff --git a/src/emap/script_buildins.c b/src/emap/script_buildins.c
index 2a152df..a50caf7 100644
--- a/src/emap/script_buildins.c
+++ b/src/emap/script_buildins.c
@@ -1245,13 +1245,13 @@ BUILDIN(successRefIndex)
switch (sd->inventory_data[n]->wlv)
{
case 1:
- pc->addfame(sd,1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
+ pc->addfame(sd, RANKTYPE_BLACKSMITH, 1); // Success to refine to +10 a lv1 weapon you forged = +1 fame point
break;
case 2:
- pc->addfame(sd,25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
+ pc->addfame(sd, RANKTYPE_BLACKSMITH, 25); // Success to refine to +10 a lv2 weapon you forged = +25 fame point
break;
case 3:
- pc->addfame(sd,1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
+ pc->addfame(sd, RANKTYPE_BLACKSMITH, 1000); // Success to refine to +10 a lv3 weapon you forged = +1000 fame point
break;
}
}
diff --git a/src/emap/status.c b/src/emap/status.c
index f6f0a51..29721fc 100644
--- a/src/emap/status.c
+++ b/src/emap/status.c
@@ -110,7 +110,7 @@ int estatus_calc_pc__post(int retVal,
if (!sd->state.permanent_speed)
{
- const int idx = pc->class2idx(sd->status.class_);
+ const int idx = pc->class2idx(sd->status.class);
sd->base_status.speed = class_move_speed[idx];
}
return retVal;