Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
vfat0 committed Sep 5, 2021
0 parents commit 41de47d
Show file tree
Hide file tree
Showing 19 changed files with 20,869 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ETHERSCAN_API_KEY=ABC123ABC123ABC123ABC123ABC123ABC1
ROPSTEN_URL=https://eth-ropsten.alchemyapi.io/v2/<YOUR ALCHEMY KEY>
PRIVATE_KEY=0xabc123abc123abc123abc123abc123abc123abc123abc123abc123abc123abc1
4 changes: 4 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
node_modules
artifacts
cache
coverage
30 changes: 30 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
module.exports = {
env: {
browser: false,
es2021: true,
mocha: true,
node: true,
},
extends: [
"standard",
"plugin:prettier/recommended",
"plugin:node/recommended",
],
parserOptions: {
ecmaVersion: 12,
},
overrides: [
{
files: ["hardhat.config.js"],
globals: { task: true },
},
{
files: ["scripts/**"],
rules: { "no-process-exit": "off" },
},
{
files: ["hardhat.config.js", "scripts/**", "test/**"],
rules: { "node/no-unpublished-require": "off" },
},
],
};
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules
.env

#Hardhat files
cache
artifacts

typechain
5 changes: 5 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
node_modules
artifacts
cache
coverage*
gasReporterOutput.json
7 changes: 7 additions & 0 deletions .solhint.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"extends": "solhint:recommended",
"rules": {
"compiler-version": ["error", "^0.8.0"],
"func-visibility": ["warn", { "ignoreConstructors": true }]
}
}
1 change: 1 addition & 0 deletions .solhintignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node_modules
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Adventure Party

Summon/adventure multiple adventures at once!

Deploy instructions:
```
npm i
cp .env.template .env
# Edit .env
npx hardhat compile
npx hardhat test
# !!! Edit constructor_params.js file to choose which class IDs you want !!! The default is one of each class.
# Test the deploy tx
npx hardhat deploy
# Actually deploy
npx hardhat deploy --network fantom`
```

Afterwards navigate to your deployed contract on ftmscan and use adventureAll() to adventure your entire party!
1 change: 1 addition & 0 deletions constructor_params.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = [[1,2,3,4,5,6,7,8,9,10,11]];
31 changes: 31 additions & 0 deletions contracts/AdventureParty.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

import "./rarity.sol";
import "./Ownable.sol";

contract AdventureParty is Ownable {
uint public next_party;
rarity public Rarity = rarity(0xce761D788DF608BD21bdd59d6f4B54b2e27F25Bb);
uint[] public adventurers;

constructor(uint[] memory classes) {
Rarity.setApprovalForAll(msg.sender, true);
for (uint i = 0; i < classes.length; i++) {
adventurers.push(Rarity.next_summoner());
Rarity.summon(classes[i]);
}
}

function adventureAll() external {
for (uint i = 0; i < adventurers.length; i++) {
Rarity.adventure(adventurers[i]);
}
}

function levelUpAll() external {
for (uint i = 0; i < adventurers.length; i++) {
Rarity.level_up(adventurers[i]);
}
}
}
22 changes: 22 additions & 0 deletions contracts/Greeter.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;

import "hardhat/console.sol";

contract Greeter {
string private greeting;

constructor(string memory _greeting) {
console.log("Deploying a Greeter with greeting:", _greeting);
greeting = _greeting;
}

function greet() public view returns (string memory) {
return greeting;
}

function setGreeting(string memory _greeting) public {
console.log("Changing greeting from '%s' to '%s'", greeting, _greeting);
greeting = _greeting;
}
}
89 changes: 89 additions & 0 deletions contracts/Ownable.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}

function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}

/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;

event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}

/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}

/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}

/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}

/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}

function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
Loading

0 comments on commit 41de47d

Please sign in to comment.