mirror of
https://git.minetest.land/VoxeLibre/VoxeLibre.git
synced 2024-11-23 19:11:06 +01:00
a6ac6f5c76
commitcd47233798
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 22:02:20 2021 -0400 Fix rabbit rotation commit0f4628db09
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 20:48:42 2021 -0400 Bring mob spawning variable to the top of the spawning.lua file so it's easier to find commitddb33acf0d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 20:46:45 2021 -0400 Add in unused head code elements commite52aab45c0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 20:23:46 2021 -0400 Implement no-op head operations for enderman commitac85230938
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 20:08:45 2021 -0400 Add in chicken head code with additional pitch modifier commitf57c4709ac
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 19:54:11 2021 -0400 Comment out code that causes mobs to glitch push players in mcl_playerplus commitb6c9a1c423
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 19:51:11 2021 -0400 Fix creeper head commita8152760b9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 19:44:15 2021 -0400 Integrate more switches into internal api elements of head code commit6a38198e97
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 18:24:10 2021 -0400 Add in swap_y_with_x and reverse_head_yaw to flesh out head code api element commitd28e81bc9f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 17:54:14 2021 -0400 Add in mobs look pitch commit5a2773ea1a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 17:48:41 2021 -0400 Add in basics of head code yaw commit555935ff3d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 16:43:23 2021 -0400 Implement basic fall damage commit7e3b69348e
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 16:11:45 2021 -0400 Add secondary existence check after main logic has been executed to prevent future crashes commitc898e1e4db
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 15:59:00 2021 -0400 Update sheep.lua commit9b5c9dc8ae
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 04:31:48 2021 -0400 Make farmable mobs/food mobs a lot less rare commit5e6653ff65
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 04:19:02 2021 -0400 Implement mob cramming commit1616cb7538
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 04:09:35 2021 -0400 Fix nametags commita3ff108cd4
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 04:03:06 2021 -0400 Make mobs walk up stairs/slabs properly, yet not glitch out when jumping over solid nodes commitdf364eed28
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:45:35 2021 -0400 Implement basics of head movement and fix walking mobs flying away after floating commitbac191293b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:45:03 2021 -0400 Fix clientside guessing making floating go crazy client side commitb7c7c2627b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:44:46 2021 -0400 Fix parrots not drowning commit38c22f277d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:24:19 2021 -0400 Add pop sound when baby mob is born commitf83ccdb2ed
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:22:43 2021 -0400 Add in breeding and feeding baby mob sounds commit7733e05a12
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 01:14:48 2021 -0400 Add in random sounds/hurt/death sounds and stop mobs from reviving on server restart again commit0a380265c8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 00:16:54 2021 -0400 Fix dead-alive mobs and add in hurt/die sound commit8d3eff0c16
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 25 00:06:12 2021 -0400 Enable mob drowning commit56086bf02b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 23:33:46 2021 -0400 Fix villager commit079811984c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 23:29:56 2021 -0400 Make every mob besides spiders get slowed down by cobwebs like players commit7e8e63b0e3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 23:15:40 2021 -0400 If mob is in daylight and ignites_in_daylight = true, make mob burn commit49b01dca4f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 22:28:26 2021 -0400 Make mobs drop xp on death commit3d5cceab76
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 22:21:58 2021 -0400 Fix ghast strange behavior in the nether commita73e5b57c0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 22:14:25 2021 -0400 Make pitch movement for fly/swim mobs more dynamic and make ghasts randomly fly around when attacking commitb401b50c04
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 21:15:42 2021 -0400 Give mobs 6 seconds of memory to prevent strange behavior when player hides behind something commit807fb6966d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 20:27:37 2021 -0400 Make spiders climb up walls, fix problems with mob following freaking out when under, fix spider collisionbox commit11b5684a90
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 20:05:14 2021 -0400 Remove wolf-dog shift click breeding, and implement better logic commit41bfaae370
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 20:02:59 2021 -0400 Allow putting chest on carpeted llama by owner, enable swapping carpets commit8c855f5b09
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 19:29:37 2021 -0400 Add in llama carpets commite0185a9311
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 18:43:17 2021 -0400 Fix pig logic issue commitc2cb15a47f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 18:36:22 2021 -0400 Fix horse breeding commit39f7d0cf3c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 18:18:53 2021 -0400 Update api.txt commit3e9bbca914
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 18:06:24 2021 -0400 Fix enderman crashing commit81713a342d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:38:50 2021 -0400 Allow tamed wolves to be shift click bred commita27e6731cd
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:29:30 2021 -0400 Make sheep breedable commitefce97c172
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:27:17 2021 -0400 Make llamas shift click breedable commit53c96cae2d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:26:45 2021 -0400 Make pigs shift click breedable commitdbe712bc17
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:23:33 2021 -0400 Make llama breedable commit0d4d85bac6
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:19:41 2021 -0400 Fix horse literally blinding you following you commit6f2e2ab4c5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:17:22 2021 -0400 Make chicken breedable commit3649e5f6f5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:17:09 2021 -0400 Make horse breedable commit2dab0773df
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 24 00:00:21 2021 -0400 Remove unused breedable api call commit0568c14a43
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 23:59:35 2021 -0400 Fix timer and make mooshroom breedable commit531253008a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 23:56:59 2021 -0400 Complete mob breeding, make cows breedable commit79cb6ddc49
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 22:35:35 2021 -0400 Fix lua locals in environment.lua commit6eb3eef215
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 22:34:40 2021 -0400 Fix typo in function commitc37a82d4a2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 22:03:29 2021 -0400 Add comments commited9d629b99
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 21:59:42 2021 -0400 Add in mob following for cows commitfcfd6b9d19
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 21:14:23 2021 -0400 Set up basics for breeding mechanics commit5ee6cf6c9b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 19:49:35 2021 -0400 Implement mob despawner/mob limiter commit19c8dd1dd4
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 18:41:41 2021 -0400 Stop hostile mobs from falling through water when stunned commit31ded5e40f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 18:34:20 2021 -0400 Re-implement neutral mob switch commit13c321e8f2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 18:03:01 2021 -0400 Re-enable mob spawning commitea6912c980
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:44:49 2021 -0400 Don't do knockback effect for mobs when hurt by a rider commit8dafac50a8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:37:20 2021 -0400 Make mobs run away slightly faster commit3560bda4a5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:29:23 2021 -0400 Remove unused code and variables from mob punch commit9720986c4d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:27:08 2021 -0400 Fix punching a mob breaking it's velocity commitdc7592528c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:23:00 2021 -0400 Add red tint hurt effect commit304cbed447
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:12:02 2021 -0400 Make mobs that should be skittish, skittish commitaf4c42fea7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 17:10:44 2021 -0400 Add skittish behavior (runaway from punch) and fix ocelot commit8daf197fb8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:52:07 2021 -0400 Fix iron golem rotation commitc138050e0b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:45:12 2021 -0400 Make iron golem neutral and protective, fix rotation commit36d5af1d15
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:35:16 2021 -0400 Stop dead mobs from getting in the way of fighting other mobs commit73b4d3c1d2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:31:13 2021 -0400 stop projectile mobs from being completely disabled while stunned commiteb7ae5e10e
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:28:30 2021 -0400 Fix random crash commitc831da2c02
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:22:34 2021 -0400 Fix mobs not making hit sound when hit by node commitd5a38fef58
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:19:37 2021 -0400 Add in new mob punched sounds commit8e7ce5a72a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 16:04:01 2021 -0400 Add in a visual for horse taming (hearts) commit189c0ad157
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 15:53:01 2021 -0400 Half finish horse (riding logic, etc) commitf64f8e31e3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 14:50:38 2021 -0400 Fix llama blaze and ghast projectile sprites commit58bee2a2dd
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 14:43:00 2021 -0400 Fix projectile tails clipping through sprite commit16cc7e37d2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 14:34:59 2021 -0400 Randomize projectile cooldown timer commit8eb9ba12ce
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 14:33:40 2021 -0400 Fix crash when mob collides with nil entity commit5d59583583
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 14:10:12 2021 -0400 Massive overhaul to projectile mobs with custom projectile function, make llamas spit commitf6fa90096d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 13:35:30 2021 -0400 Fix enderman teleport attack commit4fb9e69e41
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 13:27:17 2021 -0400 Make enderman become hostile when stared at, freeze when attacking when stared at commit99f13f84b5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 13:13:23 2021 -0400 Half-fix enderman commitdd76b15c50
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 13:06:57 2021 -0400 Make ghasts not insta-kill commitb6f19699e9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 13:06:17 2021 -0400 Make enderdragon half work commit4efec1ef58
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 23 12:55:11 2021 -0400 Add in chicken slow falling commit0895666407
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 23:36:58 2021 -0400 Fix random crash with mixed mob ally data types commit408296140a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 23:30:32 2021 -0400 Fix and overhaul wolves commitaac1e19336
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 23:18:33 2021 -0400 Implement rotation locking when standing, fix rotation unlock/lock for fly/swim mobs commitfa059b5df2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:59:03 2021 -0400 Fix ghast's eyeheight commit2e3e92e393
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:58:32 2021 -0400 Fix ghast's insane difficulty commit11bcf3aa34
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:51:13 2021 -0400 Add attributes to epCode commit2099be43ea
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:50:14 2021 -0400 Update to epCode's fixed version of ghast model commit5037ec3736
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:40:16 2021 -0400 Fix ghasts horrible collisionbox commit0a8fff6524
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 22:08:54 2021 -0400 Add in mob criticals when falling commitafdcada1fd
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 21:46:13 2021 -0400 Fix endermite commit5d876725c5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 21:45:00 2021 -0400 Fix bats commitef0d52a2df
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 21:41:54 2021 -0400 Update backup_code_api.lua commit8142f7e512
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 21:36:42 2021 -0400 Add in mob death commitebf27866ca
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 21:12:08 2021 -0400 Fix typo and error in animation.lua commit3fe8d2d3c5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:30:50 2021 -0400 Add file death_logic.lua commitb73ab976a1
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:25:58 2021 -0400 Implement framework for mob death commit8530e6ee36
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:20:56 2021 -0400 Make mob punching time based commite1812b2cdb
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:12:02 2021 -0400 Reset pause timer to 0 commit991bba0a1d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:10:01 2021 -0400 Add comments into ai.lua commitf9a7144b65
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 20:07:30 2021 -0400 Implement ability to hurt mobs commit45790c0be0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 19:12:02 2021 -0400 Re-enable mob punching (broken) commit31a791c33b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 18:20:58 2021 -0400 Undo debug.txt spam from mob spawning commitd0d128c1d8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 18:18:57 2021 -0400 Break infinite loop if unable to find any mob to spawn commitee905642c2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 17:56:38 2021 -0400 Add temporary warning debug to spawning algorithm output commit2cef9e7cca
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 00:39:32 2021 -0400 Optimize mob spawning even further with additional lua locals commitedb1939649
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 00:27:35 2021 -0400 Fix mob_counter in mob spawning limiter commit7c1adeab45
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 22 00:20:57 2021 -0400 Hyper-optimize mob spawning commitfbe3ccc5c0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 23:28:38 2021 -0400 Delete current state of things comment commit5e15af260b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 23:25:19 2021 -0400 Fix pig rotation commit6aa6364492
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 23:25:10 2021 -0400 Fix sheep rotation commit29305f548d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 15:08:35 2021 -0400 Overhaul arrow register, implement basic blaze, break parts of arrow register for now, remove fallback for detecting players commit08c90c34e8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 13:05:46 2021 -0400 Make parrots and squids work with tilt fly/swim commit91099c3be9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 13:01:14 2021 -0400 Fix auto-true statement for tilt fly/swim commit71c34823bc
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:56:36 2021 -0400 Make tilt flying/swimming dynamic commit20886f54bb
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:48:23 2021 -0400 Make shooty mobs jump commitebd995fbd2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:45:02 2021 -0400 Simplify skeleton arrow damage calculation commitc9f71d66f5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:42:34 2021 -0400 Implement skeletons/strays commit99e808296b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:17:51 2021 -0400 Add missing skeleton/stray run animation commit74094938bb
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 12:10:29 2021 -0400 Fix crash with non-punch attack mobs in collision commit6bd279255c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 11:50:22 2021 -0400 Fully implement zombie pigmen commit964ce9ccf7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 11:42:01 2021 -0400 Temporarily disable spawn eggs from setting owner commit5062d56a5d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 11:00:02 2021 -0400 Implement neutral mob mechanics and partial implement of zombie pigmen commitb0b1ec9436
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 10:53:20 2021 -0400 Implement zombie pigmen and make them turn hostile when punched commitf1dc286442
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 10:23:51 2021 -0400 Dump mob_punch from backup_code_api.lua back into interaction.lua commitcc2a0ae52c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 10:21:11 2021 -0400 Complete charged creeper commit486959515c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 21 10:20:31 2021 -0400 Make creepers even more dangerous commit576621169b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 23:26:18 2021 -0400 Make creepers and zombies even harder commit2c87bd19f3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 23:14:53 2021 -0400 Overhaul zombie villager commit1ed3377559
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 23:11:18 2021 -0400 Add punch mobs knockback to players when hit commit8c9356a18c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:58:39 2021 -0400 Implement eye_height and viewing range for hostile mobs, along with making punchy mobs jump over nodes commita05ebd7cc2
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:44:34 2021 -0400 Add informative text art commit60ac3058ce
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:42:51 2021 -0400 Make zombies more difficult commit751c4c2d99
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:41:13 2021 -0400 Integrate mob punching into collision detection commit6b52b94516
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:30:34 2021 -0400 Start setting up hostile punch attack type commitd371d6fdc9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 22:04:54 2021 -0400 Adjust creeper explosion settings commitfabd4d64e6
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 21:35:19 2021 -0400 Slow down creeper type mobs explosion buildup commitbf367fffd0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 21:34:18 2021 -0400 Add in sound_handling and make explosion type mobs make their attack sound before explosion animation commit0b763f54b5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 21:00:36 2021 -0400 Finish creeper movement ai and move jump_check into environment commitcd6f07537f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 20:43:45 2021 -0400 Make creepers even more deadly commit9678b556e1
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 20:33:30 2021 -0400 Fix crashes when trying to collision detect a removed mob commitcdb840609d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 20:19:55 2021 -0400 Add in creeper basic prototype commit008d670ed9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 17:10:51 2021 -0400 Remove wandering from ai commit491ef6c8f8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 16:48:20 2021 -0400 Add in auto mob removal if something goes horribly wrong commit348df0fcec
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 16:46:10 2021 -0400 Rename detect_players_in_area to detect_closest_player_within_radius commitac08c6991c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 16:39:05 2021 -0400 Add in detect_players_in_area commit3d776138e9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 20 14:55:22 2021 -0400 Start implementing creeper ai commit85e531bf10
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 18 21:24:31 2021 -0400 Remove unneeded mobs:protect from code commit4d589dfb2a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 18 21:22:39 2021 -0400 Remove literally unneeded mobs:capture_mob commit39985aa558
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 18 21:22:21 2021 -0400 Up fallback max xp to 3 commit1920ddf915
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 18 21:02:03 2021 -0400 Change all enemy attack info to more workable and understandable attacks commit719bb2a3c9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 18:21:33 2021 -0400 Add in prototype jump-only mobs api commitdb87b8e0a3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 17:09:57 2021 -0400 fix chicken rotation commite2987245fd
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 17:00:34 2021 -0400 Balance out collision forces for mobs commit3cf263d292
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 16:23:38 2021 -0400 Add in dynamic pitch in flying/swimming mobs commit5ade34115c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 13:17:29 2021 -0400 Remove random state initialization in set_up.lua commitd9729fc865
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 13:13:45 2021 -0400 Fix parrot's rotation commit58d9670e77
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 13:11:39 2021 -0400 Remove collisionbox addition for y position for fly mobs commita20f272e08
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 13:05:53 2021 -0400 re-adjust logic gate for mobs floating in water and lava commit0794bc5437
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 13:04:55 2021 -0400 Make flying mobs float in water and lava commit8783912938
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:48:57 2021 -0400 Add in mobs api swimming animation commitf2e909ab8d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:41:14 2021 -0400 Add in fly logic gate commit07841c8963
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:38:48 2021 -0400 Swap name of quick_rotate_45 to quick_rotate commit240d6ea211
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:37:04 2021 -0400 Add note about quick_rotate_45 actually rotating 11.25 degrees commite8148f81ab
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:36:19 2021 -0400 Make underwater mobs try to continuously swim around with quick_rotate_45 commit061602d9d4
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:28:07 2021 -0400 Overhaul separation of swimming and flying for ease of use with writing mobs api commit5365dec19a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sat Apr 17 12:01:27 2021 -0400 Adjust "flying" vector checks for mobs commitdda7839d8c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 21:43:02 2021 -0400 Add in prototype swimming commitf1141aed9f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 21:08:54 2021 -0400 Make mobs flop when outside of flying node commit84ca7681fc
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 20:47:16 2021 -0400 Make squids fly in water flowing and water source commit52c3db041e
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 20:32:05 2021 -0400 Add in fly state prep for mobs commit6db4511dd5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 20:06:55 2021 -0400 Add notes commit15ea9c1c71
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 19:59:20 2021 -0400 Implement self walking velocity for walking state commit9d6d042ee3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 19:37:01 2021 -0400 Fix formatting in ai.lua commitce7f4918b0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 19:35:19 2021 -0400 Re-organize comments commit05d06a4c8f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 18:36:23 2021 -0400 Add comment to state_execution commitc761db86c7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 18:29:42 2021 -0400 re-arrange mob logic for random wandering commited456ecb47
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 18:17:51 2021 -0400 Make mobs not fear cliffs if fear_height is 0 commit8ca5f221ec
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 18:13:54 2021 -0400 clean up ai.lua commitcadd53c103
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 16:39:03 2021 -0400 Adjust mob jumping default to account for higher gravity commit57b293de2b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 16:37:15 2021 -0400 Make mobs gravity equal to player's commitfb9a55e562
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 15:55:11 2021 -0400 Make jump_check more modular and allow mobs to turn if at a wall commita6a54b3414
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 15:49:03 2021 -0400 Make mobs not jump if against a wall commit6c5393427f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 15:39:39 2021 -0400 Smooth out mob cliff check and check if falling before cliff check commit2486ffef11
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 15:30:44 2021 -0400 Make wandering mobs avoid cliffs commitadc683c6a7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 14:19:22 2021 -0400 Clear mob animation on activate commitd0695e7929
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 13:58:08 2021 -0400 Fix mob animation "memory leak" commit024cf46307
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 11:52:29 2021 -0400 Adjust spacing in animation.lua commitf38492bcb0
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 11:50:29 2021 -0400 Re-implement animation check gate for mobs commita934a59f3b
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 11:50:13 2021 -0400 Implement mob random walk directions commit94ca7e8b89
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 11:31:18 2021 -0400 Add in state switch and state execution for mobs commit626c30de6d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 16 11:30:55 2021 -0400 Create todo.txt commitc2bac87a6d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 21:46:33 2021 -0400 Update set_up.lua commit375d683d08
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 16:18:42 2021 -0400 Fix forgotten localization in collision.lua commit246bdf9707
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 15:55:10 2021 -0400 Implement basic mob walking animation test commitd07d0ae31c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 15:34:07 2021 -0400 Make mobs jump properly commit6cb6d714c9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 15:04:55 2021 -0400 Reorganize all mob sections into multiple files commit5155d12d05
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 14:09:54 2021 -0400 Reformat mobs_mcl to api folder for ease of use commitbbcfb3fdb1
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 11:33:09 2021 -0400 Randomize walking or standing on spawn in commit9e4bf6e130
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 11:29:18 2021 -0400 Move old set_yaw and add node on set_velocity commite53a193c4f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 11:25:55 2021 -0400 Fix get_velocity (mobs internal) commit14207dd96a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 11:23:52 2021 -0400 Smooth out mob movement set_velocity more commita0ed1a0b20
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 10:05:24 2021 -0400 Add automatic rotation lock commitba46e7fa42
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 09:28:58 2021 -0400 Remove old debug of colliding with objects commit61124905f3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 15 09:28:22 2021 -0400 Add in mob auto rotation (implementation 1) commit8b200c7352
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 14 19:38:14 2021 -0400 Add in basic movement rotation testing commit67259891a8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 14 18:01:29 2021 -0400 Remove unneeded comments commitd063db751c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 14 17:26:20 2021 -0400 Disable mcl_playerplus random check that moves players randomly commitd4db27f0e1
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 14 17:25:39 2021 -0400 Update backup_code_api.lua commit755533beeb
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 14 11:50:22 2021 -0400 Disable literally everything in mobs api commit3f6312a631
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 20:24:46 2021 -0400 Make mobs magnetic collision more jello-y commitaa4d34c10e
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 20:00:38 2021 -0400 Improve mob to mob collision commit1210bc463a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 19:44:24 2021 -0400 prevent mob collision detection shootout commited60266713
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 19:17:48 2021 -0400 Gut even more elements of the api commit220d30df5f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 19:13:29 2021 -0400 Completely gut do_states commit9758bbf2e7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 08:21:04 2021 -0400 Finish gutting mob api commitf29ad4b8b7
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 08:20:11 2021 -0400 Reorganize more settings to the top of file commit54f5bee8a3
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 08:08:29 2021 -0400 reorganize load settings commit02515f0778
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 08:07:32 2021 -0400 Move a large chunk of code to backup_code_api.lua commit3fc0184182
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Tue Apr 13 07:39:57 2021 -0400 Disable entire mob ai to work on vanilla walking commit6fff719322
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Mon Apr 12 08:47:07 2021 -0400 Localize minetest library commitadaf74fc5c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Mon Apr 12 08:13:11 2021 -0400 Remove spacing and delete old collision comments commita564009e4a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Mon Apr 12 08:11:55 2021 -0400 Change HORNY_TIMER to BREED_TIMER commit00759da39d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 11 18:29:32 2021 -0400 Unlimit mob ai commit9aafc28a20
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 11 14:47:56 2021 -0400 Fix mobs nil check during mob_step commit67c40885ef
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 11 14:21:19 2021 -0400 Fix mobs collision system only running during movement - major overhaul with ai disabled commit2456e3cd1e
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 11 12:52:31 2021 -0400 Adjust math localizations in api.lua commit725dc731dd
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Sun Apr 11 11:58:33 2021 -0400 Adjust mob collision detection - this breaks a lot of things and will be fixed later commite15fd2f4b6
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Fri Apr 9 01:38:34 2021 -0400 Add lua locals into mcl_dungeons for performance commitc937b2a973
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 14:19:42 2021 -0400 test commit8c10fe4057
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 12:48:02 2021 -0400 Adjust spawning to be closer and more frequent commitbd7866d798
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 12:07:20 2021 -0400 Finish mob limiter commit9369c9cab8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 10:01:15 2021 -0400 Fix spawn timer reset debug commit28823298e1
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 10:00:04 2021 -0400 Fix forgotten biome check commit9d48549ec5
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 09:52:50 2021 -0400 Complete prototype of biome generated mobs commit518252679f
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:42:57 2021 -0400 Fix a lot of things commitbb078b0c4c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:33:50 2021 -0400 Fix silverfish typo commitadab48ff0c
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:29:16 2021 -0400 Readjust mobs internal settings to not cause insane memory usage commit47c59edb51
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:13:46 2021 -0400 Fix typo commit5ca30fa8ee
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:12:43 2021 -0400 Combine air and ground type spawning into ground commitaacb8fc7b9
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 08:09:43 2021 -0400 Add in extra_mobs information commitf900b24b53
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 07:39:18 2021 -0400 Add in all biome information to mobs commit0ad833c046
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 06:57:24 2021 -0400 Add bats, chicken, and blaze spawn info commitf4a6bdc6b8
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 06:48:25 2021 -0400 Make reference list copy-pastable commitbf4bf9a0cc
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 06:10:07 2021 -0400 Ignore default or void dimensions commit8e1e02d1fb
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 06:04:36 2021 -0400 Add biome list commitda045c207d
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 8 02:07:15 2021 -0400 Refactor spawning into it's own file commit6ec66ef6f6
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 7 23:16:03 2021 -0400 Fix mobs colliding with other mobs/players commit6bd249547a
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Wed Apr 7 23:07:04 2021 -0400 Fix mobs colliding with objects commitc4d030d111
Author: jordan4ibanez <jordan4ibanez@users.noreply.github.com> Date: Thu Apr 1 23:48:00 2021 -0400 Fix item drop on laggy servers
1153 lines
29 KiB
Lua
1153 lines
29 KiB
Lua
local math_random = math.random
|
|
local math_pi = math.pi
|
|
local math_floor = math.floor
|
|
local math_round = math.round
|
|
|
|
local vector_multiply = vector.multiply
|
|
local vector_add = vector.add
|
|
local vector_new = vector.new
|
|
local vector_distance = vector.distance
|
|
|
|
local minetest_yaw_to_dir = minetest.yaw_to_dir
|
|
local minetest_get_item_group = minetest.get_item_group
|
|
local minetest_get_node = minetest.get_node
|
|
local minetest_line_of_sight = minetest.line_of_sight
|
|
local minetest_get_node_light = minetest.get_node_light
|
|
|
|
local DOUBLE_PI = math.pi * 2
|
|
local THIRTY_SECONDTH_PI = DOUBLE_PI * 0.03125
|
|
|
|
|
|
--a simple helper function which is too small to move into movement.lua
|
|
local quick_rotate = function(self,dtime)
|
|
self.yaw = self.yaw + THIRTY_SECONDTH_PI
|
|
if self.yaw > DOUBLE_PI then
|
|
self.yaw = self.yaw - DOUBLE_PI
|
|
end
|
|
end
|
|
|
|
--a simple helper function for rounding
|
|
--http://lua-users.org/wiki/SimpleRound
|
|
function round2(num, numDecimalPlaces)
|
|
return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
|
|
end
|
|
|
|
|
|
--[[
|
|
_ _
|
|
| | | |
|
|
| | __ _ _ __ __| |
|
|
| | / _` | '_ \ / _` |
|
|
| |___| (_| | | | | (_| |
|
|
\_____/\__,_|_| |_|\__,_|
|
|
]]--
|
|
|
|
--this is basically reverse jump_check
|
|
local cliff_check = function(self,dtime)
|
|
--mobs will flip out if they are falling without this
|
|
if self.object:get_velocity().y ~= 0 then
|
|
return false
|
|
end
|
|
|
|
local pos = self.object:get_pos()
|
|
local dir = minetest_yaw_to_dir(self.yaw)
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
local radius = collisionbox[4] + 0.5
|
|
|
|
dir = vector_multiply(dir,radius)
|
|
|
|
local free_fall, blocker = minetest_line_of_sight(
|
|
{x = pos.x + dir.x, y = pos.y, z = pos.z + dir.z},
|
|
{x = pos.x + dir.x, y = pos.y - self.fear_height, z = pos.z + dir.z})
|
|
|
|
return free_fall
|
|
end
|
|
|
|
|
|
-- state switching logic (stand, walk, run, attacks)
|
|
local land_state_list_wandering = {"stand", "walk"}
|
|
|
|
local land_state_switch = function(self, dtime)
|
|
|
|
--do math before sure not attacking, following, or running away so continue
|
|
--doing random walking for mobs if all states are not met
|
|
self.state_timer = self.state_timer - dtime
|
|
|
|
--only run away
|
|
if self.skittish and self.state == "run" then
|
|
self.run_timer = self.run_timer - dtime
|
|
if self.run_timer > 0 then
|
|
return
|
|
end
|
|
--continue
|
|
end
|
|
|
|
--ignore everything else if breeding
|
|
if self.breed_lookout_timer and self.breed_lookout_timer > 0 then
|
|
self.state = "breed"
|
|
return
|
|
--reset the state timer to get the mob out of
|
|
--the breed state
|
|
elseif self.state == "breed" then
|
|
self.state_timer = 0
|
|
end
|
|
|
|
--ignore everything else if following
|
|
if mobs.check_following(self) and
|
|
(not self.breed_lookout_timer or (self.breed_lookout_timer and self.breed_lookout_timer == 0)) and
|
|
(not self.breed_timer or (self.breed_timer and self.breed_timer == 0)) then
|
|
self.state = "follow"
|
|
return
|
|
--reset the state timer to get the mob out of
|
|
--the follow state - not the cleanest option
|
|
--but the easiest
|
|
elseif self.state == "follow" then
|
|
self.state_timer = 0
|
|
end
|
|
|
|
--only attack
|
|
if self.hostile and self.attacking then
|
|
self.state = "attack"
|
|
return
|
|
end
|
|
|
|
--if finally reached here then do random wander
|
|
if self.state_timer <= 0 then
|
|
self.state_timer = math.random(4,10) + math.random()
|
|
self.state = land_state_list_wandering[math.random(1,#land_state_list_wandering)]
|
|
end
|
|
|
|
end
|
|
|
|
-- states are executed here
|
|
local land_state_execution = function(self,dtime)
|
|
|
|
--[[ -- this is a debug which shows the timer and makes mobs breed 100 times faster
|
|
print(self.breed_timer)
|
|
if self.breed_timer > 0 then
|
|
self.breed_timer = self.breed_timer - (dtime * 100)
|
|
if self.breed_timer <= 0 then
|
|
self.breed_timer = 0
|
|
end
|
|
end
|
|
]]--
|
|
|
|
--no collisionbox exception
|
|
if not self.object:get_properties() then
|
|
return
|
|
end
|
|
|
|
|
|
--timer to time out looking for mate
|
|
if self.breed_lookout_timer and self.breed_lookout_timer > 0 then
|
|
self.breed_lookout_timer = self.breed_lookout_timer - dtime
|
|
--looking for mate failed
|
|
if self.breed_lookout_timer <= 0 then
|
|
self.breed_lookout_timer = 0
|
|
end
|
|
end
|
|
|
|
--cool off after breeding
|
|
if self.breed_timer and self.breed_timer > 0 then
|
|
self.breed_timer = self.breed_timer - dtime
|
|
--do this to skip the first check, using as switch
|
|
if self.breed_timer <= 0 then
|
|
self.breed_timer = 0
|
|
end
|
|
end
|
|
|
|
|
|
local pos = self.object:get_pos()
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
--get the center of the mob
|
|
pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2)
|
|
local current_node = minetest_get_node(pos).name
|
|
local float_now = false
|
|
|
|
--recheck if in water or lava
|
|
if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then
|
|
float_now = true
|
|
end
|
|
|
|
--make slow falling mobs fall slow
|
|
if self.fall_slow then
|
|
local velocity = self.object:get_velocity()
|
|
if velocity then
|
|
if velocity.y < 0 then
|
|
--lua is acting really weird so we have to help it
|
|
if round2(self.object:get_acceleration().y, 1) == -self.gravity then
|
|
self.object:set_acceleration(vector_new(0,0,0))
|
|
mobs.mob_fall_slow(self)
|
|
end
|
|
else
|
|
if round2(self.object:get_acceleration().y, 1) == 0 then
|
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--calculate fall damage
|
|
if self.fall_damage then
|
|
mobs.calculate_fall_damage(self)
|
|
end
|
|
|
|
if self.state == "stand" then
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "stand")
|
|
|
|
--set the velocity of the mob
|
|
mobs.set_velocity(self,0)
|
|
|
|
--animation fixes for explosive mobs
|
|
if self.attack_type == "explode" then
|
|
mobs.reverse_explosion_animation(self,dtime)
|
|
end
|
|
|
|
mobs.lock_yaw(self)
|
|
elseif self.state == "follow" then
|
|
|
|
--always look at players
|
|
mobs.set_yaw_while_following(self)
|
|
|
|
--check distance
|
|
local distance_from_follow_person = vector_distance(self.object:get_pos(), self.following_person:get_pos())
|
|
local distance_2d = mobs.get_2d_distance(self.object:get_pos(), self.following_person:get_pos())
|
|
|
|
--don't push the player if too close
|
|
--don't spin around randomly
|
|
if self.follow_distance < distance_from_follow_person and self.minimum_follow_distance < distance_2d then
|
|
mobs.set_mob_animation(self, "run")
|
|
mobs.set_velocity(self,self.run_velocity)
|
|
|
|
if mobs.jump_check(self) == 1 then
|
|
mobs.jump(self)
|
|
end
|
|
else
|
|
mobs.set_mob_animation(self, "stand")
|
|
mobs.set_velocity(self,0)
|
|
end
|
|
|
|
elseif self.state == "walk" then
|
|
|
|
self.walk_timer = self.walk_timer - dtime
|
|
|
|
--reset the walk timer
|
|
if self.walk_timer <= 0 then
|
|
|
|
--re-randomize the walk timer
|
|
self.walk_timer = math.random(1,6) + math.random()
|
|
|
|
--set the mob into a random direction
|
|
self.yaw = (math_random() * (math.pi * 2))
|
|
end
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "walk")
|
|
|
|
--enable rotation locking
|
|
mobs.movement_rotation_lock(self)
|
|
|
|
--check for nodes to jump over
|
|
local node_in_front_of = mobs.jump_check(self)
|
|
|
|
if node_in_front_of == 1 then
|
|
|
|
mobs.jump(self)
|
|
|
|
--turn if on the edge of cliff
|
|
--(this is written like this because unlike
|
|
--jump_check which simply tells the mob to jump
|
|
--this requires a mob to turn, removing the
|
|
--ease of a full implementation for it in a single
|
|
--function)
|
|
elseif node_in_front_of == 2 or (self.fear_height ~= 0 and cliff_check(self,dtime)) then
|
|
--turn 45 degrees if so
|
|
quick_rotate(self,dtime)
|
|
--stop the mob so it doesn't fall off
|
|
mobs.set_velocity(self,0)
|
|
end
|
|
|
|
--only move forward if path is clear
|
|
if node_in_front_of == 0 or node_in_front_of == 1 then
|
|
--set the velocity of the mob
|
|
mobs.set_velocity(self,self.walk_velocity)
|
|
end
|
|
|
|
--animation fixes for explosive mobs
|
|
if self.attack_type == "explode" then
|
|
mobs.reverse_explosion_animation(self,dtime)
|
|
end
|
|
|
|
elseif self.state == "run" then
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "run")
|
|
|
|
--enable rotation locking
|
|
mobs.movement_rotation_lock(self)
|
|
|
|
--check for nodes to jump over
|
|
local node_in_front_of = mobs.jump_check(self)
|
|
|
|
if node_in_front_of == 1 then
|
|
|
|
mobs.jump(self)
|
|
|
|
--turn if on the edge of cliff
|
|
--(this is written like this because unlike
|
|
--jump_check which simply tells the mob to jump
|
|
--this requires a mob to turn, removing the
|
|
--ease of a full implementation for it in a single
|
|
--function)
|
|
elseif node_in_front_of == 2 or (self.fear_height ~= 0 and cliff_check(self,dtime)) then
|
|
--turn 45 degrees if so
|
|
quick_rotate(self,dtime)
|
|
--stop the mob so it doesn't fall off
|
|
mobs.set_velocity(self,0)
|
|
end
|
|
|
|
--only move forward if path is clear
|
|
if node_in_front_of == 0 or node_in_front_of == 1 then
|
|
--set the velocity of the mob
|
|
mobs.set_velocity(self,self.run_velocity)
|
|
end
|
|
|
|
elseif self.state == "attack" then
|
|
|
|
--execute mob attack type
|
|
if self.attack_type == "explode" then
|
|
|
|
mobs.explode_attack_walk(self, dtime)
|
|
|
|
elseif self.attack_type == "punch" then
|
|
|
|
mobs.punch_attack_walk(self,dtime)
|
|
|
|
elseif self.attack_type == "projectile" then
|
|
|
|
mobs.projectile_attack_walk(self,dtime)
|
|
|
|
end
|
|
elseif self.state == "breed" then
|
|
|
|
mobs.breeding_effect(self)
|
|
|
|
local mate = mobs.look_for_mate(self)
|
|
|
|
--found a mate
|
|
if mate then
|
|
mobs.set_yaw_while_breeding(self,mate)
|
|
mobs.set_velocity(self, self.walk_velocity)
|
|
|
|
--smoosh together basically
|
|
if vector_distance(self.object:get_pos(), mate:get_pos()) <= self.breed_distance then
|
|
mobs.set_mob_animation(self, "stand")
|
|
if self.special_breed_timer == 0 then
|
|
self.special_breed_timer = 2 --breeding takes 2 seconds
|
|
end
|
|
|
|
self.special_breed_timer = self.special_breed_timer - dtime
|
|
if self.special_breed_timer <= 0 then
|
|
|
|
--pop a baby out, it's a miracle!
|
|
local baby_pos = vector.divide(vector.add(self.object:get_pos(), mate:get_pos()), 2)
|
|
local baby_mob = minetest.add_entity(pos, self.name, minetest.serialize({baby = true, grow_up_timer = self.grow_up_goal, bred = true}))
|
|
|
|
mobs.play_sound_specific(self,"item_drop_pickup")
|
|
|
|
self.special_breed_timer = 0
|
|
self.breed_lookout_timer = 0
|
|
self.breed_timer = self.breed_timer_cooloff
|
|
|
|
mate:get_luaentity().special_breed_timer = 0
|
|
mate:get_luaentity().breed_lookout_timer = 0
|
|
mate:get_luaentity().breed_timer = self.breed_timer_cooloff -- can reuse because it's the same mob
|
|
end
|
|
else
|
|
mobs.set_mob_animation(self, "walk")
|
|
end
|
|
--couldn't find a mate, just stand there until the player pushes it towards one
|
|
--or the timer runs out
|
|
else
|
|
mobs.set_mob_animation(self, "stand")
|
|
mobs.set_velocity(self,0)
|
|
end
|
|
|
|
end
|
|
|
|
if float_now then
|
|
mobs.float(self)
|
|
else
|
|
local acceleration = self.object:get_acceleration()
|
|
if acceleration and acceleration.y == 0 then
|
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
_____ _
|
|
/ ___| (_)
|
|
\ `--.__ ___ _ __ ___
|
|
`--. \ \ /\ / / | '_ ` _ \
|
|
/\__/ /\ V V /| | | | | | |
|
|
\____/ \_/\_/ |_|_| |_| |_|
|
|
]]--
|
|
|
|
|
|
|
|
-- state switching logic (stand, walk, run, attacks)
|
|
local swim_state_list_wandering = {"stand", "swim"}
|
|
|
|
local swim_state_switch = function(self, dtime)
|
|
self.state_timer = self.state_timer - dtime
|
|
if self.state_timer <= 0 then
|
|
self.state_timer = math.random(4,10) + math.random()
|
|
self.state = swim_state_list_wandering[math.random(1,#swim_state_list_wandering)]
|
|
end
|
|
end
|
|
|
|
|
|
--check if a mob needs to turn while swimming
|
|
local swim_turn_check = function(self,dtime)
|
|
|
|
local pos = self.object:get_pos()
|
|
pos.y = pos.y + 0.1
|
|
local dir = minetest_yaw_to_dir(self.yaw)
|
|
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
local radius = collisionbox[4] + 0.5
|
|
|
|
vector_multiply(dir, radius)
|
|
|
|
local test_dir = vector.add(pos,dir)
|
|
|
|
local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0
|
|
|
|
return(green_flag_1)
|
|
end
|
|
|
|
--this is to swap the built in engine acceleration modifier
|
|
local swim_physics_swapper = function(self,inside_swim_node)
|
|
|
|
--should be swimming, gravity is applied, switch to floating
|
|
if inside_swim_node and self.object:get_acceleration().y ~= 0 then
|
|
self.object:set_acceleration(vector_new(0,0,0))
|
|
--not be swim, gravity isn't applied, switch to falling
|
|
elseif not inside_swim_node and self.object:get_acceleration().y == 0 then
|
|
self.pitch = 0
|
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
|
end
|
|
end
|
|
|
|
|
|
local random_pitch_multiplier = {-1,1}
|
|
-- states are executed here
|
|
local swim_state_execution = function(self,dtime)
|
|
|
|
local pos = self.object:get_pos()
|
|
|
|
pos.y = pos.y + self.object:get_properties().collisionbox[5]
|
|
local current_node = minetest_get_node(pos).name
|
|
local inside_swim_node = false
|
|
|
|
--quick scan everything to see if inside swim node
|
|
for _,id in pairs(self.swim_in) do
|
|
if id == current_node then
|
|
inside_swim_node = true
|
|
break
|
|
end
|
|
end
|
|
|
|
--turn gravity on or off
|
|
swim_physics_swapper(self,inside_swim_node)
|
|
|
|
--swim properly if inside swim node
|
|
if inside_swim_node then
|
|
|
|
if self.state == "stand" then
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "stand")
|
|
|
|
mobs.set_swim_velocity(self,0)
|
|
|
|
if self.tilt_swim then
|
|
mobs.set_static_pitch(self)
|
|
end
|
|
|
|
mobs.lock_yaw(self)
|
|
|
|
elseif self.state == "swim" then
|
|
|
|
self.walk_timer = self.walk_timer - dtime
|
|
|
|
--reset the walk timer
|
|
if self.walk_timer <= 0 then
|
|
|
|
--re-randomize the walk timer
|
|
self.walk_timer = math.random(1,6) + math.random()
|
|
|
|
--set the mob into a random direction
|
|
self.yaw = (math_random() * (math.pi * 2))
|
|
|
|
--create a truly random pitch, since there is no easy access to pitch math that I can find
|
|
self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)]
|
|
end
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "walk")
|
|
|
|
--do a quick turn to make mob continuously move
|
|
--if in a fish tank or something
|
|
if swim_turn_check(self,dtime) then
|
|
quick_rotate(self,dtime)
|
|
end
|
|
|
|
mobs.set_swim_velocity(self,self.walk_velocity)
|
|
|
|
--only enable tilt swimming if enabled
|
|
if self.tilt_swim then
|
|
mobs.set_dynamic_pitch(self)
|
|
end
|
|
|
|
--enable rotation locking
|
|
mobs.movement_rotation_lock(self)
|
|
end
|
|
--flop around if not inside swim node
|
|
else
|
|
--do animation
|
|
mobs.set_mob_animation(self, "stand")
|
|
|
|
mobs.flop(self)
|
|
|
|
if self.tilt_swim then
|
|
mobs.set_static_pitch(self)
|
|
end
|
|
end
|
|
|
|
end
|
|
|
|
|
|
--[[
|
|
______ _
|
|
| ___| |
|
|
| |_ | |_ _
|
|
| _| | | | | |
|
|
| | | | |_| |
|
|
\_| |_|\__, |
|
|
__/ |
|
|
|___/
|
|
]]--
|
|
|
|
-- state switching logic (stand, walk, run, attacks)
|
|
local fly_state_list_wandering = {"stand", "fly"}
|
|
|
|
local fly_state_switch = function(self, dtime)
|
|
|
|
if self.hostile and self.attacking then
|
|
self.state = "attack"
|
|
return
|
|
end
|
|
|
|
self.state_timer = self.state_timer - dtime
|
|
if self.state_timer <= 0 then
|
|
self.state_timer = math.random(4,10) + math.random()
|
|
self.state = fly_state_list_wandering[math.random(1,#fly_state_list_wandering)]
|
|
end
|
|
end
|
|
|
|
|
|
--check if a mob needs to turn while flying
|
|
local fly_turn_check = function(self,dtime)
|
|
|
|
local pos = self.object:get_pos()
|
|
pos.y = pos.y + 0.1
|
|
local dir = minetest_yaw_to_dir(self.yaw)
|
|
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
local radius = collisionbox[4] + 0.5
|
|
|
|
vector_multiply(dir, radius)
|
|
|
|
local test_dir = vector.add(pos,dir)
|
|
|
|
local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0
|
|
|
|
return(green_flag_1)
|
|
end
|
|
|
|
--this is to swap the built in engine acceleration modifier
|
|
local fly_physics_swapper = function(self,inside_fly_node)
|
|
|
|
--should be flyming, gravity is applied, switch to floating
|
|
if inside_fly_node and self.object:get_acceleration().y ~= 0 then
|
|
self.object:set_acceleration(vector_new(0,0,0))
|
|
--not be fly, gravity isn't applied, switch to falling
|
|
elseif not inside_fly_node and self.object:get_acceleration().y == 0 then
|
|
self.pitch = 0
|
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
|
end
|
|
end
|
|
|
|
|
|
local random_pitch_multiplier = {-1,1}
|
|
-- states are executed here
|
|
local fly_state_execution = function(self,dtime)
|
|
local pos = self.object:get_pos()
|
|
pos.y = pos.y + 0.1
|
|
local current_node = minetest_get_node(pos).name
|
|
local inside_fly_node = minetest_get_item_group(current_node, "solid") == 0
|
|
|
|
local float_now = false
|
|
--recheck if in water or lava
|
|
if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then
|
|
inside_fly_node = false
|
|
float_now = true
|
|
end
|
|
|
|
--turn gravity on or off
|
|
fly_physics_swapper(self,inside_fly_node)
|
|
|
|
--fly properly if inside fly node
|
|
if inside_fly_node then
|
|
if self.state == "stand" then
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "stand")
|
|
|
|
mobs.set_fly_velocity(self,0)
|
|
|
|
if self.tilt_fly then
|
|
mobs.set_static_pitch(self)
|
|
end
|
|
|
|
mobs.lock_yaw(self)
|
|
|
|
elseif self.state == "fly" then
|
|
|
|
self.walk_timer = self.walk_timer - dtime
|
|
|
|
--reset the walk timer
|
|
if self.walk_timer <= 0 then
|
|
|
|
--re-randomize the walk timer
|
|
self.walk_timer = math.random(1,6) + math.random()
|
|
|
|
--set the mob into a random direction
|
|
self.yaw = (math_random() * (math.pi * 2))
|
|
|
|
--create a truly random pitch, since there is no easy access to pitch math that I can find
|
|
self.pitch = math_random() * math.random(1,3) * random_pitch_multiplier[math_random(1,2)]
|
|
end
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "walk")
|
|
|
|
--do a quick turn to make mob continuously move
|
|
--if in a bird cage or something
|
|
if fly_turn_check(self,dtime) then
|
|
quick_rotate(self,dtime)
|
|
end
|
|
|
|
if self.tilt_fly then
|
|
mobs.set_dynamic_pitch(self)
|
|
end
|
|
|
|
mobs.set_fly_velocity(self,self.walk_velocity)
|
|
|
|
--enable rotation locking
|
|
mobs.movement_rotation_lock(self)
|
|
|
|
elseif self.state == "attack" then
|
|
|
|
--execute mob attack type
|
|
--if self.attack_type == "explode" then
|
|
|
|
--mobs.explode_attack_fly(self, dtime)
|
|
|
|
--elseif self.attack_type == "punch" then
|
|
|
|
--mobs.punch_attack_fly(self,dtime)
|
|
|
|
if self.attack_type == "projectile" then
|
|
|
|
mobs.projectile_attack_fly(self,dtime)
|
|
|
|
end
|
|
end
|
|
else
|
|
--make the mob float
|
|
if self.floats and float_now then
|
|
mobs.set_velocity(self, 0)
|
|
|
|
mobs.float(self)
|
|
|
|
if self.tilt_fly then
|
|
mobs.set_static_pitch(self)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
--[[
|
|
___
|
|
|_ |
|
|
| |_ _ _ __ ___ _ __
|
|
| | | | | '_ ` _ \| '_ \
|
|
/\__/ / |_| | | | | | | |_) |
|
|
\____/ \__,_|_| |_| |_| .__/
|
|
| |
|
|
|_|
|
|
]]--
|
|
|
|
|
|
--check if a mob needs to turn while jumping
|
|
local jump_turn_check = function(self,dtime)
|
|
|
|
local pos = self.object:get_pos()
|
|
pos.y = pos.y + 0.1
|
|
local dir = minetest_yaw_to_dir(self.yaw)
|
|
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
local radius = collisionbox[4] + 0.5
|
|
|
|
vector_multiply(dir, radius)
|
|
|
|
local test_dir = vector.add(pos,dir)
|
|
|
|
local green_flag_1 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") ~= 0
|
|
|
|
return(green_flag_1)
|
|
end
|
|
|
|
-- state switching logic (stand, jump, run, attacks)
|
|
local jump_state_list_wandering = {"stand", "jump"}
|
|
|
|
local jump_state_switch = function(self, dtime)
|
|
self.state_timer = self.state_timer - dtime
|
|
if self.state_timer <= 0 then
|
|
self.state_timer = math.random(4,10) + math.random()
|
|
self.state = jump_state_list_wandering[math.random(1,#jump_state_list_wandering)]
|
|
end
|
|
end
|
|
|
|
-- states are executed here
|
|
local jump_state_execution = function(self,dtime)
|
|
|
|
local pos = self.object:get_pos()
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
--get the center of the mob
|
|
pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2)
|
|
local current_node = minetest_get_node(pos).name
|
|
|
|
local float_now = false
|
|
|
|
--recheck if in water or lava
|
|
if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then
|
|
float_now = true
|
|
end
|
|
|
|
if self.state == "stand" then
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "stand")
|
|
|
|
--set the velocity of the mob
|
|
mobs.set_velocity(self,0)
|
|
|
|
mobs.lock_yaw(self)
|
|
|
|
elseif self.state == "jump" then
|
|
|
|
self.walk_timer = self.walk_timer - dtime
|
|
|
|
--reset the jump timer
|
|
if self.walk_timer <= 0 then
|
|
|
|
--re-randomize the jump timer
|
|
self.walk_timer = math.random(1,6) + math.random()
|
|
|
|
--set the mob into a random direction
|
|
self.yaw = (math_random() * (math.pi * 2))
|
|
end
|
|
|
|
--do animation
|
|
mobs.set_mob_animation(self, "walk")
|
|
|
|
--enable rotation locking
|
|
mobs.movement_rotation_lock(self)
|
|
|
|
--jumping mobs are more loosey goosey
|
|
if node_in_front_of == 1 then
|
|
quick_rotate(self,dtime)
|
|
end
|
|
|
|
--only move forward if path is clear
|
|
mobs.jump_move(self,self.walk_velocity)
|
|
|
|
elseif self.state == "run" then
|
|
|
|
print("run")
|
|
|
|
elseif self.state == "attack" then
|
|
|
|
print("attack")
|
|
|
|
end
|
|
|
|
if float_now then
|
|
mobs.float(self)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
--[[
|
|
___ ___ _ _ _
|
|
| \/ | (_) | | (_)
|
|
| . . | __ _ _ _ __ | | ___ __ _ _ ___
|
|
| |\/| |/ _` | | '_ \ | | / _ \ / _` | |/ __|
|
|
| | | | (_| | | | | | | |___| (_) | (_| | | (__
|
|
\_| |_/\__,_|_|_| |_| \_____/\___/ \__, |_|\___|
|
|
__/ |
|
|
|___/
|
|
]]--
|
|
|
|
--the main loop
|
|
mobs.mob_step = function(self, dtime)
|
|
|
|
--do not continue if non-existent
|
|
if not self or not self.object or not self.object:get_luaentity() then
|
|
self.object:remove()
|
|
return false
|
|
end
|
|
|
|
|
|
--DEBUG TIME!
|
|
--REMEMBER TO MOVE THIS AFTER DEATH CHECK
|
|
|
|
--if self.has_head then
|
|
-- mobs.do_head_logic(self,dtime)
|
|
--end
|
|
|
|
|
|
|
|
--if true then--DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG DEBUG
|
|
-- return
|
|
--end
|
|
|
|
--despawn mechanism
|
|
--don't despawned tamed or bred mobs
|
|
if not self.tamed and not self.bred then
|
|
self.lifetimer = self.lifetimer - dtime
|
|
if self.lifetimer <= 0 then
|
|
self.lifetimer = self.lifetimer_reset
|
|
if not mobs.check_for_player_within_area(self, 64) then
|
|
--print("removing in MAIN LOGIC!")
|
|
self.object:remove()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
|
|
--color modifier which coincides with the pause_timer
|
|
if self.old_health and self.health < self.old_health then
|
|
self.object:set_texture_mod("^[colorize:red:120")
|
|
--fix double death sound
|
|
if self.health > 0 then
|
|
mobs.play_sound(self,"damage")
|
|
end
|
|
end
|
|
self.old_health = self.health
|
|
|
|
--do death logic (animation, poof, explosion, etc)
|
|
if self.health <= 0 or self.dead then
|
|
--play death sound once
|
|
if not self.played_death_sound then
|
|
self.dead = true
|
|
mobs.play_sound(self,"death")
|
|
self.played_death_sound = true
|
|
end
|
|
|
|
mobs.death_logic(self, dtime)
|
|
|
|
--this is here because the mob must continue to move
|
|
--while stunned before coming to a complete halt even during
|
|
--the death tilt
|
|
if self.pause_timer > 0 then
|
|
self.pause_timer = self.pause_timer - dtime
|
|
--perfectly reset pause_timer
|
|
if self.pause_timer < 0 then
|
|
self.pause_timer = 0
|
|
end
|
|
end
|
|
|
|
return
|
|
end
|
|
|
|
mobs.random_sound_handling(self,dtime)
|
|
|
|
--mobs drowning mechanic
|
|
if not self.breathes_in_water then
|
|
|
|
local pos = self.object:get_pos()
|
|
|
|
pos.y = pos.y + self.eye_height
|
|
|
|
local node = minetest_get_node(pos).name
|
|
|
|
if minetest_get_item_group(node, "water") ~= 0 then
|
|
self.breath = self.breath - dtime
|
|
|
|
--reset breath when drowning
|
|
if self.breath <= 0 then
|
|
self.health = self.health - 4
|
|
self.breath = 1
|
|
self.pause_timer = 0.5
|
|
end
|
|
|
|
elseif self.breath < self.breath_max then
|
|
self.breath = self.breath + dtime
|
|
|
|
--clean timer reset
|
|
if self.breath > self.breath_max then
|
|
self.breath = self.breath_max
|
|
end
|
|
end
|
|
end
|
|
|
|
--set mobs on fire when burned by sunlight
|
|
if self.ignited_by_sunlight then
|
|
local pos = self.object:get_pos()
|
|
pos.y = pos.y + 0.1
|
|
|
|
if self.burn_timer > 0 then
|
|
self.burn_timer = self.burn_timer - dtime
|
|
|
|
if self.burn_timer <= 0 then
|
|
self.health = self.health - 4
|
|
self.burn_timer = 0
|
|
end
|
|
end
|
|
|
|
if self.burn_timer == 0 and minetest_get_node_light(pos) > 12 and minetest_get_node_light(pos, 0.5) == 15 then
|
|
mcl_burning.set_on_fire(self.object, 1)
|
|
self.burn_timer = 1 --1.7 seconds
|
|
self.pause_timer = 0.4
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
--baby grows up
|
|
if self.baby then
|
|
--print(self.grow_up_timer)
|
|
--catch missing timer
|
|
if not self.grow_up_timer then
|
|
self.grow_up_timer = self.grow_up_goal
|
|
end
|
|
|
|
self.grow_up_timer = self.grow_up_timer - dtime
|
|
|
|
--baby grows up!
|
|
if self.grow_up_timer <= 0 then
|
|
self.grow_up_timer = 0
|
|
mobs.baby_grow_up(self)
|
|
end
|
|
end
|
|
|
|
|
|
|
|
--do custom mob instructions
|
|
if self.do_custom then
|
|
-- when false skip going any further
|
|
if self.do_custom(self, dtime) == false then
|
|
--this needs to be here or the mob becomes immortal
|
|
if self.pause_timer > 0 then
|
|
self.pause_timer = self.pause_timer - dtime
|
|
--perfectly reset pause_timer
|
|
if self.pause_timer <= 0 then
|
|
self.pause_timer = 0
|
|
self.object:set_texture_mod("")
|
|
end
|
|
end
|
|
--this overrides internal lua collision detection
|
|
return
|
|
end
|
|
end
|
|
|
|
local attacking = nil
|
|
|
|
--scan for players within eyesight
|
|
if self.hostile then
|
|
--true for line_of_sight is debug
|
|
attacking = mobs.detect_closest_player_within_radius(self,true,self.view_range,self.eye_height)
|
|
|
|
--go get the closest player
|
|
if attacking then
|
|
|
|
self.memory = 6 --6 seconds of memory
|
|
|
|
--set initial punch timer
|
|
if self.attacking == nil then
|
|
if self.attack_type == "punch" then
|
|
self.punch_timer = -1
|
|
end
|
|
end
|
|
self.attacking = attacking
|
|
|
|
--no player in area
|
|
elseif self.memory > 0 then
|
|
--try to remember
|
|
self.memory = self.memory - dtime
|
|
--get if memory player is within viewing range
|
|
if self.attacking and self.attacking:is_player() then
|
|
local distance = vector_distance(self.object:get_pos(), self.attacking:get_pos())
|
|
if distance > self.view_range then
|
|
self.memory = 0
|
|
end
|
|
--out of viewing range, forget em
|
|
else
|
|
self.memory = 0
|
|
end
|
|
|
|
if self.memory <= 0 then
|
|
|
|
--reset states when coming out of hostile state
|
|
if self.attacking ~= nil then
|
|
self.state_timer = -1
|
|
end
|
|
|
|
self.attacking = nil
|
|
self.memory = 0
|
|
end
|
|
end
|
|
end
|
|
|
|
--count down hostile cooldown timer when no players in range
|
|
if self.neutral and self.hostile and not attacking and self.hostile_cooldown_timer then
|
|
|
|
self.hostile_cooldown_timer = self.hostile_cooldown_timer - dtime
|
|
|
|
if self.hostile_cooldown_timer <= 0 then
|
|
self.hostile = false
|
|
self.hostile_cooldown_timer = 0
|
|
end
|
|
end
|
|
|
|
--mob is stunned after being hit
|
|
if self.pause_timer > 0 then
|
|
self.pause_timer = self.pause_timer - dtime
|
|
--don't break eye contact
|
|
if self.hostile and self.attacking then
|
|
mobs.set_yaw_while_attacking(self)
|
|
end
|
|
|
|
--perfectly reset pause_timer
|
|
if self.pause_timer <= 0 then
|
|
self.pause_timer = 0
|
|
self.object:set_texture_mod("")
|
|
end
|
|
|
|
--stop walking mobs from falling through the water
|
|
if not self.jump_only and not self.swim and not self.fly then
|
|
local pos = self.object:get_pos()
|
|
local collisionbox = self.object:get_properties().collisionbox
|
|
--get the center of the mob
|
|
pos.y = pos.y + (collisionbox[2] + collisionbox[5] / 2)
|
|
local current_node = minetest_get_node(pos).name
|
|
|
|
--recheck if in water or lava
|
|
if minetest_get_item_group(current_node, "water") ~= 0 or minetest_get_item_group(current_node, "lava") ~= 0 then
|
|
mobs.float(self)
|
|
end
|
|
end
|
|
|
|
--stop projectile mobs from being completely disabled while stunned
|
|
if self.projectile_timer and self.projectile_timer > 0.01 then
|
|
self.projectile_timer = self.projectile_timer - dtime
|
|
if self.projectile_timer < 0.01 then
|
|
self.projectile_timer = 0.01
|
|
end
|
|
end
|
|
|
|
return -- don't allow collision detection
|
|
--do normal ai
|
|
else
|
|
--jump only (like slimes)
|
|
if self.jump_only then
|
|
jump_state_switch(self, dtime)
|
|
jump_state_execution(self, dtime)
|
|
--swimming
|
|
elseif self.swim then
|
|
swim_state_switch(self, dtime)
|
|
swim_state_execution(self, dtime)
|
|
--flying
|
|
elseif self.fly then
|
|
fly_state_switch(self, dtime)
|
|
fly_state_execution(self,dtime)
|
|
--regular mobs that walk around
|
|
else
|
|
land_state_switch(self, dtime)
|
|
land_state_execution(self,dtime)
|
|
end
|
|
end
|
|
|
|
--do not continue if non-existent
|
|
if not self or not self.object or not self.object:get_luaentity() then
|
|
self.object:remove()
|
|
return false
|
|
end
|
|
|
|
--make it so mobs do not glitch out when walking around/jumping
|
|
mobs.swap_auto_step_height_adjust(self)
|
|
|
|
|
|
-- can mob be pushed, if so calculate direction -- do this last (overrides everything)
|
|
if self.pushable then
|
|
mobs.collision(self)
|
|
end
|
|
|
|
--overrides absolutely everything
|
|
--mobs get stuck in cobwebs like players
|
|
if not self.ignores_cobwebs then
|
|
|
|
local pos = self.object:get_pos()
|
|
local node = pos and minetest_get_node(pos).name
|
|
|
|
if node == "mcl_core:cobweb" then
|
|
|
|
--fight the rest of the api
|
|
if self.object:get_acceleration().y ~= 0 then
|
|
self.object:set_acceleration(vector_new(0,0,0))
|
|
end
|
|
|
|
mobs.stick_in_cobweb(self)
|
|
|
|
self.was_stuck_in_cobweb = true
|
|
|
|
else
|
|
--do not override other functions
|
|
if self.was_stuck_in_cobweb == true then
|
|
--return the mob back to normal
|
|
self.was_stuck_in_cobweb = nil
|
|
if self.object:get_acceleration().y == 0 and not self.swim and not self.fly then
|
|
self.object:set_acceleration(vector_new(0,-self.gravity,0))
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
self.old_velocity = self.object:get_velocity()
|
|
self.old_pos = self.object:get_pos()
|
|
end
|