summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/being/crazymoves.cpp505
-rw-r--r--src/being/crazymoves.h9
2 files changed, 274 insertions, 240 deletions
diff --git a/src/being/crazymoves.cpp b/src/being/crazymoves.cpp
index 0c98187d8..e5baaf76c 100644
--- a/src/being/crazymoves.cpp
+++ b/src/being/crazymoves.cpp
@@ -45,6 +45,7 @@
CrazyMoves *crazyMoves = nullptr;
CrazyMoves::CrazyMoves() :
+ mMoveProgram(),
mDisableCrazyMove(false)
{
}
@@ -456,255 +457,302 @@ void CrazyMoves::crazyMove9()
}
}
-void CrazyMoves::crazyMoveA()
+void CrazyMoves::crazyMoveAm()
{
- const std::string mMoveProgram(config.getStringValue("crazyMoveProgram"));
-
- if (localPlayer->getCurrentAction() == BeingAction::MOVE)
- return;
-
- if (mMoveProgram.empty())
- return;
-
- if (settings.crazyMoveState >= mMoveProgram.length())
- settings.crazyMoveState = 0;
-
- // move command
- if (mMoveProgram[settings.crazyMoveState] == 'm')
+ settings.crazyMoveState ++;
+ if (settings.crazyMoveState < mMoveProgram.length())
{
- settings.crazyMoveState ++;
- if (settings.crazyMoveState < mMoveProgram.length())
- {
- int dx = 0;
- int dy = 0;
+ int dx = 0;
+ int dy = 0;
- signed char param = mMoveProgram[settings.crazyMoveState++];
- if (param == '?')
+ signed char param = mMoveProgram[settings.crazyMoveState++];
+ if (param == '?')
+ {
+ const char cmd[] = {'l', 'r', 'u', 'd', 'L', 'R', 'U', 'D'};
+ srand(tick_time);
+ param = cmd[rand() % 8];
+ }
+ switch (param)
+ {
+ case 'd':
+ localPlayer->move(0, 1);
+ break;
+ case 'u':
+ localPlayer->move(0, -1);
+ break;
+ case 'l':
+ localPlayer->move(-1, 0);
+ break;
+ case 'r':
+ localPlayer->move(1, 0);
+ break;
+ case 'D':
+ localPlayer->move(1, 1);
+ break;
+ case 'U':
+ localPlayer->move(-1, -1);
+ break;
+ case 'L':
+ localPlayer->move(-1, 1);
+ break;
+ case 'R':
+ localPlayer->move(1, -1);
+ break;
+ case 'f':
{
- const char cmd[] = {'l', 'r', 'u', 'd', 'L', 'R', 'U', 'D'};
- srand(tick_time);
- param = cmd[rand() % 8];
+ const uint8_t dir = localPlayer->getDirection();
+ if (dir & BeingDirection::UP)
+ dy = -1;
+ else if (dir & BeingDirection::DOWN)
+ dy = 1;
+ if (dir & BeingDirection::LEFT)
+ dx = -1;
+ else if (dir & BeingDirection::RIGHT)
+ dx = 1;
+ localPlayer->move(dx, dy);
+ break;
}
- switch (param)
+ case 'b':
{
- case 'd':
- localPlayer->move(0, 1);
- break;
- case 'u':
- localPlayer->move(0, -1);
- break;
- case 'l':
- localPlayer->move(-1, 0);
- break;
- case 'r':
- localPlayer->move(1, 0);
- break;
- case 'D':
- localPlayer->move(1, 1);
- break;
- case 'U':
- localPlayer->move(-1, -1);
- break;
- case 'L':
- localPlayer->move(-1, 1);
- break;
- case 'R':
- localPlayer->move(1, -1);
- break;
- case 'f':
- {
- const uint8_t dir = localPlayer->getDirection();
- if (dir & BeingDirection::UP)
- dy = -1;
- else if (dir & BeingDirection::DOWN)
- dy = 1;
- if (dir & BeingDirection::LEFT)
- dx = -1;
- else if (dir & BeingDirection::RIGHT)
- dx = 1;
- localPlayer->move(dx, dy);
- break;
- }
- case 'b':
- {
- const uint8_t dir = localPlayer->getDirection();
- if (dir & BeingDirection::UP)
- dy = 1;
- else if (dir & BeingDirection::DOWN)
- dy = -1;
- if (dir & BeingDirection::LEFT)
- dx = 1;
- else if (dir & BeingDirection::RIGHT)
- dx = -1;
- localPlayer->move(dx, dy);
- break;
- }
- default:
- break;
+ const uint8_t dir = localPlayer->getDirection();
+ if (dir & BeingDirection::UP)
+ dy = 1;
+ else if (dir & BeingDirection::DOWN)
+ dy = -1;
+ if (dir & BeingDirection::LEFT)
+ dx = 1;
+ else if (dir & BeingDirection::RIGHT)
+ dx = -1;
+ localPlayer->move(dx, dy);
+ break;
}
+ default:
+ break;
}
}
- // direction command
- else if (mMoveProgram[settings.crazyMoveState] == 'd')
- {
- settings.crazyMoveState ++;
+}
- if (settings.crazyMoveState < mMoveProgram.length())
- {
- signed char param = mMoveProgram[settings.crazyMoveState++];
- if (param == '?')
- {
- const char cmd[] = {'l', 'r', 'u', 'd'};
- srand(tick_time);
- param = cmd[rand() % 4];
- }
- switch (param)
- {
- case 'd':
+void CrazyMoves::crazyMoveAd()
+{
+ settings.crazyMoveState ++;
+ if (settings.crazyMoveState < mMoveProgram.length())
+ {
+ signed char param = mMoveProgram[settings.crazyMoveState++];
+ if (param == '?')
+ {
+ const char cmd[] = {'l', 'r', 'u', 'd'};
+ srand(tick_time);
+ param = cmd[rand() % 4];
+ }
+ switch (param)
+ {
+ case 'd':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
- {
- localPlayer->setDirection(BeingDirection::DOWN);
- playerHandler->setDirection(
- BeingDirection::DOWN);
- }
- break;
- case 'u':
+ {
+ localPlayer->setDirection(BeingDirection::DOWN);
+ playerHandler->setDirection(
+ BeingDirection::DOWN);
+ }
+ break;
+ case 'u':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
- {
- localPlayer->setDirection(BeingDirection::UP);
- playerHandler->setDirection(
- BeingDirection::UP);
- }
- break;
- case 'l':
+ {
+ localPlayer->setDirection(BeingDirection::UP);
+ playerHandler->setDirection(
+ BeingDirection::UP);
+ }
+ break;
+ case 'l':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
- {
- localPlayer->setDirection(BeingDirection::LEFT);
- playerHandler->setDirection(
- BeingDirection::LEFT);
- }
- break;
- case 'r':
+ {
+ localPlayer->setDirection(BeingDirection::LEFT);
+ playerHandler->setDirection(
+ BeingDirection::LEFT);
+ }
+ break;
+ case 'r':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
- {
- localPlayer->setDirection(BeingDirection::RIGHT);
- playerHandler->setDirection(
- BeingDirection::RIGHT);
- }
- break;
- case 'L':
+ {
+ localPlayer->setDirection(BeingDirection::RIGHT);
+ playerHandler->setDirection(
+ BeingDirection::RIGHT);
+ }
+ break;
+ case 'L':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
+ {
+ uint8_t dir = 0;
+ switch (localPlayer->getDirection())
{
- uint8_t dir = 0;
- switch (localPlayer->getDirection())
- {
- case BeingDirection::UP:
- dir = BeingDirection::LEFT;
- break;
- case BeingDirection::DOWN:
- dir = BeingDirection::RIGHT;
- break;
- case BeingDirection::LEFT:
- dir = BeingDirection::DOWN;
- break;
- case BeingDirection::RIGHT:
- dir = BeingDirection::UP;
- break;
- default:
- break;
- }
- localPlayer->setDirection(dir);
- playerHandler->setDirection(dir);
+ case BeingDirection::UP:
+ dir = BeingDirection::LEFT;
+ break;
+ case BeingDirection::DOWN:
+ dir = BeingDirection::RIGHT;
+ break;
+ case BeingDirection::LEFT:
+ dir = BeingDirection::DOWN;
+ break;
+ case BeingDirection::RIGHT:
+ dir = BeingDirection::UP;
+ break;
+ default:
+ break;
}
- break;
- case 'R':
+ localPlayer->setDirection(dir);
+ playerHandler->setDirection(dir);
+ }
+ break;
+ case 'R':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
+ {
+ uint8_t dir = 0;
+ switch (localPlayer->getDirection())
{
- uint8_t dir = 0;
- switch (localPlayer->getDirection())
- {
- case BeingDirection::UP:
- dir = BeingDirection::RIGHT;
- break;
- case BeingDirection::DOWN:
- dir = BeingDirection::LEFT;
- break;
- case BeingDirection::LEFT:
- dir = BeingDirection::UP;
- break;
- case BeingDirection::RIGHT:
- dir = BeingDirection::DOWN;
- break;
- default:
- break;
- }
- localPlayer->setDirection(dir);
- playerHandler->setDirection(dir);
+ case BeingDirection::UP:
+ dir = BeingDirection::RIGHT;
+ break;
+ case BeingDirection::DOWN:
+ dir = BeingDirection::LEFT;
+ break;
+ case BeingDirection::LEFT:
+ dir = BeingDirection::UP;
+ break;
+ case BeingDirection::RIGHT:
+ dir = BeingDirection::DOWN;
+ break;
+ default:
+ break;
}
- break;
- case 'b':
+ localPlayer->setDirection(dir);
+ playerHandler->setDirection(dir);
+ }
+ break;
+ case 'b':
// if (PacketLimiter::limitPackets(PACKET_DIRECTION))
+ {
+ uint8_t dir = 0;
+ switch (localPlayer->getDirection())
{
- uint8_t dir = 0;
- switch (localPlayer->getDirection())
- {
- case BeingDirection::UP:
- dir = BeingDirection::DOWN;
- break;
- case BeingDirection::DOWN:
- dir = BeingDirection::UP;
- break;
- case BeingDirection::LEFT:
- dir = BeingDirection::RIGHT;
- break;
- case BeingDirection::RIGHT:
- dir = BeingDirection::LEFT;
- break;
- default:
- break;
- }
- localPlayer->setDirection(dir);
- playerHandler->setDirection(dir);
+ case BeingDirection::UP:
+ dir = BeingDirection::DOWN;
+ break;
+ case BeingDirection::DOWN:
+ dir = BeingDirection::UP;
+ break;
+ case BeingDirection::LEFT:
+ dir = BeingDirection::RIGHT;
+ break;
+ case BeingDirection::RIGHT:
+ dir = BeingDirection::LEFT;
+ break;
+ default:
+ break;
}
- break;
- case '0':
- dropShortcut->dropFirst();
- break;
- case 'a':
- dropShortcut->dropItems();
- break;
- default:
- break;
- }
+ localPlayer->setDirection(dir);
+ playerHandler->setDirection(dir);
+ }
+ break;
+ case '0':
+ dropShortcut->dropFirst();
+ break;
+ case 'a':
+ dropShortcut->dropItems();
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+void CrazyMoves::crazyMoveAs()
+{
+ settings.crazyMoveState ++;
+ if (localPlayer->toggleSit())
+ settings.crazyMoveState ++;
+}
+
+void CrazyMoves::crazyMoveAo()
+{
+ settings.crazyMoveState ++;
+ if (settings.crazyMoveState < mMoveProgram.length())
+ {
+ // wear next outfit
+ if (mMoveProgram[settings.crazyMoveState] == 'n')
+ {
+ settings.crazyMoveState ++;
+ outfitWindow->wearNextOutfit();
+ }
+ // wear previous outfit
+ else if (mMoveProgram[settings.crazyMoveState] == 'p')
+ {
+ settings.crazyMoveState ++;
+ outfitWindow->wearPreviousOutfit();
}
}
+}
+
+void CrazyMoves::crazyMoveAe()
+{
+ settings.crazyMoveState ++;
+ const signed char emo = mMoveProgram[settings.crazyMoveState];
+ unsigned char emoteId = 0;
+ if (emo == '?')
+ {
+ srand(tick_time);
+ emoteId = static_cast<unsigned char>(
+ 1 + (rand() % EmoteDB::size()));
+ }
+ else
+ {
+ if (emo >= '0' && emo <= '9')
+ emoteId = static_cast<unsigned char>(emo - '0' + 1);
+ else if (emo >= 'a' && emo <= 'z')
+ emoteId = static_cast<unsigned char>(emo - 'a' + 11);
+ else if (emo >= 'A' && emo <= 'Z')
+ emoteId = static_cast<unsigned char>(emo - 'A' + 37);
+ }
+ if (mMoveProgram[settings.crazyMoveState - 1] == 'e')
+ localPlayer->emote(emoteId);
+ else if (PacketLimiter::limitPackets(PACKET_CHAT))
+ petHandler->emote(emoteId, 0);
+
+ settings.crazyMoveState ++;
+}
+
+void CrazyMoves::crazyMoveA()
+{
+ mMoveProgram = config.getStringValue("crazyMoveProgram");
+
+ if (localPlayer->getCurrentAction() == BeingAction::MOVE)
+ return;
+
+ if (mMoveProgram.empty())
+ return;
+
+ if (settings.crazyMoveState >= mMoveProgram.length())
+ settings.crazyMoveState = 0;
+
+ // move command
+ if (mMoveProgram[settings.crazyMoveState] == 'm')
+ {
+ crazyMoveAm();
+ }
+ // direction command
+ else if (mMoveProgram[settings.crazyMoveState] == 'd')
+ {
+ crazyMoveAd();
+ }
// sit command
else if (mMoveProgram[settings.crazyMoveState] == 's')
{
- settings.crazyMoveState ++;
- if (localPlayer->toggleSit())
- settings.crazyMoveState ++;
+ crazyMoveAs();
}
// wear outfits
else if (mMoveProgram[settings.crazyMoveState] == 'o')
{
- settings.crazyMoveState ++;
- if (settings.crazyMoveState < mMoveProgram.length())
- {
- // wear next outfit
- if (mMoveProgram[settings.crazyMoveState] == 'n')
- {
- settings.crazyMoveState ++;
- outfitWindow->wearNextOutfit();
- }
- // wear previous outfit
- else if (mMoveProgram[settings.crazyMoveState] == 'p')
- {
- settings.crazyMoveState ++;
- outfitWindow->wearPreviousOutfit();
- }
- }
+ crazyMoveAo();
}
// pause
else if (mMoveProgram[settings.crazyMoveState] == 'w')
@@ -721,30 +769,7 @@ void CrazyMoves::crazyMoveA()
else if (mMoveProgram[settings.crazyMoveState] == 'e'
|| mMoveProgram[settings.crazyMoveState] == 'E')
{
- settings.crazyMoveState ++;
- const signed char emo = mMoveProgram[settings.crazyMoveState];
- unsigned char emoteId = 0;
- if (emo == '?')
- {
- srand(tick_time);
- emoteId = static_cast<unsigned char>(
- 1 + (rand() % EmoteDB::size()));
- }
- else
- {
- if (emo >= '0' && emo <= '9')
- emoteId = static_cast<unsigned char>(emo - '0' + 1);
- else if (emo >= 'a' && emo <= 'z')
- emoteId = static_cast<unsigned char>(emo - 'a' + 11);
- else if (emo >= 'A' && emo <= 'Z')
- emoteId = static_cast<unsigned char>(emo - 'A' + 37);
- }
- if (mMoveProgram[settings.crazyMoveState - 1] == 'e')
- localPlayer->emote(emoteId);
- else if (PacketLimiter::limitPackets(PACKET_CHAT))
- petHandler->emote(emoteId, 0);
-
- settings.crazyMoveState ++;
+ crazyMoveAe();
}
else
{
diff --git a/src/being/crazymoves.h b/src/being/crazymoves.h
index c97d8db45..d9edb7a2c 100644
--- a/src/being/crazymoves.h
+++ b/src/being/crazymoves.h
@@ -23,6 +23,8 @@
#ifndef BEING_CRAZYMOVES_H
#define BEING_CRAZYMOVES_H
+#include <string>
+
#include "localconsts.h"
class CrazyMoves final
@@ -43,6 +45,13 @@ class CrazyMoves final
void crazyMove8();
void crazyMove9();
void crazyMoveA();
+ void crazyMoveAd();
+ void crazyMoveAe();
+ void crazyMoveAm();
+ void crazyMoveAo();
+ void crazyMoveAs();
+
+ std::string mMoveProgram;
// temporary disable crazy moves in moves
bool mDisableCrazyMove;