Paste #19593: Untitled Paste

Date: 2015/08/21 11:48:09 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


"ArenaManager":
  type: assignment
  actions:
    on assignment:
    - trigger name:click toggle:true
  interact scripts:
  - 1 ArenaManager1
"ArenaManager1":
  type: interact
  steps:
    1:
      click trigger:
        script:
        - ^narrate "<green>Hello <player.name>. Care to que up for ranked arenas?"
        - ^inventory open d:in@ArenaManagerMenu
"ArenaManagerMenu":
  type: inventory
  size: 27
  title: Arenas
  slots:
  - "[] [] [] [i@JoinArena] [] [] [] [] []"
  - "[] [] [] [] [] [] [] [] []"
  - "[] [] [] [] [] [] [] [] []"
"JoinArena":
  type: item
  material: 267
  display name: <red>Join
  lore:
  - <green>Click to join the Arena.
  - <aqua>Note - Inventory must be empty.
"ArenaHandler":
  type: world
  events:
    on player quits:
    - ^if <player.has_flag[Player1]> {
      - ^if <player.has_flag[ArenaStarted]> {
        - run RatingCalculator
      }
      - wait 3
      - ^flag <player> arenalogout
      - ^flag <player> Player1:!
      - ^flag <player> ArenaSarted:!
    }
    - ^if <player.has_flag[Player2]> {
      - ^if <player.has_flag[ArenaStarted]> {
        - run RatingCalculator
      }
      - wait 3
      - ^flag <player> arenalogout
      - ^flag <player> Player2:!
      - ^flag <player> ArenaStarted:!
    }
    on player joins:
    - ^if <player.has_flag[arenalogout]> {
      - wait 3
      - ^inventory clear d:<player.inventory>
      - ^execute as_op "warp Arena <player.name>"
      - ^flag <player> arenalogout:!
      - ^narrate "<red>You have logged out in the arena and have been teleported back to the Arena Manager."
    }
    on player dies in pvparena1:
    - ^if <context.entity.has_flag[Player1]> {
      - ^if <context.damager.has_flag[Player2]> {
        - ^define P1rating <context.entity.flag[1v1Rating]>
        - ^define P2rating <context.damager.flag[1v1Rating]>
        - ^if <def[P2rating]> > <def[P1rating]> {
          - ^define rdiff <def[P1rating].sub[<def[P2rating]>]>
          - ^if <def[rdiff]> >= 100 {
            - ^if <def[rdiff]> <=300 {
              - ^flag <context.damager> 1v1Rating:+:13
              - ^narrate "<green>You have gained 13 rating!" targets:<context.damager>
              - ^narrate "<red>You have lost 7 rating!" targets:<context.entity>
              - ^flag <context.entity> 1v1Rating:-:7
            }
            - ^if <def[rdiff]> >= 301 {
              - ^if <def[rdiff]> <= 500 {
                - ^flag <context.damager> 1v1Rating:+:9
                - ^narrate "<green>You have gained 9 rating!" targets:<context.damager>
                - ^narrate "<red>You have lost 4 rating!" targets:<context.entity>
                - ^flag <context.entity> 1v1Rating:-:4
              }
              - ^if <def[rdiff]> >= 501 {
                - if <def[rdiff]> <= 800 {
                  - ^flag <context.damager> 1v1Rating:+:2
                  - ^narrate "<green>You have gained 2 rating!" targets:<context.damager>
                  - ^narrate "<red>You have lost 1 rating!" targets:<context.entity>
                  - ^flag <context.entity> 1v1Rating:-:1
                }
                - ^if <def[rdiff]> >=801 {
                  - ^narrate "<red>You're skill is too high to gain any rating from <context.entity.name>" targets:<context.damager>
                  - ^narrate "<green><context.damager.name>'s rating is too high. You did not lose any rating." targets:<context.entity>
                }
              }
            }
          }
          else {
            - ^flag <context.damager> 1v1Rating:+:15
            - ^narrate "<green>You have gained 15 rating!" targets:<context.damager>
            - ^narrate "<red>You have lost 9 rating!" targets:<context.entity>
            - ^flag <context.entity> 1v1Rating:-:9
          }
        }
        - ^if <def[P1rating]> > <def[P2rating]> {
          - ^define rdiff <def[P2rating].sub[<def[P1rating]>]>
          - ^if <def[rdiff]> >= 100 {
            - ^if <def[rdiff]> <=300 {
              - ^flag <context.damager> 1v1Rating:+:13
              - ^narrate "<green>You have gained 13 rating!" targets:<context.damager>
              - ^narrate "<red>You have lost 7 rating!" targets:<context.entity>
              - ^flag <context.entity> 1v1Rating:-:7
            }
            - ^if <def[rdiff]> >= 301 {
              - ^if <def[rdiff]> <= 500 {
                - ^flag <context.damager> 1v1Rating:+:9
                - ^narrate "<green>You have gained 9 rating!" targets:<context.damager>
                - ^narrate "<red>You have lost 4 rating!" targets:<context.entity>
                - ^flag <context.entity> 1v1Rating:-:4
              }
              - ^if <def[rdiff]> >= 501 {
                - if <def[rdiff]> <= 800 {
                  - ^flag <context.damager> 1v1Rating:+:2
                  - ^narrate "<green>You have gained 2 rating!" targets:<context.damager>
                  - ^narrate "<red>You have lost 1 rating!" targets:<context.entity>
                  - ^flag <context.entity> 1v1Rating:-:1
                }
                - ^if <def[rdiff]> >=801 {
                  - ^narrate "<red>You're skill is too high to gain any rating from <context.entity.name>" targets:<context.damager>
                  - ^narrate "<green><context.damager.name>'s rating is too high. You did not lose any rating." targets:<context.entity>
                }
              }
            }
          }
          else {
            - ^flag <context.damager> 1v1Rating:+:15
            - ^narrate "<green>You have gained 15 rating!" targets:<context.damager>
            - ^narrate "<red>You have lost 9 rating!" targets:<context.entity>
            - ^flag <context.entity> 1v1Rating:-:9
          }
        }
      }
    }
    - ^if <context.damager.has_flag[Player1]> {
      - ^if <context.entity.has_flag[Player2]> {
        - ^define P1rating <context.damager.flag[1v1Rating]>
        - ^define P2rating <context.entity.flag[1v1Rating]>
        - ^if <def[P2rating]> > <def[P1rating]> {
          - ^define rdiff <def[P1rating].sub[<def[P2rating]>]>
          - ^if <def[rdiff]> >= 100 {
            - ^if <def[rdiff]> <=300 {
              - ^flag <context.damager> 1v1Rating:+:13
              - ^narrate "<green>You have gained 13 rating!" targets:<context.damager>
              - ^narrate "<red>You have lost 7 rating!" targets:<context.entity>
              - ^flag <context.entity> 1v1Rating:-:7
            }
            - ^if <def[rdiff]> >= 301 {
              - ^if <def[rdiff]> <= 500 {
                - ^flag <context.damager> 1v1Rating:+:9
                - ^narrate "<green>You have gained 9 rating!" targets:<context.damager>
                - ^narrate "<red>You have lost 4 rating!" targets:<context.entity>
                - ^flag <context.entity> 1v1Rating:-:4
              }
              - ^if <def[rdiff]> >= 501 {
                - if <def[rdiff]> <= 800 {
                  - ^flag <context.damager> 1v1Rating:+:2
                  - ^narrate "<green>You have gained 2 rating!" targets:<context.damager>
                  - ^narrate "<red>You have lost 1 rating!" targets:<context.entity>
                  - ^flag <context.entity> 1v1Rating:-:1
                }
                - ^if <def[rdiff]> >=801 {
                  - ^narrate "<red>You're skill is too high to gain any rating from <context.entity.name>" targets:<context.damager>
                  - ^narrate "<green><context.damager.name>'s rating is too high. You did not lose any rating." targets:<context.entity>
                }
              }
            }
          }
          else {
            - ^flag <context.damager> 1v1Rating:+:15
            - ^narrate "<green>You have gained 15 rating!" targets:<context.damager>
            - ^narrate "<red>You have lost 9 rating!" targets:<context.entity>
            - ^flag <context.entity> 1v1Rating:-:9
          }
        }
        - ^if <def[P1rating]> > <def[P2rating]> {
          - ^define rdiff <def[P2rating].sub[<def[P1rating]>]>
          - ^if <def[rdiff]> >= 100 {
            - ^if <def[rdiff]> <=300 {
              - ^flag <context.damager> 1v1Rating:+:13
              - ^narrate "<green>You have gained 13 rating!" targets:<context.damager>
              - ^narrate "<red>You have lost 7 rating!" targets:<context.entity>
              - ^flag <context.entity> 1v1Rating:-:7
            }
            - ^if <def[rdiff]> >= 301 {
              - ^if <def[rdiff]> <= 500 {
                - ^flag <context.damager> 1v1Rating:+:9
                - ^narrate "<green>You have gained 9 rating!" targets:<context.damager>
                - ^narrate "<red>You have lost 4 rating!" targets:<context.entity>
                - ^flag <context.entity> 1v1Rating:-:4
              }
              - ^if <def[rdiff]> >= 501 {
                - if <def[rdiff]> <= 800 {
                  - ^flag <context.damager> 1v1Rating:+:2
                  - ^narrate "<green>You have gained 2 rating!" targets:<context.damager>
                  - ^narrate "<red>You have lost 1 rating!" targets:<context.entity>
                  - ^flag <context.entity> 1v1Rating:-:1
                }
                - ^if <def[rdiff]> >=801 {
                  - ^narrate "<red>You're skill is too high to gain any rating from <context.entity.name>" targets:<context.damager>
                  - ^narrate "<green><context.damager.name>'s rating is too high. You did not lose any rating." targets:<context.entity>
                }
              }
            }
          }
          else {
            - ^flag <context.damager> 1v1Rating:+:15
            - ^narrate "<green>You have gained 15 rating!" targets:<context.damager>
            - ^narrate "<red>You have lost 9 rating!" targets:<context.entity>
            - ^flag <context.entity> 1v1Rating:-:9
          }
        }
      }
    }
    - ^flag <context.entity> 1v1defeat
    - foreach <server.get_players_flagged[Player1]> {
      - ^flag <p@%value%> Player1:!
      - ^flag <p@%value%> ArenaStarted:!
      - ^inventory clear d:<%value%.inventory>
      - ^execute as_op "warp Arena <p@%value%.name>"
    }
    - foreach <server.get_players_flagged[Player2]> {
      - ^flag <p@%value%> Player2:!
      - ^flag <p@%value%> ArenaStarted:!
      - ^inventory clear d:<%value%.inventory>
      - ^execute as_op "warp Arena <p@%value%.name>"
    }
    - ^modifyblock <l@gate1> 101
    - ^modifyblock <l@gate2> 101
    - ^modifyblock <l@gate3> 101
    - ^modifyblock <l@gate4> 101
    on player respawns:
    - ^if <player.has_flag[1v1defeat]> {
      - ^inventory clear d:<player.inventory>
      - ^flag <player> 1v1defeat:!
      - determine l@Arena
    }
    on player clicks in ArenaManagerMenu:
    - determine cancelled
    on player drags in ArenaManagerMenu:
    - determine cancelled
    on player clicks JoinArena in ArenaManagerMenu:
    - ^if <server.get_players_flagged[Player1].size> >= 1 {
      - ^if <server.get_players_flagged[Player2].size> >=1 {
        - ^narrate "<red>Sorry, but the arena is full. Check back shortly!"
      else if <server.get_players_flagged[Player2].size> == 0 {
        - ^if <player.inventory.is_empty> {
          - ^flag <player> Player2
          - ^give 310
          - ^give 313
          - ^give 276
          - ^give 279
          - ^give 261
          - ^give 280
          - ^give 207
          - ^give 308
          - ^give 320 qty:5
          - ^if <player.has_flag[1v1Rating].not> {
            - flag <player> 1v1Rating:0
          }
          - ^execute as_npc "warp Player2 <player.name>"
          - ^run ArenaStartChecker
          - ^narrate "<green>You have joined the arena as <red>Player 2<green>. Please note: Arena is in beta and may have bugs. Please report any bugs to tardreted immediately."
        }
        else {
          - ^narrate "<red>You need to have an empty inventory to join the arena."
        }
      }
      }
    }
    else if <server.get_players_flagged[Player1]> == 0 {
      - ^if <player.inventory.is_empty> {
        - ^flag <player> Player1
        - ^give 310
        - ^give 313
        - ^give 276
        - ^give 279
        - ^give 261
        - ^give 280
        - ^give 207
        - ^give 308
        - ^give 320 qty:5
        - ^if <player.has_flag[1v1Rating].not> {
          - flag <player> 1v1Rating:0
        }
        - ^execute as_npc "warp Player2 <player.name>"
        - ^run ArenaStartChecker
        - ^narrate "<green>You have joined the arena as <red>Player 1<green>. Please note: Arena is in beta and may have bugs. Please report any bugs to tardreted immediately."
      }
      else {
        - ^narrate "<red>You need to have an empty inventory to join the arena."
      }
    }
