Page 5 of 6

Re: [WIP] Combined custom content thread

Posted: Sun Dec 21, 2014 8:32 am
by akroma222
UPDATED ORIGINAL POST with:
1. Party timer script
2. Check to see if your party is underwater script
3. Trait manager script (minmay)
4. Skill Manager script
5. Two specific weapons equipped together script

Re: [WIP] Combined custom content thread

Posted: Sun Dec 21, 2014 10:42 am
by Aisuu
Huge thx akroma :) I wanted to look icon atlas and sounds, but download links doesnt work for me :(
Can someone confirm it or it is just me :(

Re: [WIP] Combined custom content thread

Posted: Sun Dec 21, 2014 11:00 am
by akroma222
I tried getting there through the Ge.tt main page but the connection is timing out
So Id say it's a problem on their end > not your problem and links should work later

Re: [WIP] Combined custom content thread

Posted: Sat Dec 27, 2014 12:47 pm
by akroma222
Quick update, added:
1. DEAL 2x DMG AGAINST MONSTER TYPE
2. LOCKS AND TRAPS SKILL - CHESTS - keylocked, pickable and trapped

Re: [WIP] Combined custom content thread

Posted: Sat Dec 27, 2014 4:39 pm
by Drakkan
hi akroma,

nice to see you still around with lots of new cool stuff !

I have small request, in case you will have some time - regarding this thread
viewtopic.php?f=22&t=8976
I am making some new weapon skills and I wondered if you can help - basicaly i need to script when champion has some skill / trait, that he will get bonus with some kind of weapon (for example trait Axe master will get plus 20 damage when using axe-type weapon, or when having trait Mace master he will ignore some armor when attacking with mace-type weapon etc...)
thanks for any response !

Re: [WIP] Combined custom content thread

Posted: Sun Dec 28, 2014 6:44 pm
by Daveyx0
So the sounds for the lizards simply work for everyone? Strangely enough, it gives me: warning: no such sample: ice_lizard_walk. I have a legit version of the game, so I should have the correct dat file. The animations work great though. Anyone had this issue before? I would appreciate any help ;) Also, amazing work on this, akroma!

EDIT: Woops I think I figured it out. New to the community, so Im still learning :)

Re: [WIP] Combined custom content thread

Posted: Mon Dec 29, 2014 11:19 am
by akroma222
Drakkan, check your thread - I have come up with a solution but personally I think there must be a better way to do it

Daveyx0, thanks hey! Glad you got the lizards making sounds.... and welcome to the community!! :D :D

Re: [WIP] Combined custom content thread

Posted: Wed Dec 31, 2014 11:34 am
by akroma222
ADDED to original post:
Making extra attacks with power attacks if your champ is of a certain race/class
Check for race/class then return false if not that race/class
SpoilerShow

Code: Select all

{
             		class = "MeleeAttack",
             		name = "thrust1",
			uiName = "Thrust",
			buildup = 1.0,
			chainAction = "thrust2",
			chainActionDelay = 0.2,
			attackPower = 20,
			swipe = "thrust",
			attackSound = "swipe",
			baseDamageStat = "strength",
			pierce = 10,
			accuracy = 10,
             		cooldown = 2.5,
             		energyCost = 15,
			gameEffect = "An accurate and piercing lunge dealing double damage. Zarchtons attack twice.",
             		requirements = { "accuracy", 1},
             		onAttack = function(self,champion,hand)
				champion:playDamageSound()
             		end,
        	},
		{
             		class = "MeleeAttack",
             		name = "thrust2",
			attackPower = 25,
			swipe = "horizontal",
			attackSound = "swipe_special",
			baseDamageStat = "strength",
			pierce = 20,
			accuracy = 20,
             		onAttack = function(self,champion,hand)
				if champion:getRace() ~= "zarchton" then
					return false
				else
					champion:playDamageSound()
				end
             		end,
        	},

