diff options
Diffstat (limited to 'lib/mods/theme/scpt/mimic.lua')
-rw-r--r-- | lib/mods/theme/scpt/mimic.lua | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/lib/mods/theme/scpt/mimic.lua b/lib/mods/theme/scpt/mimic.lua new file mode 100644 index 00000000..f38f70f7 --- /dev/null +++ b/lib/mods/theme/scpt/mimic.lua @@ -0,0 +1,419 @@ +-- Define the various possible mimic shapes + +-- Nature shapes +add_mimic_shape +{ + ["name"] = "Mouse", + ["obj_name"] = "Mouse Fur", + ["desc"] = "Mice are small, fast and very stealthy", + ["realm"] = "nature", + ["level"] = 1, + ["rarity"] = 10, + ["duration"] = {20, 40}, + ["calc"] = function () + -- Mice run! + player.pspeed = player.pspeed + 5 + (player.mimic_level / 7) + + -- They can crtawl under your armor to hit you ;) + player.to_h = player.to_h + 10 + (player.mimic_level / 5) + player.dis_to_h = player.dis_to_h + 10 + (player.mimic_level / 5) + + -- But they are not very powerfull + player.to_d = player.to_d / 5 + player.dis_to_d = player.dis_to_d / 5 + + -- But they are stealthy + player.skill_stl = player.skill_stl + 10 + (player.mimic_level / 5) + + -- Stat mods + player.modify_stat(A_STR, -5) + player.modify_stat(A_DEX, 3) + player.modify_stat(A_CON, 1) + + end, + ["power"] = function() + if player.mimic_level >= 30 then + player.add_power(POWER_INVISIBILITY) + end + end, +} + +add_mimic_shape +{ + ["name"] = "Eagle", + ["obj_name"] = "Feathered Cloak", + ["desc"] = "Eagles are master of the air, good hunters with excellent vision.", + ["realm"] = "nature", + ["level"] = 10, + ["rarity"] = 30, + ["duration"] = {10, 50}, + ["calc"] = function () + player.ffall = TRUE + player.pspeed = player.pspeed + 2 + (player.mimic_level / 6) + + player.modify_stat(A_STR, -3) + player.modify_stat(A_DEX, 2 + (player.mimic_level / 15)) + player.modify_stat(A_CON, 4 + (player.mimic_level / 20)) + player.modify_stat(A_INT, -1) + player.modify_stat(A_WIS, 1) + player.modify_stat(A_CHR, -1) + + if player.mimic_level >= 20 then + player.xtra_f4 = bor(player.xtra_f4, TR4_FLY) + player.xtra_f3 = bor(player.xtra_f3, TR3_SEE_INVIS) + end + if player.mimic_level >= 25 then + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + end + if player.mimic_level >= 30 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_ELEC) + end + if player.mimic_level >= 30 then + player.xtra_f3 = bor(player.xtra_f3, TR3_SH_ELEC) + end + end, +} + +add_mimic_shape +{ + ["name"] = "Wolf", + ["obj_name"] = "Wolf Pelt", + ["desc"] = "Wolves are masters of movement, strong and have excellent eyesight.", + ["realm"] = "nature", + ["level"] = 20, + ["rarity"] = 40, + ["duration"] = {10, 50}, + ["calc"] = function () + player.modify_stat(A_STR, 2 + (player.mimic_level / 20)) + player.modify_stat(A_DEX, 3 + (player.mimic_level / 20)) + player.modify_stat(A_INT, -3) + player.modify_stat(A_CHR, -2) + + player.pspeed = player.pspeed + 10 + (player.mimic_level / 5) + + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_FEAR) + + if player.mimic_level >= 10 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_COLD) + end + if player.mimic_level >= 15 then + player.xtra_f3 = bor(player.xtra_f3, TR3_SEE_INVIS) + end + if player.mimic_level >= 30 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_DARK) + end + if player.mimic_level >= 35 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CONF) + end + end, +} + +add_mimic_shape +{ + ["name"] = "Spider", + ["obj_name"] = "Spider Web", + ["desc"] = "Spiders are clever and become good climbers.", + ["realm"] = "nature", + ["level"] = 25, + ["rarity"] = 50, + ["duration"] = {10, 50}, + ["calc"] = function () + player.modify_stat(A_STR, -4) + player.modify_stat(A_DEX, 1 + (player.mimic_level / 8)) + player.modify_stat(A_INT, 1 + (player.mimic_level / 5)) + player.modify_stat(A_WIS, 1 + (player.mimic_level / 5)) + player.modify_stat(A_CON, -5) + player.modify_stat(A_CHR, -10) + + player.pspeed = player.pspeed + 5 + + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_FEAR) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_DARK) + + if player.mimic_level >= 40 then + player.xtra_f4 = bor(player.xtra_f4, TR4_CLIMB) + end + + end, + ["power"] = function() + if player.mimic_level >= 25 then + player.add_power(POWER_WEB) + end + end, +} + +add_mimic_shape +{ + ["name"] = "Elder Ent", + ["obj_name"] = "Entish Bark", + ["desc"] = "Ents are powerful tree-like beings dating from the dawn of time.", + ["realm"] = "nature", + ["level"] = 40, + ["rarity"] = 60, + ["duration"] = {10, 30}, + ["limit"] = TRUE, + ["calc"] = function () + player.pspeed = player.pspeed - 5 - (player.mimic_level / 10) + + player.to_a = player.to_a + 10 + player.mimic_level + player.dis_to_a = player.dis_to_a + 10 + player.mimic_level + + player.modify_stat(A_STR, player.mimic_level / 5) + player.modify_stat(A_INT, - (player.mimic_level / 7)) + player.modify_stat(A_WIS, - (player.mimic_level / 7)) + player.modify_stat(A_DEX, -4) + player.modify_stat(A_CON, player.mimic_level / 5) + player.modify_stat(A_CHR, -7) + + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_COLD) + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN) + player.xtra_f3 = bor(player.xtra_f3, TR3_SEE_INVIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_SENS_FIRE) + end, + ["power"] = function () + player.add_power(PWR_GROW_TREE) + end, +} + +add_mimic_shape +{ + ["name"] = "Vapour", + ["obj_name"] = "Cloak of Mist", + ["desc"] = "A sentient cloud, darting around", + ["realm"] = "nature", + ["level"] = 15, + ["rarity"] = 10, + ["duration"] = {10, 40}, + ["calc"] = function () + + player.pspeed = player.pspeed + 5 + + --Try to hit a cloud! + player.to_a = player.to_a + 40 + player.mimic_level + player.dis_to_a = player.dis_to_a + 40 + player.mimic_level + + --Try to hit WITH a cloud! + player.to_h = player.to_h - 40 + player.dis_to_h = player.dis_to_h -40 + + -- Stat mods + player.modify_stat(A_STR, -4) + player.modify_stat(A_DEX, 5) + player.modify_stat(A_CON, -4) + player.modify_stat(A_CHR, -10) + + -- But they are stealthy + player.skill_stl = player.skill_stl + 10 + (player.mimic_level / 5) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_SHARDS) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_COLD) + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN) + player.xtra_f3 = bor(player.xtra_f3, TR3_SEE_INVIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_SENS_FIRE) + player.xtra_f3 = bor(player.xtra_f3, TR3_FEATHER) + end, +} + +add_mimic_shape +{ + ["name"] = "Serpent", + ["obj_name"] = "Snakeskin Cloak", + ["desc"] = "Serpents are fast, lethal predators.", + ["realm"] = "nature", + ["level"] = 30, + ["rarity"] = 25, + ["duration"] = {15, 20}, + ["calc"] = function () + player.pspeed = player.pspeed + 10 + (player.mimic_level / 6) + player.to_a = player.to_a + 3 + (player.mimic_level / 8) + player.dis_to_a = player.dis_to_a + 3 + (player.mimic_level / 8) + + player.modify_stat(A_STR, player.mimic_level / 8) + player.modify_stat(A_INT, -6) + player.modify_stat(A_WIS, -6) + player.modify_stat(A_DEX, -4) + player.modify_stat(A_CON, player.mimic_level / 7) + player.modify_stat(A_CHR, -6) + + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + if player.mimic_level >= 25 then + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + end + end, +} + +add_mimic_shape +{ + ["name"] = "Mumak", + ["obj_name"] = "Mumak Hide", + ["desc"] = "A giant, elaphantine form.", + ["realm"] = "nature", + ["level"] = 40, + ["rarity"] = 40, + ["duration"] = {15, 20}, + ["calc"] = function () + player.pspeed = player.pspeed - 5 - (player.mimic_level / 10) + player.to_a = player.to_a + 10 + (player.mimic_level / 6) + player.dis_to_a = player.dis_to_a + 10 + (player.mimic_level / 6) + player.to_d = player.to_d + 5 + ((player.mimic_level * 2) / 3) + player.dis_to_d = player.dis_to_d + 5 + ((player.mimic_level * 2) / 3) + + player.modify_stat(A_STR, player.mimic_level / 4) + player.modify_stat(A_INT, -8) + player.modify_stat(A_WIS, -4) + player.modify_stat(A_DEX, -5) + player.modify_stat(A_CON, player.mimic_level / 3) + player.modify_stat(A_CHR, -10) + + if player.mimic_level >= 10 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_FEAR) + end + if player.mimic_level >= 25 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CONF) + end + if player.mimic_level >= 30 then + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + end + if player.mimic_level >= 35 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_NEXUS) + end + end, +} + +--------- Extra shapes ----------- + +-- For Beornings +add_mimic_shape +{ + ["name"] = "Bear", + ["desc"] = "A fierce, terrible bear.", + ["realm"] = nil, + ["level"] = 1, + ["rarity"] = 101, + ["duration"] = {50, 200}, + ["limit"] = TRUE, + ["calc"] = function () + player.pspeed = player.pspeed - 5 + (player.mimic_level / 5) + + player.to_a = player.to_a + 5 + ((player.mimic_level * 2) / 3) + player.dis_to_a = player.dis_to_a + 5 + ((player.mimic_level * 2) / 3) + + player.modify_stat(A_STR, player.mimic_level / 11) + player.modify_stat(A_INT, player.mimic_level / 11) + player.modify_stat(A_WIS, player.mimic_level / 11) + player.modify_stat(A_DEX, -1) + player.modify_stat(A_CON, player.mimic_level / 11) + player.modify_stat(A_CHR, -10) + + if player.mimic_level >= 10 then + player.xtra_f2 = bor(player.xtra_f2, TR2_FREE_ACT) + end + if player.mimic_level >= 20 then + player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN) + end + if player.mimic_level >= 30 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CONF) + end + if player.mimic_level >= 35 then + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_NEXUS) + end + + -- activate the skill + skill(SKILL_BEAR).hidden = FALSE + end, +} + +-- For balrog corruptions +add_mimic_shape +{ + ["name"] = "Balrog", + ["desc"] = "A corrupted maia.", + ["realm"] = nil, + ["level"] = 1, + ["rarity"] = 101, + ["duration"] = {30, 70}, + ["limit"] = TRUE, + ["calc"] = function () + player.modify_stat(A_STR, 5 + player.mimic_level / 5) + player.modify_stat(A_INT, player.mimic_level / 10) + player.modify_stat(A_WIS, - ( 5 + player.mimic_level / 10)) + player.modify_stat(A_DEX, player.mimic_level / 10) + player.modify_stat(A_CON, 5 + player.mimic_level / 5) + player.modify_stat(A_CHR, - ( 5 + player.mimic_level / 10)) + + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ACID) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_FIRE) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ELEC) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_DARK) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CHAOS) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_HOLD_LIFE) + player.xtra_f3 = bor(player.xtra_f3, TR3_FEATHER) + player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN) + player.xtra_f3 = bor(player.xtra_f3, TR3_SH_FIRE) + player.xtra_f3 = bor(player.xtra_f3, TR3_LITE1) + return 1 + end, +} + +-- For avatar spell +add_mimic_shape +{ + ["name"] = "Maia", + ["desc"] = "A near god-like being.", + ["realm"] = nil, + ["level"] = 1, + ["rarity"] = 101, + ["duration"] = {30, 70}, + ["limit"] = TRUE, + ["calc"] = function () + player.modify_stat(A_STR, 5 + player.mimic_level / 5) + player.modify_stat(A_INT, 5 + player.mimic_level / 5) + player.modify_stat(A_WIS, 5 + player.mimic_level / 5) + player.modify_stat(A_DEX, 5 + player.mimic_level / 5) + player.modify_stat(A_CON, 5 + player.mimic_level / 5) + player.modify_stat(A_CHR, 5 + player.mimic_level / 5) + + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_FIRE) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ELEC) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_ACID) + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_COLD) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_LITE) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_DARK) + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_CHAOS) + player.xtra_f2 = bor(player.xtra_f2, TR2_HOLD_LIFE) + player.xtra_f3 = bor(player.xtra_f3, TR3_FEATHER) + player.xtra_f3 = bor(player.xtra_f3, TR3_REGEN) + return 2 + end, +} + +-- For Geomancy +add_mimic_shape +{ + ["name"] = "Fire Elem.", + ["desc"] = "A towering column of flames", + ["realm"] = nil, + ["level"] = 1, + ["rarity"] = 101, + ["duration"] = {10, 10}, + ["limit"] = TRUE, + ["calc"] = function () + player.modify_stat(A_STR, 5 + (player.mimic_level / 5)) + player.modify_stat(A_DEX, 5 + (player.mimic_level / 5)) + player.modify_stat(A_WIS, -5 - (player.mimic_level / 5)) + + player.xtra_f2 = bor(player.xtra_f2, TR2_IM_FIRE) + -- was immune to poison in the 3.0.0 version + player.xtra_f2 = bor(player.xtra_f2, TR2_RES_POIS) + player.xtra_f3 = bor(player.xtra_f3, TR3_SH_FIRE) + player.xtra_f3 = bor(player.xtra_f3, TR3_LITE1) + return 0 + end, +} |