"ArenaStartChecker":
  type: task
  script:
  - ^if <server.get_players_flagged[Player1].size> == 1 {
    - ^if <server.get_players_flagged[Player2].size> == 1 {
      - foreach <n@653.location.find.players.within[75].aslist> {
        - ^title title:<Gold>Arena Starting in subtitle:<dark_green>5 stay:1s targets:<p@%value%>
        - wait 1
        - ^title title:<Gold>Arena Starting in subtitle:<green>4 stay:1s targets:<p@%value%>
        - wait 1
        - ^title title:<Gold>Arena Starting in subtitle:<yellow>3 stay:1s targets:<p@%value%>
        - wait 1
        - ^title title:<Gold>Arena Starting in subtitle:<red>2 stay:1s targets:<p@%value%>
        - wait 1
        - ^title title:<Gold>Arena Starting in subtitle:<dark_red>1 stay:1s targets:<p@%value%>
        - wait 1
        - ^title title:<Gold>BEGIN stay:1s targets:<p@%value%>
        - ^if <p@%value%.has_flag[Player1]> || <p@%value%.has_flag[Player2]> {
          - ^flag <p@%value%> ArenaStarted
        }
      }
      - ^modifyblock <l@gate1> air
      - ^modifyblock <l@gate2> air
      - ^modifyblock <l@gate3> air
      - ^modifyblock <l@gate4> air
    }
    else {
      - wait 10
      - run ArenaStartChecker
    }
  }
