added config and more helpers, incomplete coca

master
aegroto 2018-08-28 14:37:20 +02:00
parent a8ffac5995
commit 39c4bf73e9
8 changed files with 160 additions and 63 deletions

View File

@ -1,9 +0,0 @@
minetest.register_globalstep(function(dtime)
for k, aftereffect in pairs(drug_wars.aftereffects) do
aftereffect.countdown = aftereffect.countdown - dtime
if(aftereffect.countdown <= 0) then
aftereffect.on_timeout()
table.remove(drug_wars.aftereffects, k)
end
end
end)

View File

@ -16,6 +16,12 @@ minetest.register_node("drug_wars:seed_cannabis", {
end,
})
for i = 4, 5 do
local node_name = "default:grass_" .. i
drug_wars.add_node_drops(node_name, {items = {'drug_wars:seed_cannabis'}, rarity = 15});
end
-- cannabis drops
minetest.register_craftitem("drug_wars:cannabis_leaf", {
description = "Cannabis Leaf",
@ -40,41 +46,28 @@ minetest.register_craftitem("drug_wars:weed", {
on_smoke_woodenpipe = function(player)
if player ~= nil then
local playername = player:get_player_name()
local newhunger = hbhunger.hunger[playername] - 4
local newhunger = hbhunger.hunger[playername] - drug_wars.WEED_HUNGER_DEBUFF
if(newhunger < 0) then
newhunger = 0
local changetable = {}
changetable["type"] = "punch"
player:set_hp(player:get_hp() - 2, changetable)
drug_wars.drug_damage(playername, drug_wars.WEED_HEAL)
else
hbhunger.hunger[playername] = newhunger
player:set_hp(player:get_hp() + 2)
player:set_hp(player:get_hp() + drug_wars.WEED_HEAL)
local current_phy = player:get_physics_override()
local change_speed = current_phy.speed > 0.4
if(change_speed) then
local new_phy = current_phy
new_phy.speed = new_phy.speed - 0.2
player:set_physics_override(new_phy)
end
local speed_changed = drug_wars.speed_debuff(player, drug_wars.WEED_SPEED_DEBUFF, drug_wars.WEED_SPEED_DEBUFF_THRESHOLD)
drug_wars.increase_addiction(playername, 0.02)
drug_wars.increase_addiction(playername, drug_wars.WEED_ADDICTION)
table.insert(drug_wars.aftereffects, {
countdown = 30,
on_timeout = function()
if(change_speed) then
local current_phy = player:get_physics_override()
local new_phy = current_phy
new_phy.speed = new_phy.speed + 0.2
player:set_physics_override(new_phy)
if(speed_changed) then
drug_wars.speed_buff(player, drug_wars.WEED_SPEED_DEBUFF)
end
if(drug_wars.addictions[playername] > 0.5) then
local changetable = {}
changetable["type"] = "punch"
player:set_hp(player:get_hp() - 2, changetable)
if(drug_wars.addictions[playername] > drug_wars.WEED_ADDICTION_THRESHOLD) then
drug_wars.drug_damage(playername, drug_wars.WEED_HEAL)
end
end
})
@ -89,41 +82,28 @@ minetest.register_craftitem("drug_wars:hashish", {
on_smoke_woodenpipe = function(player)
if player ~= nil then
local playername = player:get_player_name()
local newhunger = hbhunger.hunger[playername] - 8
local newhunger = hbhunger.hunger[playername] - drug_wars.HASHISH_HUNGER_DEBUFF
if(newhunger < 0) then
newhunger = 0
local changetable = {}
changetable["type"] = "punch"
player:set_hp(player:get_hp() - 4, changetable)
drug_wars.drug_damage(playername, drug_wars.HASHISH_HEAL)
else
hbhunger.hunger[playername] = newhunger
player:set_hp(player:get_hp() + 4)
player:set_hp(player:get_hp() + drug_wars.HASHISH_HEAL)
local current_phy = player:get_physics_override()
local change_speed = current_phy.speed > 0.4
if(change_speed) then
local new_phy = current_phy
new_phy.speed = new_phy.speed - 0.3
player:set_physics_override(new_phy)
end
drug_wars.increase_addiction(playername, 0.04)
local speed_changed = drug_wars.speed_debuff(player, drug_wars.HASHISH_SPEED_DEBUFF, drug_wars.HASHISH_SPEED_DEBUFF_THRESHOLD)
drug_wars.increase_addiction(playername, drug_wars.HASHISH_ADDICTION)
table.insert(drug_wars.aftereffects, {
countdown = 30,
on_timeout = function()
if(change_speed) then
local current_phy = player:get_physics_override()
local new_phy = current_phy
new_phy.speed = new_phy.speed + 0.3
player:set_physics_override(new_phy)
on_timeout = function()
if(speed_changed) then
drug_wars.speed_buff(player, drug_wars.HASHISH_SPEED_DEBUFF)
end
if(drug_wars.addictions[playername] > 0.5) then
local changetable = {}
changetable["type"] = "punch"
player:set_hp(player:get_hp() - 4, changetable)
if(drug_wars.addictions[playername] > drug_wars.HASHISH_ADDICTION_THRESHOLD) then
drug_wars.drug_damage(playername, drug_wars.HASHISH_HEAL)
end
end
})

56
coca.lua Normal file
View File

@ -0,0 +1,56 @@
-- coca seeds
minetest.register_node("drug_wars:seed_coca", {
description = "Coca Seed",
tiles = {"drugwars_coca_seed.png"},
inventory_image = "drugwars_coca_seed.png",
wield_image = "drugwars_coca_seed.png",
drawtype = "signlike",
groups = {seed = 1, snappy = 3, attached_node = 1},
paramtype = "light",
paramtype2 = "wallmounted",
walkable = false,
sunlight_propagates = true,
selection_box = farming.select,
on_place = function(itemstack, placer, pointed_thing)
return farming.place_seed(itemstack, placer, pointed_thing, "drug_wars:coca_1")
end,
})
-- coca drops
minetest.register_craftitem("drug_wars:coca_leaf", {
description = "Coca Leaf",
inventory_image = "drugwars_coca_leaf.png",
})
-- coca refined items
minetest.register_craftitem("drug_wars:cocaine", {
description = "Cocaine",
inventory_image = "drugwars_cocaine.png",
on_use = function(itemstack, user, pointed_thing)
local playername = player:get_player_name()
local newhunger = hbhunger.hunger[playername] + 8
if(newhunger <= 30)
hbhunger.hunger[playername] = newhunger
local current_phy = player:get_physics_override()
local new_phy = current_phy
new_phy.speed = new_phy.speed + 0.4
player:set_physics_override(new_phy)
drug_wars.increase_addiction(playername, 0.1)
table.insert(drug_wars.aftereffects, {
countdown = 360 * (1.0 - drug_wars.addictions[playername]),
on_timeout = function()
local current_phy = player:get_physics_override()
local new_phy = current_phy
new_phy.speed = new_phy.speed - 0.4
player:set_physics_override(new_phy)
end
})
end
})

19
config.lua Normal file
View File

@ -0,0 +1,19 @@
drug_wars.ADDICTION_TICK = 60
drug_wars.ADDICTION_REDUCTION = 0.1
drug_wars.ADDICTION_REDUCTION_THRESHOLD = 0.05
-- weed effects
drug_wars.WEED_SPEED_DEBUFF = 0.2
drug_wars.WEED_SPEED_DEBUFF_THRESHOLD = 0.4
drug_wars.WEED_HUNGER_DEBUFF = 4
drug_wars.WEED_HEAL = 4
drug_wars.WEED_ADDICTION = 0.02
drug_wars.WEED_ADDICTION_THRESHOLD = 0.5
-- hashish effects
drug_wars.HASHISH_SPEED_DEBUFF = 0.25
drug_wars.HASHISH_SPEED_DEBUFF_THRESHOLD = 0.4
drug_wars.HASHISH_HUNGER_DEBUFF = 6
drug_wars.HASHISH_HEAL = 6
drug_wars.HASHISH_ADDICTION = 0.05
drug_wars.HASHISH_ADDICTION_THRESHOLD = 0.5

31
globalupdates.lua Normal file
View File

@ -0,0 +1,31 @@
minetest.register_globalstep(function(dtime)
for k, aftereffect in pairs(drug_wars.aftereffects) do
aftereffect.countdown = aftereffect.countdown - dtime
if(aftereffect.countdown <= 0) then
aftereffect.on_timeout()
table.remove(drug_wars.aftereffects, k)
end
end
end)
drug_wars.addiction_timer = drug_wars.ADDICTION_TICK
minetest.register_globalstep(function(dtime)
drug_wars.addiction_timer = drug_wars.addiction_timer - dtime
if(drug_wars.addiction_timer <= 0) then
for k, addiction in pairs(drug_wars.addictions) do
if(drug_wars.addictions[k] >= drug_wars.ADDICTION_REDUCTION_THRESHOLD) then
drug_wars.addictions[k] = addiction - drug_wars.ADDICTION_REDUCTION
if(drug_wars.addictions[k] <= drug_wars.ADDICTION_REDUCTION_THRESHOLD) then
drug_wars.addictions[k] = nil
minetest.chat_send_player(k, "You detoxed yourself, congratulations!")
else
minetest.chat_send_player(k, "Your drug addiction has been reduced to " .. drug_wars.addictions[k])
end
end
end
drug_wars.addiction_timer = drug_wars.ADDICTION_TICK
end
end)

View File

@ -1,5 +0,0 @@
for i = 4, 5 do
local node_name = "default:grass_" .. i
drug_wars.add_node_drops(node_name, {items = {'drug_wars:seed_cannabis'}, rarity = 15});
end

View File

@ -29,3 +29,28 @@ function drug_wars.increase_addiction(playername, value)
end
end
function drug_wars.drug_damage(playername, value)
local changetable = {}
changetable["type"] = "punch"
player:set_hp(player:get_hp() - value, changetable)
end
function drug_wars.speed_buff(player, value)
local current_phy = player:get_physics_override()
local new_phy = current_phy
new_phy.speed = new_phy.speed + value
player:set_physics_override(new_phy)
end
function drug_wars.speed_debuff(player, value, threshold)
local current_phy = player:get_physics_override()
local change_speed = current_phy.speed > threshold
if(change_speed) then
local new_phy = current_phy
new_phy.speed = new_phy.speed - value
player:set_physics_override(new_phy)
end
return change_speed
end

View File

@ -7,9 +7,9 @@ drug_wars.addictions = {}
-- IMPORTS
dofile(drug_wars.path.."/config.lua")
dofile(drug_wars.path.."/helpers.lua")
dofile(drug_wars.path.."/aftereffects.lua")
dofile(drug_wars.path.."/globalupdates.lua")
dofile(drug_wars.path.."/melee.lua")
dofile(drug_wars.path.."/pipes.lua")
dofile(drug_wars.path.."/cannabis.lua")
dofile(drug_wars.path.."/grass.lua")