Re: [WIP] Combined custom content thread

Posted: Mon Jan 05, 2015 4:33 pm
by Drakkan
Hi akroma,
I have another cool idea which falls into weapon category - firearms this type. I´d like to have weapon, which will use napalm ammo and instead regular attack, it will be shooting fire_bombs. Not sure how to script it exactly and if even possible. just idea - Set basic attack of the weapon to 0 and script on attack(onUse ?) to spawn fire bomb before party ? not sure if you can spawn "throwed" item... or how to do that. maybe instead bomb just spawn some spell effect (like some magma golem meteor spells, I have noticed it in the editor) . please check if you are interested.

here are some basic

Code: Select all

defineObject{
	name = "napalm_thrower",
	baseObject = "base_item",
	components = {
		{
			class = "Model",
	                model = "assets/models/items/hand_cannon.fbx",
		},
		{
			class = "Item",
			uiName = "Napalm Thrower",
			description = "This gun uses concentrated napalm bombs to unleash hell in front of your party.",
			gfxIndex = 330,
			impactSound = "impact_blunt",
			 weight = 10,
 			traits = { "firearm" },
		},
		{
			class = "FirearmAttack",
			attackPower = 0,
			cooldown = 10,
			attackSound = "gun_shot_cannon",
			ammo = "napalm",
			onAttack = function(self)
				-- never jams but can backfire
				self.go.item:setJammed(false)
			end,
			onBackfire = function(self)
				local dust = party:spawn("particle_system")
				dust.particle:setParticleSystem("hit_firearm_large")
				dust:setWorldPositionY(dust:getWorldPositionY() + 1.3)				
			end,
			requirements = { "firearms", 5 },
		},
	},
}
Napalm ammo

Code: Select all

defineObject{
	name = "napalm",
	baseObject = "base_item",
	components = {
		{
			class = "Model",
			model = "assets/models/items/cannon_ball.fbx",
		},
		{
			class = "Item",
			uiName = "Napalm",
			gfxIndex = 339,
			impactSound = "impact_blunt",
			stackable = true,
			projectileRotationSpeed = 10,
			projectileRotationZ = -30,
			 weight = 0.5,
		},
		{
			class = "AmmoItem",
			ammoType = "Napalm",
		},
	},
}

secondary firearm should be similar - working name is Fireburster. As for ammo type, does not matter now (standard pellets could be fine), but instead regular attack, it should spawn fireburst spell. Let me know what you think.

Re: [WIP] Combined custom content thread

Posted: Mon Jan 05, 2015 5:41 pm
by akroma222
I certainly am interested my friend, everyone loves grenade launchers!
At a glance you are on the right track with the 'how' to do it... good, good
Did you ever find Shadowtwist Bow or Noxwood Bow in Labyrinth of Lies??
I have not converted them over yet, but they run in a similar fashion
SpoilerShow

Code: Select all

defineObject{
		name = "twistwood_bow_cursed_quarrel",
		class = "Item",
		uiName = "Shadowtwist Bow",
		model = "mod_assets/models/twistwood_bow.fbx",
		gfxAtlas = "mod_assets/textures/akroma_icons7.tga",
		gfxIndex = 6,
		skill = "assassination",
		requiredLevel = 34,
		rangedWeapon = true,
		ammo = "quarrel",
		attackPower = 40,
		coolDownTime = 6.0,
		attackMethod = "rangedAttack",
		attackSound = "missile01",
		impactSound = "impact_blunt",
		weight = 2.7,
		gameEffect = "**CURSED** - In it's shadowtwist form, Twistwood Bow serves as a dangerous weapon... only Master Assassins armed with tainted quarrels dare weild it.",
		description = "A cursed bow made from the old trees of the Evershifting Wood... this form appears a little more intricate, requiring extreme dexterity, cunning and a desire to kill quickly and effectively.",
}

