added damage and defense buffs
parent
0571f20afd
commit
91d04bc952
76
cannabis.lua
76
cannabis.lua
|
@ -55,24 +55,28 @@ minetest.register_craftitem("drug_wars:weed", {
|
|||
else
|
||||
hbhunger.hunger[playername] = newhunger
|
||||
player:set_hp(player:get_hp() + drug_wars.WEED_HEAL)
|
||||
|
||||
local speed_changed = drug_wars.speed_debuff(player, drug_wars.WEED_SPEED_DEBUFF, drug_wars.WEED_SPEED_DEBUFF_THRESHOLD)
|
||||
|
||||
drug_wars.increase_addiction(playername, drug_wars.WEED_ADDICTION)
|
||||
|
||||
table.insert(drug_wars.aftereffects, {
|
||||
countdown = drug_wars.WEED_DURATION,
|
||||
on_timeout = function()
|
||||
if(speed_changed) then
|
||||
drug_wars.speed_buff(player, drug_wars.WEED_SPEED_DEBUFF)
|
||||
end
|
||||
|
||||
if(drug_wars.get_addiction(playername) > drug_wars.WEED_ADDICTION_THRESHOLD) then
|
||||
drug_wars.drug_damage(player, drug_wars.WEED_HEAL)
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
local speed_changed = drug_wars.speed_debuff(player, drug_wars.WEED_SPEED_DEBUFF, drug_wars.WEED_SPEED_DEBUFF_THRESHOLD)
|
||||
|
||||
drug_wars.defense_buff(playername, drug_wars.WEED_DEFENSE_BUFF)
|
||||
|
||||
drug_wars.increase_addiction(playername, drug_wars.WEED_ADDICTION)
|
||||
|
||||
table.insert(drug_wars.aftereffects, {
|
||||
countdown = drug_wars.WEED_DURATION,
|
||||
on_timeout = function()
|
||||
if(speed_changed) then
|
||||
drug_wars.speed_buff(player, drug_wars.WEED_SPEED_DEBUFF)
|
||||
end
|
||||
|
||||
if(drug_wars.get_addiction(playername) > drug_wars.WEED_ADDICTION_THRESHOLD) then
|
||||
drug_wars.drug_damage(player, drug_wars.WEED_HEAL)
|
||||
end
|
||||
|
||||
drug_wars.defense_buff(playername, -drug_wars.WEED_DEFENSE_BUFF)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
@ -92,24 +96,28 @@ minetest.register_craftitem("drug_wars:hashish", {
|
|||
else
|
||||
hbhunger.hunger[playername] = newhunger
|
||||
player:set_hp(player:get_hp() + drug_wars.HASHISH_HEAL)
|
||||
|
||||
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 = drug_wars.HASHISH_DURATION,
|
||||
on_timeout = function()
|
||||
if(speed_changed) then
|
||||
drug_wars.speed_buff(player, drug_wars.HASHISH_SPEED_DEBUFF)
|
||||
end
|
||||
|
||||
if(drug_wars.get_addiction(playername) > drug_wars.HASHISH_ADDICTION_THRESHOLD) then
|
||||
drug_wars.drug_damage(player, drug_wars.HASHISH_HEAL)
|
||||
end
|
||||
end
|
||||
})
|
||||
end
|
||||
|
||||
local speed_changed = drug_wars.speed_debuff(player, drug_wars.HASHISH_SPEED_DEBUFF, drug_wars.HASHISH_SPEED_DEBUFF_THRESHOLD)
|
||||
|
||||
drug_wars.defense_buff(playername, drug_wars.HASHISH_DEFENSE_BUFF)
|
||||
|
||||
drug_wars.increase_addiction(playername, drug_wars.HASHISH_ADDICTION)
|
||||
|
||||
table.insert(drug_wars.aftereffects, {
|
||||
countdown = drug_wars.HASHISH_DURATION,
|
||||
on_timeout = function()
|
||||
if(speed_changed) then
|
||||
drug_wars.speed_buff(player, drug_wars.HASHISH_SPEED_DEBUFF)
|
||||
end
|
||||
|
||||
if(drug_wars.get_addiction(playername) > drug_wars.HASHISH_ADDICTION_THRESHOLD) then
|
||||
drug_wars.drug_damage(player, drug_wars.HASHISH_HEAL)
|
||||
end
|
||||
|
||||
drug_wars.defense_buff(playername, -drug_wars.HASHISH_DEFENSE_BUFF)
|
||||
end
|
||||
})
|
||||
end
|
||||
end
|
||||
})
|
||||
|
|
12
coca.lua
12
coca.lua
|
@ -44,14 +44,16 @@ minetest.register_craftitem("drug_wars:cocaine", {
|
|||
hbhunger.hunger[playername] = 30
|
||||
end
|
||||
|
||||
drug_wars.speed_buff(player, drug_wars.COCAINE_SPEED_BUFF)
|
||||
drug_wars.speed_buff(player, drug_wars.COCAINE_SPEED_BUFF)
|
||||
drug_wars.damage_buff(playername, drug_wars.COCAINE_DAMAGE_BUFF)
|
||||
drug_wars.increase_addiction(playername, drug_wars.COCAINE_ADDICTION)
|
||||
|
||||
table.insert(drug_wars.aftereffects, {
|
||||
countdown = drug_wars.COCAINE_DURATION * (1.0 - drug_wars.addictions[playername]),
|
||||
on_timeout = function()
|
||||
drug_wars.speed_debuff(player, drug_wars.COCAINE_SPEED_BUFF, drug_wars.COCAINE_SPEED_BUFF)
|
||||
drug_wars.drug_damage(player, drug_wars.COCAINE_DAMAGE * (1 + drug_wars.addictions[playername] * 2.0))
|
||||
drug_wars.damage_buff(playername, -drug_wars.COCAINE_DAMAGE_BUFF)
|
||||
drug_wars.drug_damage(player, drug_wars.COCAINE_DAMAGE)
|
||||
end
|
||||
})
|
||||
|
||||
|
@ -72,14 +74,16 @@ minetest.register_craftitem("drug_wars:crack", {
|
|||
hbhunger.hunger[playername] = 30
|
||||
end
|
||||
|
||||
drug_wars.speed_buff(player, drug_wars.CRACK_SPEED_BUFF)
|
||||
drug_wars.speed_buff(player, drug_wars.CRACK_SPEED_BUFF)
|
||||
drug_wars.damage_buff(playername, drug_wars.CRACK_DAMAGE_BUFF)
|
||||
drug_wars.increase_addiction(playername, drug_wars.CRACK_ADDICTION)
|
||||
|
||||
table.insert(drug_wars.aftereffects, {
|
||||
countdown = drug_wars.CRACK_DURATION * (1.0 - drug_wars.addictions[playername]),
|
||||
on_timeout = function()
|
||||
drug_wars.speed_debuff(player, drug_wars.CRACK_SPEED_BUFF, drug_wars.CRACK_SPEED_BUFF)
|
||||
drug_wars.drug_damage(player, drug_wars.CRACK_DAMAGE * (1 + drug_wars.addictions[playername] * 2.0))
|
||||
drug_wars.damage_buff(playername, -drug_wars.CRACK_DAMAGE_BUFF)
|
||||
drug_wars.drug_damage(player, drug_wars.CRACK_DAMAGE)
|
||||
end
|
||||
})
|
||||
end
|
||||
|
|
20
config.lua
20
config.lua
|
@ -1,6 +1,10 @@
|
|||
--inventory search options
|
||||
drug_wars.INV_SEARCH_MAX_DISTANCE = 5
|
||||
|
||||
--buffs options
|
||||
drug_wars.DEFENSE_BUFF_CEILING = 0.75
|
||||
drug_wars.DAMAGE_BUFF_CEILING = 0.75
|
||||
|
||||
--addiction options
|
||||
drug_wars.ADDICTION_TICK = 30
|
||||
drug_wars.ADDICTION_REDUCTION = 0.1
|
||||
|
@ -12,7 +16,8 @@ drug_wars.ADDICTION_DAMAGE_THRESHOLD = 0.35
|
|||
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_HEAL = 2
|
||||
drug_wars.WEED_DEFENSE_BUFF = 0.15
|
||||
drug_wars.WEED_ADDICTION = 0.02
|
||||
drug_wars.WEED_ADDICTION_THRESHOLD = 0.5
|
||||
drug_wars.WEED_DURATION = 30
|
||||
|
@ -21,21 +26,24 @@ drug_wars.WEED_DURATION = 30
|
|||
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_HEAL = 3
|
||||
drug_wars.HASHISH_DEFENSE_BUFF = 0.3
|
||||
drug_wars.HASHISH_ADDICTION = 0.05
|
||||
drug_wars.HASHISH_ADDICTION_THRESHOLD = 0.5
|
||||
drug_wars.HASHISH_DURATION = 30
|
||||
drug_wars.HASHISH_DURATION = 60
|
||||
|
||||
-- cocaine stats
|
||||
drug_wars.COCAINE_SPEED_BUFF = 0.6
|
||||
drug_wars.COCAINE_HUNGER_BUFF = 8
|
||||
drug_wars.COCAINE_DAMAGE_BUFF = 0.2
|
||||
drug_wars.COCAINE_ADDICTION = 0.1
|
||||
drug_wars.COCAINE_DAMAGE = 4
|
||||
drug_wars.COCAINE_DURATION = 180
|
||||
drug_wars.COCAINE_DURATION = 10
|
||||
|
||||
-- crack stats
|
||||
drug_wars.CRACK_SPEED_BUFF = 0.8
|
||||
drug_wars.CRACK_HUNGER_BUFF = 8
|
||||
drug_wars.CRACK_ADDICTION = 0.125
|
||||
drug_wars.CRACK_DAMAGE_BUFF = 0.25
|
||||
drug_wars.CRACK_ADDICTION = 0.15
|
||||
drug_wars.CRACK_DAMAGE = 3
|
||||
drug_wars.CRACK_DURATION = 80
|
||||
drug_wars.CRACK_DURATION = 60
|
|
@ -18,12 +18,16 @@ minetest.register_globalstep(function(dtime)
|
|||
if(drug_wars.addictions[k] >= drug_wars.ADDICTION_REDUCTION_THRESHOLD) then
|
||||
local new_addiction = addiction - drug_wars.ADDICTION_REDUCTION
|
||||
drug_wars.addictions[k] = new_addiction
|
||||
if(drug_wars.addictions[k] < 0) then
|
||||
drug_wars.addictions[k] = 0
|
||||
end
|
||||
|
||||
minetest.chat_send_player(k, "Your drug addiction has been reduced to " .. drug_wars.addictions[k])
|
||||
|
||||
if(new_addiction <= 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])
|
||||
if(drug_wars.addictions[k] >= drug_wars.ADDICTION_DAMAGE_THRESHOLD) then
|
||||
drug_wars.drug_damage(minetest.get_player_by_name(k), drug_wars.ADDICTION_DAMAGE)
|
||||
minetest.chat_send_player(k, "You are intoxicated by drugs, you should stop with that crap")
|
||||
|
|
71
helpers.lua
71
helpers.lua
|
@ -38,27 +38,66 @@ function drug_wars.get_addiction(playername)
|
|||
end
|
||||
|
||||
function drug_wars.drug_damage(player, value)
|
||||
local changetable = {}
|
||||
changetable["type"] = "punch"
|
||||
player:set_hp(player:get_hp() - value, changetable)
|
||||
if(player ~= nil) then
|
||||
local changetable = {}
|
||||
changetable["type"] = "punch"
|
||||
|
||||
local addiction = drug_wars.addictions[player:get_player_name()]
|
||||
if(addiction ~= nil) then
|
||||
player:set_hp(player:get_hp() - (value * (1 + addiction)), changetable)
|
||||
else
|
||||
player:set_hp(player:get_hp() - value, changetable)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function drug_wars.defense_buff(playername, value)
|
||||
if(drug_wars.defense_buffs[playername] ~= nil) then
|
||||
drug_wars.defense_buffs[playername] = drug_wars.defense_buffs[playername] + value
|
||||
if(drug_wars.defense_buffs[playername] > drug_wars.DEFENSE_BUFF_CEILING) then
|
||||
drug_wars.defense_buffs[playername] = drug_wars.DEFENSE_BUFF_CEILING
|
||||
end
|
||||
else
|
||||
drug_wars.defense_buffs[playername] = value
|
||||
end
|
||||
end
|
||||
|
||||
function drug_wars.damage_buff(playername, value)
|
||||
if(drug_wars.damage_buffs[playername] ~= nil) then
|
||||
drug_wars.damage_buffs[playername] = drug_wars.damage_buffs[playername] + value
|
||||
if(drug_wars.damage_buffs[playername] > drug_wars.DAMAGE_BUFF_CEILING) then
|
||||
drug_wars.damage_buffs[playername] = drug_wars.DAMAGE_BUFF_CEILING
|
||||
end
|
||||
else
|
||||
drug_wars.damage_buffs[playername] = value
|
||||
end
|
||||
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)
|
||||
if(player ~= nil) then
|
||||
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
|
||||
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
|
||||
if(player ~= nil) then
|
||||
local current_phy = player:get_physics_override()
|
||||
if(current_phy ~= nil) then
|
||||
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
|
||||
return change_speed
|
||||
else
|
||||
return nil
|
||||
end
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
drug_wars.damage_buffs = {}
|
||||
drug_wars.defense_buffs = {}
|
||||
|
||||
minetest.register_on_player_hpchange(function(player, hp_change, reason)
|
||||
if(hp_change < 0) then
|
||||
if(drug_wars.defense_buffs[player:get_player_name()] ~= nil) then
|
||||
hp_change = hp_change * (1.0 - drug_wars.defense_buffs[player:get_player_name()])
|
||||
end
|
||||
|
||||
if(reason ~= nil and reason.type == 'punch' and reason.object ~= nil and minetest.is_player(reason.object)) then
|
||||
local punchername = reason.object:get_player_name()
|
||||
|
||||
if(drug_wars.damage_buffs[punchername] ~= nil) then
|
||||
hp_change = hp_change * (1.0 + drug_wars.damage_buffs[punchername])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return hp_change
|
||||
end, true)
|
1
init.lua
1
init.lua
|
@ -11,6 +11,7 @@ dofile(drug_wars.path.."/config.lua")
|
|||
dofile(drug_wars.path.."/helpers.lua")
|
||||
dofile(drug_wars.path.."/globalupdates.lua")
|
||||
dofile(drug_wars.path.."/invsearch.lua")
|
||||
dofile(drug_wars.path.."/hpeffects.lua")
|
||||
dofile(drug_wars.path.."/melee.lua")
|
||||
dofile(drug_wars.path.."/pipes.lua")
|
||||
dofile(drug_wars.path.."/cannabis.lua")
|
||||
|
|
Loading…
Reference in New Issue