Skip to content

Commit f0f2e9c

Browse files
committed
Add Rotten Blood Systems
Systems implemented: - Elder Bloodjaw spawn system with teleport, root, exp mechanics based on taint levels - Point system for entering mini-boss rooms (Murcion, Vemiath, Chagorz, Ichgahal) - Mini-bosses with mechanics - Heart drop system exchangeable for Bag You Covet - Rotten Blood conditions and taint mechanics - Bag You Covet drop system for Sanguine and Grand Sanguine items based on taint levels - Mini-boss potion system to increase Bakragore difficulty and its echoes
1 parent f58d414 commit f0f2e9c

File tree

82 files changed

+10328
-1241
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+10328
-1241
lines changed
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
local mType = Game.createMonsterType("Ayana the crimson curse")
2+
local monster = {}
3+
4+
monster.description = "Ayana the crimson curse"
5+
monster.experience = 12400
6+
monster.outfit = {
7+
lookType = 1647,
8+
lookHead = 132,
9+
lookBody = 132,
10+
lookLegs = 57,
11+
lookFeet = 76,
12+
lookAddons = 0,
13+
lookMount = 0,
14+
}
15+
16+
monster.health = 17000
17+
monster.maxHealth = 17000
18+
monster.race = "undead"
19+
monster.corpse = 44039
20+
monster.speed = 180
21+
monster.manaCost = 0
22+
23+
monster.changeTarget = {
24+
interval = 4000,
25+
chance = 10,
26+
}
27+
28+
monster.bosstiary = {
29+
bossRaceId = 2404,
30+
bossRace = RARITY_NEMESIS,
31+
}
32+
monster.strategiesTarget = {
33+
nearest = 80,
34+
health = 10,
35+
damage = 10,
36+
}
37+
38+
monster.flags = {
39+
summonable = false,
40+
attackable = true,
41+
hostile = true,
42+
convinceable = false,
43+
pushable = false,
44+
rewardBoss = false,
45+
illusionable = false,
46+
canPushItems = true,
47+
canPushCreatures = true,
48+
staticAttackChance = 90,
49+
targetDistance = 1,
50+
runHealth = 800,
51+
healthHidden = false,
52+
isBlockable = false,
53+
canWalkOnEnergy = false,
54+
canWalkOnFire = true,
55+
canWalkOnPoison = true,
56+
}
57+
58+
monster.light = {
59+
level = 0,
60+
color = 0,
61+
}
62+
63+
monster.voices = {}
64+
65+
monster.loot = {
66+
{ name = "gold coin", chance = 100000, maxCount = 197 },
67+
{ name = "platinum coin", chance = 100000, maxCount = 5 },
68+
{ name = "amulet of loss", chance = 120 },
69+
{ name = "gold ring", chance = 1870 },
70+
{ name = "hailstorm rod", chance = 10000 },
71+
{ name = "garlic necklace", chance = 2050 },
72+
{ name = "blank rune", chance = 26250, maxCount = 2 },
73+
{ name = "golden sickle", chance = 350 },
74+
{ name = "skull staff", chance = 1520 },
75+
{ name = "scythe", chance = 3000 },
76+
{ name = "bunch of wheat", chance = 50000 },
77+
{ name = "soul orb", chance = 23720 },
78+
{ id = 6299, chance = 1410 },
79+
{ id = 43916, chance = 4000 },
80+
{ id = 43729, chance = 22000, maxCount = 3 },
81+
{ id = 43738, chance = 9000 },
82+
{ id = 43849, chance = 10000 },
83+
{ id = 43857, chance = 7000 },
84+
{ name = "demonic essence", chance = 28000 },
85+
{ name = "assassin star", chance = 5900, maxCount = 10 },
86+
{ name = "great mana potion", chance = 31360, maxCount = 3 },
87+
{ id = 281, chance = 4450 },
88+
{ id = 282, chance = 4450 },
89+
{ name = "seeds", chance = 4300 },
90+
{ name = "terra mantle", chance = 1050 },
91+
{ name = "terra legs", chance = 2500 },
92+
{ name = "ultimate health potion", chance = 14720, maxCount = 2 },
93+
{ name = "gold ingot", chance = 5270 },
94+
{ name = "bundle of cursed straw", chance = 15000 },
95+
}
96+
97+
monster.attacks = {
98+
{ name = "melee", interval = 2000, chance = 100, skill = 75, attack = 100 },
99+
{ name = "combat", interval = 1000, chance = 8, type = COMBAT_DEATHDAMAGE, minDamage = -300, maxDamage = -500, radius = 9, effect = CONST_ME_MORTAREA, target = false },
100+
{ name = "speed", interval = 1000, chance = 12, speedChange = -250, radius = 6, effect = CONST_ME_POISONAREA, target = false, duration = 60000 },
101+
{ name = "strength", interval = 1000, chance = 10, minDamage = -300, maxDamage = -750, radius = 5, effect = CONST_ME_HITAREA, target = false },
102+
{ name = "combat", interval = 3000, chance = 13, type = COMBAT_FIREDAMAGE, minDamage = -300, maxDamage = -500, range = 7, radius = 7, shootEffect = CONST_ANI_FIRE, effect = 244, target = true },
103+
{ name = "combat", interval = 3000, chance = 8, type = COMBAT_HOLYDAMAGE, minDamage = -300, maxDamage = -450, radius = 10, effect = 246, target = false },
104+
}
105+
106+
monster.defenses = {
107+
defense = 110,
108+
armor = 110,
109+
}
110+
111+
monster.elements = {
112+
{ type = COMBAT_PHYSICALDAMAGE, percent = 90 },
113+
{ type = COMBAT_ENERGYDAMAGE, percent = -10 },
114+
{ type = COMBAT_EARTHDAMAGE, percent = -10 },
115+
{ type = COMBAT_FIREDAMAGE, percent = 0 },
116+
{ type = COMBAT_LIFEDRAIN, percent = 0 },
117+
{ type = COMBAT_MANADRAIN, percent = 0 },
118+
{ type = COMBAT_DROWNDAMAGE, percent = 0 },
119+
{ type = COMBAT_ICEDAMAGE, percent = -10 },
120+
{ type = COMBAT_HOLYDAMAGE, percent = 90 },
121+
{ type = COMBAT_DEATHDAMAGE, percent = 90 },
122+
}
123+
124+
monster.immunities = {
125+
{ type = "paralyze", condition = true },
126+
{ type = "outfit", condition = false },
127+
{ type = "invisible", condition = true },
128+
{ type = "bleed", condition = false },
129+
}
130+
131+
mType:register(monster)
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
local mType = Game.createMonsterType("Bloated Man-Maggot")
2+
local monster = {}
3+
4+
monster.description = "a bloated man-maggot"
5+
monster.experience = 21570
6+
monster.outfit = {
7+
lookType = 1654,
8+
lookHead = 0,
9+
lookBody = 0,
10+
lookLegs = 0,
11+
lookFeet = 0,
12+
lookAddons = 0,
13+
lookMount = 0,
14+
}
15+
16+
monster.raceId = 2392
17+
monster.Bestiary = {
18+
class = "Vermin",
19+
race = BESTY_RACE_VERMIN,
20+
toKill = 5000,
21+
FirstUnlock = 200,
22+
SecondUnlock = 2000,
23+
CharmsPoints = 100,
24+
Stars = 5,
25+
Occurrence = 0,
26+
Locations = "Jaded Roots",
27+
}
28+
29+
monster.events = {
30+
}
31+
32+
monster.health = 31700
33+
monster.maxHealth = 31700
34+
monster.race = "undead"
35+
monster.corpse = 43816
36+
monster.speed = 195
37+
monster.manaCost = 305
38+
39+
monster.changeTarget = {
40+
interval = 5000,
41+
chance = 10,
42+
}
43+
44+
monster.strategiesTarget = {
45+
nearest = 70,
46+
health = 10,
47+
damage = 10,
48+
random = 10,
49+
}
50+
51+
monster.flags = {
52+
summonable = false,
53+
attackable = true,
54+
hostile = true,
55+
convinceable = true,
56+
pushable = false,
57+
rewardBoss = false,
58+
illusionable = false,
59+
canPushItems = true,
60+
canPushCreatures = true,
61+
staticAttackChance = 90,
62+
targetDistance = 1,
63+
runHealth = 0,
64+
healthHidden = false,
65+
isBlockable = false,
66+
canWalkOnEnergy = true,
67+
canWalkOnFire = true,
68+
canWalkOnPoison = true,
69+
}
70+
71+
monster.light = {
72+
level = 0,
73+
color = 0,
74+
}
75+
76+
monster.voices = {}
77+
78+
monster.loot = {
79+
{ name = "crystal coin", chance = 12961, maxCount = 1 },
80+
{ name = "organic acid", chance = 11678, maxCount = 1 },
81+
{ name = "might ring", chance = 10020, maxCount = 1 },
82+
{ name = "small emerald", chance = 9133, maxCount = 5 },
83+
{ name = "rotten roots", chance = 8637, maxCount = 1 },
84+
{ name = "bloated maggot", chance = 8133, maxCount = 1 },
85+
{ name = "terra rod", chance = 8078, maxCount = 1 },
86+
{ name = "butcher's axe", chance = 7967, maxCount = 1 },
87+
{ name = "blue gem", chance = 7808, maxCount = 1 },
88+
{ name = "violet gem", chance = 7084, maxCount = 1 },
89+
{ name = "tainted heart", chance = 1, maxCount = 1 },
90+
}
91+
92+
monster.attacks = {
93+
{ name = "melee", interval = 2000, chance = 100, minDamage = 0, maxDamage = -1500 },
94+
{ name = "combat", interval = 2500, chance = 25, type = COMBAT_DEATHDAMAGE, minDamage = -1100, maxDamage = -1800, radius = 5, effect = CONST_ME_GHOSTLY_BITE, target = true },
95+
{ name = "combat", interval = 2000, chance = 15, type = COMBAT_EARTHDAMAGE, minDamage = -1100, maxDamage = -1650, radius = 4, effect = CONST_ME_SMALLPLANTS, target = false },
96+
{ name = "combat", interval = 2000, chance = 15, type = COMBAT_PHYSICALDAMAGE, minDamage = -1100, maxDamage = -1650, radius = 4, effect = CONST_ME_GROUNDSHAKER, target = false },
97+
{ name = "largepoisonring", interval = 2500, chance = 15, minDamage = -1100, maxDamage = -1800, target = false },
98+
}
99+
100+
monster.defenses = {
101+
defense = 104,
102+
armor = 104,
103+
mitigation = 3.16,
104+
}
105+
106+
monster.elements = {
107+
{ type = COMBAT_PHYSICALDAMAGE, percent = 45 },
108+
{ type = COMBAT_ENERGYDAMAGE, percent = -15 },
109+
{ type = COMBAT_EARTHDAMAGE, percent = 40 },
110+
{ type = COMBAT_FIREDAMAGE, percent = 15 },
111+
{ type = COMBAT_LIFEDRAIN, percent = 0 },
112+
{ type = COMBAT_MANADRAIN, percent = 0 },
113+
{ type = COMBAT_DROWNDAMAGE, percent = 0 },
114+
{ type = COMBAT_ICEDAMAGE, percent = -15 },
115+
{ type = COMBAT_HOLYDAMAGE, percent = -5 },
116+
{ type = COMBAT_DEATHDAMAGE, percent = 5 },
117+
}
118+
119+
monster.immunities = {
120+
{ type = "paralyze", condition = false },
121+
{ type = "outfit", condition = false },
122+
{ type = "invisible", condition = true },
123+
{ type = "bleed", condition = false },
124+
}
125+
126+
-- ✅ OPTIMIZACIÓN: Monster actualiza iconos de jugadores cercanos
127+
mType.onThink = function(monster, interval)
128+
onRottenMonsterThink(monster, interval)
129+
return true
130+
end
131+
132+
mType:register(monster)

0 commit comments

Comments
 (0)