Paste #4389: The ABBA Caving Game - Work in Progress

Date: 2014/05/15 17:54:11 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


##################################
# VintageBeef's ABBA Caving Game #
##################################
#        WORK IN PROGRESS        #
##################################

ABBACaveGame:
    type: world
    events:

#################
# ABBA Commands #
#################

      on Abba command:
      - if <player.is_op> {
        - narrate "AbbaAdd playername - adds player to abbalist"
        - narrate "AbbaRemove playername - removes player from abbalist"
        - narrate "AbbaList - shows all the players in the abbalist"
        - narrate "AbbaStart - Starts Abba (2mins)"
        - narrate "AbbaStop - Stops Abba (before 2min flag)"
        }
      - determine fulfilled

      on AbbaAdd command:
      - if <player.is_op> {
        - flag server AbbaPlayers:->:<context.raw_args>
        - narrate "<context.raw_args> now added to ABBA Player List"
        - narrate "You have been added in to ABBA by <player.name>" target:<context.raw_args>
        }
      - determine fulfilled

      on AbbaList command:
      - if <player.is_op> {
        - narrate "Players in the AbbaPlayers list<&co>"
        - foreach <server.flag[AbbaPlayers].as_list> {
          - narrate %value%
          }
        }
      - determine fulfilled

      on AbbaRemove command:
      - if <player.is_op> {
        - flag server AbbaPlayers:<-:<context.raw_args>
        - narrate "You have been removed from ABBA by <player.name>" target:<context.raw_args>
        }
      - determine fulfilled

      on AbbaStart command:
      - if <player.is_op> {
        - if <server.flag[AbbaPlayers].size> >= 2 {
          - foreach <server.flag[AbbaPlayers].as_list> {
            - narrate "You are an ABBA Player, %value%. You have 2 mins to mine!" target:%value%
            }
          - ^flag server AbbaInProgress duration:2m
          - run AbbaGameOn
          } else {
          - narrate "Not enough players!"
          }
        }
      - determine fulfilled

      on AbbaStop command:
      - if <player.is_op> {
        - flag server AbbaInProgress:!
        }
      - determine fulfilled

      on AbbaFlag command:
      - if <player.is_op> {
        - if <server.flag[AbbaInProgress]> {
          - flag server AbbaInProgress:!
          - narrate "AbbaInProgress flag De-Activated"
          } else {
          - flag server AbbaInProgress
          - narrate "AbbaInProgress flag Activated"
          }
        }
      - determine fulfilled

######################
# Block Break Events #
######################

      on player breaks m@emerald_ore:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "The block is magically transported to the chest!!"
          - inventory add d:<in@location[holder=l@48,65,146,IslandWorld]> o:<i@emerald_ore>
          - determine nothing
          }
        }

      on player breaks m@diamond_ore:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "The block is magically transported to the chest!!"
          - inventory add d:<in@location[holder=l@48,65,146,IslandWorld]> o:<i@diamond_ore>
          - determine nothing
          }
        }

      on player breaks m@gold_ore:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "The block is magically transported to the chest!!"
          - inventory add d:<in@location[holder=l@48,65,146,IslandWorld]> o:<i@gold_ore>
          - determine nothing
          }
        }

      on player breaks <m@redstone_ore>:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "The block is magically transported to the chest!!"
          - inventory add d:<in@location[holder=l@48,65,146,IslandWorld]> o:<i@redstone_ore>
          - determine nothing
          }
        }

      on player breaks m@lapis_ore:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "The block is magically transported to the chest!!"
          - inventory add d:<in@location[holder=l@48,65,146,IslandWorld]> o:<i@lapis_ore>
          - determine nothing
          }
        }

      on player breaks m@stone:
      - if <server.flag[AbbaInProgress]> {
        - if <flag.g:AbbaPlayers.aslist> contains <player.name> {
          - narrate "You are not allowed to break Stone!!"
          - determine cancelled
          }
        }

###################
# Abba Game Timer #
###################

AbbaGameOn:
    type: task
    script:
    - wait 60
    - foreach <server.flag[AbbaPlayers].as_list> {
      - narrate "ABBA<&co> You have 1 mins remaining!" target:%value%
      }
    - wait 60
    - foreach <server.flag[AbbaPlayers].as_list> {
      - narrate "ABBA<&co> Tools down, game over!" target:%value%
      }