64 Commits efc4e24ee7 ... 7cbae3798d

Author SHA1 Message Date
  BlueBird51 7cbae3798d Add brass wall/castle nodes 1 year ago
  BlueBird51 7efb991251 Fix use of reserved name causing failure to load script 1 year ago
  BlueBird51 d6ea9d63bc Reposition 1 year ago
  BlueBird51 3c2c1935e9 So that happened ... 1 year ago
  BlueBird51 7ac91aa733 Merge branch 'river-water-can' of specing/musttest_game into master 1 year ago
  BlueBird51 1d97b61bc0 Merge branch 'master' of specing/musttest_game into master 1 year ago
  Fedja Beader 650108c6d0 Add river water can 2 years ago
  Fedja Beader e320541bf3 Enable city haters to claim victory without having to step into one. 2 years ago
  BluebirdGreycoat 1bffbd2db3 Just to make sure ... 2 years ago
  BlueBird51 d1338c5299 Merge branch 'master' of boxface/musttest_game into master 2 years ago
  BlueBird51 7c834dd3d2 Merge branch 'remove-proprietary-media' of noisytoot/musttest_game into master 2 years ago
  BluebirdGreycoat 4d0324abe9 rock drills are battery powered, require battery in crafting them. 2 years ago
  BluebirdGreycoat 8d87648610 Textually minor but consequential oversight 2 years ago
  Fedja Beader 0fe19fa172 rock drills are battery powered, require battery in crafting them. 2 years ago
  BluebirdGreycoat 0651fea49c Add etched gold, mithril, silver. Blame DVD 2 years ago
  Ron Nazarov 610362f365 Remove unused proprietary media 2 years ago
  BluebirdGreycoat 253a631b90 Fix rounding issue in city-block area queries 2 years ago
  BluebirdGreycoat 7cefda69eb Show some info in the KoC ... 2 years ago
  BluebirdGreycoat d26d9ca235 Update drop lists for nevermore flower, redrack 2 years ago
  BluebirdGreycoat 129fb9bdcf Fix punch timing 2 years ago
  BluebirdGreycoat 71c66e81ad Register reload names for the command-tokens code 2 years ago
  BluebirdGreycoat 4ff7e4d048 Command tokens: QoL 2 years ago
  BluebirdGreycoat 8fb03c72b1 Jaunt: QoL 2 years ago
  BluebirdGreycoat df8b311227 Adjust jaunt coordinates 2 years ago
  BluebirdGreycoat 7c93c7f58a Update bandages 2 years ago
  BluebirdGreycoat 34eb74761f Fix marker positioning 2 years ago
  BluebirdGreycoat 8ac10f3f2e Fix wrong condition in mobs code 2 years ago
  BluebirdGreycoat c899bb07f4 Update 2 years ago
  BluebirdGreycoat f715a5bf22 Update 2 years ago
  BluebirdGreycoat a4904d317e Update 2 years ago
  BluebirdGreycoat 36996f4d5b QoL 2 2 years ago
  BluebirdGreycoat 6028d997e2 QOL 2 years ago
  BluebirdGreycoat 8552246b42 Broaden land-ownership requirement for the jail command token 2 years ago
  BluebirdGreycoat 1a289ebb88 More comments, more adjustments 2 years ago
  BluebirdGreycoat 5c83c3f1e3 Add some more comments 2 years ago
  BluebirdGreycoat d068f8fa30 Add retaliation tables documentation for future reference 2 years ago
  BluebirdGreycoat e0af779633 Increase time a little 2 years ago
  BluebirdGreycoat ba71346d93 Add 'from_arrow' damage group to the other arrows, too 2 years ago
  BluebirdGreycoat 3405e39dbf Loosen land-ownership requirements 2 years ago
  BluebirdGreycoat 4b9938b68d Require assassination to be with a melee weapon - bows are OP 2 years ago
  BluebirdGreycoat 94d4a1f4b3 Small refactor 2 years ago
  BluebirdGreycoat 4fd0af03f8 Rename variables, refactor 2 years ago
  BluebirdGreycoat fdb13db89d Fix TNT being able to blast own protected areas 2 years ago
  BluebirdGreycoat 17ad64821f Update teleport chat-command 2 years ago
  BluebirdGreycoat 874f245de2 Route damage due to TNT arrows through city-block handler 2 years ago
  BluebirdGreycoat 539444d75a Compat between city-block and TNT explosion code 2 years ago
  BluebirdGreycoat 0ec7f3f4ce City-block code refactor 2 years ago
  BluebirdGreycoat a4edc79357 Reorder 2 years ago
  BluebirdGreycoat fa9f6d1f1d Add comment 2 years ago
  BluebirdGreycoat a2835eb8a8 Reorder 2 years ago
  BluebirdGreycoat e3e1c72b81 Handle punches from self without comment 2 years ago
  BluebirdGreycoat 24bfd8f5c3 Use :punch instead of :set_hp 2 years ago
  BluebirdGreycoat 5df2e92d95 Merge branch 'master' of https://notabug.org/BlueBird51/musttest_game 2 years ago
  BluebirdGreycoat e41cfba849 Update 2 years ago
  BluebirdGreycoat 714a360e73 Revise 2 years ago
  BluebirdGreycoat bbcdaef356 Separate 2 years ago
  BluebirdGreycoat f44f248243 Update 2 years ago
  BluebirdGreycoat 5a822b7ed8 Update 2 years ago
  BluebirdGreycoat 37c2003d97 Update 2 years ago
  BluebirdGreycoat ccb3a38588 Ooops ... 2 years ago
  BluebirdGreycoat 5a22be0e5c Add show-path function 2 years ago
  BluebirdGreycoat 0ff075dbc3 Adjust bone share times (take city block into account) 2 years ago
  BluebirdGreycoat f3548a8b29 Whitespace adjustments 2 years ago
  BluebirdGreycoat 347f8fd7d8 Record city-block time & write critical files safely 2 years ago

