Feature Allow monster EA: none

ckb

Minion
Staff member
Some monsters that are elementally aligned also do physical damage for some attacks.
We currently allow for monsters to have multiple attack_elements. These are listed in monster.txt as EA: element, parsed in MonsterData.java.
@Veracity added some parsing for This Monster Data Feature.

Currently, I do not think Adding EA: none or EA: physical will work. I would propose allowing EA: none to attack_elements for monsters that do physical attacks as well as elemental attacks.
 

ckb

Minion
Staff member
Some additional background: I have found that sometimes I was taking a lot more damage than I expected in fights. As it turns out, my damage calc and Mafia's expected_damage() were always taking elemental_resistance() into account for player damage for an elemental monster. Because the monster will sometimes have a physical attack, this damage number is sometimes very wrong. For a skilled char, sometimes off by a factor of 3 or more.

@zarqon might find this useful for BatBrain.

This is a list of elemental monsters that also have physical attacks:
Gnollish Plungermaster,
Gnollish Bodybuilder,
Gnollish Sorceress,
one-eyed Gnoll,
Gnollish Crossdresser,
Spaghetti Elemental (Inner Sanctum),
Lumpy\, the Sinister Sauceblob (Inner Sanctum),
Somerset Lopez\, Dread Mariachi (Inner Sanctum),
Guard Bugbear,
zobmie,
Yeast Beast,
Weretaco,
Chowder Golem,
doughbat,
skullbat,
filthy hippy,
filthy hippy Vegan chef,
Orcish Frat Boy (Pledge),
white chocolate golem,
dairy ooze,
giant giant moth,
mayonnaise wasp,
Knob Goblin Sous Chef,
dairy goat,
swarthy pirate,
smarmy pirate,
shady pirate,
Tektite,
W imp,
XXX pr0n,
Lamz0r N00b,
1335 HaXx0r,
Flaming Troll,
Spam Witch,
me4t begZ0r,
pine bat,
ratbat,
Knob Goblin Barbecue Team,
Furry Giant,
Goth Giant,
One-Eyed Willie,
Trouser Snake,
Family Jewels,
Junk,
Pork Sword,
Hooded Warrior,
Astronomer,
huge ghuol,
spooky mummy,
X-headed Hydra,
annoying spooky gravy fairy,
mariachi calavera,
newt,
vampire bat,
Burrowing Bishop,
Twig and Berries,
Skinflute,
Trippy Floating Head (Grand Moff Tarkin),
Really Interesting Wallpaper,
Angels of Avalon,
Gathering of Angels?,
Elders of the Gentle Race,
The Master Of Thieves,
demonic icebox,
skeletal hamster,
confused goth music student,
skeletal cat,
anglerbush,
upgraded ram,
Snow Queen,
banshee librarian,
The Temporal Bandit,
knight (Wolf),
knight (Snake),
ghastly organist,
War Hippy Dread Squad,
War Hippy Infantryman,
War Hippy Sky Captain,
War Hippy Fire Spinner,
black widow,
black panther,
Black Knight,
War Hippy Spy,
War Frat Kegrider,
Panty Raider Frat Boy,
Beer Bongadier,
War Frat 151st Infantryman,
hunter-gatherer cave elf,
skeletal reindeer,
gift-wrapping vampire,
stocking-stuffing zombie,
bow-making mummy,
Cookie-baking Thing from Beyond Time,
ancient protector spirit (The Hidden Apartment Building),
ancient protector spirit (The Hidden Hospital),
ancient protector spirit (The Hidden Office Building),
ancient protector spirit (The Hidden Bowling Alley),
pygmy assault squad,
Lord Spookyraven,
caveman hippy,
cavewomyn hippy,
sabre-toothed ferret,
black pudding,
larval filthworm,
filthworm drone,
filthworm royal guard,
queen filthworm,
War Hippy (space) cadet,
War Hippy drill sergeant,
War Hippy Baker,
War Hippy Rigger,
War Hippy F.R.O.G.,
War Hippy Green Gourmet,
War Hippy Elite Rigger,
Mobile Armored Sweat Lodge,
War Hippy Airborne Commander,
War Hippy Homeopath,
War Hippy Naturopathic Homeopath,
Green Ops Soldier,
War Hippy Windtalker,
War Hippy Shaman,
War Hippy Elder Shaman,
War Frat 500th Infantrygentleman,
War Frat 110th Infantryman,
War Frat 151st Captain,
War Frat Elite 110th Captain,
War Frat Senior Grill Sergeant,
Heavy Kegtank,
War Frat Wartender,
War Frat Elite Wartender,
Elite Beer Bongadier,
Sorority Nurse,
Sorority Operator,
Slow Talkin' Elliot,
Zim Merman,
C.A.R.N.I.V.O.R.E. Operative,
Glass of Orange Juice,
Next-generation Frat Boy,
Monty Basingstoke-Pratt\, IV,
Brutus\, the toga-clad lout,
Danglin' Chad,
War Frat Streaker,
War Pledge,
Frat Warrior drill sergeant,
Muff,
Bush,
Flange,
Beaver,
Little Man in the Canoe,
Camel's Toe,
Honey Pot,
Axe Wound,
The Big Wisniewski,
batwinged gremlin,
spider gremlin,
spider gremlin (tool),
A.M.C. gremlin,
The Man,
rotund duck,
zombie duck,
drunk duck,
mean drunk duck,
The Clownlord Beelzebozo,
Iiti Kitty,
Bailey's Beetle,
War Frat Mobile Grill Unit,
Kubla Khan,
toothless mastiff bitch,
angry poet,
can-can dancer,
master of ceremonies,
courtesan,
swamp beaver shaman,
swamp gator,
swamp entity,
Mob Penguin Smith,
gritty pirate,
creamy pirate,
chatty pirate,
clingy pirate (male),
wacky pirate,
wealthy pirate,
Persona Inocente Cadáver,
goose a-laying,
laser lancing,
vengeful turtle spectre,
haunted soup tureen,
evil spaghetti cult priest,
slithering hollandaise glob,
psychedelic fur,
evil trumpet-playing mariachi,
giant zombie goldfish,
C. H. U. M.,
Mob Penguin hitman,
turtle trapper,
béarnaise zombie,
mariachi bandolero,
gang of hobo muggers,
weather underground dweller,
C. H. U. M. chieftain,
Neptune flytrap,
stranglin' algae,
drowned sailor,
mutant cookie-baking elf,
magic dragonfish,
Mer-kin diver,
diving belle,
killer clownfish,
lounge lizardfish,
Mer-kin raider,
Mer-kin healer,
sea cow,
Mer-kin rustler,
wild seahorse,
navy seal,
wet seal,
booth slime,
fan slime,
Bangyomaman Warrior,
"Handyman" Jay Android,
liquid metal robot,
7-Foot Dwarf Replicant,
Space Marine,
rock homunculus,
Crys-Rock,
running man,
fur tree,
daft punk,
Lumpy\, the Demonic Sauceblob,
Mob Penguin Arsonist,
mounted lawn gnome,
BRICKO vacuum cleaner,
BRICKO gargantuchicken,
snapdragon,
cruel dust mote,
funk particle,
Castle in the Clouds in the Sky,
Fearsome Wacken,
Vanya's Creature,
orcish juvenile delinquent,
orcish frat wannaboy,
actual orcish frat boy,
jailbait orquette,
totally trashed orquette,
Timmy Tofurkey cast member,
Neptune\, the Dog that Is a Respected Equal and Not a Pet cast member,
Timmy Tofurkey,
Neptune\, the Dog that Is a Respected Equal and Not a Pet,
Essence of Interspecies Respect,
water spider,
suckubus,
BL Imp,
CH Imp,
serialbus,
Victor the Insult Comic Hellhound,
Carbuncle Top,
reanimated baboon skeleton,
reanimated wyrm skeleton,
reanimated demon skeleton,
reanimated giant spider skeleton,
werecougar,
plastered frat orc,
bunch of drunken rats,
drunken rat king,
drunken 7-foot dwarf,
unemployed knob goblin,
chatty coworker,
Totally Malicious 'Zine,
water cooler,
your butt,
somebody else's butt,
Elf Hobo,
Knob Goblin Madam,
Hammered Yam Golem,
Soused Stuffing Golem,
Inebriated Tofurkey,
dirty old lihc,
moneybee,
bee thoven,
Queen Bee,
unlikely survivor,
primitive survivor,
dog-alien,
alielf,
ferrelf,
sexy sorority ghost,
sexy sorority skeleton,
sexy sorority zombie,
sexy sorority werewolf,
lolrus,
Wonderful Winifred Wongle,
eXtreme Orcish snowboarder,
Groar,
scavenger bugbear,
bugbear scientist,
bugaboo,
creepy eye-stalk tentacle monster,
grouchy furry monster,
bugbear robo-surgeon,
bugbear mortician,
bugbear drone,
N-space Virtual Assistant,
Black Crayon Beast,
Black Crayon Undead Thing,
Black Crayon Beetle,
Black Crayon Shambling Monstrosity,
Black Crayon Pirate,
Black Crayon Spiraling Shape,
Black Crayon Slime,
Black Crayon Penguin,
Black Crayon Elemental,
Black Crayon Constellation,
Black Crayon Hobo,
brushfire,
snakefire in the grassfire,
Norville Rogers,
Scott the Miner,
Father McGruber,
Father Nikolai Ravonovich,
Special Agent Wallace Burke Corrigan,
The Free Man,
panicking Knott Yeti,
smut orc pipelayer,
smut orc pervert,
oil slick,
oil tycoon,
oil cartel,
skulldozer,
Bubblemint Twins,
Mismatched Twins,
Creepy Ginger Twin,
Troll Twins,
bearpig topiary animal,
circuit-soldering animelf,
Claybender Sorcerer Ghost,
Dusken Raider Ghost,
Space Tourist Explorer Ghost,
Battlie Knight Ghost,
Whatsian Commando Ghost,
taco-clad Crimbo elf,
tacobuilding elf,
natural spider,
Doubt Man,
Regret Man,
cold cutter,
The Beefhemoth,
Butterknife of Regret,
Creme Brulee Torch of Fury,
carton of Eggs of Confidence,
bag of Potatoes of Security,
bundle of Meat of Happiness,
The Sierpinski brothers,
Video Game Boss,
Renaissance Giant,
Steampunk Giant,
mega frog,
swamp hag,
bog leech,
bog skeleton,
haunted skullabra,
swamp owl,
swamp skunk,
dweebie,
Bunsen burner and beaker,
sodium golem,
clay golem,
wire sculpture,
moister oyster,
Mer-kin specter,
eye in the darkness,
slithering thing,
stench bugbear,
stench werewolf,
sleaze zombie,
cold ghost,
Mrs. K\, the Chemistry Teacher,
Principal Mooney,
pygmy janitor,
pygmy shaman,
drunk pygmy,
pygmy bowler,
junksprite bender,
junksprite melter,
general seal,
The Sagittarian,
vandal kid,
kid who is too old to be Trick-or-Treating,
All-Hallow's Steve,
depressing French accordionist,
lively Cajun accordionist,
spirit bedbug,
spirit pea,
spirit faucet,
spirit alarm clock,
Chef Boy\, R&D,
High-Ranking Warbear Officer,
brick outhouse,
fire truck,
sewer tanker,
monster hearse,
sketchy van,
Medieval leather mug salesman,
Medieval potter,
Medieval dung peddler,
Medieval mug apprentice,
Copperhead Club bartender,
waiter dressed as a ninja,
The Frattlesnake,
red butler,
Blue Oyster cultist,
eagle,
The Avatar of Jarlsberg,
Thinknerd Sorting Robot,
animated ornate nightstand,
cosmetics wraith,
Jacob's adder,
creepy doll,
possessed toy chest,
stuffed moose head,
full-length mirror,
monstrous boiler,
coaltergeist,
Bram the Stoker,
plaid ghost,
possessed laundry press,
mad wino,
ghost of Elizabeth Spookyraven,
Sloppy Seconds Burger,
Sloppy Seconds Sundae,
Fun-Guy Playmate,
wild girl,
broctopus,
cocktail shrimp,
taco fish,
pair of burnouts,
extremely annoyed witch,
sticky mummy,
giant mob of baby spiders,
gourmet gourami,
alley catfish,
giant tardigrade,
Aquabat,
Auqadargon,
Lord Soggyraven,
Protector Spurt,
Big Wisnaqua,
The Rain King,
cigarette girl,
unstill,
banjoccultist,
giant rubber spider,
Sadiator,
Madiator,
cheap strix,
hypocritical medicus,
They,
government scientist,
lab monkey,
creepy little girl,
bigface,
Mercenary of Fortune,
E.V.E.\, the robot zombie,
exo-suited miner,
semi-autonomous drill unit,
ambulatory robo-minecart,
oddly-proportioned ghost,
outlaw leader,
Your winged yeti,
hulking bridge troll,
Microwave Magus,
Iron Chef,
Metaphysical Gastronomist,
Creamweaver,
Fire Fighter,
The Lavalier,
Mrs. Freeze,
Cheese Wizard,
Ghostpuncher,
Batburglar,
Arthur Frankenstein,
Grease Trapper,
Ham Shaman,
Porkpocket,
wall of meat,
wall of skin,
crêep,
baguette lady,
dinner troll,
Cake Lord,
Lot's Wife,
filthy pirate,
funky pirate,
fishy pirate,
flashy pirate,
toxic beastie,
C<i>bzzt</i>er the Grisly Bear,
nasty bear,
Wart Dinsey,
Resort Waiter,
The Unknown Turtle Tamer,
The Emperor,
Mr. Cheeng,
Geve Smimmons,
Raul Stamley,
Lavalos,
Groundling,
ghost actor,
VYKEA viking (male),
ice bartender,
ice housekeeper,
skeletal gunslinger,
buzzard,
coal snake,
pyrobove,
spidercow,
moomy,
Daisy the Unclean,
Pharaoh Amoon-Ra Cowtep,
unusual construct,
Clara,
furious cow,
emaciated rodeo clown,
menacing rodeo clown,
ungulith,
grizzled rodeo clown,
Witchess Pawn,
Witchess Witch,
Cinco de Mayo reveler,
Eldritch Tentacle,
gingerbread wino,
gingerbread gentrifier,
simple hobo,
large hostile animal,
exotic hostile animal,
Spant drone,
Spant soldier,
Murderbot drone,
Murderbot soldier,
Villainous Villain,
Mob Penguin protector,
Mob Penguin steel driver,
Mob Penguin negotiator,
Mob Penguin organizer,
voiceless whisper,
cheerless mime scientist,
cheerless mime vizier,
swamp monster,
cursed villager,
tree hugging hippy protestor,
"Phoenix",
Sewage Treatment Dragon,
Duke Vampire,
Archwizard,
tree loving hippy protestor,
biker,
"plain" girl,
jock,
party girl,
burnout,
angry ghost,
wild walrus,
wild moose,
wild beaver,
sausage goblin,
Steve Belmont,
Jayden Belmont,
Travis Belmont,
Sylvia Belgrande,
Sharona,
Jake Norris,
Chad Alacarte,
%alucard%,
Your Lack of Reflection,
giant crab,
melty army man,
plastic skeleton,
giant giant crab,
cockroach,
vape ghost,
tiki idol,
pirate radio,
melty freezeface,
Glass Jack Hummel,
gingerbread maw,
nutmeg anemone,
kelpie (horse form),
kelpie (lady form),
peppermint eel,
Dolph Bossin\, the Boss Dolphin,
basic lihc,
party skelteon,
magical fruit bat,
Very Dry Bones,
Birdo,
King Boo,
Kamek,
Angry Sun,
[2172]Bowser,
[2173]Bowser,
Boss Bot,
Gobot King,
Groarbot,
Nautomatic Sorceress,
gooified elf-thing,
void slab,
void spider,
void guy,
high-altitude pterodactyl,
T-Rex who ate the Bonerdagon,
herd of well-fed microraptors,
protoceratops spectre,
refrigeradon,
Naughty Saursaurus,
gangster's moll,
goblin flapper,
Drink-Delivery Trainbot,
Luggage-Handling Trainbot,
Ticket-Checking Trainbot,
Wine-Pairing Trainbot,
Slag-Processing Trainbot,
The Superconductor,
Tackle Fire,
shadow bat,
shadow cow,
shadow devil,
shadow guy,
shadow hexagon,
shadow orb,
shadow prism,
shadow slab,
shadow snake,
shadow spider,
shadow stalk,
shadow tree,
Flock of Groars?,
The Little Wisniewski,
The Boy,
flaming leaflet,
 

