@tool extends Weapon func update(to: int, origin: Dictionary, _entity: EntityBase): origin["atk"] += 4 * to * soulLevel origin["rate1"] *= soulLevel origin["rate2"] *= soulLevel origin["rate3"] *= soulLevel return origin func checkAttack(entity: EntityBase) -> bool: return len(entity.getOrCreateCycleTimer("parry", 2000, 100).bullets) > 0 func attack(entity: EntityBase): var parryCounter = entity.getOrCreateCycleTimer("parry", 2000, 100) for bullet in BulletBase.generate( ComponentManager.getBullet("Wuwei"), entity, entity.position, entity.position.angle_to_point(get_global_mouse_position()) ): if bullet is WuweiBullet: bullet.baseDamage = readStore("atk") bullet.baseDamage *= max(-0.99, readStore("rate2") * ((1.0 - entity.fields[FieldStore.Entity.ATTACK_SPEED]) * 100)) + 1 bullet.baseDamage *= max(-0.99, readStore("rate1") * (entity.fields[FieldStore.Entity.MAX_HEALTH] - entity.health)) + 1 var atkAll = 0 for bulle in parryCounter.bullets: if bulle is ParryBallBullet: atkAll += bulle.atk bullet.baseDamage *= max(-0.99, readStore("rate3") * atkAll) + 1 for bulle in parryCounter.bullets: if bulle is ParryBallBullet: bulle.tryDestroy() parryCounter.forceFilter() return true