+ 36 - 0
mods/ac/init.lua

@@ -604,6 +604,32 @@ function ac.on_shutdown()
 	end
 end
 
+function ac.show_path(user, target)
+	local path = ap.get_position_list(target)
+	if not path or #path == 0 then
+		return
+	end
+	local lpath = #path
+
+	for k = 1, lpath, 1 do
+		local data = path[k]
+		local pos = data.pos
+
+		utility.original_add_particle({
+			playername = user,
+			pos = pos,
+			velocity = {x=0, y=0, z=0},
+			acceleration = {x=0, y=0, z=0},
+			expirationtime = 60,
+			size = 4,
+			collisiondetection = false,
+			vertical = false,
+			texture = "heart.png",
+			glow = 14,
+		})
+	end
+end
+
 if not ac.registered then
 	minetest.register_on_joinplayer(function(...)
 		ac.on_joinplayer(...)
@@ -613,6 +639,16 @@ if not ac.registered then
 		ac.on_shutdown(...)
 	end)
 
+	minetest.register_chatcommand("show-path", {
+		params = "<player>",
+		description = "Show user path.",
+		privs = {server=true},
+
+		func = function(pname, param)
+			ac.show_path(pname, param)
+		end,
+	})
+
 	local c = "ac:core"
 	local f = ac.modpath .. "/init.lua"
 	reload.register_file(c, f, false)

+ 1 - 1
mods/ap/init.lua

