eventhandler.zsc (3379B)
1 class ETAYNEMOD_EventHandler : EventHandler 2 { 3 4 override void WorldTick() 5 { 6 } 7 8 override void WorldLoaded(WorldEvent e) 9 { 10 let p = players[consoleplayer].mo; 11 let bun = DevilbunnyPlayer(p); 12 13 bun.bThruActors = false; //otherwise you'll be noncorporeal after you fleche into a level exit 14 15 if (bun.hitpoints < 20) 16 bun.hitpoints = 20; 17 18 bun.targspirit = bun.spirit; 19 } 20 21 override bool InputProcess(InputEvent e) 22 { 23 if (e.Type == InputEvent.Type_KeyDown) 24 { 25 EventHandler.SendNetworkEvent("ETAYNEMOD_KeyDown", e.KeyScan); 26 } 27 else if (e.Type == InputEvent.Type_KeyUp) 28 { 29 EventHandler.SendNetworkEvent("ETAYNEMOD_KeyUp", e.KeyScan); 30 } 31 return false; 32 } 33 34 override void NetworkProcess (ConsoleEvent e) 35 { 36 if (e.Player < 0 || !(players[e.Player].mo)) 37 { 38 return; 39 } 40 41 let p = DevilbunnyPlayer(players[e.Player].mo); 42 if (p) 43 { 44 45 46 int key = Bindings.GetKeysForCommand("ETAYNEMOD_DonArmor"); 47 if (e.Name ~== "ETAYNEMOD_KeyDown") 48 { 49 if (key == e.args[0]) 50 p.inDonArmor = true; 51 } 52 else if (e.Name ~== "ETAYNEMOD_KeyUp") 53 { 54 if (key == e.args[0]) 55 p.inDonArmor = false; 56 } 57 else if (e.Name ~== "ETAYNEMOD_RemArmorEvent") 58 { 59 p.TakeOffArmor(); 60 } 61 62 } 63 } 64 65 override void WorldThingDied(WorldEvent e) 66 { 67 if (!e.thing) 68 return; 69 70 if (e.thing.bIsMonster) 71 { 72 let a = EtMonsterHandler(e.thing.FindInventory("EtMonsterHandler", true)); 73 if (a) 74 { 75 a.isDead = true; 76 } 77 } 78 } 79 80 override void WorldThingSpawned(WorldEvent e) 81 { 82 if(!e.thing) 83 return; 84 85 bool monster = e.Thing.bIsMonster; 86 87 if (e.Thing is "SummonBase") 88 return; 89 90 if(monster && !e.Thing.CountInv("EtMonsterHandler")) 91 { 92 e.Thing.A_GiveInventory("EtMonsterHandler"); 93 } 94 95 } 96 97 override void WorldThingRevived(WorldEvent e) 98 { 99 if (e.Thing) 100 { 101 if(e.Thing.GetClassName() == "DevilbunnyPlayer") 102 { 103 let p = DevilbunnyPlayer(e.Thing.player.mo); 104 p.HitPoints = 100; 105 return; 106 } 107 108 if(e.Thing.bIsMonster) 109 { 110 let a = EtMonsterHandler(e.thing.FindInventory("EtMonsterHandler", true)); 111 if (a) 112 { 113 a.isDead = false; 114 } 115 } 116 } 117 } 118 } 119 120 Class EtMonsterHandler : Inventory 121 { 122 bool superTicked; 123 bool isDead; 124 125 default 126 { 127 Inventory.MaxAmount 1; 128 +INVENTORY.AUTOACTIVATE 129 +INVENTORY.UNDROPPABLE 130 +INVENTORY.UNTOSSABLE 131 } 132 133 override void Tick() 134 { 135 if (!superTicked) 136 { 137 Super.Tick(); 138 superTicked = true; 139 } 140 141 if (!owner) 142 return; 143 144 if (isDead) 145 return; 146 147 if (owner.target) 148 { 149 if (!owner.CheckSight(owner.target)) 150 return; 151 152 153 if (owner.target.GetClassName() == "DevilbunnyPlayer") 154 { 155 let t = DevilbunnyPlayer(owner.target); 156 157 //prioritize archviles that are flaming all over you 158 if (owner.tracer) 159 { 160 if (owner.tracer.GetClassName() == "ArchvileFire") 161 { 162 t.PissOffSummons(owner, 150); 163 } 164 } 165 166 if (t.targetRange > owner.Distance2D(t)) 167 { 168 t.PissOffSummons(owner, 60); 169 return; 170 } 171 } 172 if (owner.target is "SummonBase") 173 { 174 if (owner.target.master.GetClassName() == "DevilbunnyPlayer") 175 { 176 let m = DevilbunnyPlayer(owner.target.master); 177 m.PissOffSummons(owner, 5); 178 return; 179 } 180 } 181 } 182 } 183 }