Update Overworld Map with new stage plates. Updated stages with spawn zones and end zones. Cleaned up sound effects with extra noise. Updated some sound effects with more appropriate ones. Added sound effects for many events.
This commit is contained in:
parent
0643393b9c
commit
c7ea530484
@ -317,6 +317,7 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
if(!Menu::stack.empty())return; //A window being opened means there's no user input allowed.
|
if(!Menu::stack.empty())return; //A window being opened means there's no user input allowed.
|
||||||
|
|
||||||
bool setIdleAnimation=true;
|
bool setIdleAnimation=true;
|
||||||
|
bool heldDownMovementKey=false; //Is true when a movement key has been held down.
|
||||||
if(GetKey(F1).bPressed){
|
if(GetKey(F1).bPressed){
|
||||||
ConsoleShow(F1);
|
ConsoleShow(F1);
|
||||||
}
|
}
|
||||||
@ -376,6 +377,7 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
player->UpdateWalkingAnimation(RIGHT);
|
player->UpdateWalkingAnimation(RIGHT);
|
||||||
}
|
}
|
||||||
setIdleAnimation=false;
|
setIdleAnimation=false;
|
||||||
|
heldDownMovementKey=true;
|
||||||
}
|
}
|
||||||
if(LeftHeld()){
|
if(LeftHeld()){
|
||||||
player->SetX(player->GetX()-fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
player->SetX(player->GetX()-fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
||||||
@ -395,6 +397,7 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIdleAnimation=false;
|
setIdleAnimation=false;
|
||||||
|
heldDownMovementKey=true;
|
||||||
}
|
}
|
||||||
if(UpHeld()){
|
if(UpHeld()){
|
||||||
player->SetY(player->GetY()-fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
player->SetY(player->GetY()-fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
||||||
@ -406,6 +409,7 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIdleAnimation=false;
|
setIdleAnimation=false;
|
||||||
|
heldDownMovementKey=true;
|
||||||
}
|
}
|
||||||
if(DownHeld()){
|
if(DownHeld()){
|
||||||
player->SetY(player->GetY()+fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
player->SetY(player->GetY()+fElapsedTime*"Player.MoveSpd"_F*player->GetMoveSpdMult());
|
||||||
@ -417,6 +421,7 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
setIdleAnimation=false;
|
setIdleAnimation=false;
|
||||||
|
heldDownMovementKey=true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(UpReleased()){
|
if(UpReleased()){
|
||||||
@ -484,6 +489,29 @@ void AiL::HandleUserInput(float fElapsedTime){
|
|||||||
setIdleAnimation=false;
|
setIdleAnimation=false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(heldDownMovementKey){
|
||||||
|
player->footstepTimer+=GetElapsedTime();
|
||||||
|
if(player->footstepTimer>"Player.Footstep Timer"_F){
|
||||||
|
player->footstepTimer-="Player.Footstep Timer"_F;
|
||||||
|
|
||||||
|
bool inWater=true;
|
||||||
|
|
||||||
|
for(const LayerTag&layer:GetCurrentMap().LayerData){
|
||||||
|
int tileID=layer.tiles[player->GetY()/24][player->GetX()/24]-1;
|
||||||
|
if(tileID!=-1&&!IsReflectiveTile(GetTileSheet(GetCurrentLevel(),tileID),tileID)){
|
||||||
|
inWater=false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(inWater){
|
||||||
|
SoundEffect::PlaySFX("Footstep - Wet");
|
||||||
|
}else{
|
||||||
|
SoundEffect::PlaySFX("Footstep");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(setIdleAnimation){
|
if(setIdleAnimation){
|
||||||
switch(player->GetLastReleasedMovementKey()){
|
switch(player->GetLastReleasedMovementKey()){
|
||||||
case UP:{
|
case UP:{
|
||||||
@ -1920,6 +1948,7 @@ void AiL::ChangePlayerClass(Class cl){
|
|||||||
uint32_t currentLevelXP=player->currentLevelXP;
|
uint32_t currentLevelXP=player->currentLevelXP;
|
||||||
std::set<MenuComponent*>moneyListeners=Player::moneyListeners;
|
std::set<MenuComponent*>moneyListeners=Player::moneyListeners;
|
||||||
EntityStats previousStats=player->stats;
|
EntityStats previousStats=player->stats;
|
||||||
|
size_t cooldownSoundInstance=player->cooldownSoundInstance;
|
||||||
switch(cl){
|
switch(cl){
|
||||||
case WARRIOR:{
|
case WARRIOR:{
|
||||||
player.reset(NEW Warrior(player.get()));
|
player.reset(NEW Warrior(player.get()));
|
||||||
@ -1953,6 +1982,7 @@ void AiL::ChangePlayerClass(Class cl){
|
|||||||
player->hpGrowthRate=float(DATA.GetProperty(player->GetClassName()+".HealthGrowthRate").GetReal());
|
player->hpGrowthRate=float(DATA.GetProperty(player->GetClassName()+".HealthGrowthRate").GetReal());
|
||||||
player->atkGrowthRate=float(DATA.GetProperty(player->GetClassName()+".AtkGrowthRate").GetReal());
|
player->atkGrowthRate=float(DATA.GetProperty(player->GetClassName()+".AtkGrowthRate").GetReal());
|
||||||
player->money=oldMoney;
|
player->money=oldMoney;
|
||||||
|
player->cooldownSoundInstance=cooldownSoundInstance;
|
||||||
sig::Animation::SetupPlayerAnimations();
|
sig::Animation::SetupPlayerAnimations();
|
||||||
GetPlayer()->UpdateIdleAnimation(DOWN);
|
GetPlayer()->UpdateIdleAnimation(DOWN);
|
||||||
GetPlayer()->SetItem1UseFunc(itemAbility1);
|
GetPlayer()->SetItem1UseFunc(itemAbility1);
|
||||||
|
@ -38,6 +38,7 @@ All rights reserved.
|
|||||||
|
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
#include "MenuLabel.h"
|
#include "MenuLabel.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
using A=Attribute;
|
using A=Attribute;
|
||||||
|
|
||||||
@ -85,6 +86,7 @@ void Menu::InitializeBuyItemWindow(){
|
|||||||
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
|
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
|
||||||
const std::string&item=Component<MenuLabel>(BUY_ITEM,"Item Purchase Header")->GetString(A::ITEM_NAME);
|
const std::string&item=Component<MenuLabel>(BUY_ITEM,"Item Purchase Header")->GetString(A::ITEM_NAME);
|
||||||
merchant.PurchaseItem(item,GetQuantity());
|
merchant.PurchaseItem(item,GetQuantity());
|
||||||
|
SoundEffect::PlaySFX("Buy Item");
|
||||||
Menu::CloseMenu();
|
Menu::CloseMenu();
|
||||||
return true;
|
return true;
|
||||||
})END;
|
})END;
|
||||||
|
@ -47,6 +47,7 @@ All rights reserved.
|
|||||||
#include "Item.h"
|
#include "Item.h"
|
||||||
#include "ScrollableWindowComponent.h"
|
#include "ScrollableWindowComponent.h"
|
||||||
#include "RowItemDisplay.h"
|
#include "RowItemDisplay.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_game
|
INCLUDE_game
|
||||||
INCLUDE_GFX
|
INCLUDE_GFX
|
||||||
@ -136,9 +137,9 @@ void Menu::InitializeCharacterMenuWindow(){
|
|||||||
const static auto OppositeRingSlotDoesNotMatchCurrentEquip=[](RowItemDisplay*comp){
|
const static auto OppositeRingSlotDoesNotMatchCurrentEquip=[](RowItemDisplay*comp){
|
||||||
EquipSlot slot=EquipSlot(comp->I(Attribute::EQUIP_TYPE));
|
EquipSlot slot=EquipSlot(comp->I(Attribute::EQUIP_TYPE));
|
||||||
std::weak_ptr<Item>otherItem;
|
std::weak_ptr<Item>otherItem;
|
||||||
if(slot==EquipSlot::RING1)otherItem=Inventory::GetEquip(EquipSlot::RING2);
|
if(slot&EquipSlot::RING1)otherItem=Inventory::GetEquip(EquipSlot::RING2);
|
||||||
else
|
else
|
||||||
if(slot==EquipSlot::RING2)otherItem=Inventory::GetEquip(EquipSlot::RING1);
|
if(slot&EquipSlot::RING2)otherItem=Inventory::GetEquip(EquipSlot::RING1);
|
||||||
return ISBLANK(otherItem)||(&*comp->GetItem().lock()!=&*otherItem.lock());
|
return ISBLANK(otherItem)||(&*comp->GetItem().lock()!=&*otherItem.lock());
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -148,6 +149,7 @@ void Menu::InitializeCharacterMenuWindow(){
|
|||||||
if(comp!=nullptr){
|
if(comp!=nullptr){
|
||||||
if(OppositeRingSlotDoesNotMatchCurrentEquip(comp)){ //If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply.
|
if(OppositeRingSlotDoesNotMatchCurrentEquip(comp)){ //If we find that the opposite ring slot is equipped to us, this would be an item swap or the exact same ring, therefore no stat calculations apply.
|
||||||
Inventory::EquipItem(comp->GetItem(),EquipSlot(comp->I(Attribute::EQUIP_TYPE)));
|
Inventory::EquipItem(comp->GetItem(),EquipSlot(comp->I(Attribute::EQUIP_TYPE)));
|
||||||
|
SoundEffect::PlaySFX(comp->GetItem().lock()->UseSound());
|
||||||
for(MenuComponent*button:((ScrollableWindowComponent*)data.parentComponent)->GetComponents()){
|
for(MenuComponent*button:((ScrollableWindowComponent*)data.parentComponent)->GetComponents()){
|
||||||
RowItemDisplay*comp=DYNAMIC_CAST<RowItemDisplay*>(button);
|
RowItemDisplay*comp=DYNAMIC_CAST<RowItemDisplay*>(button);
|
||||||
if(comp!=nullptr){
|
if(comp!=nullptr){
|
||||||
|
@ -44,6 +44,7 @@ All rights reserved.
|
|||||||
#include "AttributableStat.h"
|
#include "AttributableStat.h"
|
||||||
#include <numeric>
|
#include <numeric>
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_game
|
INCLUDE_game
|
||||||
INCLUDE_DATA
|
INCLUDE_DATA
|
||||||
@ -147,7 +148,7 @@ void ItemInfo::InitializeItems(){
|
|||||||
if(keyName=="SellValue"){
|
if(keyName=="SellValue"){
|
||||||
sellValue=data[key][keyName].GetInt();
|
sellValue=data[key][keyName].GetInt();
|
||||||
}else
|
}else
|
||||||
if(keyName=="UseSound"){
|
if(keyName=="UseSound"||keyName=="Equip Sound"){
|
||||||
useSound=data[key][keyName].GetString();
|
useSound=data[key][keyName].GetString();
|
||||||
}else{ //THis is a custom override modifier for a script. NO-OP
|
}else{ //THis is a custom override modifier for a script. NO-OP
|
||||||
}
|
}
|
||||||
@ -853,6 +854,8 @@ void Item::EnhanceItem(uint8_t qty){
|
|||||||
Inventory::RemoveItem(Inventory::GetItem(name)[0],amt);
|
Inventory::RemoveItem(Inventory::GetItem(name)[0],amt);
|
||||||
}
|
}
|
||||||
game->GetPlayer()->SetMoney(game->GetPlayer()->GetMoney()-consumedResources.GetCost());
|
game->GetPlayer()->SetMoney(game->GetPlayer()->GetMoney()-consumedResources.GetCost());
|
||||||
|
|
||||||
|
SoundEffect::PlaySFX("Enhance Item");
|
||||||
}else{ //This is a craftable, so we have to give the player the item they crafted.
|
}else{ //This is a craftable, so we have to give the player the item they crafted.
|
||||||
Inventory::AddItem(ActualName());
|
Inventory::AddItem(ActualName());
|
||||||
|
|
||||||
@ -862,6 +865,8 @@ void Item::EnhanceItem(uint8_t qty){
|
|||||||
Inventory::RemoveItem(Inventory::GetItem(name)[0],amt);
|
Inventory::RemoveItem(Inventory::GetItem(name)[0],amt);
|
||||||
}
|
}
|
||||||
game->GetPlayer()->SetMoney(game->GetPlayer()->GetMoney()-consumedResources.GetCost());
|
game->GetPlayer()->SetMoney(game->GetPlayer()->GetMoney()-consumedResources.GetCost());
|
||||||
|
|
||||||
|
SoundEffect::PlaySFX("Craft Item");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -38,6 +38,7 @@ All rights reserved.
|
|||||||
#include "ItemDrop.h"
|
#include "ItemDrop.h"
|
||||||
#include "olcUTIL_Geometry2D.h"
|
#include "olcUTIL_Geometry2D.h"
|
||||||
#include "AdventuresInLestoria.h"
|
#include "AdventuresInLestoria.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_game
|
INCLUDE_game
|
||||||
INCLUDE_GFX
|
INCLUDE_GFX
|
||||||
@ -136,6 +137,7 @@ void ItemDrop::UpdateDrops(float fElapsedTime){
|
|||||||
if(drop.collected){
|
if(drop.collected){
|
||||||
Inventory::AddItem(drop.GetItem()->Name(),1,true);
|
Inventory::AddItem(drop.GetItem()->Name(),1,true);
|
||||||
ItemOverlay::AddToItemOverlay(*drop.GetItem());
|
ItemOverlay::AddToItemOverlay(*drop.GetItem());
|
||||||
|
SoundEffect::PlaySFX("Collect Item");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -46,6 +46,7 @@ All rights reserved.
|
|||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "MonsterAttribute.h"
|
#include "MonsterAttribute.h"
|
||||||
#include "ItemDrop.h"
|
#include "ItemDrop.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_ANIMATION_DATA
|
INCLUDE_ANIMATION_DATA
|
||||||
INCLUDE_MONSTER_DATA
|
INCLUDE_MONSTER_DATA
|
||||||
@ -73,6 +74,7 @@ Monster::Monster(vf2d pos,MonsterData data,bool upperLevel,bool bossMob):
|
|||||||
stats.A("Attack")=data.GetAttack();
|
stats.A("Attack")=data.GetAttack();
|
||||||
stats.A("Move Spd %")=data.GetMoveSpdMult();
|
stats.A("Move Spd %")=data.GetMoveSpdMult();
|
||||||
randomFrameOffset=(util::random()%1000)/1000.f;
|
randomFrameOffset=(util::random()%1000)/1000.f;
|
||||||
|
monsterWalkSoundTimer=util::random(1.f);
|
||||||
}
|
}
|
||||||
vf2d&Monster::GetPos(){
|
vf2d&Monster::GetPos(){
|
||||||
return pos;
|
return pos;
|
||||||
@ -152,6 +154,8 @@ bool Monster::SetY(float y){
|
|||||||
bool Monster::Update(float fElapsedTime){
|
bool Monster::Update(float fElapsedTime){
|
||||||
lastHitTimer=std::max(0.f,lastHitTimer-fElapsedTime);
|
lastHitTimer=std::max(0.f,lastHitTimer-fElapsedTime);
|
||||||
iframe_timer=std::max(0.f,iframe_timer-fElapsedTime);
|
iframe_timer=std::max(0.f,iframe_timer-fElapsedTime);
|
||||||
|
monsterHurtSoundCooldown=std::max(0.f,monsterHurtSoundCooldown-fElapsedTime);
|
||||||
|
|
||||||
if(size!=targetSize){
|
if(size!=targetSize){
|
||||||
if(size>targetSize){
|
if(size>targetSize){
|
||||||
size=std::max(targetSize,size-AiL::SIZE_CHANGE_SPEED*fElapsedTime);
|
size=std::max(targetSize,size-AiL::SIZE_CHANGE_SPEED*fElapsedTime);
|
||||||
@ -275,6 +279,11 @@ void Monster::Moved(){
|
|||||||
upperLevel=false;
|
upperLevel=false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
monsterWalkSoundTimer+=game->GetElapsedTime();
|
||||||
|
if(monsterWalkSoundTimer>1.f){
|
||||||
|
monsterWalkSoundTimer-=1.f;
|
||||||
|
SoundEffect::PlaySFX(GetWalkSound());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
std::string Monster::GetDeathAnimationName(){
|
std::string Monster::GetDeathAnimationName(){
|
||||||
return MONSTER_DATA[name].GetDeathAnimation();
|
return MONSTER_DATA[name].GetDeathAnimation();
|
||||||
@ -316,14 +325,22 @@ bool Monster::Hurt(int damage,bool onUpperLevel,float z){
|
|||||||
lastHitTimer=0.05f;
|
lastHitTimer=0.05f;
|
||||||
if(!IsAlive()){
|
if(!IsAlive()){
|
||||||
OnDeath();
|
OnDeath();
|
||||||
|
|
||||||
|
SoundEffect::PlaySFX(GetDeathSound());
|
||||||
}else{
|
}else{
|
||||||
hp=std::max(1,hp); //Make sure it stays alive if it's supposed to be alive...
|
hp=std::max(1,hp); //Make sure it stays alive if it's supposed to be alive...
|
||||||
|
|
||||||
|
if(monsterHurtSoundCooldown==0.f){
|
||||||
|
monsterHurtSoundCooldown=util::random(0.5f)+0.5f;
|
||||||
|
SoundEffect::PlaySFX(GetHurtSound());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(game->InBossEncounter()){
|
if(game->InBossEncounter()){
|
||||||
game->BossDamageDealt(int(mod_dmg));
|
game->BossDamageDealt(int(mod_dmg));
|
||||||
}
|
}
|
||||||
GetInt(Attribute::HITS_UNTIL_DEATH)=std::max(0,GetInt(Attribute::HITS_UNTIL_DEATH)-1);
|
GetInt(Attribute::HITS_UNTIL_DEATH)=std::max(0,GetInt(Attribute::HITS_UNTIL_DEATH)-1);
|
||||||
iframe_timer=GetFloat(Attribute::IFRAME_TIME_UPON_HIT);
|
iframe_timer=GetFloat(Attribute::IFRAME_TIME_UPON_HIT);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -489,3 +506,13 @@ ItemAttribute&Monster::Get(std::string_view attr){
|
|||||||
const uint32_t MonsterData::GetXP()const{
|
const uint32_t MonsterData::GetXP()const{
|
||||||
return xp;
|
return xp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const EventName&Monster::GetHurtSound(){
|
||||||
|
return MONSTER_DATA[name].GetHurtSound();
|
||||||
|
}
|
||||||
|
const EventName&Monster::GetDeathSound(){
|
||||||
|
return MONSTER_DATA[name].GetDeathSound();
|
||||||
|
}
|
||||||
|
const EventName&Monster::GetWalkSound(){
|
||||||
|
return MONSTER_DATA[name].GetWalkSound();
|
||||||
|
}
|
@ -83,6 +83,9 @@ struct MonsterData{
|
|||||||
std::string jumpAnimation="WARRIOR_IDLE_S";
|
std::string jumpAnimation="WARRIOR_IDLE_S";
|
||||||
std::string shootAnimation="WARRIOR_IDLE_S";
|
std::string shootAnimation="WARRIOR_IDLE_S";
|
||||||
std::string deathAnimation="WARRIOR_IDLE_S";
|
std::string deathAnimation="WARRIOR_IDLE_S";
|
||||||
|
EventName hurtSound="";
|
||||||
|
EventName deathSound="";
|
||||||
|
EventName walkSound="";
|
||||||
std::vector<MonsterDropData> dropData;
|
std::vector<MonsterDropData> dropData;
|
||||||
public:
|
public:
|
||||||
MonsterData();
|
MonsterData();
|
||||||
@ -98,6 +101,9 @@ struct MonsterData{
|
|||||||
std::string GetJumpAnimation();
|
std::string GetJumpAnimation();
|
||||||
std::string GetShootAnimation();
|
std::string GetShootAnimation();
|
||||||
std::string GetDeathAnimation();
|
std::string GetDeathAnimation();
|
||||||
|
const EventName&GetHurtSound();
|
||||||
|
const EventName&GetDeathSound();
|
||||||
|
const EventName&GetWalkSound();
|
||||||
std::vector<std::string>GetAnimations(){
|
std::vector<std::string>GetAnimations(){
|
||||||
return animations;
|
return animations;
|
||||||
}
|
}
|
||||||
@ -159,6 +165,9 @@ public:
|
|||||||
void SetStrategyDrawFunction(std::function<void(AiL*)>func);
|
void SetStrategyDrawFunction(std::function<void(AiL*)>func);
|
||||||
std::function<void(AiL*)>strategyDraw=[](AiL*pge){};
|
std::function<void(AiL*)>strategyDraw=[](AiL*pge){};
|
||||||
const ItemAttributable&GetStats()const;
|
const ItemAttributable&GetStats()const;
|
||||||
|
const EventName&GetHurtSound();
|
||||||
|
const EventName&GetDeathSound();
|
||||||
|
const EventName&GetWalkSound();
|
||||||
private:
|
private:
|
||||||
std::string name;
|
std::string name;
|
||||||
vf2d pos;
|
vf2d pos;
|
||||||
@ -180,6 +189,8 @@ private:
|
|||||||
Animate2D::AnimationState internal_animState;
|
Animate2D::AnimationState internal_animState;
|
||||||
float randomFrameOffset=0.f;
|
float randomFrameOffset=0.f;
|
||||||
float deathTimer=0.f;
|
float deathTimer=0.f;
|
||||||
|
float monsterHurtSoundCooldown=0.f;
|
||||||
|
float monsterWalkSoundTimer;
|
||||||
std::vector<Buff>buffList;
|
std::vector<Buff>buffList;
|
||||||
std::string GetDeathAnimationName();
|
std::string GetDeathAnimationName();
|
||||||
bool hasHitPlayer=false;
|
bool hasHitPlayer=false;
|
||||||
|
@ -71,6 +71,20 @@ void MonsterData::InitializeMonsterData(){
|
|||||||
MonsterData::imgs[MonsterName]=NEW Renderable();
|
MonsterData::imgs[MonsterName]=NEW Renderable();
|
||||||
MonsterData::imgs[MonsterName]->Load("assets/monsters/"+MonsterName+".png");
|
MonsterData::imgs[MonsterName]->Load("assets/monsters/"+MonsterName+".png");
|
||||||
|
|
||||||
|
EventName hurtSound="";
|
||||||
|
EventName deathSound="";
|
||||||
|
EventName walkSound="";
|
||||||
|
|
||||||
|
if(DATA["Monsters"][MonsterName].HasProperty("Hurt Sound")){
|
||||||
|
hurtSound=DATA["Monsters"][MonsterName]["Hurt Sound"].GetString();
|
||||||
|
}
|
||||||
|
if(DATA["Monsters"][MonsterName].HasProperty("Death Sound")){
|
||||||
|
deathSound=DATA["Monsters"][MonsterName]["Death Sound"].GetString();
|
||||||
|
}
|
||||||
|
if(DATA["Monsters"][MonsterName].HasProperty("Walk Sound")){
|
||||||
|
walkSound=DATA["Monsters"][MonsterName]["Walk Sound"].GetString();
|
||||||
|
}
|
||||||
|
|
||||||
for(int i=0;i<animations.size();i++){
|
for(int i=0;i<animations.size();i++){
|
||||||
std::string animationConfigName="";
|
std::string animationConfigName="";
|
||||||
std::string imgName="";
|
std::string imgName="";
|
||||||
@ -157,6 +171,10 @@ void MonsterData::InitializeMonsterData(){
|
|||||||
DATA["Monsters"][MonsterName]["CollisionDmg"].GetInt()
|
DATA["Monsters"][MonsterName]["CollisionDmg"].GetInt()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
monster.hurtSound=hurtSound;
|
||||||
|
monster.deathSound=deathSound;
|
||||||
|
monster.walkSound=walkSound;
|
||||||
|
|
||||||
MONSTER_DATA[MonsterName]=monster;
|
MONSTER_DATA[MonsterName]=monster;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -197,3 +215,14 @@ std::string MonsterData::GetDeathAnimation(){
|
|||||||
const std::vector<MonsterDropData>&MonsterData::GetDropData(){
|
const std::vector<MonsterDropData>&MonsterData::GetDropData(){
|
||||||
return dropData;
|
return dropData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const EventName&MonsterData::GetHurtSound(){
|
||||||
|
return hurtSound;
|
||||||
|
}
|
||||||
|
const EventName&MonsterData::GetDeathSound(){
|
||||||
|
return deathSound;
|
||||||
|
}
|
||||||
|
const EventName&MonsterData::GetWalkSound(){
|
||||||
|
return walkSound;
|
||||||
|
}
|
@ -96,6 +96,7 @@ void Player::Initialize(){
|
|||||||
SetBaseStat("Crit Dmg","Player.Crit Dmg"_F);
|
SetBaseStat("Crit Dmg","Player.Crit Dmg"_F);
|
||||||
SetBaseStat("Health %",0);
|
SetBaseStat("Health %",0);
|
||||||
SetBaseStat("HP6 Recovery %",0);
|
SetBaseStat("HP6 Recovery %",0);
|
||||||
|
cooldownSoundInstance=Audio::Engine().LoadSound("spell_cast.ogg"_SFX);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Player::SetX(float x){
|
bool Player::SetX(float x){
|
||||||
@ -272,6 +273,15 @@ void Player::Update(float fElapsedTime){
|
|||||||
SetState(State::NORMAL);
|
SetState(State::NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(state==State::CASTING){
|
||||||
|
if(!Audio::Engine().IsPlaying(cooldownSoundInstance)){
|
||||||
|
Audio::Engine().Play(cooldownSoundInstance,true);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
Audio::Engine().Stop(cooldownSoundInstance);
|
||||||
|
}
|
||||||
|
|
||||||
while(manaTickTimer<=0){
|
while(manaTickTimer<=0){
|
||||||
manaTickTimer+=0.2f;
|
manaTickTimer+=0.2f;
|
||||||
RestoreMana(1,true);
|
RestoreMana(1,true);
|
||||||
|
@ -308,6 +308,8 @@ protected:
|
|||||||
float endZoneStandTime=0;
|
float endZoneStandTime=0;
|
||||||
const float RAPID_FIRE_SHOOT_DELAY="Ranger.Ability 1.ArrowDelay"_F;
|
const float RAPID_FIRE_SHOOT_DELAY="Ranger.Ability 1.ArrowDelay"_F;
|
||||||
const int RAPID_FIRE_SHOOT_AMOUNT="Ranger.Ability 1.ArrowCount"_I;
|
const int RAPID_FIRE_SHOOT_AMOUNT="Ranger.Ability 1.ArrowCount"_I;
|
||||||
|
float footstepTimer=0.f;
|
||||||
|
size_t cooldownSoundInstance=std::numeric_limits<size_t>::max();
|
||||||
};
|
};
|
||||||
|
|
||||||
#pragma region Warrior
|
#pragma region Warrior
|
||||||
|
@ -44,6 +44,7 @@ All rights reserved.
|
|||||||
#include "BulletTypes.h"
|
#include "BulletTypes.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_MONSTER_LIST
|
INCLUDE_MONSTER_LIST
|
||||||
INCLUDE_BULLET_LIST
|
INCLUDE_BULLET_LIST
|
||||||
@ -74,6 +75,7 @@ bool Ranger::AutoAttack(){
|
|||||||
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(GetPos(),extendedLine,vf2d{cos(angleToCursor)*"Ranger.Auto Attack.ArrowSpd"_F,float(sin(angleToCursor)*"Ranger.Auto Attack.ArrowSpd"_F-PI/8*"Ranger.Auto Attack.ArrowSpd"_F)}+movementVelocity,"Ranger.Auto Attack.Radius"_F/100*12,int(GetAttack()*"Ranger.Auto Attack.DamageMult"_F),OnUpperLevel(),true)));
|
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(GetPos(),extendedLine,vf2d{cos(angleToCursor)*"Ranger.Auto Attack.ArrowSpd"_F,float(sin(angleToCursor)*"Ranger.Auto Attack.ArrowSpd"_F-PI/8*"Ranger.Auto Attack.ArrowSpd"_F)}+movementVelocity,"Ranger.Auto Attack.Radius"_F/100*12,int(GetAttack()*"Ranger.Auto Attack.DamageMult"_F),OnUpperLevel(),true)));
|
||||||
SetState(State::SHOOT_ARROW);
|
SetState(State::SHOOT_ARROW);
|
||||||
SetAnimationBasedOnTargetingDirection(angleToCursor);
|
SetAnimationBasedOnTargetingDirection(angleToCursor);
|
||||||
|
SoundEffect::PlaySFX("Ranger.Auto Attack.Sound"_S);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +94,7 @@ void Ranger::InitializeClassAbilities(){
|
|||||||
float angleToCursor=atan2(game->GetWorldMousePos().y-p->GetPos().y,game->GetWorldMousePos().x-p->GetPos().x);
|
float angleToCursor=atan2(game->GetWorldMousePos().y-p->GetPos().y,game->GetWorldMousePos().x-p->GetPos().x);
|
||||||
p->SetAnimationBasedOnTargetingDirection(angleToCursor);
|
p->SetAnimationBasedOnTargetingDirection(angleToCursor);
|
||||||
p->SetState(State::RETREAT);
|
p->SetState(State::RETREAT);
|
||||||
|
SoundEffect::PlaySFX("Ranger.Right Click Ability.Sound"_S);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
@ -103,6 +106,7 @@ void Ranger::InitializeClassAbilities(){
|
|||||||
if("Ranger.Ability 1.IsAnimationLocked"_I){
|
if("Ranger.Ability 1.IsAnimationLocked"_I){
|
||||||
p->SetState(State::ANIMATION_LOCK);
|
p->SetState(State::ANIMATION_LOCK);
|
||||||
}
|
}
|
||||||
|
SoundEffect::PlaySFX("Ranger.Ability 1.Sound"_S);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
@ -114,6 +118,7 @@ void Ranger::InitializeClassAbilities(){
|
|||||||
p->SetAnimationBasedOnTargetingDirection(atan2(arrowVelocity.y,arrowVelocity.x));
|
p->SetAnimationBasedOnTargetingDirection(atan2(arrowVelocity.y,arrowVelocity.x));
|
||||||
game->SetupWorldShake("Ranger.Ability 2.WorldShakeTime"_F);
|
game->SetupWorldShake("Ranger.Ability 2.WorldShakeTime"_F);
|
||||||
p->Knockback(-1.f*arrowVelocity.norm()*"Ranger.Ability 2.Knockback"_F);
|
p->Knockback(-1.f*arrowVelocity.norm()*"Ranger.Ability 2.Knockback"_F);
|
||||||
|
SoundEffect::PlaySFX("Ranger.Ability 2.Sound"_S);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
@ -136,6 +141,7 @@ void Ranger::InitializeClassAbilities(){
|
|||||||
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(p->GetPos(),extendedLine,vf2d{cos(newAngle)*"Ranger.Ability 3.ArrowSpd"_F,float(sin(newAngle)*"Ranger.Ability 3.ArrowSpd"_F-PI/8*"Ranger.Ability 3.ArrowSpd"_F)}+p->movementVelocity,12*"Ranger.Ability 3.ArrowRadius"_F/100,int(p->GetAttack()*"Ranger.Ability 3.DamageMult"_F),p->OnUpperLevel(),true)));
|
BULLET_LIST.push_back(std::make_unique<Arrow>(Arrow(p->GetPos(),extendedLine,vf2d{cos(newAngle)*"Ranger.Ability 3.ArrowSpd"_F,float(sin(newAngle)*"Ranger.Ability 3.ArrowSpd"_F-PI/8*"Ranger.Ability 3.ArrowSpd"_F)}+p->movementVelocity,12*"Ranger.Ability 3.ArrowRadius"_F/100,int(p->GetAttack()*"Ranger.Ability 3.DamageMult"_F),p->OnUpperLevel(),true)));
|
||||||
}
|
}
|
||||||
p->SetAnimationBasedOnTargetingDirection(shootingAngle);
|
p->SetAnimationBasedOnTargetingDirection(shootingAngle);
|
||||||
|
SoundEffect::PlaySFX("Ranger.Ability 3.Sound"_S);
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
#pragma endregion
|
#pragma endregion
|
||||||
|
@ -38,6 +38,7 @@ All rights reserved.
|
|||||||
|
|
||||||
#include "Menu.h"
|
#include "Menu.h"
|
||||||
#include "ItemMenuLabel.h"
|
#include "ItemMenuLabel.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
using A=Attribute;
|
using A=Attribute;
|
||||||
|
|
||||||
@ -84,6 +85,7 @@ void Menu::InitializeSellItemWindow(){
|
|||||||
sellItemWindow->ADD("Sell Button",MenuComponent)({{sellItemWindow->size.x/2+18,70},{64,12}},"Sell",[&](MenuFuncData data){
|
sellItemWindow->ADD("Sell Button",MenuComponent)({{sellItemWindow->size.x/2+18,70},{64,12}},"Sell",[&](MenuFuncData data){
|
||||||
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
|
Merchant&merchant=Merchant::GetCurrentTravelingMerchant();
|
||||||
merchant.SellItem(Component<ItemMenuLabel>(SELL_ITEM,"Item Sell Header")->GetItem(),GetQuantity());
|
merchant.SellItem(Component<ItemMenuLabel>(SELL_ITEM,"Item Sell Header")->GetItem(),GetQuantity());
|
||||||
|
SoundEffect::PlaySFX("Sell Item");
|
||||||
Menu::CloseMenu();
|
Menu::CloseMenu();
|
||||||
return true;
|
return true;
|
||||||
})END;
|
})END;
|
||||||
|
@ -44,6 +44,7 @@ All rights reserved.
|
|||||||
#include "Effect.h"
|
#include "Effect.h"
|
||||||
#include "FallingDebris.h"
|
#include "FallingDebris.h"
|
||||||
#include "MonsterAttribute.h"
|
#include "MonsterAttribute.h"
|
||||||
|
#include "SoundEffect.h"
|
||||||
|
|
||||||
INCLUDE_game
|
INCLUDE_game
|
||||||
INCLUDE_BULLET_LIST
|
INCLUDE_BULLET_LIST
|
||||||
@ -68,12 +69,14 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat
|
|||||||
float angle=((2*PI)/bulletCount)*i+angleOffset;
|
float angle=((2*PI)/bulletCount)*i+angleOffset;
|
||||||
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
||||||
}
|
}
|
||||||
|
SoundEffect::PlaySFX("Slime King Shoot");
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto Landed=[&ShootBulletRing,&m](int currentPhase){
|
const auto Landed=[&ShootBulletRing,&m](int currentPhase){
|
||||||
if(currentPhase==1){
|
if(currentPhase==1){
|
||||||
ShootBulletRing(m.F(A::SHOOT_RING_OFFSET));
|
ShootBulletRing(m.F(A::SHOOT_RING_OFFSET));
|
||||||
}
|
}
|
||||||
|
SoundEffect::PlaySFX("Slime King Land");
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto TransitionPhase=[&](int newPhase){
|
const auto TransitionPhase=[&](int newPhase){
|
||||||
@ -288,6 +291,7 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat
|
|||||||
float angle=(i-(bulletCount/2))*util::degToRad(ConfigFloat("Phase2.ShootAngleSpread"))+initialAngle;
|
float angle=(i-(bulletCount/2))*util::degToRad(ConfigFloat("Phase2.ShootAngleSpread"))+initialAngle;
|
||||||
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
||||||
}
|
}
|
||||||
|
SoundEffect::PlaySFX("Slime King Shoot");
|
||||||
}
|
}
|
||||||
if(m.I(A::PATTERN_REPEAT_COUNT)>ConfigInt("Phase2.ShootCount")){
|
if(m.I(A::PATTERN_REPEAT_COUNT)>ConfigInt("Phase2.ShootCount")){
|
||||||
m.I(A::PATTERN_REPEAT_COUNT)=0;
|
m.I(A::PATTERN_REPEAT_COUNT)=0;
|
||||||
@ -317,6 +321,7 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat
|
|||||||
float angle=(i-(bulletCount/2))*util::degToRad(ConfigFloat("Phase3.ShootAngleSpread"))+initialAngle;
|
float angle=(i-(bulletCount/2))*util::degToRad(ConfigFloat("Phase3.ShootAngleSpread"))+initialAngle;
|
||||||
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(angle),sin(angle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
||||||
}
|
}
|
||||||
|
SoundEffect::PlaySFX("Slime King Shoot");
|
||||||
}else
|
}else
|
||||||
if(m.I(A::PATTERN_REPEAT_COUNT)>=4){
|
if(m.I(A::PATTERN_REPEAT_COUNT)>=4){
|
||||||
m.F(A::RECOVERY_TIME)=ConfigFloat("Phase3.PhaseRecoveryTime");
|
m.F(A::RECOVERY_TIME)=ConfigFloat("Phase3.PhaseRecoveryTime");
|
||||||
@ -346,6 +351,7 @@ void Monster::STRATEGY::SLIMEKING(Monster&m,float fElapsedTime,std::string strat
|
|||||||
float spreadAngle=util::degToRad(ConfigFloat("Phase4.RandomOffsetAngle"));
|
float spreadAngle=util::degToRad(ConfigFloat("Phase4.RandomOffsetAngle"));
|
||||||
bulletAngle+=util::random(spreadAngle*2)-spreadAngle;
|
bulletAngle+=util::random(spreadAngle*2)-spreadAngle;
|
||||||
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(bulletAngle),sin(bulletAngle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
BULLET_LIST.emplace_back(std::make_unique<Bullet>(m.GetPos(),vf2d{cos(bulletAngle),sin(bulletAngle)}*bulletSpd,6,ConfigInt("ProjectileDamage"),m.OnUpperLevel(),false,YELLOW,vf2d{6,6}));
|
||||||
|
SoundEffect::PlaySFX("Slime King Shoot");
|
||||||
}else
|
}else
|
||||||
if(m.I(A::PATTERN_REPEAT_COUNT)==5){
|
if(m.I(A::PATTERN_REPEAT_COUNT)==5){
|
||||||
m.I(A::PATTERN_REPEAT_COUNT)++;
|
m.I(A::PATTERN_REPEAT_COUNT)++;
|
||||||
|
@ -63,6 +63,7 @@ void SoundEffect::Initialize(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void SoundEffect::PlaySFX(const std::string_view eventName){
|
void SoundEffect::PlaySFX(const std::string_view eventName){
|
||||||
|
if(eventName.length()==0)return;
|
||||||
auto itr=SOUND_EFFECTS.equal_range(std::string(eventName));
|
auto itr=SOUND_EFFECTS.equal_range(std::string(eventName));
|
||||||
size_t soundCount=std::distance(itr.first,itr.second);
|
size_t soundCount=std::distance(itr.first,itr.second);
|
||||||
size_t soundEffectChoice=util::random()%soundCount;
|
size_t soundEffectChoice=util::random()%soundCount;
|
||||||
|
@ -39,7 +39,7 @@ All rights reserved.
|
|||||||
#define VERSION_MAJOR 0
|
#define VERSION_MAJOR 0
|
||||||
#define VERSION_MINOR 2
|
#define VERSION_MINOR 2
|
||||||
#define VERSION_PATCH 1
|
#define VERSION_PATCH 1
|
||||||
#define VERSION_BUILD 5476
|
#define VERSION_BUILD 5498
|
||||||
|
|
||||||
#define stringify(a) stringify_(a)
|
#define stringify(a) stringify_(a)
|
||||||
#define stringify_(a) #a
|
#define stringify_(a) #a
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="240" height="120" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="17">
|
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="240" height="120" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="18">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
||||||
</properties>
|
</properties>
|
||||||
@ -545,5 +545,6 @@
|
|||||||
<object id="16" name="Spawn 14" type="SpawnGroup" x="4966" y="1993" width="368" height="350">
|
<object id="16" name="Spawn 14" type="SpawnGroup" x="4966" y="1993" width="368" height="350">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="17" name="Player Spawn" type="PlayerSpawnLocation" x="360" y="1464" width="24" height="24"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="200" height="120" tilewidth="24" tileheight="24" infinite="0" nextlayerid="9" nextobjectid="22">
|
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="200" height="120" tilewidth="24" tileheight="24" infinite="0" nextlayerid="9" nextobjectid="23">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
||||||
</properties>
|
</properties>
|
||||||
@ -436,5 +436,6 @@
|
|||||||
<object id="21" name="Spawn 19" type="SpawnGroup" x="3493.94" y="781.818" width="369.697" height="345.455">
|
<object id="21" name="Spawn 19" type="SpawnGroup" x="3493.94" y="781.818" width="369.697" height="345.455">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="22" name="Player Spawn" type="PlayerSpawnLocation" x="3696" y="600" width="24" height="24"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="200" height="250" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="29">
|
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="right-down" width="200" height="250" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="30">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
<property name="Level Type" propertytype="LevelType" value="Dungeon"/>
|
||||||
</properties>
|
</properties>
|
||||||
@ -1105,5 +1105,6 @@
|
|||||||
<object id="28" name="Spawn 10" type="SpawnGroup" x="304" y="2524" width="376" height="376">
|
<object id="28" name="Spawn 10" type="SpawnGroup" x="304" y="2524" width="376" height="376">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="29" name="Player Spawn" type="PlayerSpawnLocation" x="1704" y="5448" width="24" height="24"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="250" height="175" tilewidth="24" tileheight="24" infinite="0" nextlayerid="6" nextobjectid="29">
|
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="250" height="175" tilewidth="24" tileheight="24" infinite="0" nextlayerid="6" nextobjectid="31">
|
||||||
<tileset firstgid="1" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
<tileset firstgid="1" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
||||||
<tileset firstgid="1621" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
<tileset firstgid="1621" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
||||||
<layer id="2" name="Layer 1" width="250" height="175">
|
<layer id="2" name="Layer 1" width="250" height="175">
|
||||||
@ -624,5 +624,7 @@
|
|||||||
<object id="28" name="Spawn 26" type="SpawnGroup" x="5003" y="1489" width="358" height="358">
|
<object id="28" name="Spawn 26" type="SpawnGroup" x="5003" y="1489" width="358" height="358">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="29" name="End Zone" type="EndZone" x="5856" y="1608" width="120" height="120"/>
|
||||||
|
<object id="30" name="Player Spawn" type="PlayerSpawnLocation" x="888" y="3432" width="24" height="24"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="225" height="150" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="22">
|
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="225" height="150" tilewidth="24" tileheight="24" infinite="0" nextlayerid="7" nextobjectid="24">
|
||||||
<tileset firstgid="1" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
<tileset firstgid="1" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
||||||
<tileset firstgid="1621" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
<tileset firstgid="1621" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
||||||
<tileset firstgid="4533" source="../maps/24x24_Waterfall.tsx"/>
|
<tileset firstgid="4533" source="../maps/24x24_Waterfall.tsx"/>
|
||||||
@ -677,5 +677,7 @@
|
|||||||
<object id="21" name="Spawn 19" type="SpawnGroup" x="4638" y="2588" width="360" height="388">
|
<object id="21" name="Spawn 19" type="SpawnGroup" x="4638" y="2588" width="360" height="388">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="22" name="Player Spawn" type="PlayerSpawnLocation" x="1776" y="288" width="24" height="24"/>
|
||||||
|
<object id="23" name="End Zone" type="EndZone" x="5016" y="2718" width="120" height="120"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="250" height="125" tilewidth="24" tileheight="24" infinite="0" nextlayerid="6" nextobjectid="24">
|
<map version="1.10" tiledversion="1.10.1" orientation="orthogonal" renderorder="right-down" width="250" height="125" tilewidth="24" tileheight="24" infinite="0" nextlayerid="6" nextobjectid="26">
|
||||||
<tileset firstgid="1" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
<tileset firstgid="1" source="../maps/Tilesheet_No_Shadow24x24.tsx"/>
|
||||||
<tileset firstgid="2913" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
<tileset firstgid="2913" source="../maps/Decorations_c1_No_Shadow24x24.tsx"/>
|
||||||
<layer id="2" name="Layer 1" width="250" height="125">
|
<layer id="2" name="Layer 1" width="250" height="125">
|
||||||
@ -459,5 +459,7 @@
|
|||||||
<object id="23" name="Spawn 23" type="SpawnGroup" x="5420.09" y="1327.76" width="359.818" height="348.485">
|
<object id="23" name="Spawn 23" type="SpawnGroup" x="5420.09" y="1327.76" width="359.818" height="348.485">
|
||||||
<ellipse/>
|
<ellipse/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="24" name="End Zone" type="EndZone" x="5832" y="1440" width="120" height="120"/>
|
||||||
|
<object id="25" name="Player Spawn" type="PlayerSpawnLocation" x="360" y="1488" width="24" height="24"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="left-down" width="250" height="177" tilewidth="4" tileheight="4" infinite="0" nextlayerid="5" nextobjectid="12">
|
<map version="1.10" tiledversion="1.10.1" class="Map" orientation="orthogonal" renderorder="left-down" width="250" height="177" tilewidth="4" tileheight="4" infinite="0" nextlayerid="5" nextobjectid="17">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Level Type" propertytype="LevelType" value="World Map"/>
|
<property name="Level Type" propertytype="LevelType" value="World Map"/>
|
||||||
<property name="Optimize" type="bool" value="true"/>
|
<property name="Optimize" type="bool" value="true"/>
|
||||||
@ -553,7 +553,7 @@
|
|||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11035,11036,11037,11038,11039,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11035,11036,11037,11038,11039,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
</data>
|
</data>
|
||||||
</layer>
|
</layer>
|
||||||
<objectgroup id="4" name="Object Layer 1">
|
<objectgroup id="4" name="Stage Plates">
|
||||||
<object id="2" name="Temp Player Spawn" type="PlayerSpawnLocation" x="200" y="325" width="20" height="20"/>
|
<object id="2" name="Temp Player Spawn" type="PlayerSpawnLocation" x="200" y="325" width="20" height="20"/>
|
||||||
<object id="3" name="Stage I-I" type="StagePlate" x="252" y="496" width="44" height="16">
|
<object id="3" name="Stage I-I" type="StagePlate" x="252" y="496" width="44" height="16">
|
||||||
<properties>
|
<properties>
|
||||||
@ -607,7 +607,7 @@
|
|||||||
</object>
|
</object>
|
||||||
<object id="9" name="Stage IV" type="StagePlate" x="172" y="580" width="44" height="16">
|
<object id="9" name="Stage IV" type="StagePlate" x="172" y="580" width="44" height="16">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Connection 1" type="object" value="0"/>
|
<property name="Connection 1" type="object" value="12"/>
|
||||||
<property name="Connection 2" type="object" value="0"/>
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
<property name="Map" propertytype="Level" value="CAMPAIGN_1_4"/>
|
<property name="Map" propertytype="Level" value="CAMPAIGN_1_4"/>
|
||||||
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
||||||
@ -616,11 +616,56 @@
|
|||||||
</object>
|
</object>
|
||||||
<object id="11" name="Boss I" type="StagePlate" x="156" y="644" width="32" height="24">
|
<object id="11" name="Boss I" type="StagePlate" x="156" y="644" width="32" height="24">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="Connection 1" type="object" value="0"/>
|
<property name="Connection 1" type="object" value="16"/>
|
||||||
<property name="Map" propertytype="Level" value="BOSS_1"/>
|
<property name="Map" propertytype="Level" value="BOSS_1"/>
|
||||||
<property name="Type" propertytype="StageType" value="BOSS"/>
|
<property name="Type" propertytype="StageType" value="BOSS"/>
|
||||||
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_8"/>
|
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_8"/>
|
||||||
</properties>
|
</properties>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="12" name="Stage V" type="StagePlate" x="112" y="532" width="44" height="16">
|
||||||
|
<properties>
|
||||||
|
<property name="Connection 1" type="object" value="13"/>
|
||||||
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
|
<property name="Map" propertytype="Level" value="CAMPAIGN_1_5"/>
|
||||||
|
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
||||||
|
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_4"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="13" name="Stage VI" type="StagePlate" x="60" y="484" width="44" height="16">
|
||||||
|
<properties>
|
||||||
|
<property name="Connection 1" type="object" value="14"/>
|
||||||
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
|
<property name="Map" propertytype="Level" value="CAMPAIGN_1_6"/>
|
||||||
|
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
||||||
|
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_5"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="14" name="Stage VII" type="StagePlate" x="36" y="556" width="44" height="16">
|
||||||
|
<properties>
|
||||||
|
<property name="Connection 1" type="object" value="15"/>
|
||||||
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
|
<property name="Map" propertytype="Level" value="CAMPAIGN_1_7"/>
|
||||||
|
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
||||||
|
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_6"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="15" name="Stage VIII" type="StagePlate" x="72" y="612" width="44" height="16">
|
||||||
|
<properties>
|
||||||
|
<property name="Connection 1" type="object" value="11"/>
|
||||||
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
|
<property name="Map" propertytype="Level" value="CAMPAIGN_1_8"/>
|
||||||
|
<property name="Type" propertytype="StageType" value="DUNGEON"/>
|
||||||
|
<property name="Unlock Condition" propertytype="Level" value="CAMPAIGN_1_7"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
|
<object id="16" name="Story III" type="StagePlate" x="160" y="612" width="20" height="24">
|
||||||
|
<properties>
|
||||||
|
<property name="Connection 1" type="object" value="0"/>
|
||||||
|
<property name="Connection 2" type="object" value="0"/>
|
||||||
|
<property name="Map" propertytype="Level" value="STORY_1_3"/>
|
||||||
|
<property name="Type" propertytype="StageType" value="STORY"/>
|
||||||
|
<property name="Unlock Condition" propertytype="Level" value="BOSS_1"/>
|
||||||
|
</properties>
|
||||||
|
</object>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
||||||
|
@ -29,6 +29,10 @@ Monsters
|
|||||||
DROP[1] = Minor Health Potion,5%,1,1
|
DROP[1] = Minor Health Potion,5%,1,1
|
||||||
DROP[2] = Berries,5%,1,1
|
DROP[2] = Berries,5%,1,1
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
Walk Sound = Slime Walk
|
||||||
|
|
||||||
#Additional custom animations go down below. Start with ANIMATION[0]. Order is:
|
#Additional custom animations go down below. Start with ANIMATION[0]. Order is:
|
||||||
# Frame Count, Frame Speed (s), Frame Cycling (Repeat,OneShot,PingPong,Reverse)
|
# Frame Count, Frame Speed (s), Frame Cycling (Repeat,OneShot,PingPong,Reverse)
|
||||||
#ANIMATION[0] = 6, 0.1, Repeat
|
#ANIMATION[0] = 6, 0.1, Repeat
|
||||||
@ -56,6 +60,10 @@ Monsters
|
|||||||
ShootAnimation = 10, 0.1, Repeat
|
ShootAnimation = 10, 0.1, Repeat
|
||||||
DeathAnimation = 10, 0.1, OneShot
|
DeathAnimation = 10, 0.1, OneShot
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
Walk Sound = Slime Walk
|
||||||
|
|
||||||
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
||||||
DROP[0] = Blue Slime Remains,65%,1,2
|
DROP[0] = Blue Slime Remains,65%,1,2
|
||||||
DROP[1] = Minor Health Potion,5%,1,1
|
DROP[1] = Minor Health Potion,5%,1,1
|
||||||
@ -87,6 +95,10 @@ Monsters
|
|||||||
ShootAnimation = 10, 0.1, OneShot
|
ShootAnimation = 10, 0.1, OneShot
|
||||||
DeathAnimation = 10, 0.1, OneShot
|
DeathAnimation = 10, 0.1, OneShot
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
Walk Sound = Slime Walk
|
||||||
|
|
||||||
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
||||||
DROP[0] = Red Slime Remains,65%,1,2
|
DROP[0] = Red Slime Remains,65%,1,2
|
||||||
DROP[1] = Minor Health Potion,5%,1,1
|
DROP[1] = Minor Health Potion,5%,1,1
|
||||||
@ -118,6 +130,10 @@ Monsters
|
|||||||
ShootAnimation = 10, 0.1, OneShot
|
ShootAnimation = 10, 0.1, OneShot
|
||||||
DeathAnimation = 10, 0.1, OneShot
|
DeathAnimation = 10, 0.1, OneShot
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
Walk Sound = Slime Walk
|
||||||
|
|
||||||
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
||||||
DROP[0] = Berries,5%,1,1
|
DROP[0] = Berries,5%,1,1
|
||||||
|
|
||||||
@ -147,6 +163,10 @@ Monsters
|
|||||||
ShootAnimation = 5, 0.1, OneShot
|
ShootAnimation = 5, 0.1, OneShot
|
||||||
DeathAnimation = 5, 0.2, OneShot
|
DeathAnimation = 5, 0.2, OneShot
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
# Walk Sound = Slime Walk # DOES NOT WALK!
|
||||||
|
|
||||||
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
||||||
DROP[0] = Bandages,30%,1,1
|
DROP[0] = Bandages,30%,1,1
|
||||||
DROP[1] = Berries,5%,1,1
|
DROP[1] = Berries,5%,1,1
|
||||||
@ -179,6 +199,10 @@ Monsters
|
|||||||
ShootAnimation = 10, 0.1, OneShot
|
ShootAnimation = 10, 0.1, OneShot
|
||||||
DeathAnimation = 10, 0.1, OneShot
|
DeathAnimation = 10, 0.1, OneShot
|
||||||
|
|
||||||
|
Hurt Sound = Monster Hurt
|
||||||
|
Death Sound = Slime Dead
|
||||||
|
Walk Sound = Slime Walk
|
||||||
|
|
||||||
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
# Drop Item Name, Drop Percentage(0-100%), Drop Min Quantity, Drop Max Quantity
|
||||||
DROP[0] = Berries,5%,1,1
|
DROP[0] = Berries,5%,1,1
|
||||||
|
|
||||||
|
@ -26,6 +26,9 @@ Player
|
|||||||
# How long the player must stand in the end zone before leaving the level.
|
# How long the player must stand in the end zone before leaving the level.
|
||||||
End Zone Wait Time = 5.0
|
End Zone Wait Time = 5.0
|
||||||
|
|
||||||
|
# How long between each footstep.
|
||||||
|
Footstep Timer = 0.4
|
||||||
|
|
||||||
# Each attack will have _N,_E,_S,_W appended to them once read in-game.
|
# Each attack will have _N,_E,_S,_W appended to them once read in-game.
|
||||||
PLAYER_ANIMATION[0] = WARRIOR_WALK
|
PLAYER_ANIMATION[0] = WARRIOR_WALK
|
||||||
PLAYER_ANIMATION[1] = WARRIOR_IDLE
|
PLAYER_ANIMATION[1] = WARRIOR_IDLE
|
||||||
|
@ -19,8 +19,8 @@ Events
|
|||||||
Equip Armor
|
Equip Armor
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = equip.ogg, 100%
|
File[0] = equip.ogg, 60%
|
||||||
File[1] = equip2.ogg, 100%
|
File[1] = equip2.ogg, 60%
|
||||||
}
|
}
|
||||||
Equip Accessory
|
Equip Accessory
|
||||||
{
|
{
|
||||||
@ -30,7 +30,7 @@ Events
|
|||||||
Footstep
|
Footstep
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = footsteps.ogg, 100%
|
File[0] = footsteps.ogg, 90%
|
||||||
}
|
}
|
||||||
Footstep - Wet
|
Footstep - Wet
|
||||||
{
|
{
|
||||||
@ -40,38 +40,43 @@ Events
|
|||||||
Buy Item
|
Buy Item
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = item_buy.ogg, 100%
|
File[0] = item_buy.ogg, 70%
|
||||||
}
|
}
|
||||||
Sell Item
|
Sell Item
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = item_sell.ogg, 100%
|
File[0] = item_sell.ogg, 80%
|
||||||
}
|
}
|
||||||
Craft Item
|
Craft Item
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = item_craft.ogg, 100%
|
File[0] = item_craft.ogg, 70%
|
||||||
}
|
}
|
||||||
Enhance Item
|
Enhance Item
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = item_enhance.ogg, 100%
|
File[0] = item_enhance.ogg, 100%
|
||||||
}
|
}
|
||||||
|
Collect Item
|
||||||
|
{
|
||||||
|
# Specify file names, followed by volume %
|
||||||
|
File[0] = item_collect.ogg, 40%
|
||||||
|
}
|
||||||
Monster Hurt
|
Monster Hurt
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = monster_hurt.ogg, 100%
|
File[0] = monster_hurt.ogg, 40%
|
||||||
}
|
}
|
||||||
Ranger Auto Attack
|
Ranger Auto Attack
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = ranger_auto1.ogg, 100%
|
File[0] = ranger_auto1.ogg, 50%
|
||||||
File[1] = ranger_auto2.ogg, 100%
|
File[1] = ranger_auto2.ogg, 50%
|
||||||
}
|
}
|
||||||
Ranger Backstep
|
Ranger Retreat
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = ranger_backstep.ogg, 100%
|
File[0] = ranger_backstep.ogg, 90%
|
||||||
}
|
}
|
||||||
Ranger Multishot
|
Ranger Multishot
|
||||||
{
|
{
|
||||||
@ -86,22 +91,18 @@ Events
|
|||||||
Ranger Charged Shot
|
Ranger Charged Shot
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = ranger_charged_shot.ogg, 100%
|
File[0] = ranger_charged_shot.ogg, 70%
|
||||||
}
|
|
||||||
Ranger Multishot
|
|
||||||
{
|
|
||||||
# Specify file names, followed by volume %
|
|
||||||
File[0] = ranger_multishot.ogg, 100%
|
|
||||||
}
|
}
|
||||||
Slime Dead
|
Slime Dead
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = slime_dead.ogg, 100%
|
File[0] = slime_dead.ogg, 60%
|
||||||
|
File[1] = slime_dead2.ogg, 60%
|
||||||
}
|
}
|
||||||
Monster Dead
|
Monster Dead
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = slime_dead2.ogg, 100%
|
File[0] = slime_dead2.ogg, 60%
|
||||||
}
|
}
|
||||||
Slime King Land
|
Slime King Land
|
||||||
{
|
{
|
||||||
@ -122,14 +123,9 @@ Events
|
|||||||
Slime Walk
|
Slime Walk
|
||||||
{
|
{
|
||||||
# Specify file names, followed by volume %
|
# Specify file names, followed by volume %
|
||||||
File[0] = slime_walk.ogg, 100%
|
File[0] = slime_walk.ogg, 10%
|
||||||
File[1] = slime_walk2.ogg, 100%
|
File[1] = slime_walk2.ogg, 10%
|
||||||
File[2] = slime_walk3.ogg, 100%
|
File[2] = slime_walk3.ogg, 10%
|
||||||
}
|
|
||||||
Spell Cast
|
|
||||||
{
|
|
||||||
# Specify file names, followed by volume %
|
|
||||||
File[0] = spell_cast.ogg, 100%
|
|
||||||
}
|
}
|
||||||
Warrior Auto Attack
|
Warrior Auto Attack
|
||||||
{
|
{
|
||||||
|
@ -22,6 +22,7 @@ Ranger
|
|||||||
|
|
||||||
ArrowSpd = 250
|
ArrowSpd = 250
|
||||||
|
|
||||||
|
Sound = Ranger Auto Attack
|
||||||
}
|
}
|
||||||
Right Click Ability
|
Right Click Ability
|
||||||
{
|
{
|
||||||
@ -47,6 +48,8 @@ Ranger
|
|||||||
RetreatTime = 0.2
|
RetreatTime = 0.2
|
||||||
# The distance the retreat moves the Ranger.
|
# The distance the retreat moves the Ranger.
|
||||||
RetreatDistance = 250
|
RetreatDistance = 250
|
||||||
|
|
||||||
|
Sound = Ranger Retreat
|
||||||
}
|
}
|
||||||
Ability 1
|
Ability 1
|
||||||
{
|
{
|
||||||
@ -81,6 +84,8 @@ Ranger
|
|||||||
|
|
||||||
# Hitbox radius of the arrows
|
# Hitbox radius of the arrows
|
||||||
ArrowRadius = 100
|
ArrowRadius = 100
|
||||||
|
|
||||||
|
Sound = Ranger Rapid Fire
|
||||||
}
|
}
|
||||||
Ability 2
|
Ability 2
|
||||||
{
|
{
|
||||||
@ -113,6 +118,8 @@ Ranger
|
|||||||
|
|
||||||
# How long the world shakes upon using this ability.
|
# How long the world shakes upon using this ability.
|
||||||
WorldShakeTime = 0.3
|
WorldShakeTime = 0.3
|
||||||
|
|
||||||
|
Sound = Ranger Charged Shot
|
||||||
}
|
}
|
||||||
Ability 3
|
Ability 3
|
||||||
{
|
{
|
||||||
@ -146,5 +153,6 @@ Ranger
|
|||||||
# Hitbox radius of the arrows
|
# Hitbox radius of the arrows
|
||||||
ArrowRadius = 100
|
ArrowRadius = 100
|
||||||
|
|
||||||
|
Sound = Ranger Multishot
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -11,6 +11,7 @@ Equipment
|
|||||||
MaxStats = 20,4,4,3
|
MaxStats = 20,4,4,3
|
||||||
SellValue = 90
|
SellValue = 90
|
||||||
|
|
||||||
|
Equip Sound = Equip Accessory
|
||||||
}
|
}
|
||||||
Ring of the Bear
|
Ring of the Bear
|
||||||
{
|
{
|
||||||
@ -22,5 +23,7 @@ Equipment
|
|||||||
MinStats = 4,4,1
|
MinStats = 4,4,1
|
||||||
MaxStats = 10,10,3
|
MaxStats = 10,10,3
|
||||||
SellValue = 75
|
SellValue = 75
|
||||||
|
|
||||||
|
Equip Sound = Equip Accessory
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -21,6 +21,8 @@ Equipment
|
|||||||
StatValues[9] = 10,7,4
|
StatValues[9] = 10,7,4
|
||||||
StatValues[10] = 11,8,4
|
StatValues[10] = 11,8,4
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -107,6 +109,8 @@ Equipment
|
|||||||
StatValues[9] = 14,6,4
|
StatValues[9] = 14,6,4
|
||||||
StatValues[10] = 15,7,4
|
StatValues[10] = 15,7,4
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -193,6 +197,8 @@ Equipment
|
|||||||
StatValues[9] = 13,5,6
|
StatValues[9] = 13,5,6
|
||||||
StatValues[10] = 14,5,7
|
StatValues[10] = 14,5,7
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -279,6 +285,8 @@ Equipment
|
|||||||
StatValues[9] = 8,4,7
|
StatValues[9] = 8,4,7
|
||||||
StatValues[10] = 8,4,8
|
StatValues[10] = 8,4,8
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -365,6 +373,8 @@ Equipment
|
|||||||
StatValues[9] = 9,5,4
|
StatValues[9] = 9,5,4
|
||||||
StatValues[10] = 9,5,5
|
StatValues[10] = 9,5,5
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -451,6 +461,8 @@ Equipment
|
|||||||
StatValues[9] = 18,12,5
|
StatValues[9] = 18,12,5
|
||||||
StatValues[10] = 20,12,5
|
StatValues[10] = 20,12,5
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -537,6 +549,8 @@ Equipment
|
|||||||
StatValues[9] = 23,9,5
|
StatValues[9] = 23,9,5
|
||||||
StatValues[10] = 25,10,5
|
StatValues[10] = 25,10,5
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -623,6 +637,8 @@ Equipment
|
|||||||
StatValues[9] = 20,7,9
|
StatValues[9] = 20,7,9
|
||||||
StatValues[10] = 22,8,10
|
StatValues[10] = 22,8,10
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -709,6 +725,8 @@ Equipment
|
|||||||
StatValues[9] = 10,5,12
|
StatValues[9] = 10,5,12
|
||||||
StatValues[10] = 11,5,12
|
StatValues[10] = 11,5,12
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -795,6 +813,8 @@ Equipment
|
|||||||
StatValues[9] = 11,7,7
|
StatValues[9] = 11,7,7
|
||||||
StatValues[10] = 12,8,8
|
StatValues[10] = 12,8,8
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -881,6 +901,8 @@ Equipment
|
|||||||
StatValues[9] = 35,14,6
|
StatValues[9] = 35,14,6
|
||||||
StatValues[10] = 40,14,6
|
StatValues[10] = 40,14,6
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -967,6 +989,8 @@ Equipment
|
|||||||
StatValues[9] = 51,12,6
|
StatValues[9] = 51,12,6
|
||||||
StatValues[10] = 57,12,6
|
StatValues[10] = 57,12,6
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1053,6 +1077,8 @@ Equipment
|
|||||||
StatValues[9] = 38,9,12
|
StatValues[9] = 38,9,12
|
||||||
StatValues[10] = 42,10,12
|
StatValues[10] = 42,10,12
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1139,6 +1165,8 @@ Equipment
|
|||||||
StatValues[9] = 14,6,14
|
StatValues[9] = 14,6,14
|
||||||
StatValues[10] = 15,6,14
|
StatValues[10] = 15,6,14
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1225,6 +1253,8 @@ Equipment
|
|||||||
StatValues[9] = 15,9,9
|
StatValues[9] = 15,9,9
|
||||||
StatValues[10] = 16,10,10
|
StatValues[10] = 16,10,10
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1311,6 +1341,8 @@ Equipment
|
|||||||
StatValues[9] = 51,17,7
|
StatValues[9] = 51,17,7
|
||||||
StatValues[10] = 53,19,7
|
StatValues[10] = 53,19,7
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1397,6 +1429,8 @@ Equipment
|
|||||||
StatValues[9] = 70,14,7
|
StatValues[9] = 70,14,7
|
||||||
StatValues[10] = 72,14,7
|
StatValues[10] = 72,14,7
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1484,6 +1518,8 @@ Equipment
|
|||||||
StatValues[9] = 57,11,14
|
StatValues[9] = 57,11,14
|
||||||
StatValues[10] = 61,12,14
|
StatValues[10] = 61,12,14
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1570,6 +1606,8 @@ Equipment
|
|||||||
StatValues[9] = 18,7,17
|
StatValues[9] = 18,7,17
|
||||||
StatValues[10] = 19,7,19
|
StatValues[10] = 19,7,19
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
@ -1656,6 +1694,8 @@ Equipment
|
|||||||
StatValues[9] = 19,11,11
|
StatValues[9] = 19,11,11
|
||||||
StatValues[10] = 21,12,12
|
StatValues[10] = 21,12,12
|
||||||
|
|
||||||
|
Equip Sound = Equip Armor
|
||||||
|
|
||||||
Crafting
|
Crafting
|
||||||
{
|
{
|
||||||
Level[1]
|
Level[1]
|
||||||
|
@ -11,4 +11,7 @@ Levels
|
|||||||
CAMPAIGN_1_3 = 1_3.tmx
|
CAMPAIGN_1_3 = 1_3.tmx
|
||||||
CAMPAIGN_1_4 = 1_4.tmx
|
CAMPAIGN_1_4 = 1_4.tmx
|
||||||
CAMPAIGN_1_5 = 1_5.tmx
|
CAMPAIGN_1_5 = 1_5.tmx
|
||||||
|
CAMPAIGN_1_6 = 1_6.tmx
|
||||||
|
CAMPAIGN_1_7 = 1_7.tmx
|
||||||
|
CAMPAIGN_1_8 = 1_8.tmx
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Adventures in Lestoria/assets/sounds/item_collect.ogg
Normal file
BIN
Adventures in Lestoria/assets/sounds/item_collect.ogg
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -366,6 +366,8 @@ namespace olc::utils
|
|||||||
// first assignment, trim any whitespace from ends
|
// first assignment, trim any whitespace from ends
|
||||||
sPropName = line.substr(0, x);
|
sPropName = line.substr(0, x);
|
||||||
trim(sPropName);
|
trim(sPropName);
|
||||||
|
auto&top=stkPath.top().get();
|
||||||
|
if(stkPath.top().get().HasProperty(sPropName))ERR(std::format("WARNING! Duplicate key found! Key {} already exists! Duplicate line: {}",sPropName,line));
|
||||||
|
|
||||||
// Extract the property value, which is all characters after
|
// Extract the property value, which is all characters after
|
||||||
// the first assignment operator, trim any whitespace from ends
|
// the first assignment operator, trim any whitespace from ends
|
||||||
|
Loading…
x
Reference in New Issue
Block a user