Alright, I wana make a new version of the Protector's Broadsword, and have the Alt. Ability "Empowerment" on it. The code is a big pile of gibberish to me compared to normal weapons. So far I have the weapon working in game, but the recipe won't show up in /admin mode. That I might be able to fix on my own. The main issue is the sword is invisible. I lengthened the blade in its image, but otherwise the sword should fit the Weapon Frame. All proper folders placed in "items/active/weapons/protectorate/protectoratebroadsword4" (I have a 1,2,and 3. So its 4.) Renamed all folders to avoid conflicting with other game files. protectoratebroadsword4.png (transparent) protectoratebroadswordfullbright2.png (transparent) default2.frames empowerment2.lua protectoratebroadsword4.activeitem protectoratebroadsword4.animation protectoratebroadsword4.lua Anyone know whats up? Code: require "/scripts/util.lua" require "/scripts/vec2.lua" require "/items/active/weapons/weapon.lua" function init() animator.setGlobalTag("paletteSwaps", config.getParameter("paletteSwaps", "")) animator.setGlobalTag("directives", "") animator.setGlobalTag("bladeDirectives", "") self.weapon = Weapon:new() self.weapon:addTransformationGroup("weapon", {0,0}, util.toRadians(config.getParameter("baseWeaponRotation", 0))) self.weapon:addTransformationGroup("swoosh", {0,0}, math.pi/2) self.primaryAbility = getPrimaryAbility() self.weapon:addAbility(self.primaryAbility) self.altAbility = getAltAbility() self.weapon:addAbility(self.altAbility) self.weapon:init() self.inactiveBaseDps = config.getParameter("inactiveBaseDps") self.activeBaseDps = config.getParameter("activeBaseDps") self.active = false animator.setAnimationState("sword", "inactive") self.primaryAbility.animKeyPrefix = "inactive" self.primaryAbility.baseDps = self.inactiveBaseDps self.primaryAbility:computeDamageAndCooldowns() end function update(dt, fireMode, shiftHeld) self.weapon:update(dt, fireMode, shiftHeld) setActive(self.altAbility.active) end function uninit() self.weapon:uninit() end function setActive(active) if self.active ~= active then self.active = active if self.active then animator.setAnimationState("sword", "extend") self.primaryAbility.animKeyPrefix = "active" self.primaryAbility.baseDps = self.activeBaseDps self.primaryAbility:computeDamageAndCooldowns() else animator.setAnimationState("sword", "retract") self.primaryAbility.animKeyPrefix = "inactive" self.primaryAbility.baseDps = self.inactiveBaseDps self.primaryAbility:computeDamageAndCooldowns() end end end Code: empowerment2 = WeaponAbility:new() function empowerment2:init() self.cooldownTimer = self.cooldownTime self.active = false end function empowerment2:update(dt, fireMode, shiftHeld) WeaponAbility.update(self, dt, fireMode, shiftHeld) self.cooldownTimer = math.max(0, self.cooldownTimer - self.dt) if self.active and not status.overConsumeResource("energy", self.energyPerSecond * self.dt) then self.active = false end if fireMode == "alt" and not self.weapon.currentAbility and self.cooldownTimer == 0 and not status.resourceLocked("energy") then if self.active then self:setState(self.windup) else self:setState(self.empower) end end end function empowerment2:empower() self.weapon:setStance(self.stances.empower) util.wait(self.stances.empower.durationBefore) animator.playSound("empower") self.active = true util.wait(self.stances.empower.durationAfter) end function empowerment2:windup() self.weapon:setStance(self.stances.windup) self.weapon:updateAim() util.wait(self.stances.windup.duration) self:setState(self.fire) end function empowerment2:fire() self.weapon:setStance(self.stances.fire) self.weapon:updateAim() local position = vec2.add(mcontroller.position(), {self.projectileOffset[1] * mcontroller.facingDirection(), self.projectileOffset[2]}) local params = { powerMultiplier = activeItem.ownerPowerMultiplier(), power = self:damageAmount() } world.spawnProjectile(self.projectileType, position, activeItem.ownerEntityId(), self:aimVector(), false, params) animator.playSound("slash") status.overConsumeResource("energy", status.resourceMax("energy")) self.active = false util.wait(self.stances.fire.duration) self.cooldownTimer = self.cooldownTime end function empowerment2:uninit() end function empowerment2:aimVector() return {mcontroller.facingDirection(), 0} end function empowerment2:damageAmount() return self.baseDamage * config.getParameter("damageLevelMultiplier") end Code: { "itemName" : "protectoratebroadsword4", "price" : 9999, "level" : 7, "maxStack" : 1, "rarity" : "Legendary", "description" : "An upgraded, powerful experimental weapon designed by the Terrene Protectorate for their Elite Officers.", "shortdescription" : "Protector's Elitesword", "tooltipKind" : "sword", "category" : "broadsword", "twoHanded" : true, "itemTags" : ["weapon","melee","broadsword"], "inventoryIcon" : "protectoratebroadsword4.png:inactive", "animation" : "/items/active/weapons/protectorate/protectoratebroadsword4/protectoratebroadsword4.animation", "animationParts" : { "sword" : "protectoratebroadsword4.png", "swordfullbright" : "protectoratebroadsword4fullbright2.png" }, "animationCustom" : { }, "scripts" : ["/items/active/weapons/protectorate/protectoratebroadsword4/protectoratebroadsword4.lua"], "elementalType" : "physical", "primaryAbilityType" : "broadswordcombo", "primaryAbility" : { "fireTime" : 0.45, "baseDps" : 15, "animKeyPrefix" : "inactive" }, "inactiveBaseDps" : 10, "activeBaseDps" : 13, "altAbility" : { "name" : "empowerment2", "type" : "empowerment2", "scripts" : ["/items/active/weapons/protectorate/protectoratebroadsword4/empowerment2.lua"], "class" : "empowerment2", "energyPerSecond" : 15, "projectileOffset" : [1, 0], "projectileType" : "energytravelingswoosh", "baseDamage" : 16, "cooldownTime" : 1.0, "stances" : { "empower" : { "durationBefore" : 0.2, "durationAfter" : 0.5, "armRotation" : 90, "weaponRotation" : -90, "twoHanded" : true, "weaponOffset" : [0.5, -0.375], "allowRotate" : false, "allowFlip" : false }, "windup" : { "duration" : 0.25, "armRotation" : 70, "weaponRotation" : 0, "twoHanded" : true, "allowRotate" : false, "allowFlip" : false }, "fire" : { "duration" : 0.4, "armRotation" : -45, "weaponRotation" : -55, "twoHanded" : true, "allowRotate" : false, "allowFlip" : false } } }, "builder" : "/items/buildscripts/buildunrandweapon.lua" } Code: { "globalTagdefaults" : { "paletteSwaps" : "" }, "animatedParts" : { "stateTypes" : { "swoosh" : { "default" : "idle", "states" : { "idle" : {}, "inactivefire" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "inactivefire2" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "inactivefire3" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire2" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire3" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" } } }, "sword" : { "default" : "inactive", "states" : { "inactive" : { "properties" : { "lightsOff" : ["glow"], "particleEmittersOff" : ["blade"] } }, "extend" : { "frames" : 4, "cycle" : 0.2, "mode" : "transition", "transition" : "active", "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "immediateSound" : "/sfx/tools/energypickaxe_start.ogg" } }, "active" : { "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "persistentSound" : "/sfx/tools/energypickaxe_idle.ogg" } }, "retract" : { "frames" : 4, "cycle" : 0.2, "mode" : "transition", "transition" : "inactive", "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "immediateSound" : "/sfx/tools/energypickaxe_stop2.ogg" } } } } }, "parts" : { "sword" : { "properties" : { "zLevel" : 0, "centered" : true, "offset" : [0, 2.125], "transformationGroups" : ["weapon"], "rotationCenter" : [0, 0] }, "partStates" : { "sword" : { "inactive" : { "properties" : { "image" : "<partImage>:inactive?<directives>?<bladeDirectives>" } }, "extend" : { "properties" : { "image" : "<partImage>:extend.<frame>?<directives>?<bladeDirectives>" } }, "active" : { "properties" : { "image" : "<partImage>:active?<directives>?<bladeDirectives>" } }, "retract" : { "properties" : { "image" : "<partImage>:retract.<frame>?<directives>?<bladeDirectives>" } } } } }, "swordfullbright" : { "properties" : { "zLevel" : 1, "centered" : true, "fullbright" : true, "offset" : [0, 2.125], "transformationGroups" : ["weapon"], "rotationCenter" : [0, 0], "damageArea" : [[-0.7, -1.0], [-0.7, 2.5], [0.5, 2.5], [0.5, -1.0]] }, "partStates" : { "sword" : { "inactive" : { "properties" : { "image" : "<partImage>:inactive?<directives>?<bladeDirectives>" } }, "extend" : { "properties" : { "image" : "<partImage>:extend.<frame>?<directives>?<bladeDirectives>" } }, "active" : { "properties" : { "image" : "<partImage>:active?<directives>?<bladeDirectives>" } }, "retract" : { "properties" : { "image" : "<partImage>:retract.<frame>?<directives>?<bladeDirectives>" } } } } }, "swoosh" : { "properties" : { "zLevel" : -1, "centered" : true, "fullbright" : true, "transformationGroups" : ["swoosh"], "rotationCenter" : [0, 0] }, "partStates" : { "swoosh" : { "idle" : { "properties" : { "image" : "" } }, "inactivefire" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh/physicalswoosh.png:<frame>", "offset" : [0, 2.5], "damageArea" : [[-5, 2], [-2.5, 3], [1, 3], [4, 1.75], [5, -0.25], [5, -2.25], [4, -3.25], [0, -2.5]] } }, "inactivefire2" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh2/physicalswoosh.png:<frame>", "offset" : [5.0, 1.0], "damageArea" : [[-4, 1], [2.5, 1], [2.5, -2], [-4, -2]] } }, "inactivefire3" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh3/physicalswoosh.png:<frame>", "offset" : [3.5, 0], "damageArea" : [[-4.75, 1.5], [3, 1], [3, -1], [-4.75, -1.5]] } }, "activefire" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh/protectorswoosh.png:<frame>", "offset" : [0, 2.5], "damageArea" : [[-5, 2], [-2.5, 3], [1, 3], [4, 1.75], [5, -0.25], [5, -2.25], [4, -3.25], [0, -2.5]] } }, "activefire2" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh2/protectorswoosh.png:<frame>", "offset" : [5.0, 1.0], "damageArea" : [[-4, 1], [2.5, 1], [2.5, -2], [-4, -2]] } }, "activefire3" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh3/protectorswoosh.png:<frame>", "offset" : [3.5, 0], "damageArea" : [[-4.75, 1.5], [3, 1], [3, -1], [-4.75, -1.5]] } } } } } } }, "transformationGroups" : { "weapon" : {}, "swoosh" : {} }, "particleEmitters" : { "inactivephysicalswoosh" : { "active" : false, "particles" : [] }, "activephysicalswoosh" : { "active" : false, "transformationGroups" : ["swoosh"], "burstCount" : 6, "particles" : [ { "particle" : "protectorblade"}, { "particle" : "protectorblade2"} ] }, "blade" : { "active" : false, "transformationGroups" : ["weapon"], "offsetRegion" : [-0.5, 1.5, 0.5, 4.0], "emissionRate" : 10, "particles" : [ { "particle" : "protectorblade"}, { "particle" : "protectorblade2"} ] } }, "lights" : { "glow" : { "position" : [0, 2.0], "color" : [0, 90, 140], "transformationGroups" : ["weapon"] } }, "sounds" : { "inactivefire" : [ "/sfx/melee/swing_broadsword.ogg" ], "inactivefire2" : [ "/sfx/melee/swing_shortsword.ogg" ], "inactivefire3" : [ "/sfx/melee/swing_spear.ogg" ], "activefire" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "activefire2" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "activefire3" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "empower" : [], "slash" : ["/sfx/melee/laser_weapon_swing2.ogg"] } } Code: { "globalTagdefaults" : { "paletteSwaps" : "" }, "animatedParts" : { "stateTypes" : { "swoosh" : { "default" : "idle", "states" : { "idle" : {}, "inactivefire" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "inactivefire2" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "inactivefire3" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire2" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" }, "activefire3" : { "frames" : 3, "cycle" : 0.1, "mode" : "transition", "transition" : "idle" } } }, "sword" : { "default" : "inactive", "states" : { "inactive" : { "properties" : { "lightsOff" : ["glow"], "particleEmittersOff" : ["blade"] } }, "extend" : { "frames" : 4, "cycle" : 0.2, "mode" : "transition", "transition" : "active", "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "immediateSound" : "/sfx/tools/energypickaxe_start.ogg" } }, "active" : { "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "persistentSound" : "/sfx/tools/energypickaxe_idle.ogg" } }, "retract" : { "frames" : 4, "cycle" : 0.2, "mode" : "transition", "transition" : "inactive", "properties" : { "lightsOn" : ["glow"], "particleEmittersOn" : ["blade"], "immediateSound" : "/sfx/tools/energypickaxe_stop2.ogg" } } } } }, "parts" : { "sword" : { "properties" : { "zLevel" : 0, "centered" : true, "offset" : [0, 2.125], "transformationGroups" : ["weapon"], "rotationCenter" : [0, 0] }, "partStates" : { "sword" : { "inactive" : { "properties" : { "image" : "<partImage>:inactive?<directives>?<bladeDirectives>" } }, "extend" : { "properties" : { "image" : "<partImage>:extend.<frame>?<directives>?<bladeDirectives>" } }, "active" : { "properties" : { "image" : "<partImage>:active?<directives>?<bladeDirectives>" } }, "retract" : { "properties" : { "image" : "<partImage>:retract.<frame>?<directives>?<bladeDirectives>" } } } } }, "swordfullbright" : { "properties" : { "zLevel" : 1, "centered" : true, "fullbright" : true, "offset" : [0, 2.125], "transformationGroups" : ["weapon"], "rotationCenter" : [0, 0], "damageArea" : [[-0.7, -1.0], [-0.7, 2.5], [0.5, 2.5], [0.5, -1.0]] }, "partStates" : { "sword" : { "inactive" : { "properties" : { "image" : "<partImage>:inactive?<directives>?<bladeDirectives>" } }, "extend" : { "properties" : { "image" : "<partImage>:extend.<frame>?<directives>?<bladeDirectives>" } }, "active" : { "properties" : { "image" : "<partImage>:active?<directives>?<bladeDirectives>" } }, "retract" : { "properties" : { "image" : "<partImage>:retract.<frame>?<directives>?<bladeDirectives>" } } } } }, "swoosh" : { "properties" : { "zLevel" : -1, "centered" : true, "fullbright" : true, "transformationGroups" : ["swoosh"], "rotationCenter" : [0, 0] }, "partStates" : { "swoosh" : { "idle" : { "properties" : { "image" : "" } }, "inactivefire" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh/physicalswoosh.png:<frame>", "offset" : [0, 2.5], "damageArea" : [[-5, 2], [-2.5, 3], [1, 3], [4, 1.75], [5, -0.25], [5, -2.25], [4, -3.25], [0, -2.5]] } }, "inactivefire2" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh2/physicalswoosh.png:<frame>", "offset" : [5.0, 1.0], "damageArea" : [[-4, 1], [2.5, 1], [2.5, -2], [-4, -2]] } }, "inactivefire3" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh3/physicalswoosh.png:<frame>", "offset" : [3.5, 0], "damageArea" : [[-4.75, 1.5], [3, 1], [3, -1], [-4.75, -1.5]] } }, "activefire" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh/protectorswoosh.png:<frame>", "offset" : [0, 2.5], "damageArea" : [[-5, 2], [-2.5, 3], [1, 3], [4, 1.75], [5, -0.25], [5, -2.25], [4, -3.25], [0, -2.5]] } }, "activefire2" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh2/protectorswoosh.png:<frame>", "offset" : [5.0, 1.0], "damageArea" : [[-4, 1], [2.5, 1], [2.5, -2], [-4, -2]] } }, "activefire3" : { "properties" : { "image" : "/items/active/weapons/melee/broadsword/swoosh3/protectorswoosh.png:<frame>", "offset" : [3.5, 0], "damageArea" : [[-4.75, 1.5], [3, 1], [3, -1], [-4.75, -1.5]] } } } } } } }, "transformationGroups" : { "weapon" : {}, "swoosh" : {} }, "particleEmitters" : { "inactivephysicalswoosh" : { "active" : false, "particles" : [] }, "activephysicalswoosh" : { "active" : false, "transformationGroups" : ["swoosh"], "burstCount" : 6, "particles" : [ { "particle" : "protectorblade"}, { "particle" : "protectorblade2"} ] }, "blade" : { "active" : false, "transformationGroups" : ["weapon"], "offsetRegion" : [-0.5, 1.5, 0.5, 4.0], "emissionRate" : 10, "particles" : [ { "particle" : "protectorblade"}, { "particle" : "protectorblade2"} ] } }, "lights" : { "glow" : { "position" : [0, 2.0], "color" : [0, 90, 140], "transformationGroups" : ["weapon"] } }, "sounds" : { "inactivefire" : [ "/sfx/melee/swing_broadsword.ogg" ], "inactivefire2" : [ "/sfx/melee/swing_shortsword.ogg" ], "inactivefire3" : [ "/sfx/melee/swing_spear.ogg" ], "activefire" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "activefire2" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "activefire3" : [ "/sfx/melee/laser_weapon_swing1.ogg", "/sfx/melee/laser_weapon_swing2.ogg", "/sfx/melee/laser_weapon_swing3.ogg" ], "empower" : [], "slash" : ["/sfx/melee/laser_weapon_swing2.ogg"] } } Code: require "/scripts/util.lua" require "/scripts/vec2.lua" require "/items/active/weapons/weapon.lua" function init() animator.setGlobalTag("paletteSwaps", config.getParameter("paletteSwaps", "")) animator.setGlobalTag("directives", "") animator.setGlobalTag("bladeDirectives", "") self.weapon = Weapon:new() self.weapon:addTransformationGroup("weapon", {0,0}, util.toRadians(config.getParameter("baseWeaponRotation", 0))) self.weapon:addTransformationGroup("swoosh", {0,0}, math.pi/2) self.primaryAbility = getPrimaryAbility() self.weapon:addAbility(self.primaryAbility) self.altAbility = getAltAbility() self.weapon:addAbility(self.altAbility) self.weapon:init() self.inactiveBaseDps = config.getParameter("inactiveBaseDps") self.activeBaseDps = config.getParameter("activeBaseDps") self.active = false animator.setAnimationState("sword", "inactive") self.primaryAbility.animKeyPrefix = "inactive" self.primaryAbility.baseDps = self.inactiveBaseDps self.primaryAbility:computeDamageAndCooldowns() end function update(dt, fireMode, shiftHeld) self.weapon:update(dt, fireMode, shiftHeld) setActive(self.altAbility.active) end function uninit() self.weapon:uninit() end function setActive(active) if self.active ~= active then self.active = active if self.active then animator.setAnimationState("sword", "extend") self.primaryAbility.animKeyPrefix = "active" self.primaryAbility.baseDps = self.activeBaseDps self.primaryAbility:computeDamageAndCooldowns() else animator.setAnimationState("sword", "retract") self.primaryAbility.animKeyPrefix = "inactive" self.primaryAbility.baseDps = self.inactiveBaseDps self.primaryAbility:computeDamageAndCooldowns() end end end