Consume items that don't use the consumable battle move type upon use.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent 169478fdfe
commit 9d2cdaf3d1
  1. 6
      entity.h
  2. 7
      main.cpp

@ -6,6 +6,7 @@
#include <cassert>
extern std::vector<Item*>PARTY_INVENTORY;
extern int INVENTORY_CONSUMABLE_OFFSET[4];
using namespace olc;
@ -224,6 +225,11 @@ class Entity{
void RemoveItem(int index) {
if (isPlayer) {
for (int i=0;i<4;i++) {
if (index<INVENTORY_CONSUMABLE_OFFSET[i]) {
INVENTORY_CONSUMABLE_OFFSET[i]--; //Items
}
}
PARTY_INVENTORY.erase(PARTY_INVENTORY.begin()+index);
} else {
inventory.erase(inventory.begin()+index);

@ -115,6 +115,7 @@ int POWER_SELECTION_OFFSET[4]={0,0,0,0};
int BATTLE_ANIMATION_TIMER=0;
int BATTLE_ROLLING_COUNTER_WAITTIME = 0; //Number of frames to wait for each rolling counter.
int BATTLE_HIT_SCREENSHAKE = 0; //Amount of time the screen will rapidly shake as getting hit.
int INVENTORY_CONSUMABLE_OFFSET[4]={-1,-1,-1,-1};
bool ITEM_REQUIRES_EQUIPPING=false;
std::string EQUIP_$ITEM_DISPLAY=" "; //Use this to change the $ITEM tag modifier for abilities.
std::vector<CustomItemMessage> BATTLE_CUSTOM_MSGS={}; //Used for displaying additional information during battles.
@ -1882,6 +1883,7 @@ void SeasonI::keyUpdates() {
if (PARTY_INVENTORY[ITEM_SELECTION_CURSOR]->stats.consumable!=Consumable::NOT_A_CONSUMABLE) {
if (PARTY_INVENTORY[ITEM_SELECTION_CURSOR]->battlemove!=nullptr) {
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove=PARTY_INVENTORY[ITEM_SELECTION_CURSOR]->battlemove;
INVENTORY_CONSUMABLE_OFFSET[-CURRENT_TURN-1]=ITEM_SELECTION_CURSOR;
} else
if (PARTY_INVENTORY[ITEM_SELECTION_CURSOR]->stats.consumable==Consumable::FRIENDLY||PARTY_INVENTORY[ITEM_SELECTION_CURSOR]->stats.consumable==Consumable::FRIENDLY_PERMANENT) {
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove=MOVELIST[BattleMoveName::CONSUMABLE];
@ -3484,6 +3486,10 @@ void SeasonI::HandleBattle() {
if (PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove==MOVELIST[BattleMoveName::DEFEND]) {
BATTLE_ANIMATION_TIMER=999;
}
if (INVENTORY_CONSUMABLE_OFFSET[-CURRENT_TURN-1]>=0) {
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->RemoveItem(INVENTORY_CONSUMABLE_OFFSET[-CURRENT_TURN-1]);
INVENTORY_CONSUMABLE_OFFSET[-CURRENT_TURN-1]=-1;
}
} else {
if (BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove==MOVELIST[BattleMoveName::DEFEND]) {
BATTLE_ANIMATION_TIMER=999;
@ -3676,6 +3682,7 @@ void SeasonI::HandleBattle() {
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->atb=0;
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->selectedMove=nullptr;
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->channelTimeRemaining=0;
INVENTORY_CONSUMABLE_OFFSET[i]=-1;
if (PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->GetTargetHP()>PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->GetHP()) {
PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->_SetDirectHP(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[i]]->GetTargetHP());
} else {

Loading…
Cancel
Save