Ryo_Sangnoir

Developer
Staff member
I don't see any reason in the code why "EA: none" wouldn't work.

The other problem with expected_damage() is that it hasn't been updated to the new paradigm where monsters can have multiple attack elements. It assumes that the last "EA:" attribute is the sole attack element of the monster. elemental_resistance() and AreaCombatData.java haven't been updated either.

Also, how did you get that list? The process would be useful for keeping the attack elements up to date.
 

ckb

Minion
Staff member
I don't see any reason in the code why "EA: none" wouldn't work.

The other problem with expected_damage() is that it hasn't been updated to the new paradigm where monsters can have multiple attack elements. It assumes that the last "EA:" attribute is the sole attack element of the monster. elemental_resistance() and AreaCombatData.java haven't been updated either.

Also, how did you get that list? The process would be useful for keeping the attack elements up to date.

I tried adding "EA: none" to monsters.txt and it did not work, so something is parsing this in some other way. I looked through MonsterData.java briefly but could not figure it out (mostly because I don't know what I'm doing).

To find elemental monsters with physical attacks, I wrote a small script that parsed the wiki to look at attack messages:
Code:
void MaeSearch() {
    buffer mlan;
    foreach mon in $monsters[] {
        if (mon.attack_element!=$element[none]) {
            print(mon,"blue");
            int ean = 0;
            buffer page = visit_url(to_wiki_url(mon));
            matcher mhm = create_matcher("<b><span style=\"color:red\">[^<]+?</span></b>\\n",page);
            while (find(mhm)) {
                //print(group(mhm),"olive");
                ean += 1;
            }
            
            if (ean > 0) { mlan.append(mon+"\n"); }
            
        }
    }
    buffer_to_file(mlan,"0mlan.txt");
    
}
 

