Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/junon-common/protocol/enum.proto
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ enum BuildingType {
MiasmaGate = 272;
CabbageSeed = 273;
Cabbage = 274;
SprayGun = 275;
}

enum TerrainType {
Expand Down Expand Up @@ -316,6 +317,7 @@ enum ProjectileType {
BlueLaser = 26;
Dynamite = 27;
MiningExplosion = 28;
WaterCloud = 29;
}

enum MobStatus {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
22 changes: 22 additions & 0 deletions packages/junon-io/client/src/entities/equipments/hand/spray_gun.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const RangeEquipment = require("./range_equipment")
const Constants = require("./../../../../../common/constants.json")
const Protocol = require("./../../../../../common/util/protocol")
const ClientHelper = require("./../../../util/client_helper")

class SprayGun extends RangeEquipment {

getSpritePath() {
return 'spray_gun.png'
}

getType() {
return Protocol.definition().BuildingType.SprayGun
}

getConstantsTable() {
return "Equipments.SprayGun"
}

}

module.exports = SprayGun
1 change: 1 addition & 0 deletions packages/junon-io/client/src/entities/equipments/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Equipments.Shotgun = require("./hand/shotgun")
Equipments.AssaultRifle = require("./hand/assault_rifle")
Equipments.Scar17 = require("./hand/scar_17")
Equipments.FlameThrower = require("./hand/flame_thrower")
Equipments.SprayGun = require("./hand/spray_gun")
Equipments.PlasmaGun = require("./hand/plasma_gun")
Equipments.RocketLauncher = require("./hand/rocket_launcher")
Equipments.SquidStaff = require("./hand/squid_staff")
Expand Down
2 changes: 1 addition & 1 deletion packages/junon-io/client/src/entities/game.js
Original file line number Diff line number Diff line change
Expand Up @@ -1412,7 +1412,7 @@ class Game {
// PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST


let tempAssets = ['displacement_map.png', 'squid_lord_heart.png', 'squid_staff.png', 'fries.png', 'energy_drink.png', 'alien_juice.png', 'rocket_launcher.png', 'scar_17_by_px.png', 'bowl_by_px.png', 'potato_soup_by_px.png', 'miso_soup_by_px.png', 'slime_broth_by_px.png', 'bomber_turret_by_px.png', 'firebat.png', 'plasma_blade.png', 'raven.png', 'starberries.png', 'car.png', 'bricks_texture.png', 'checker_texture.png', 'noise_texture.png', 'x_texture.png', 'xchecker_texture.png', 'nihonshu.png', 'pumpkin.png', 'pumpkin_plant.png', 'pumpkin_seed.png', 'rice.png', 'rice_plant.png', 'rice_seed.png', 'fish.png', 'nigiri.png', 'katana_reskin.png', 'pumpkin_pie.png', 'imperial_special_forces_armor.png', 'deconstructor.png', 'blue_laser.png', 'keypad_door.png', 'keypad_door_lower.png', 'keypad_door_upper.png', 'unbreakable_wall.png', 'sapper.png', 'sapper_corpse.png', 'dynamite.png', 'miasma_gate.png', "solid_texture2.png", "simplex_texture.png", "cabbage_seed.png", "cabbage_plant.png", "cabbage.png", "3dwall-0.png", "3dwall-1.png", "3dwall-2.png", "3dwall-3.png", "3dwall-4.png", "3dwall-5.png", "3dwall-6.png", "3dwall-7.png", "3dwall-8.png", "3dwall-9.png", "3dwall-10.png", "3dwall-11.png", "3dwall-12.png", "3dwall-13.png"]
let tempAssets = ['displacement_map.png', 'squid_lord_heart.png', 'squid_staff.png', 'fries.png', 'energy_drink.png', 'alien_juice.png', 'rocket_launcher.png', 'scar_17_by_px.png', 'bowl_by_px.png', 'potato_soup_by_px.png', 'miso_soup_by_px.png', 'slime_broth_by_px.png', 'bomber_turret_by_px.png', 'firebat.png', 'plasma_blade.png', 'raven.png', 'starberries.png', 'car.png', 'bricks_texture.png', 'checker_texture.png', 'noise_texture.png', 'x_texture.png', 'xchecker_texture.png', 'nihonshu.png', 'pumpkin.png', 'pumpkin_plant.png', 'pumpkin_seed.png', 'rice.png', 'rice_plant.png', 'rice_seed.png', 'fish.png', 'nigiri.png', 'katana_reskin.png', 'pumpkin_pie.png', 'imperial_special_forces_armor.png', 'deconstructor.png', 'blue_laser.png', 'keypad_door.png', 'keypad_door_lower.png', 'keypad_door_upper.png', 'unbreakable_wall.png', 'sapper.png', 'sapper_corpse.png', 'dynamite.png', 'miasma_gate.png', "solid_texture2.png", "simplex_texture.png", "cabbage_seed.png", "cabbage_plant.png", "cabbage.png", "3dwall-0.png", "3dwall-1.png", "3dwall-2.png", "3dwall-3.png", "3dwall-4.png", "3dwall-5.png", "3dwall-6.png", "3dwall-7.png", "3dwall-8.png", "3dwall-9.png", "3dwall-10.png", "3dwall-11.png", "3dwall-12.png", "3dwall-13.png","spray_gun.png"]
tempAssets.forEach((asset) => {
PIXI.Texture.addToCache(PIXI.Texture.fromImage('/assets/images/' + asset), asset)
})
Expand Down
1 change: 1 addition & 0 deletions packages/junon-io/client/src/entities/projectiles/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Projectiles.ShotgunBullet = require("./shotgun_bullet")
Projectiles.RifleBullet = require("./rifle_bullet")
Projectiles.CarbonGas = require("./carbon_gas")
Projectiles.DisinfectingGas = require("./disinfecting_gas")
Projectiles.WaterCloud = require("./water_cloud")
Projectiles.Flame = require("./flame")
Projectiles.AcidSpit = require("./acid_spit")
Projectiles.Spike = require("./spike")
Expand Down
81 changes: 81 additions & 0 deletions packages/junon-io/client/src/entities/projectiles/water_cloud.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
const BaseProjectile = require("./base_projectile")
const Constants = require("../../../../common/constants.json")
const Protocol = require("../../../../common/util/protocol")
const ClientHelper = require("../../util/client_helper")

class WaterCloud extends BaseProjectile {

constructor(game, data) {
super(game, data)

this.MAX_WIDTH_EXPANSION = this.getConstants().maxRadialExpansion * 2
}

onProjectileConstructed() {
this.game.playSound("gas_release", { skipIfPlaying: true })
}

reset() {
super.reset()
this.sprite.width = 0
}

setAttributes(data) {
super.setAttributes(data)

data.w = data.width
data.h = data.width

this.origWidth = data.width

this.minAlpha = 0.5
this.sprite.alpha = this.minAlpha
this.sprite.tint = ClientHelper.getRandomColorInRange("#04bace", "#41d9ff", Math.random(), { shouldReturnInteger: true })
}

syncWithServer(data) {
super.syncWithServer(data)

this.instructToExpand(data.width)
}

interpolate(lastFrameTime) {
this.interpolateExpansion(lastFrameTime)
}

interpolateExpansion(lastFrameTime) {
this.sprite.interpolateExpansion(lastFrameTime)
}

getSpritePath() {
return 'white_gas.png'
}

// remove() {
// // let animation finish before removing..
//
// let alpha = { alpha: this.sprite.alpha }
// let vanish = new TWEEN.Tween(alpha)
// .to({ alpha: 0 }, 3000)
// .easing(TWEEN.Easing.Quadratic.Out) // Use an easing function to make the animation smooth.
// .onUpdate(() => {
// this.sprite.alpha = alpha.alpha
// })
// .onComplete(() => {
// this.removeSelfAndChildrens(this.sprite)
// })
// .start()
//
// }
//
getType() {
return Protocol.definition().ProjectileType.WaterCloud
}

getConstantsTable() {
return "Projectiles.WaterCloud"
}

}

module.exports = WaterCloud
33 changes: 32 additions & 1 deletion packages/junon-io/common/constants.json
Original file line number Diff line number Diff line change
Expand Up @@ -1809,7 +1809,7 @@
"CabbageSeed": {
"parent": "Crops.BaseSeed",
"cost": {
"gold": 30
"gold": 150
},
"yield": "Cabbage",
"description": "Plant on soil to grow cabbage"
Expand Down Expand Up @@ -2066,6 +2066,15 @@
"speed": 0,
"categories": {"elemental":true,"fire":true}
},
"WaterCloud": {
"width": 32,
"height": 32,
"minWidth": 32,
"maxWidth": 64,
"maxRadialExpansion": 16,
"damage": 2,
"speed": 0
},
"IonBeam": {
"width": 512,
"height": 32,
Expand Down Expand Up @@ -3681,6 +3690,28 @@
},
"description": "Shoots flames"
},
"SprayGun": {
"parent": "Equipments.BaseEquipment",
"isWeapon": true,
"isFireArm": true,
"shouldNotRemoveOnBreak": true,
"cost": {
"gold": 450
},
"stats": {
"range": 200,
"damage": 2,
"usageCapacity": 30,
"fuelConsumption": 80,
"reload": 200
},
"requirements": {
"CopperBar": 30,
"IronBar": 30,
"WaterBottle": 1
},
"description": "Uses combustion to water crops efficiently. Can also put out crops on fires."
},
"SquidStaff": {
"parent": "Equipments.BaseEquipment",
"isWeapon": true,
Expand Down
2 changes: 1 addition & 1 deletion packages/junon-io/server/entities/buildings/fuel_tank.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class FuelTank extends BaseBuilding {
interact(user) {
let handEquipment = user.getHandEquipment()

let refueableEquipments = [Protocol.definition().BuildingType.Lighter, Protocol.definition().BuildingType.FlameThrower]
let refueableEquipments = [Protocol.definition().BuildingType.Lighter, Protocol.definition().BuildingType.FlameThrower, Protocol.definition().BuildingType.SprayGun]

if (handEquipment && refueableEquipments.indexOf(handEquipment.getType()) !== -1) {
let amountDrained = this.consumeResource("fuel", handEquipment.getResourceConsumption("fuel"))
Expand Down
65 changes: 65 additions & 0 deletions packages/junon-io/server/entities/equipments/hand/spray_gun.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
const HandEquipment = require("./hand_equipment")

const Protocol = require('../../../../common/util/protocol')
const Constants = require("./../../../../common/constants.json")
const Projectiles = require("./../../projectiles/index")


class SprayGun extends HandEquipment {
use(player, targetEntity) {
if (this.isDepleted() && !player.hasInfiniteAmmo()) {
let owner = this.getOwner()
if (owner.isPlayer()) {
owner.showError("Needs Fuel")
}

return
}

super.use(player, targetEntity)

let distance = Constants.tileSize

let longestPoint = Math.floor(this.getRange() / Constants.tileSize) - 1
longestPoint = Math.max(1, longestPoint)
let distanceMultipliers = Array(longestPoint).fill().map((element, index) => index + 1)

// let distanceMultipliers = [2, 3, 4, 5]
let points = distanceMultipliers.map((multiplier) => {
return player.game.pointFromDistance(player.getX(), player.getY(), distance * multiplier, player.getRadAngle())
})

let minWidth = Constants.Projectiles.WaterCloud.minWidth
let maxWidth = Constants.Projectiles.WaterCloud.maxWidth

for (var i = 0; i < points.length; i++) {
let point = points[i]
let width = Math.min(maxWidth, minWidth + (i * 6))

if (!this.isObstructed(player, point)) {
Projectiles.WaterCloud.build({
weapon: this,
source: { x: point[0], y: point[1] },
destination: { x: point[0], y: point[1] },
w: width,
h: width
})
}
}

}

onEquipmentConstructed() {
this.setUsage(0)
}

getType() {
return Protocol.definition().BuildingType.SprayGun
}

getConstantsTable() {
return "Equipments.SprayGun"
}
}

module.exports = SprayGun
1 change: 1 addition & 0 deletions packages/junon-io/server/entities/equipments/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Equipments.PlasmaBlade = require("./hand/plasma_blade")
Equipments.FireExtinguisher = require("./hand/fire_extinguisher")
Equipments.Syringe = require("./hand/syringe")
Equipments.FlameThrower = require("./hand/flame_thrower")
Equipments.SprayGun = require("./hand/spray_gun")
Equipments.Mop = require("./hand/mop")
Equipments.Bottle = require("./hand/bottle")
Equipments.BloodBottle = require("./hand/blood_bottle")
Expand Down
1 change: 1 addition & 0 deletions packages/junon-io/server/entities/projectiles/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Projectiles.ShotgunBullet = require("./shotgun_bullet")
Projectiles.RifleBullet = require("./rifle_bullet")
Projectiles.CarbonGas = require("./carbon_gas")
Projectiles.DisinfectingGas = require("./disinfecting_gas")
Projectiles.WaterCloud = require("./water_cloud")
Projectiles.Flame = require("./flame")
Projectiles.AcidSpit = require("./acid_spit")
Projectiles.Spike = require("./spike")
Expand Down
Loading