opy-rs 0.3.6

Standalone OverPy-compatible .opy implementation with parsing, tooling, and bounded Workshop compilation.
Documentation
globalvar g
playervar p

rule "upstream keyword names":
    @Event eachPlayer
    g = getObjectivePosition(number=0)
    g = angleBetweenVectors(Vector.UP, vector=Vector.UP)
    g = directionTowards(startPos=Vector.UP, endPos=Vector.UP)
    g = min(3, value=3)
    g = max(3, value=3)
    g = dotProduct(Vector.UP, value=Vector.UP)
    g = distance(startPos=Vector.UP, endPos=Vector.UP)
    g = vectorTowards(startPos=eventPlayer.getPosition(), endPos=Vector.UP)
    g = strContains(string="s", substring="s")
    g = heroIcon(value=Hero.DVA)
    g = evalOnce(inputValue=3)
    g = sinDeg(angle=3)
    g = cosDeg(angle=3)
    g = sin(angle=3)
    g = cos(angle=3)
    g = localVector(worldVector=Vector.UP, relativePlayer=eventPlayer, transformation=Transform.ROTATION)
    g = eventPlayer.getHealthOfType(health=Health.ARMOR)
    g = eventPlayer.getMaxHealthOfType(health=Health.ARMOR)
    g = eventPlayer.getAbilityResource(button=Button.PRIMARY_FIRE)
    g = eventPlayer.getHeroStatistic(Hero.DVA, stat=HeroStat.HEALING_DEALT)
    g = "s".replace(pattern="s", replacement="s")
    g = [1, 2].filter(lambda x: x > 0)
    setSlowMotion(speedPercent=3)
    destroyEffect(entity=eventPlayer)
    destroyIcon(entity=eventPlayer)
    startForcingSpawn(Team.ALL, room=3)
    stopHealingOverTime(healOverTimeId=getLastHealingOverTimeId())
    stopHoT(healOverTimeId=getLastHealingOverTimeId())
    stopHealingModification(healingModificationId=getLastHealingModification())
    eventPlayer.attachTo(eventPlayer, offset=Vector.UP)
    eventPlayer.startDamageOverTime(damager=eventPlayer, duration=3, damagePerSecond=3)
    eventPlayer.startHealingOverTime(healer=eventPlayer, duration=3, healingPerSecond=3)
    eventPlayer.startForcingPosition(Vector.UP, reevaluate=true)
    eventPlayer.startScalingSize(3, reevaluation=true)
    eventPlayer.startScalingBarriers(3, reevaluation=true)
    eventPlayer.startForcingThrottle(minForward=3, maxForward=3, minBackward=3, maxBackward=3, minSideways=3, maxSideways=3)
    eventPlayer.startModifyingVoicelinePitch(pitchScalar=3, reevaluation=true)
    eventPlayer.setAbilityCharge(Button.PRIMARY_FIRE, chargeCount=3)
    eventPlayer.setProjectileSpeed(projectileSpeedPercent=3)
    eventPlayer.setProjectileGravity(projectileGravityPercent=3)
    eventPlayer.setHealingDealt(healingDealtPercent=3)
    eventPlayer.setHealingReceived(healingReceivedPercent=3)
    eventPlayer.setKnockbackReceived(knockbackReceivedPercent=3)
    eventPlayer.setKnockbackDealt(knockbackDealtPercent=3)
    eventPlayer.setAllowedHeroes(hero=Hero.DVA)
    eventPlayer.addHealthPool(Health.ARMOR, maxHealth=3, isRecoverable=true, reevaluation=true)
    eventPlayer.setAbilityResource(button=Button.PRIMARY_FIRE, resourcePercent=3)
    eventPlayer.setEnvironmentalKillCreditor(environmentCreditPlayer=eventPlayer)
    eventPlayer.communicate(type=Comms.ACKNOWLEDGE)