module("onplayercrafteditem", package.seeall) function main(event,noCraftExp) if event.item_stack.name == "cursed-donation" then local player = game.get_player(event.player_index) if player.character then local donations = global.cursed[player.name].aux.donations if donations > 0 then if player.character.health > 50 then if player.can_insert{name = "cursed-donation", count = 1} then local lasthp = global.cursed[player.name].aux.lasthp player.character.health = player.character.health - 50 lasthp = player.character.health donations = donations - 1 global.cursed[player.name].aux.donations = donations global.cursed[player.name].aux.lasthp = lasthp local stats = global.cursed[player.name].stats local cant = math.floor((stats.explore.level * datos.resExplore) / 100) if math.random(100 / datos.resExplore) <= stats.explore.level - (cant * (100 / datos.resExplore)) then cant = cant + 1 end if cant > 0 then player.insert{name=event.item_stack.name,count=(event.item_stack.count * cant)} if global.cursed[player.name].opt[4] == true then player.print({"msg.cursed",{"msg.item-bonus",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name}}) end game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name} }) end local newtp = math.floor((stats.explore.level * datos.resExplore) / 500) if math.random(500 / datos.resExplore) <= stats.explore.level - (newtp * (500 / datos.resExplore)) then newtp = newtp + 1 end if newtp > 0 then local talents = global.cursed[player.name].talents local num = math.random(6) local tpmult = 1 + math.floor(talents[4][num].now / 4) if math.random(4) <= talents[4][num].now - (tpmult * 4) then tpmult = tpmult + 1 end newtp = newtp * tpmult functions_talents.insertParts(player,num,newtp) if global.cursed[player.name].opt[6] == true then player.print({"msg.cursed",{"msg.item-bonus",newtp, game.item_prototypes["cursed-talent-part-" .. num].localised_name}}) game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",newtp , game.item_prototypes["cursed-talent-part-" .. num].localised_name} }) end end else if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.mininventory"}}) end end else remover.item = event.item_stack remover.player = player.name if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.mindonation"}}) end end else remover.item = event.item_stack remover.player = player.name if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.maxdonation"}}) end end else remover.item = event.item_stack remover.player = player.name end elseif event.item_stack.name == "cursed-arrow" then local player = game.get_player(event.player_index) remover.item = event.item_stack remover.player = player.name if player.character then local arrows = global.cursed[player.name].aux.arrows if arrows > 0 then if player.character.health > 25 then local stats = global.cursed[player.name].stats if player.can_insert{name="cursed-arrow-" .. stats.range.level, count = 1} then local lasthp = global.cursed[player.name].aux.lasthp player.character.health = player.character.health - 25 lasthp = player.character.health arrows = arrows - 1 global.cursed[player.name].aux.arrows = arrows global.cursed[player.name].aux.lasthp = lasthp player.insert({name="cursed-arrow-"..stats.range.level,count=event.item_stack.count}) local cant = math.floor((stats.explore.level * datos.resExplore) / 100) if math.random(100 / datos.resExplore) <= stats.explore.level - (cant * (100 / datos.resExplore)) then cant = cant + 1 end if cant > 0 then player.insert{name="cursed-arrow-"..stats.range.level,count=(event.item_stack.count * cant)} if global.cursed[player.name].opt[4] == true then player.print({"msg.cursed",{"msg.item-bonus",event.item_stack.count * cant , game.item_prototypes["cursed-arrow-" .. stats.range.level].localised_name}}) end game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",event.item_stack.count * cant , game.item_prototypes["cursed-arrow-" .. stats.range.level].localised_name} }) end local newtp = math.floor((stats.explore.level * datos.resExplore) / 500) if math.random(500 / datos.resExplore) <= stats.explore.level - (newtp * (500 / datos.resExplore)) then newtp = newtp + 1 end if newtp > 0 then local talents = global.cursed[player.name].talents local num = math.random(6) local tpmult = 1 + math.floor(talents[4][num].now / 4) if math.random(4) <= talents[4][num].now - (tpmult * 4) then tpmult = tpmult + 1 end newtp = newtp * tpmult functions_talents.insertParts(player,num,newtp) if global.cursed[player.name].opt[6] == true then player.print({"msg.cursed",{"msg.item-bonus",newtp, game.item_prototypes["cursed-talent-part-" .. num].localised_name}}) game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",newtp , game.item_prototypes["cursed-talent-part-" .. num].localised_name} }) end end else if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.mininventory"}}) end end else if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.minarrow"}}) end end else if global.cursed[player.name].opt[7] == true then player.print({"msg.cursed", {"msg.maxarrow"}}) end end end elseif string.sub(event.item_stack.name,1,19) == "cursed-talent-part-" then local num = (tonumber(string.sub(event.item_stack.name,20,21))) local player = game.get_player(event.player_index) local talents = global.cursed[player.name].talents local gui = global.cursed[player.name].gui local cant = math.floor(talents[4][num].now / 4) if math.random(4) <= talents[4][num].now - (cant * 4) then cant = cant + 1 end if cant > 0 then player.insert{name=event.item_stack.name,count=(event.item_stack.count * cant)} if global.cursed[player.name].opt[6] == true then player.print({"msg.cursed",{"msg.item-bonus",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name}}) end game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name} }) end elseif not noCraftExp[event.item_stack.name] then local player = game.get_player(event.player_index) local stats = global.cursed[player.name].stats local talents = global.cursed[player.name].talents local gui = global.cursed[player.name].gui local class = global.cursed[player.name].class stats.crafting.exp = mix.round(stats.crafting.exp + ( 0.1 * (1 + talents[1][7].now / 40 + stats.general.level*datos.resGeneral)),3) local cant = math.floor((stats.crafting.level * datos.resCrafting) / 100) if math.random(100 / datos.resCrafting) <= stats.crafting.level - (cant * (100 / datos.resCrafting)) then cant = cant + 1 end if cant > 0 then player.insert{name=event.item_stack.name,count=(event.item_stack.count * cant)} if global.cursed[player.name].opt[3] == true then player.print({"msg.cursed",{"msg.item-bonus",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name}}) game.surfaces.nauvis.create_entity({name="flying-text", position=player.position, color = player.color, text={"msg.item-bonus-flying",event.item_stack.count * cant , game.item_prototypes[event.item_stack.name].localised_name} }) end if stats.crafting.exp < stats.crafting.next * 1.5 then stats.crafting.exp = mix.round(stats.crafting.exp + (cant * 0.1 * (class.multCrafting + talents[1][7].now / 40 + stats.general.level*datos.resGeneral)),3) end end local newtp = math.floor((stats.crafting.level * datos.resCrafting) / 500) if math.random(500 / datos.resCrafting) <= stats.crafting.level - (newtp * (500 / datos.resCrafting)) then newtp = newtp + 1 end if newtp > 0 then local num = math.random(6) local tpmult = 1 + math.floor(talents[4][num].now / 4) if math.random(4) <= talents[4][num].now - (tpmult * 4) then tpmult = tpmult + 1 end newtp = newtp * tpmult functions_talents.insertParts(player,num,newtp) if global.cursed[player.name].opt[6] == true then player.print({"msg.cursed",{"msg.item-bonus",newtp, game.item_prototypes["cursed-talent-part-" .. num].localised_name}}) end end if stats.crafting.exp >= stats.crafting.next then skillUp.main(stats.crafting,(((stats.crafting.level + 1) * (stats.crafting.level + 1)) * 0.8 + 10 ),player) end if gui ~= nil and gui.tableStats4S then gui.tableStats4.stat4c2.caption = {"gui.stat4c2",math.ceil(stats.crafting.exp),math.ceil(stats.crafting.next),mix.round(100 * (class.multCrafting + talents[1][7].now / 40 + stats.general.level*datos.resGeneral),1)} gui.tableStats4.stat4c3.value = stats.crafting.exp / stats.crafting.next end end end