/* * XEvil(TM) Copyright (C) 1994,1999 Steve Hardt and Michael Judge * * The file, license.txt, distributed along with this source code contains * the license agreement for the XEvil source code and executable. * If you do not have this file, obtain a copy from * http://www.xevil.com/docs/license.txt * * http://www.xevil.com * satan@xevil.com */ // Includes bitmaps and info for *BOTH* RedHugger and GreenHugger. #if X11 #include "gen_xpm/red_hugger/red_hugger_0.xpm" #include "gen_xpm/red_hugger/red_hugger_0b.xpm" #include "gen_xpm/red_hugger/red_hugger_2.xpm" #include "gen_xpm/red_hugger/red_hugger_4b.xpm" #include "gen_xpm/red_hugger/red_hugger_25.xpm" #include "gen_xpm/red_hugger/red_hugger_4.xpm" #include "gen_xpm/red_hugger/red_hugger_5.xpm" #include "gen_xpm/green_hugger/green_hugger_0.xpm" #include "gen_xpm/green_hugger/green_hugger_0b.xpm" #include "gen_xpm/green_hugger/green_hugger_2.xpm" #include "gen_xpm/green_hugger/green_hugger_4b.xpm" #include "gen_xpm/green_hugger/green_hugger_25.xpm" #include "gen_xpm/green_hugger/green_hugger_4.xpm" #include "gen_xpm/green_hugger/green_hugger_5.xpm" #endif ////////////////////////////////////////////////////////////////////////// // First, functions and data for RedHugger. Size RedHugger::get_size_max() { return creatureContext.movingContext.physicalContext.sizeMax; } PhysicalP RedHugger::create(void *,WorldP w,LocatorP l,const Pos &pos) { PhysicalP ret = new RedHugger(w,l,pos); assert(ret); return ret; } CreatureXdata RedHugger::creatureXdata; StickyXdata RedHugger::stickyXdata; HuggerXdata RedHugger::huggerXdata; const CreatureContext RedHugger::creatureContext = { /** CreatureContext **/ 7, /* crawlSpeed */ 7, /* centerSpeed */ // Crawling same as center. 14, /* airSpeed */ 6, /* climbSpeed */ 11, /* jump */ 2, /* acceleration */ 50, /* corpseHealth */ True, /* biological */ DROPLET_GREEN_BLOOD, /* dropletType */ SoundNames::HUGGER_DEATH, /*hugger death sound*/ {/** MovingContext **/ #if X11 "black",False, "chocolate3",False, #endif #if WIN32 RGB(0,0,0)/*"black"*/,FALSE, RGB(64,0,0)/*"chocolate3"*/,FALSE, #endif /* animMax */ {2,2,1,1,2,1, 1, 2,2, 1, 2,2, 1, 2,2, 1, 2,2, 1, 2,2, 2,2, 2,2, 1, /* deadAnimMax */ }, /* sizes */ {{16,9},{16,9},{9,16},{9,16},{13,16},{10,9}, {9,10}, {9,16},{9,16}, {10,9}, {16,9},{16,9}, {9,10}, {9,16},{9,16}, {10,9}, {16,9},{16,9}, {13,16}, /* Must be */ {13,16},{13,16}, /* same size. */ {13,16},{13,16}, {13,16},{13,16}, {16,7}, /* deadSize */ }, /* offsets */ {{0}}, /* pixmapBits */ {{CMN_ID(red_hugger_0,IDB_HIHUGGER_RED0), CMN_ID(red_hugger_0b,IDB_HIHUGGER_RED0B)}, {PH_AUTO_GEN}, {CMN_ID(red_hugger_2,IDB_HIHUGGER_RED6)},{PH_AUTO_GEN}, {CMN_ID(red_hugger_4,IDB_HIHUGGER_RED4), CMN_ID(red_hugger_4b,IDB_HIHUGGER_RED4B)}, {CMN_ID(red_hugger_5,IDB_HIHUGGER_RED5)}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(red_hugger_5,IDB_HIHUGGER_RED5)}, {CMN_ID(red_hugger_0,IDB_HIHUGGER_RED0), CMN_ID(red_hugger_0b,IDB_HIHUGGER_RED0B)},{PH_AUTO_GEN}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(red_hugger_4,IDB_HIHUGGER_RED4)}, {PH_AUTO_GEN},{CMN_ID(red_hugger_4,IDB_HIHUGGER_RED4), CMN_ID(red_hugger_4b,IDB_HIHUGGER_RED4B)}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(red_hugger_4,IDB_HIHUGGER_RED4), CMN_ID(red_hugger_4b,IDB_HIHUGGER_RED4B)},{PH_AUTO_GEN}, {CMN_ID(red_hugger_25,IDB_HIHUGGER_RED_DEAD)}, /* deadPixmapBits */ }, /* maskBits */ {{0}}, {/** PhysicalContext **/ 35, /* health */ 25, /* mass */ A_RedHugger, /* classId */ "red-hugger", /* clas */ True, /* transmogifyTarget */ False, /* doppelUser */ False, /* potentialHuman */ False, /* potentialEnemy */ 0, /* enemyWeight */ False, /* potentialWeapon */ False, /* potentialOtherItem */ 0.0f, /* objectWorldPercent */ 0, /* levelMaxTimes */ {16,16}, /* sizeMax */ RedHugger::create, /* create */ False, /* statsCreations */ False, /* statsUses */ False, /* statsDeaths */ NULL, /* get_stats */ NULL, /* arg */ RedHugger::init_x, /* init_x */ RedHugger::create_from_stream, /* create_from_stream */ }, True, /* hires */ 0, /* offsetGenerator */ 0, /* transformOverride */ True, /* useXPM */ False, /* invisibility */ }, }; const StickyContext RedHugger::stickyContext = { /** StickyContext **/ 7, /* wallCrawlSpeed */ }; const HuggerContext RedHugger::huggerContext = { /** HuggerContext **/ False, /* useHuggeeIntel */ }; /////////////////////////////////////////////////////////////////////////// // Now, GreenHugger. Size GreenHugger::get_size_max() { return creatureContext.movingContext.physicalContext.sizeMax; } PhysicalP GreenHugger::create(void *,WorldP w,LocatorP l,const Pos &pos) { PhysicalP ret = new GreenHugger(w,l,pos); assert(ret); return ret; } CreatureXdata GreenHugger::creatureXdata; StickyXdata GreenHugger::stickyXdata; HuggerXdata GreenHugger::huggerXdata; const CreatureContext GreenHugger::creatureContext = { /** CreatureContext **/ 7, /* crawlSpeed */ 7, /* centerSpeed */ // Crawling same as center. 14, /* airSpeed */ 6, /* climbSpeed */ 11, /* jump */ 2, /* acceleration */ 50, /* corpseHealth */ True, /* biological */ DROPLET_GREEN_BLOOD, /* dropletType */ SoundNames::HUGGER_DEATH, /*hugger death sound*/ {/** MovingContext **/ #if X11 "black",True, "olivedrab",False, #endif #if WIN32 RGB(0,0,0)/*"black"*/,TRUE, RGB(0,128,64)/*"olivedrab"*/,FALSE, #endif /* animMax */ {2,2,1,1,2,1, 1, 2,2, 1, 2,2, 1, 2,2, 1, 2,2, 1, 2,2, 2,2, 2,2, 1, /* deadAnimMax */ }, /* sizes */ {{16,9},{16,9},{9,16},{9,16},{13,16},{10,9}, {9,10}, {9,16},{9,16}, {10,9}, {16,9},{16,9}, {9,10}, {9,16},{9,16}, {10,9}, {16,9},{16,9}, {13,16}, /* Must be */ {13,16},{13,16}, /* same size. */ {13,16},{13,16}, {13,16},{13,16}, {16,7}, /* deadSize */ }, /* offsets */ {{0}}, {{CMN_ID(green_hugger_0,IDB_HIHUGGER_GREEN0), CMN_ID(green_hugger_0b,IDB_HIHUGGER_GREEN0B)}, {PH_AUTO_GEN}, {CMN_ID(green_hugger_2,IDB_HIHUGGER_GREEN6)},{PH_AUTO_GEN}, {CMN_ID(green_hugger_4,IDB_HIHUGGER_GREEN4), CMN_ID(green_hugger_4b,IDB_HIHUGGER_GREEN4B)}, {CMN_ID(green_hugger_5,IDB_HIHUGGER_GREEN5)}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(green_hugger_5,IDB_HIHUGGER_GREEN5)}, {CMN_ID(green_hugger_0,IDB_HIHUGGER_GREEN0), CMN_ID(green_hugger_0b,IDB_HIHUGGER_GREEN0B)},{PH_AUTO_GEN}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {PH_AUTO_GEN}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(green_hugger_4,IDB_HIHUGGER_GREEN4)}, {PH_AUTO_GEN},{CMN_ID(green_hugger_4,IDB_HIHUGGER_GREEN4), CMN_ID(green_hugger_4b,IDB_HIHUGGER_GREEN4B)}, {PH_AUTO_GEN},{PH_AUTO_GEN}, {CMN_ID(green_hugger_4,IDB_HIHUGGER_GREEN4), CMN_ID(green_hugger_4b,IDB_HIHUGGER_GREEN4B)},{PH_AUTO_GEN}, {CMN_ID(green_hugger_25,IDB_HIHUGGER_GREEN_DEAD)}, /* deadPixmapBits */ }, /* maskBits */ {{0}}, {/** PhysicalContext **/ 35, /* health */ 25, /* mass */ A_GreenHugger, /* classId */ "green-hugger", /* clas */ False, /* transmogifyTarget */ False, /* doppelUser */ False, /* potentialHuman */ False, /* potentialEnemy */ 0, /* enemyWeight */ False, /* potentialWeapon */ False, /* potentialOtherItem */ 0.0f, /* objectWorldPercent */ 0, /* levelMaxTimes */ {16,16}, /* sizeMax */ GreenHugger::create, /* create */ False, /* statsCreations */ False, /* statsUses */ False, /* statsDeaths */ NULL, /* get_stats */ NULL, /* arg */ GreenHugger::init_x, /* init_x */ GreenHugger::create_from_stream, /* create_from_stream */ }, True, /* hires */ 0, /* offsetGenerator */ 0, /* transformOverride */ True, /* useXPM */ False, /* invisibility */ }, }; const StickyContext GreenHugger::stickyContext = { /** StickyContext **/ 7, /* wallCrawlSpeed */ }; const HuggerContext GreenHugger::huggerContext = { /** HuggerContext **/ True, /* useHuggeeIntel */ };