ckb

Minion
Staff member
Trying to understand MonsterData.java, it looks like line 179 for parsing EA: includes:
Code:
              if (element == Element.NONE) {
                continue;
              }

So that EA: none will be ignored. Maybe removing this will allow for including physical attacks.
 

ckb

Minion
Staff member
I've started working on this. Updating monsters.txt is the big chore... this might be easier if that files was ordered differently, but it should be a one-time thing.
A question to those in the know (probably @Veracity ): Some monsters have "E: element", and some have "ED: element EA: element"
It looks like both will function, even with additional elements. Is there a preference?
Looking through the data it looks like E: is used when a monster has a single attack and defense element, though it could be added to for monsters with additional attack elements.

As an example
option 1:
Code:
Beer Bongadier    422    warfratbg.gif    Atk: 180 Def: 175 HP: 210 Init: 50 P: orc E: sleaze EA: none Article: a    beer bong (20)    beer helmet (1)    bejeweled pledge pin (1)    distressed denim pants (1)    kick-ass kicks (2)    PADL Phone (3)
option 2:
Code:
Beer Bongadier    422    warfratbg.gif    Atk: 180 Def: 175 HP: 210 Init: 50 P: orc ED: sleaze EA: sleaze EA: none Article: a    beer bong (20)    beer helmet (1)    bejeweled pledge pin (1)    distressed denim pants (1)    kick-ass kicks (2)    PADL Phone (3)
 
Top