leavearena:
  type: command
  name: leavearena
  usage: /leavearena
  description: leave arena
  script:
  - ^if <player.has_flag[Player1]> {
    - ^if <player.has_flag[ArenaStarted]> {
      - ^flag <player> Player1:!
      - ^flag <player> ArenaStarted:!
      - ^narrate "<green>You have left the arena and forfeited the fight."
      - ^narrate "<red>You have lost 5 rating."
      - ^flag <player> 1v1Rating:-:5
      - ^inventory clear d:<player.inventory>
      - ^execute as_op "warp Arena <player.name>"
    }
    else {
      - ^inventory clear d:<player.inventory>
      - ^flag <player> Player1:!
      - ^execute as_op "warp Arena <player.name>"
      - ^narrate "<green>You have left the arena.
    }
  }
  else if <player.has_flag[Player2]> {
    - ^if <player.has_flag[ArenaStarted]> {
      - ^flag <player> Player2:!
      - ^flag <player> ArenaStarted:!
      - ^narrate "<green>You have left the arena and forfeited the fight."
      - ^narrate "<red>You have lost 5 rating."
      - ^flag <player> 1v1Rating:-:5
      - ^inventory clear d:<player.inventory>
      - ^execute as_op "warp Arena <player.name>"
    }
    else {
      - ^inventory clear d:<player.inventory>
      - ^flag <player> Player2:!
      - ^execute as_op "warp Arena <player.name>"
      - ^narrate "<green>You have left the arena."
    }
  }
  else {
    - ^narrate "<red>You are not in the Arena."
  }