defineObject{
		name = "twistwood_bow_cursed_poison",
		class = "Item",
		uiName = "Noxwood Bow",
		model = "mod_assets/models/twistwood_bow.fbx",
		gfxAtlas = "mod_assets/textures/akroma_icons7.tga",
		gfxIndex = 6,
		skill = "earth_magic",
		requiredLevel = 34,
		rangedWeapon = true,
		ammo = "arrow",
		attackPower = 40,
		coolDownTime = 4.2,
		attackMethod = "rangedAttack",
		attackSound = "poison_bolt_launch",
		impactSound = "impact_blunt",
		weight = 2.7,
		gameEffect = "**CURSED** - In it's Noxwood form, Twistwood Bow can only be fired safely by Master Geomancers armed with venom tipped arrows. Doing otherwise will seed poison into all surrounding it.",
		description = "A cursed bow made from the old trees of the Evershifting Wood... this form will charge the projectile with a deadly venom, but requires some magical talent to use.",
}
and this is the onAttack script that took care of their tricky attacking conditions (its an unnecessarily long and scary script)
SpoilerShow

Code: Select all

-------------------------------------------------------------------	NOXWOOD BOW
	
	function noxwood(champion,weapon)
		
		for i = 7,8 do
      		local item1 = champion:getItem(i)
      			if item1 and item1.name == "twistwood_bow_cursed_poison" then
					local slot1 = i
					if i == 7 then
						local item2 = champion:getItem(8)
						local s2 = item2:getStackSize()
						if item2 and item2.name == "poison_arrow" or item2.name == "poison_quarrel" then
							if s2 > 0 then
								playSound("poison_bolt_launch")
								if champion:getSkillLevel("earth_magic") >= 50 then
									if checkPosition() == true then
										local dx,dy = getForward(party.facing)
										if party.facing == 0 or party.facing == 2 then
    										for modif = -0.4,0.4,0.1 do
            									shootProjectile("poison_quarrel", party.level, party.x+modif, party.y, party.facing, 12+(modif*2), 0, 0, 0, 0, 0, 35, party, true, originator)
											end
      									else
        									for modif = -0.4,0.4,0.1 do
            									shootProjectile("poison_quarrel", party.level, party.x, party.y+modif, party.facing, 12+(modif*2), 0, 0, 0, 0, 0, 35, party, true, originator)
    										end
										end
										party:playScreenEffect("damage_screen_green")
										hudPrint("Earth Magic Mastery commands Noxwood Bow to fire waves of arrows!")
										return true
									end
								end
								for i = 1,4 do
									party:getChampion(i):setCondition("poison", 40)
								end
								party:playScreenEffect("damage_screen_green")
								playSound("death_cloud")
							else
								playSound("impact_generic")
								hudPrint("Noxwood bow will only fire poisonous missiles...")
								return false
							end
						end
					else
						if i == 8 then
							if item2 and item2.name == "poison_arrow" or item2.name == "poison_quarrel" then
							if s2 > 0 then
								playSound("poison_bolt_launch")
								if champion:getSkillLevel("earth_magic") >= 50 then
									if checkPosition() == true then
										local dx,dy = getForward(party.facing)
										if party.facing == 0 or party.facing == 2 then
    										for modif = -0.4,0.4,0.1 do
            									shootProjectile("poison_quarrel", party.level, party.x+modif, party.y, party.facing, 12+(modif*2), 0, 0, 0, 0, 0, 35, party, true, originator)
											end
      									else
        									for modif = -0.4,0.4,0.1 do
            									shootProjectile("poison_quarrel", party.level, party.x, party.y+modif, party.facing, 12+(modif*2), 0, 0, 0, 0, 0, 35, party, true, originator)
    										end
										end
										party:playScreenEffect("damage_screen_green")
										hudPrint("Earth Magic Mastery commands Noxwood Bow to fire waves of arrows!")
										return true
									end
								end
								for i = 1,4 do
									party:getChampion(i):setCondition("poison", 40)
								end
								party:playScreenEffect("damage_screen_green")
								playSound("death_cloud")
							else
								playSound("impact_generic")
								hudPrint("Noxwood bow will only fire poisonous projectiles...")
								return false
							end
						end
					end
				end
			end
		end
	end

