Skip to content
Permalink
Browse files

Adjusted pet walk speed (#4083)

* Added battle config pet_walk_speed.
* Resolves some pets walking too slow.
  • Loading branch information...
aleos89 committed Apr 11, 2019
1 parent 9aa5f7d commit 06020502b82594c078518dbb097de81fe97b3229
Showing with 28 additions and 5 deletions.
  1. +6 −0 conf/battle/pet.conf
  2. +1 −0 src/map/battle.cpp
  3. +1 −0 src/map/battle.hpp
  4. +4 −4 src/map/pet.cpp
  5. +15 −0 src/map/pet.hpp
  6. +1 −1 src/map/status.cpp
@@ -78,3 +78,9 @@ pet_master_dead: no
// Send auto-feed notice even if the client setting is OFF (Note 1)
// Official: yes
pet_autofeed_always: yes

// Pet walk speed.
// 1: Master's walk speed (official)
// 2: DEFAULT_WALK_SPEED value
// 3: Mob database walk speed
pet_walk_speed: 1
@@ -8521,6 +8521,7 @@ static const struct _battle_data {
{ "min_shop_buy", &battle_config.min_shop_buy, 1, 0, INT_MAX, },
{ "min_shop_sell", &battle_config.min_shop_sell, 0, 0, INT_MAX, },
{ "feature.equipswitch", &battle_config.feature_equipswitch, 1, 0, 1, },
{ "pet_walk_speed", &battle_config.pet_walk_speed, 1, 1, 3, },

#include "../custom/battle_config_init.inc"
};
@@ -659,6 +659,7 @@ struct Battle_Config
int min_shop_buy;
int min_shop_sell;
int feature_equipswitch;
int pet_walk_speed;

#include "../custom/battle_config_struct.inc"
};
@@ -824,7 +824,7 @@ static TIMER_FUNC(pet_hungry){

if( pd->pet.intimate <= PET_INTIMATE_NONE ) {
pd->pet.intimate = PET_INTIMATE_NONE;
pd->status.speed = pd->db->status.speed;
pd->status.speed = pd->get_pet_walk_speed();
}

status_calc_pet(pd,SCO_NONE);
@@ -1523,7 +1523,7 @@ int pet_food(struct map_session_data *sd, struct pet_data *pd)
if (pd->pet.intimate <= PET_INTIMATE_NONE) {
pd->pet.intimate = PET_INTIMATE_NONE;
pet_stop_attack(pd);
pd->status.speed = pd->db->status.speed;
pd->status.speed = pd->get_pet_walk_speed();
}
}
else {
@@ -1668,11 +1668,11 @@ static int pet_ai_sub_hard(struct pet_data *pd, struct map_session_data *sd, t_t
}

// Return speed to normal.
if (pd->status.speed != pd->db->status.speed) {
if (pd->status.speed != pd->get_pet_walk_speed()) {
if (pd->ud.walktimer != INVALID_TIMER)
return 0; // Wait until the pet finishes walking back to master.

pd->status.speed = pd->db->status.speed;
pd->status.speed = pd->get_pet_walk_speed();
pd->ud.state.change_walk_target = pd->ud.state.speed_changed = 1;
}

@@ -9,6 +9,9 @@
#include "../common/mmo.hpp"
#include "../common/timer.hpp"

#include "battle.hpp"
#include "mob.hpp"
#include "pc.hpp"
#include "script.hpp"
#include "status.hpp"
#include "unit.hpp"
@@ -167,6 +170,18 @@ struct pet_data {
std::shared_ptr<s_pet_db> get_pet_db() {
return pet_db.find(this->pet.class_);
}

int get_pet_walk_speed() {
switch (battle_config.pet_walk_speed) {
default:
case 1: // Master
return this->master->battle_status.speed;
case 2: // DEFAULT_WALK_SPEED
return DEFAULT_WALK_SPEED;
case 3: // Mob database
return this->db->status.speed;
}
}
};

bool pet_create_egg(struct map_session_data *sd, unsigned short item_id);
@@ -2969,7 +2969,7 @@ void status_calc_pet_(struct pet_data *pd, enum e_status_calc_opt opt)
memcpy(&pd->status, &pd->db->status, sizeof(struct status_data));
pd->status.mode = MD_CANMOVE; // Pets discard all modes, except walking
pd->status.class_ = CLASS_NORMAL;
pd->status.speed = pd->db->status.speed;
pd->status.speed = pd->get_pet_walk_speed();

if(battle_config.pet_attack_support || battle_config.pet_damage_support) {
// Attack support requires the pet to be able to attack

0 comments on commit 0602050

Please sign in to comment.
You can’t perform that action at this time.