@@ -27,7 +27,7 @@ function ap.update_players()
 		local add = true
 		if #t > 0 then
 			local op = t[#t].pos
-			if vector_distance(op, p) < 2 then
+			if vector_distance(op, p) < 0.5 then
 				add = false
 			end
 		end

+ 91 - 83
mods/bandages/init.lua

@@ -51,11 +51,6 @@ bandages.delay_from_level = function(level)
   return 0
 end
 
-bandages.target_not_player = function(pname)
-  minetest.chat_send_player(pname, "# Server: Target is not a player.")
-	--easyvend.sound_error(pname)
-end
-
 bandages.target_not_hurt = function(pname, tname)
   minetest.chat_send_player(pname, "# Server: Player <" .. rename.gpn(tname) .. "> is not wounded.")
 	--easyvend.sound_error(pname)
@@ -163,92 +158,105 @@ end
 
 
 
+function bandages.heal_target(itemstack, user, target, level)
+  local pname = user:get_player_name()
+	local tname = target:get_player_name()
+	local hp = target:get_hp()
+	local hp_max = target:get_properties().hp_max
+
+	if hp >= hp_max then
+		return bandages.target_not_hurt(pname, tname)
+	end
+	if hp <= 0 then
+		return bandages.target_is_dead(pname, tname)
+	end
+	if hp < bandages.get_max_damage_for_level(level, hp, hp_max) then
+		return bandages.target_too_hurt(pname, tname, level)
+	end
+	if bandages.players[pname] or bandages.players[tname] then
+		return bandages.medkit_already_in_use(pname)
+	end
+
+	bandages.play_sound_effects(target:get_pos(), level)
+
+	bandages.players[tname] = {pos=target:get_pos()}
+	bandages.players[pname] = {pos=user:get_pos()}
+	minetest.after(bandages.delay_from_level(level), function()
+		local pos = bandages.players[tname].pos
+		bandages.players[tname] = nil
+		bandages.players[pname] = nil
+		local target = minetest.get_player_by_name(tname)
+		if not target or not target:is_player() then return end
+		if vector_distance(target:get_pos(), pos) > bandages.movement_limit_from_level(level) then
+			return bandages.target_moved_too_much(pname, tname)
+		end
+		-- Don't heal target if already dead.
+		-- This solves an exploit people have found.
+		if target:get_hp() == 0 then return end
+		target:set_hp(hp + bandages.hp_from_level(level))
+		bandages.player_bandages_target(pname, tname, target:get_hp(), hp_max)
+	end)
+
+	itemstack:take_item()
+	return itemstack
+end
+
+
+
+function bandages.heal_self(itemstack, user, level)
+  local pname = user:get_player_name()
+	local hp = user:get_hp()
+	local hp_max = user:get_properties().hp_max
+
+	if hp >= hp_max then
+		return bandages.player_not_hurt(pname)
+	end
+	if hp <= 0 then
+		return bandages.player_is_dead(pname)
+	end
+	if hp < bandages.get_max_damage_for_level(level, hp, hp_max) then
+		return bandages.player_too_hurt(pname, level)
+	end
+	if bandages.players[pname] then
+		return bandages.medkit_already_in_use(pname)
+	end
+
+	bandages.play_sound_effects(user:get_pos(), level)
+
+	bandages.players[pname] = {pos=user:get_pos()}
+	minetest.after(bandages.delay_from_level(level), function()
+		local pos = bandages.players[pname].pos
+		bandages.players[pname] = nil
+		local user = minetest.get_player_by_name(pname)
+		if not user or not user:is_player() then return end
+		if vector_distance(user:get_pos(), pos) > bandages.movement_limit_from_level(level) then
+			return bandages.player_moved_too_much(pname)
+		end
+		-- Don't heal user if already dead.
+		-- This solves an exploit people have found.
+		if user:get_hp() == 0 then return end
+		user:set_hp(hp + bandages.hp_from_level(level))
+		bandages.player_bandages_self(pname, user:get_hp(), hp_max)
+	end)
+
+	itemstack:take_item()
+	return itemstack
+end
+
+
+
 bandages.use_bandage = function(itemstack, user, pointed_thing, level)
   if not user or not user:is_player() then return end
-  local pname = user:get_player_name()
   
   if pointed_thing.type == "object" then
     local target = pointed_thing.ref
     if not target or not target:is_player() then
-      return bandages.target_not_player(pname)
-    end
-    local tname = target:get_player_name()
-    local hp = target:get_hp()
-		local hp_max = target:get_properties().hp_max
-    
-    if hp >= hp_max then
-      return bandages.target_not_hurt(pname, tname)
+			return bandages.heal_self(itemstack, user, level)
     end
-    if hp <= 0 then
-      return bandages.target_is_dead(pname, tname)
-    end
-    if hp < bandages.get_max_damage_for_level(level, hp, hp_max) then
-      return bandages.target_too_hurt(pname, tname, level)
-    end
-    if bandages.players[pname] or bandages.players[tname] then
-      return bandages.medkit_already_in_use(pname)
-    end
-    
-    bandages.play_sound_effects(target:get_pos(), level)
-
-    bandages.players[tname] = {pos=target:get_pos()}
-    bandages.players[pname] = {pos=user:get_pos()}
-    minetest.after(bandages.delay_from_level(level), function()
-      local pos = bandages.players[tname].pos
-      bandages.players[tname] = nil
-      bandages.players[pname] = nil
-      local target = minetest.get_player_by_name(tname)
-      if not target or not target:is_player() then return end
-      if vector_distance(target:get_pos(), pos) > bandages.movement_limit_from_level(level) then
-        return bandages.target_moved_too_much(pname, tname)
-      end
-			-- Don't heal target if already dead.
-			-- This solves an exploit people have found.
-			if target:get_hp() == 0 then return end
-      target:set_hp(hp + bandages.hp_from_level(level))
-      bandages.player_bandages_target(pname, tname, target:get_hp(), hp_max)
-    end)
-    
-    itemstack:take_item()
-    return itemstack
-  else
-    -- Otherwise, try to heal self.
-    local hp = user:get_hp()
-		local hp_max = user:get_properties().hp_max
 
-    if hp >= hp_max then
-      return bandages.player_not_hurt(pname)
-    end
-    if hp <= 0 then
-      return bandages.player_is_dead(pname)
-    end
-    if hp < bandages.get_max_damage_for_level(level, hp, hp_max) then
-      return bandages.player_too_hurt(pname, level)
-    end
-    if bandages.players[pname] then
-      return bandages.medkit_already_in_use(pname)
-    end
-    
-    bandages.play_sound_effects(user:get_pos(), level)
-  
-    bandages.players[pname] = {pos=user:get_pos()}
-    minetest.after(bandages.delay_from_level(level), function()
-      local pos = bandages.players[pname].pos
-      bandages.players[pname] = nil
-      local user = minetest.get_player_by_name(pname)
-      if not user or not user:is_player() then return end
-      if vector_distance(user:get_pos(), pos) > bandages.movement_limit_from_level(level) then
-        return bandages.player_moved_too_much(pname)
-      end
-			-- Don't heal user if already dead.
-			-- This solves an exploit people have found.
-			if user:get_hp() == 0 then return end
-      user:set_hp(hp + bandages.hp_from_level(level))
-      bandages.player_bandages_self(pname, user:get_hp(), hp_max)
-    end)
-    
-    itemstack:take_item()
-    return itemstack
+		return bandages.heal_target(itemstack, user, target, level)
+  else
+		return bandages.heal_self(itemstack, user, level)
   end
 end
 

+ 15 - 0
mods/beds/functions.lua

@@ -261,6 +261,21 @@ function beds.report_respawn_status(name)
 	end
 end
 
+
+
+function beds.get_respawn_count(pname)
+	local pos = beds.spawn[pname]
+  if pos then
+		local spawncount = beds.storage:get_int(pname .. ":count")
+    if spawncount > 0 then
+			return spawncount
+		end
+	end
+	return 0
+end
+
+
+
 local function node_blocks_bed(nn)
   if nn == "air" then return false end
 

+ 1 - 0
mods/bones/depends.txt

@@ -1,2 +1,3 @@
 default
 reload
+falldamage

+ 20 - 10
mods/bones/functions.lua

@@ -14,8 +14,9 @@ local get_public_time = function()
   return os.date("!%Y/%m/%d, %H:%M:%S UTC")
 end
 
-local share_bones_time = tonumber(minetest.setting_get("share_bones_time")) or 1200
-local share_bones_time_early = tonumber(minetest.setting_get("share_bones_time_early")) or share_bones_time / 4
+local share_bones_time = 1200
+local share_bones_time_early = (share_bones_time * 0.75)
+local share_bones_time_city = (share_bones_time * 10.0)
 
 
 
@@ -447,12 +448,7 @@ bones.on_dieplayer = function(player, reason, preserve_xp)
 			">'s Undecayed Bones\nMineral XP: " .. string.format("%.2f", xp_for_bones) .. "\n" ..
 			"Died On " .. meta:get_string("diedate"))
 
