|
111 | 111 | "no_dmg_msg_u": "%1$s grabs your %2$s with its other hand!", |
112 | 112 | "no_dmg_msg_npc": "%1$s grabs <npcname>'s %2$s with its other hand!" |
113 | 113 | }, |
| 114 | + { |
| 115 | + "type": "monster_attack", |
| 116 | + "attack_type": "melee", |
| 117 | + "id": "grab_4", |
| 118 | + "cooldown": 0, |
| 119 | + "damage_max_instance": [ { "damage_type": "bash", "amount": 0 } ], |
| 120 | + "grab": true, |
| 121 | + "grab_data": { "grab_effect": "grabbed" }, |
| 122 | + "condition": { "and": [ { "u_has_flag": "GRAB_FILTER" }, { "npc_has_flag": "GRAB" }, { "not": { "u_has_effect": "grabbing_4" } } ] }, |
| 123 | + "//": "We can't count grab filters, so grabbing 3 works as a soft cooldown", |
| 124 | + "self_effects_onhit": [ { "id": "grabbing_4", "duration": 150, "permanent": false } ], |
| 125 | + "hit_dmg_u": "%1$s grabs your %2$s with its other hand!", |
| 126 | + "hit_dmg_npc": "%1$s grabs <npcname>'s %2$s with its other hand!", |
| 127 | + "miss_msg_u": "%s tries to grab you, but you dodge!", |
| 128 | + "miss_msg_npc": "%s tries to grab <npcname>, but they dodge!", |
| 129 | + "no_dmg_msg_u": "%1$s grabs your %2$s with its other hand!", |
| 130 | + "no_dmg_msg_npc": "%1$s grabs <npcname>'s %2$s with its other hand!" |
| 131 | + }, |
| 132 | + { |
| 133 | + "type": "monster_attack", |
| 134 | + "attack_type": "melee", |
| 135 | + "id": "grab_5", |
| 136 | + "cooldown": 0, |
| 137 | + "damage_max_instance": [ { "damage_type": "bash", "amount": 0 } ], |
| 138 | + "grab": true, |
| 139 | + "grab_data": { "grab_effect": "grabbed" }, |
| 140 | + "condition": { "and": [ { "u_has_flag": "GRAB_FILTER" }, { "npc_has_flag": "GRAB" }, { "not": { "u_has_effect": "grabbing_5" } } ] }, |
| 141 | + "//": "We can't count grab filters, so grabbing 3 works as a soft cooldown", |
| 142 | + "self_effects_onhit": [ { "id": "grabbing_5", "duration": 150, "permanent": false } ], |
| 143 | + "hit_dmg_u": "%1$s grabs your %2$s with its other hand!", |
| 144 | + "hit_dmg_npc": "%1$s grabs <npcname>'s %2$s with its other hand!", |
| 145 | + "miss_msg_u": "%s tries to grab you, but you dodge!", |
| 146 | + "miss_msg_npc": "%s tries to grab <npcname>, but they dodge!", |
| 147 | + "no_dmg_msg_u": "%1$s grabs your %2$s with its other hand!", |
| 148 | + "no_dmg_msg_npc": "%1$s grabs <npcname>'s %2$s with its other hand!" |
| 149 | + }, |
| 150 | + { |
| 151 | + "type": "monster_attack", |
| 152 | + "id": "hekatonkheire_rend", |
| 153 | + "attack_type": "eoc", |
| 154 | + "cooldown": 1, |
| 155 | + "range": 1, |
| 156 | + "eoc": [ "EOC_HEKATONKHEIRES_RENDING_GRAB_INIT" ] |
| 157 | + }, |
| 158 | + { |
| 159 | + "type": "effect_on_condition", |
| 160 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_INIT", |
| 161 | + "effect": [ |
| 162 | + { "math": [ "u_grappled = 0" ] }, |
| 163 | + { |
| 164 | + "run_eocs": [ |
| 165 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE", |
| 166 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE2", |
| 167 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE3", |
| 168 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE4", |
| 169 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE5", |
| 170 | + "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLEDAMAGE_CAST" |
| 171 | + ] |
| 172 | + } |
| 173 | + ] |
| 174 | + }, |
| 175 | + { |
| 176 | + "type": "effect_on_condition", |
| 177 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE", |
| 178 | + "condition": { "u_has_effect": "grabbing" }, |
| 179 | + "effect": [ { "math": [ "u_grappled += 1" ] }, { "run_eocs": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE2" } ] |
| 180 | + }, |
| 181 | + { |
| 182 | + "type": "effect_on_condition", |
| 183 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE2", |
| 184 | + "condition": { "u_has_effect": "grabbing_2" }, |
| 185 | + "effect": [ { "math": [ "u_grappled += 1" ] } ] |
| 186 | + }, |
| 187 | + { |
| 188 | + "type": "effect_on_condition", |
| 189 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE3", |
| 190 | + "condition": { "u_has_effect": "grabbing_3" }, |
| 191 | + "effect": [ { "math": [ "u_grappled += 1" ] } ] |
| 192 | + }, |
| 193 | + { |
| 194 | + "type": "effect_on_condition", |
| 195 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE4", |
| 196 | + "condition": { "u_has_effect": "grabbing_4" }, |
| 197 | + "effect": [ { "math": [ "u_grappled += 1" ] } ] |
| 198 | + }, |
| 199 | + { |
| 200 | + "type": "effect_on_condition", |
| 201 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLE5", |
| 202 | + "condition": { "u_has_effect": "grabbing_5" }, |
| 203 | + "effect": [ { "math": [ "u_grappled += 1" ] } ] |
| 204 | + }, |
| 205 | + { |
| 206 | + "type": "effect_on_condition", |
| 207 | + "id": "EOC_HEKATONKHEIRES_RENDING_GRAB_CHECK_GRAPPLEDAMAGE_CAST", |
| 208 | + "condition": { "math": [ "u_grappled > 1" ] }, |
| 209 | + "effect": [ { "u_cast_spell": { "id": "HEKATONKHEIRE_REND_AND_TEAR" } } ] |
| 210 | + }, |
114 | 211 | { |
115 | 212 | "type": "monster_attack", |
116 | 213 | "attack_type": "melee", |
|
335 | 432 | "miss_msg_u": "%s's head extends to bite you, but you dodge and the head sails past!", |
336 | 433 | "miss_msg_npc": "%s's head extends to bite <npcname>, but they dodge and the head sails past!" |
337 | 434 | }, |
| 435 | + { |
| 436 | + "type": "monster_attack", |
| 437 | + "attack_type": "bite", |
| 438 | + "id": "stretch_bite_clone", |
| 439 | + "cooldown": 10, |
| 440 | + "move_cost": 300, |
| 441 | + "//": "No stun on miss/obstacle unlike in the hardcoded attack, raised movecost to compensate", |
| 442 | + "range": 3, |
| 443 | + "damage_max_instance": [ { "damage_type": "stab", "amount": 9 } ], |
| 444 | + "min_mul": 0.3, |
| 445 | + "hit_dmg_u": "%1$s's head shoots out, and its teeth sink into your %2$s!", |
| 446 | + "hit_dmg_npc": "%1$s's head shoots out, and its teeth sink into <npcname>!", |
| 447 | + "no_dmg_msg_u": "%1$s's head hits your %2$s, but glances off your armor.", |
| 448 | + "no_dmg_msg_npc": "%1$s's head hits <npcname>, but glances off their armor.", |
| 449 | + "miss_msg_u": "%s's head extends to bite you, but you dodge and the head sails past!", |
| 450 | + "miss_msg_npc": "%s's head extends to bite <npcname>, but they dodge and the head sails past!" |
| 451 | + }, |
338 | 452 | { |
339 | 453 | "type": "monster_attack", |
340 | 454 | "attack_type": "melee", |
|
483 | 597 | "dodgeable": true, |
484 | 598 | "blockable": true |
485 | 599 | }, |
| 600 | + { |
| 601 | + "type": "monster_attack", |
| 602 | + "attack_type": "melee", |
| 603 | + "id": "multi_scratch", |
| 604 | + "attack_amount": [ 1, 5 ], |
| 605 | + "cooldown": 20, |
| 606 | + "move_cost": 150, |
| 607 | + "damage_max_instance": [ { "damage_type": "cut", "amount": 8 } ], |
| 608 | + "hit_dmg_u": "%1$s claws at your %2$s!", |
| 609 | + "hit_dmg_npc": "%1$s claws at <npcname>!", |
| 610 | + "miss_msg_u": "%1$s claws at you, but you dodge!", |
| 611 | + "miss_msg_npc": "%1$s tries to claw at <npcname>, but they dodge!", |
| 612 | + "no_dmg_msg_u": "%1$s claws at your %2$s, but fails to penetrate armor.", |
| 613 | + "no_dmg_msg_npc": "%1$s tries to claw at <npcname>, but fails to penetrate armor.", |
| 614 | + "dodgeable": true, |
| 615 | + "blockable": true |
| 616 | + }, |
| 617 | + { |
| 618 | + "type": "monster_attack", |
| 619 | + "attack_type": "melee", |
| 620 | + "id": "multi_scratch_clone", |
| 621 | + "attack_amount": [ 1, 3 ], |
| 622 | + "cooldown": 20, |
| 623 | + "move_cost": 150, |
| 624 | + "damage_max_instance": [ { "damage_type": "cut", "amount": 5 } ], |
| 625 | + "hit_dmg_u": "%1$s claws at your %2$s!", |
| 626 | + "hit_dmg_npc": "%1$s claws at <npcname>!", |
| 627 | + "miss_msg_u": "%1$s claws at you, but you dodge!", |
| 628 | + "miss_msg_npc": "%1$s tries to claw at <npcname>, but they dodge!", |
| 629 | + "no_dmg_msg_u": "%1$s claws at your %2$s, but fails to penetrate armor.", |
| 630 | + "no_dmg_msg_npc": "%1$s tries to claw at <npcname>, but fails to penetrate armor.", |
| 631 | + "dodgeable": true, |
| 632 | + "blockable": true |
| 633 | + }, |
486 | 634 | { |
487 | 635 | "type": "monster_attack", |
488 | 636 | "attack_type": "melee", |
|
0 commit comments