添加和平模式
This commit is contained in:
parent
fef73d93f8
commit
aff5f45a95
@ -7,6 +7,7 @@
|
|||||||
#include "room.h"
|
#include "room.h"
|
||||||
#include "metamgr.h"
|
#include "metamgr.h"
|
||||||
#include "player.h"
|
#include "player.h"
|
||||||
|
#include "app.h"
|
||||||
|
|
||||||
const int SHUA_RANGE = 580;
|
const int SHUA_RANGE = 580;
|
||||||
|
|
||||||
@ -493,6 +494,11 @@ void AndroidNewAI::UpdateThinking()
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Creature* target = GetTarget();
|
Creature* target = GetTarget();
|
||||||
|
#ifdef DEBUG
|
||||||
|
if (App::Instance()->HasFlag(20)) {
|
||||||
|
target = nullptr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (target) {
|
if (target) {
|
||||||
node_.target.Attach(target);
|
node_.target.Attach(target);
|
||||||
ChangeToStateNewAI(ASE_Attack);
|
ChangeToStateNewAI(ASE_Attack);
|
||||||
|
@ -537,6 +537,16 @@ bool App::HasFlag(int flag)
|
|||||||
return flags.find(flag) != flags.end();
|
return flags.find(flag) != flags.end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void App::SetFlag(int flag)
|
||||||
|
{
|
||||||
|
flags.insert(flag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void App::UnSetFlag(int flag)
|
||||||
|
{
|
||||||
|
flags.erase(flag);
|
||||||
|
}
|
||||||
|
|
||||||
void App::FreeSocketMsgQueue()
|
void App::FreeSocketMsgQueue()
|
||||||
{
|
{
|
||||||
msg_mutex_->lock();
|
msg_mutex_->lock();
|
||||||
|
@ -33,6 +33,8 @@ public:
|
|||||||
void DelContext(long long context_id);
|
void DelContext(long long context_id);
|
||||||
a8::XParams* GetContext(long long context_id);
|
a8::XParams* GetContext(long long context_id);
|
||||||
bool HasFlag(int flag);
|
bool HasFlag(int flag);
|
||||||
|
void SetFlag(int flag);
|
||||||
|
void UnSetFlag(int flag);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void QuickExecute(int delta_time);
|
void QuickExecute(int delta_time);
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include "collider.h"
|
#include "collider.h"
|
||||||
#include "skill.h"
|
#include "skill.h"
|
||||||
#include "incubator.h"
|
#include "incubator.h"
|
||||||
|
#include "car.h"
|
||||||
|
|
||||||
int Buff::GetLeftTime()
|
int Buff::GetLeftTime()
|
||||||
{
|
{
|
||||||
@ -209,6 +210,29 @@ void Buff::ProcBecome(Creature* caster)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Buff::ProcRemoveBecome(Creature* caster)
|
void Buff::ProcRemoveBecome(Creature* caster)
|
||||||
|
{
|
||||||
|
RecoverHoldWeapons(caster);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Buff::ProcDriver(Creature* caster)
|
||||||
|
{
|
||||||
|
if (caster->IsHuman()) {
|
||||||
|
Human* hum = (Human*)caster;
|
||||||
|
if (hum->GetCar() && hum->GetCar()->GetCurrWeapon()) {
|
||||||
|
hold_weapons_.push_back(hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx]);
|
||||||
|
hum->weapons[hum->GetCar()->GetCurrWeapon()->weapon_idx] = *hum->GetCar()->GetCurrWeapon();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
caster->need_sync_active_player = true;
|
||||||
|
caster->SyncAroundPlayers(__FILE__, __LINE__, __func__);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Buff::ProcRemoveDriver(Creature* caster)
|
||||||
|
{
|
||||||
|
RecoverHoldWeapons(caster);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Buff::RecoverHoldWeapons(Creature* caster)
|
||||||
{
|
{
|
||||||
for (auto& weapon : hold_weapons_) {
|
for (auto& weapon : hold_weapons_) {
|
||||||
if (weapon.weapon_idx >= 0 &&
|
if (weapon.weapon_idx >= 0 &&
|
||||||
|
@ -40,9 +40,12 @@ class Buff
|
|||||||
void ProcBeRecycle(Creature* caster);
|
void ProcBeRecycle(Creature* caster);
|
||||||
void ProcBecome(Creature* caster);
|
void ProcBecome(Creature* caster);
|
||||||
void ProcRemoveBecome(Creature* caster);
|
void ProcRemoveBecome(Creature* caster);
|
||||||
|
void ProcDriver(Creature* caster);
|
||||||
|
void ProcRemoveDriver(Creature* caster);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void InternalTimerAddBuff(Creature* caster);
|
void InternalTimerAddBuff(Creature* caster);
|
||||||
|
void RecoverHoldWeapons(Creature* caster);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::list<Weapon> hold_weapons_;
|
std::list<Weapon> hold_weapons_;
|
||||||
|
@ -913,7 +913,12 @@ void Creature::ProcBuffEffect(Creature* caster, Buff* buff)
|
|||||||
buff->ProcBecome(caster);
|
buff->ProcBecome(caster);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
case kBET_Driver:
|
||||||
|
{
|
||||||
|
buff->ProcDriver(caster);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -187,17 +187,18 @@ void Player::UpdateShot()
|
|||||||
if (HasBuffEffect(kBET_Vertigo)) {
|
if (HasBuffEffect(kBET_Vertigo)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (shot_start) {
|
|
||||||
shot_start = false;
|
|
||||||
Shot();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (GetCar() && GetCar()->IsDriver(this)) {
|
if (GetCar() && GetCar()->IsDriver(this)) {
|
||||||
bool shot_ok = false;
|
bool shot_ok = false;
|
||||||
a8::Vec2 target_dir = attack_dir;
|
a8::Vec2 target_dir = attack_dir;
|
||||||
GetCar()->Shot(target_dir, shot_ok, fly_distance);
|
GetCar()->Shot(target_dir, shot_ok, fly_distance);
|
||||||
|
shot_start = false;
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
if (shot_start) {
|
||||||
|
shot_start = false;
|
||||||
|
Shot();
|
||||||
|
return;
|
||||||
|
}
|
||||||
Weapon* p_weapon = GetCurrWeapon();
|
Weapon* p_weapon = GetCurrWeapon();
|
||||||
if (second_weapon.meta) {
|
if (second_weapon.meta) {
|
||||||
p_weapon = &second_weapon;
|
p_weapon = &second_weapon;
|
||||||
@ -1110,6 +1111,14 @@ void Player::_CMExecCommand(f8::MsgHdr& hdr, const cs::CMExecCommand& msg)
|
|||||||
std::string cmd = cmds[0];
|
std::string cmd = cmds[0];
|
||||||
if (cmd == "gps") {
|
if (cmd == "gps") {
|
||||||
SendDebugMsg(a8::Format("%d %d", {GetPos().x, GetPos().y}));
|
SendDebugMsg(a8::Format("%d %d", {GetPos().x, GetPos().y}));
|
||||||
|
} else if (cmd == "setmode") {
|
||||||
|
if (cmds.empty()) {
|
||||||
|
App::Instance()->UnSetFlag(20);
|
||||||
|
} else {
|
||||||
|
if (cmds[0] == "peace") {
|
||||||
|
App::Instance()->SetFlag(20);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (cmd == "additem" && cmds.size() >= 3) {
|
} else if (cmd == "additem" && cmds.size() >= 3) {
|
||||||
int item_id = a8::XValue(cmds[1]);
|
int item_id = a8::XValue(cmds[1]);
|
||||||
int item_num = a8::XValue(cmds[2]);
|
int item_num = a8::XValue(cmds[2]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user