-		if share_bones_time_early == 0 or not minetest.test_protection(pos, "") then
-			meta:set_int("time", 0)
-		else
-			meta:set_int("time", (share_bones_time - share_bones_time_early))
-		end
-
+		meta:set_int("time", 0)
 		minetest.get_node_timer(pos):start(10)
 	else
 		meta:set_string("infotext",
@@ -700,9 +696,20 @@ end
 
 bones.on_timer = function(pos, elapsed)
 	local meta = minetest.get_meta(pos)
-	local digxp = string.format("%.2f", meta:get_float("digxp"))
 	local time = meta:get_int("time") + elapsed
-	if time >= share_bones_time then
+	local share_time = share_bones_time
+
+	-- If bones are in a protected area, they can be shared earlier than normal.
+	if minetest.test_protection(pos, "") then
+		share_time = share_bones_time_early
+	end
+
+	-- But if bones are in city, preserve them a lot longer.
+	if city_block:in_city(pos) then
+		share_time = share_bones_time_city
+	end
+
+	if time >= share_time then
 		-- Function may have been called twice or more. This prevents an issue.
 		if meta:get_string("owner") == "" then
 			return
@@ -714,12 +721,14 @@ bones.on_timer = function(pos, elapsed)
 		if not sheriff.is_cheater(meta:get_string("owner")) then
 			local cheaters_are_present = false
 			local all_players = minetest.get_connected_players()
+
 			for k, v in ipairs(all_players) do
 				if sheriff.is_cheater(v:get_player_name()) then
 					cheaters_are_present = true
 					break
 				end
 			end
+
 			if cheaters_are_present then
 				local timer = minetest.get_node_timer(pos)
 				timer:start(60*math_random(10, 60))
@@ -732,6 +741,7 @@ bones.on_timer = function(pos, elapsed)
 		if diedate == "" then
 			diedate = "An Unknown Date"
 		end
+		local digxp = string.format("%.2f", meta:get_float("digxp"))
 		meta:set_string("infotext",
 			"Unfortunate <" .. rename.gpn(meta:get_string("owner")) ..
 			">'s Old Bones\nMineral XP: " .. digxp .. "\n" ..

+ 0 - 0
mods/bucket/textures/bucket.png


+ 22 - 0
mods/cans/init.lua

@@ -180,6 +180,28 @@ minetest.register_craft({
   }
 })
 
+cans.register_can({
+  can_name = "cans:river_water_can",
+  can_description = "Salt Water Can",
+  can_inventory_image = "technic_river_water_can.png",
+  can_capacity = 16,
+  liquid_source_name = "default:river_water_source",
+  liquid_flowing_name = "default:river_water_flowing",
+	place_name = "default:river_water_source",
+})
+
+minetest.register_craft({
+  type   = "shapeless",
+  output = "cans:river_water_can",
+  recipe = {"cans:water_can"},
+})
+
+minetest.register_craft({
+  type   = "shapeless",
+  output = "cans:water_can",
+  recipe = {"cans:river_water_can"},
+})
+
 
 
 cans.register_can({

BIN
mods/cans/textures/technic_river_water_can.png


+ 0 - 0
mods/chat_controls/init.lua


Some files were not shown because too many files changed in this diff