Paste #42082: Untitled Paste

Date: 2017/05/20 22:20:21 UTC-07:00
Type: Denizen Script

View Raw Paste Download This Paste
Copy Link


on entity explosion primes:
    - determine passively cancelled
    - if <context.entity.entity_type.contains_text[TNT]> && <context.entity.has_flag[id]> {
      - define player <context.entity.flag[id]>
      - flag server explode:<def[player]>
      - explode power:<s@Config.yaml_key[classvariables.Demoman.tntpower]> <context.entity.location>
      - flag server explode:!
      }
    on player clicks with DemomanFirework:
    - if <queue.list.filter[script.name.is[==].to[Ingame]].is_empty> {
      - determine cancelled
      }
    - shoot primed_tnt[fuse_ticks=<s@Config.yaml_key[classvariables.Demoman.tntfuse]>] o:<player> speed:<s@Config.yaml_key[classvariables.Demoman.tntspeed]> save:tnt
    - flag <entry[tnt].shot_entities.get[1]> id:<player>
    - take i@DemomanFirework quantity:1 from:<player.inventory>

    on player clicks with DemomanMIRV:
    - if <queue.list.filter[script.name.is[==].to[Ingame]].is_empty> {
      - determine cancelled
      }
    - shoot small_fireball o:<player> gravity:0 height:0 speed:<s@Config.yaml_key[classvariables.Demoman.MIRVFireballVelocity]> script:MIRV save:fireball
    - playsound <player.location> sound:ENTITY_GHAST_SHOOT volume:2 pitch:0.5
    - flag <entry[fireball].shot_entities.get[1]> id:<player>
    - take i@DemomanMIRV quantity:1 from:<player.inventory>

MIRV:
  type: task
  debug: true
  script:
  - define player <def[last_entity].flag[id]>
  - ^repeat 8:
    - spawn primed_tnt[fuse_ticks=<s@Config.yaml_key[classvariables.Demoman.tntfuse]>;velocity=<s@Config.yaml_key[classvariables.Demoman.MIRVVelocities.<def[value]>].as_location.mul[<s@Config.yaml_key[classvariables.Demoman.MIRVTNTSpeed]>]>] <def[location]> save:<def[player]>
    - flag <entry[<def[player]>].spawned_entities.get[1]> id:<def[player]>
    on entity explosion primes:
    - determine passively cancelled
    - if <context.entity.entity_type.contains_text[TNT]> && <context.entity.has_flag[id]> {
      - define player <context.entity.flag[id]>
      - flag server explode:<def[player]>
      - explode power:<s@Config.yaml_key[classvariables.Demoman.tntpower]> <context.entity.location>
      - flag server explode:!
      }

    on player damaged:
    - if <queue.list.filter[script.name.is[==].to[Ingame]].is_empty> {
      - determine cancelled
      }
    - if <context.entity.has_flag[respawn]> {
      - determine passively cancelled
      - narrate "<&c>This player is invincible after respawning!" targets:<context.damager>
      - queue clear
      }
    - if <context.damager.matches[null]> && !<context.cause.matches[block_explosion]> {
        - queue clear
        }
    - if <context.cause> == block_explosion {
      - flag <context.entity> pvp:<server.flag[explode].as_player||null> duration:7s
      - flag <server.flag[explode].as_player> pvp:<context.entity> duration:7s
      - queue clear
      }
    - if <context.damager.entity_type> == PLAYER {
      - flag <context.entity> pvp:<context.damager> duration:7s
      - flag <context.damager> pvp:<context.entity> duration:7s
      - queue clear
      }
    - flag <context.entity> pvp:<context.damager.flag[id]> duration:7s
    - flag <context.damager.flag[id].as_player> pvp:<context.entity> duration:7s

    on player killed:
    - if <queue.list.filter[script.name.is[==].to[Ingame]].is_empty> {
      - determine cancelled
      }
    - determine passively cancelled
    - adjust <player> fall_distance:0
    - teleport <player> <s@Config.yaml_key[spawns.<server.flag[spawns].as_list.find[<player>]>]>
    - heal <player>
    - ^inject s@Durability instantly
    - if <player.has_flag[pvp]> {
      - define enemy <player.flag[pvp].as_player>
      - ^inject s@DeathMessage instantly
      - flag <def[enemy]> alltimekills:+:1
      - repeat 3 {
        - if <s@Config.yaml_key[classunlock.Swordsman.<def[value]>].is[EQUALS].to[<def[enemy].flag[alltimekills]>]> {
          - narrate "<&b><&l>You<&sq>ve just unlocked the <&3><&l>Swordsman Level <def[value]> <&b><&l>class!" targets:<def[enemy]>
          }
        }
      - flag <def[enemy]> kills:+:1
      - flag <def[enemy]> xp:+:<s@Config.yaml_key[XPValues.kill]>
      - actionbar targets:<def[enemy]> "<&a>+<s@Config.yaml_key[XPValues.kill]> XP"
      - if <s@Config.list_keys[KillKitItems].contains[<def[enemy].flag[kills]>]> {
        - define items <s@Config.yaml_key[KillKitItems.<def[enemy].flag[kills]>.item].as_list>
        - give <def[items].get[<util.random.int[1].to[<def[items].size>]>]> quantity:<util.random.int[<s@Config.yaml_key[KillKitItems.<def[enemy].flag[kills]>.minq]>].to[<s@Config.yaml_key[KillKitItems.<def[enemy].flag[kills]>.maxq]>]> to:<def[enemy].inventory>
        }
      }
      else {
      - announce "<s@Config.yaml_key[suicidemessages.<context.cause>.<util.random.int[1].to[<s@Config.list_keys[deathmessages.<context.cause>].size>]>]>"
      }
    - flag player alltimedeaths:+:1
    - flag player solodeaths:+:1
    - flag player respawn duration:<s@Config.yaml_key[respawninvincibility]>