-----------------------------------------------

function shadowtaint(champion,weapon)
		local dx,dy = getForward(party.facing)
		bow_monster = whichMonster(party.level,party.x+dx,party.y+dy)
		if bow_monster ~= "" then
			playSound("spellfizzle1")
			hudPrint("You need more space to loose the Shadowtwist Bow!!")
			return false
		end
		local originator = champion:getOrdinal()
		for i = 7,8 do
      		local item1 = champion:getItem(i)
      			if item1 and item1.name == "twistwood_bow_cursed_quarrel" then
					local slot1 = i
					if i == 7 then
						local item2 = champion:getItem(8)
							local s2 = item2:getStackSize()
							if item2 and item2.name == "tainted_quarrel" then
								if s2 > 0 then
									playSound("dark_missile")
									if champion:getSkillLevel("assassination") >= 50 then
										if checkPosition() == true then
											local dx,dy = getForward(party.facing)
											local originator = champion:getOrdinal()
											shootProjectile("dark_missile", party.level, party.x, party.y, party.facing, 14, 0, 0, 0, 0, 0, 200, party, true, originator)
											for ent in fix.newEntitiesAt(party.level, party.x, party.y) do
        										if ent.name == "dark_missile" then
           			 								fxScripts.addProjectileEffect(ent, "dark_missile", 15, "dark_missile_hit")
        										end
											end
											party:playScreenEffect("damage_screen_black")
											hudPrint("Master Assassins deal quick death from the shadows with tainted weaponary...")
											playSound("blades_gear")
											if s2 >= 2 then
												item2:setStackSize(s2 - 1)
											else
												item2:removeItem(i)
											end
											return true
										end
									else
										for i = 1,4 do
											party:getChampion(i):damage(75, "cold")
										end
										party:playScreenEffect("damage_screen_black")
										hudPrint("Only Master Assassins can safely weild this horrifyingly cursed weapon...")
										playSound("necromorph_unrest")
										return true
									end
								end	
							else
								playSound("damage_insectoid_male")
								hudPrint("Shadow Taint Bow will only fire tainted projectiles by a true assasin...")
								return false
							end
						end
					else
						if i == 8 then
							local originator = champion:getOrdinal()
							local item2 = champion:getItem(8)
							local s2 = item2:getStackSize()
							if item2 and item2.name == "tainted_quarrel" then
								if s2 > 0 then
									playSound("dark_missile")
									if champion:getSkillLevel("assassination") >= 50 then
										if checkPosition() == true then
											local dx,dy = getForward(party.facing)
											local originator = champion:getOrdinal()
											for i = 1,4 do
												party:getChampion(i):setCondition("invisibility", 10)
												party:getChampion(i):setCondition("haste", 10)
											end
											party:playScreenEffect("damage_screen_black")
											hudPrint("Master Assassins deal quick death from the shadows with tainted weaponary...")
											playSound("blades_gear")
											if s2 >= 2 then
												item2:setStackSize(s2 - 1)
											else
												item2:removeItem(i)
											end
											return true
										end
									else
										for i = 1,4 do
											party:getChampion(i):damage(75, "cold")
										end
										party:playScreenEffect("damage_screen_black")
										hudPrint("Only Master Assassins can safely weild this horrifyingly cursed weapon...")
										playSound("necromorph_unrest")
										return true
									end
								end	
							else
								playSound("damage_insectoid_male")
								hudPrint("Shadow Taint Bow will only fire tainted projectiles by a true assasin...")
								return false
							end
						end
					end
				end
			end
	
I probably wont get to the grenade launcher it straight away as Im just finishing up some skills and traits stuff
Probably in a few days?