From d9e50581ffb75b127fc2331819f96fd49383ce23 Mon Sep 17 00:00:00 2001 From: Agent X Date: Sun, 26 May 2024 15:21:29 -0400 Subject: [PATCH] Remove Gun Mod DX It isn't a finished product, I ran out of time to complete it and removing it can also free up some space for something like a cheats or moveset mod to be in its place. --- mods/gun-mod/a-constants.lua | 49 -- mods/gun-mod/a-utils.lua | 228 -------- mods/gun-mod/actors/ak47_geo.bin | Bin 8276 -> 0 bytes mods/gun-mod/actors/arm_geo.bin | Bin 7946 -> 0 bytes mods/gun-mod/actors/arrow_geo.bin | Bin 297 -> 0 bytes mods/gun-mod/actors/bullet_hole_geo.bin | Bin 5848 -> 0 bytes mods/gun-mod/actors/magnum_geo.bin | Bin 12640 -> 0 bytes mods/gun-mod/actors/pistol_geo.bin | Bin 4020 -> 0 bytes mods/gun-mod/actors/shotgun_geo.bin | Bin 10287 -> 0 bytes mods/gun-mod/actors/troll_explosion_geo.bin | Bin 16168 -> 0 bytes mods/gun-mod/b-bullet.lua | 498 ---------------- mods/gun-mod/b-gun.lua | 89 --- mods/gun-mod/c-dialog-arrow.lua | 42 -- mods/gun-mod/c-viewmodel-animations.lua | 96 ---- mods/gun-mod/c-viewmodel.lua | 135 ----- mods/gun-mod/c-weapon.lua | 593 -------------------- mods/gun-mod/main.lua | 407 -------------- mods/gun-mod/sound/ak47_shoot.mp3 | Bin 7246 -> 0 bytes mods/gun-mod/sound/bad_to_the_bone_riff.mp3 | Bin 27104 -> 0 bytes mods/gun-mod/sound/dry.mp3 | Bin 5975 -> 0 bytes mods/gun-mod/sound/impact.mp3 | Bin 7906 -> 0 bytes mods/gun-mod/sound/magnum_reload.mp3 | Bin 8731 -> 0 bytes mods/gun-mod/sound/magnum_shoot.mp3 | Bin 8928 -> 0 bytes mods/gun-mod/sound/pistol_reload.mp3 | Bin 11641 -> 0 bytes mods/gun-mod/sound/pistol_shoot.mp3 | Bin 17947 -> 0 bytes mods/gun-mod/sound/ricochet.mp3 | Bin 7822 -> 0 bytes mods/gun-mod/sound/shotgun_shoot.mp3 | Bin 12726 -> 0 bytes mods/gun-mod/textures/gun_mod_crosshair.tex | Bin 186 -> 0 bytes 28 files changed, 2137 deletions(-) delete mode 100644 mods/gun-mod/a-constants.lua delete mode 100644 mods/gun-mod/a-utils.lua delete mode 100644 mods/gun-mod/actors/ak47_geo.bin delete mode 100644 mods/gun-mod/actors/arm_geo.bin delete mode 100644 mods/gun-mod/actors/arrow_geo.bin delete mode 100644 mods/gun-mod/actors/bullet_hole_geo.bin delete mode 100644 mods/gun-mod/actors/magnum_geo.bin delete mode 100644 mods/gun-mod/actors/pistol_geo.bin delete mode 100644 mods/gun-mod/actors/shotgun_geo.bin delete mode 100644 mods/gun-mod/actors/troll_explosion_geo.bin delete mode 100644 mods/gun-mod/b-bullet.lua delete mode 100644 mods/gun-mod/b-gun.lua delete mode 100644 mods/gun-mod/c-dialog-arrow.lua delete mode 100644 mods/gun-mod/c-viewmodel-animations.lua delete mode 100644 mods/gun-mod/c-viewmodel.lua delete mode 100644 mods/gun-mod/c-weapon.lua delete mode 100644 mods/gun-mod/main.lua delete mode 100644 mods/gun-mod/sound/ak47_shoot.mp3 delete mode 100644 mods/gun-mod/sound/bad_to_the_bone_riff.mp3 delete mode 100644 mods/gun-mod/sound/dry.mp3 delete mode 100644 mods/gun-mod/sound/impact.mp3 delete mode 100644 mods/gun-mod/sound/magnum_reload.mp3 delete mode 100644 mods/gun-mod/sound/magnum_shoot.mp3 delete mode 100644 mods/gun-mod/sound/pistol_reload.mp3 delete mode 100644 mods/gun-mod/sound/pistol_shoot.mp3 delete mode 100644 mods/gun-mod/sound/ricochet.mp3 delete mode 100644 mods/gun-mod/sound/shotgun_shoot.mp3 delete mode 100644 mods/gun-mod/textures/gun_mod_crosshair.tex diff --git a/mods/gun-mod/a-constants.lua b/mods/gun-mod/a-constants.lua deleted file mode 100644 index 555f115e..00000000 --- a/mods/gun-mod/a-constants.lua +++ /dev/null @@ -1,49 +0,0 @@ -if SM64COOPDX_VERSION == nil then - local first = false - hook_event(HOOK_ON_LEVEL_INIT, function() - if not first then - first = true - play_sound(SOUND_MENU_CAMERA_BUZZ, { x = 0, y = 0, z = 0 }) - djui_chat_message_create("\\#ff7f7f\\Gun Mod is no longer supported with sm64ex-coop as it uses sm64coopdx exclusive Lua functionality.\n\\#dcdcdc\\To play this mod, try out sm64coopdx, at\n\\#7f7fff\\https://sm64coopdx.com") - end - end) - return -end - --- models -E_MODEL_BULLET_HOLE = smlua_model_util_get_id("bullet_hole_geo") -E_MODEL_SINGLE_ARM = smlua_model_util_get_id("arm_geo") -E_MODEL_PISTOL = smlua_model_util_get_id("pistol_geo") -E_MODEL_MAGNUM = smlua_model_util_get_id("magnum_geo") -E_MODEL_AK47 = smlua_model_util_get_id("ak47_geo") -E_MODEL_SHOTGUN = smlua_model_util_get_id("shotgun_geo") -E_MODEL_ARROW = smlua_model_util_get_id("arrow_geo") -E_MODEL_TROLL_EXPLOSION = smlua_model_util_get_id("troll_explosion_geo") - --- textures -TEX_CROSSHAIR = get_texture_info("gun_mod_crosshair") - --- custom sounds -SOUND_CUSTOM_IMPACT = audio_sample_load("impact.mp3") -SOUND_CUSTOM_RICOCHET = audio_sample_load("ricochet.mp3") -SOUND_CUSTOM_DRY = audio_sample_load("dry.mp3") -SOUND_CUSTOM_BAD_TO_THE_BONE = audio_sample_load("bad_to_the_bone_riff.mp3") - --- actions --- ACT_CUSTOM_MOVEMENT = allocate_mario_action(ACT_GROUP_CUTSCENE) - --- packet ids -PACKET_ATTACK = 0 -PACKET_SOUND = 1 - --- misc -START_IN_FIRST_PERSON = true - -MAX_INVENTORY_SLOTS = 2 - -HEALTH_SIGN = 30 -HEALTH_BREAKABLE_BOX = 30 -HEALTH_BOWLING_BALL = 75 -HEALTH_CHUCKYA = 60 -HEALTH_KING_BOBOMB = 200 -HEALTH_BOWSER = 300 \ No newline at end of file diff --git a/mods/gun-mod/a-utils.lua b/mods/gun-mod/a-utils.lua deleted file mode 100644 index c2de9d0e..00000000 --- a/mods/gun-mod/a-utils.lua +++ /dev/null @@ -1,228 +0,0 @@ -if SM64COOPDX_VERSION == nil then return end - -define_custom_obj_fields({ - oGmHealth = "f32" -}) - ---- @return number ---- Gets the player's health in 0-100 format -function get_health() - return clampf((gMarioStates[0].health - 0xFF) / (0x880 - 0xFF), 0, 1) * 100 -end - ---- @return nil ---- Sets the player's health in 0-100 format -function set_health(health) - gMarioStates[0].health = (health * 19.21) + 0xFF -end - -function packet_send(reliable, packet, dataTable) - dataTable.packet = packet - dataTable.level = gNetworkPlayers[0].currLevelNum - dataTable.area = gNetworkPlayers[0].currAreaIndex - dataTable.act = gNetworkPlayers[0].currActNum - network_send(reliable, dataTable) - on_packet_receive(dataTable) -end - ------------------- --- synced audio -- ------------------- - -gSoundTable = {} -local soundId = -1 - -function sync_audio_sample_load(filename) - local sound = audio_sample_load(filename) - if sound ~= nil then - soundId = soundId + 1 - gSoundTable["snd" .. soundId] = sound - return "snd" .. soundId - end - return nil -end - -function sync_audio_sample_play(audio, position, volume) - local packet = { - sound = audio, - x = position.x, - y = position.y, - z = position.z, - volume = volume - } - packet_send(false, PACKET_SOUND, packet) -end - - --------------------- --- misc functions -- --------------------- - ---- @param m MarioState -function active_player(m) - local np = gNetworkPlayers[m.playerIndex] - if m.playerIndex == 0 then - return 1 - end - if not np.connected then - return 0 - end - if np.currCourseNum ~= gNetworkPlayers[0].currCourseNum then - return 0 - end - if np.currActNum ~= gNetworkPlayers[0].currActNum then - return 0 - end - if np.currLevelNum ~= gNetworkPlayers[0].currLevelNum then - return 0 - end - if np.currAreaIndex ~= gNetworkPlayers[0].currAreaIndex then - return 0 - end - return is_player_active(m) -end - -function if_then_else(cond, ifTrue, ifFalse) - if cond then return ifTrue end - return ifFalse -end - -function handle_timer(timer) - if timer > 0 then - timer = timer - 1 - end - return timer -end - -function split(s) - local result = {} - for match in (s):gmatch(string.format("[^%s]+", " ")) do - table.insert(result, match) - end - return result -end - -function on_or_off(value) - if value then return "\\#00ff00\\ON" end - return "\\#ff0000\\OFF" -end - -function name_without_hex(name) - local s = '' - local inSlash = false - for i = 1, #name do - local c = name:sub(i,i) - if c == '\\' then - inSlash = not inSlash - elseif not inSlash then - s = s .. c - end - end - return s -end - -function lerp(a,b,t) return a * (1-t) + b * t end - ---- @param obj Object -function obj_set_animation(obj, name) - if obj == nil then return end - - local animPointer = nil - if obj.header.gfx.animInfo.curAnim ~= nil then animPointer = obj.header.gfx.animInfo.curAnim._pointer end - smlua_anim_util_set_animation(obj, name) - if obj.header.gfx.animInfo.curAnim._pointer ~= animPointer then - obj.header.gfx.animInfo.animAccel = 0 - obj.header.gfx.animInfo.animFrame = obj.header.gfx.animInfo.curAnim.startFrame - end -end - ---- @param o1 Object ---- @param o2 Object ---- Basically `obj_check_hitbox_overlap()` except it uses 3 variables for object 1's X, Y and Z coordinates -function obj_check_hitbox_overlap_xyz(o1, o2, x2, y2, z2) - if o1 == nil or o2 == nil then return false end - - local o1H = maxf(o1.hitboxHeight, o1.hurtboxHeight) -- object 1 hitbox height - local o1R = maxf(o1.hitboxRadius, o1.hurtboxRadius) -- object 1 hitbox radius - local o2H = maxf(o2.hitboxHeight, o2.hurtboxHeight) -- object 2 hitbox height - local o2R = maxf(o2.hitboxRadius, o2.hurtboxRadius) -- object 2 hitbox radius - - -- calculate the distance between the cylinder centers in the xz-plane - local distanceXZ = math.sqrt(sqrf(x2 - o1.oPosX) + sqrf(z2 - o1.oPosZ)) - - -- check for collision in the xz-plane (ignoring height) - if distanceXZ <= o1R + o2R then - -- check for collision in the y-axis (height) - if math.abs(y2 - o1.oPosY) <= maxf(o1H, o2H) * 0.5 then - return true - end - end - - return false -end - ---- @param obj Object -function obj_skip_in_view_check(obj) - obj.header.gfx.skipInViewCheck = true -end - ---- @param o Object -function obj_sign_hitbox(o) - o.hitboxRadius = o.hitboxRadius * 0.75 - o.hitboxHeight = o.hitboxHeight * 1.5 - o.oGmHealth = HEALTH_SIGN -end - ---- @param o Object -function obj_amp_hitbox(o) - if o.oAction ~= AMP_ACT_ATTACK_COOLDOWN then - o.hitboxHeight = o.hitboxHeight * 2 - end -end - ---- @param o Object -function obj_chuckya_hitbox(o) - o.hitboxHeight = o.hitboxHeight * 2 - o.oGmHealth = HEALTH_CHUCKYA -end - ---- @param o Object -function obj_snufit_hitbox(o) - o.hitboxRadius = o.hitboxRadius * 0.6 - o.hitboxHeight = o.hitboxHeight * 2 - o.hitboxDownOffset = 60 -end - ---- @param o Object -function obj_king_bobomb_hitbox(o) - o.oGmHealth = HEALTH_KING_BOBOMB - o.hitboxHeight = o.hitboxHeight * 3 -end - --- generic -function obj_generate_hitbox_multiply_func(radius, height) - --- @param o Object - local func = function(o) - o.hitboxRadius = o.hitboxRadius * radius - o.hitboxHeight = o.hitboxHeight * height - end - return func -end - --- generic -function obj_generate_health_func(health) - --- @param o Object - local func = function(o) - o.oGmHealth = health - end - return func -end - -function gm_hook_behavior(id, override, init, loop) - hook_behavior( - id, - get_object_list_from_behavior(get_behavior_from_id(id)), -- automatically get the correct object list - override, init, loop, - "bhvGm" .. get_behavior_name_from_id(id):sub(4) -- give the behavior a consistent behavior name (for example, bhvGoomba will become bhvGmGoomba) - ) -end \ No newline at end of file diff --git a/mods/gun-mod/actors/ak47_geo.bin b/mods/gun-mod/actors/ak47_geo.bin deleted file mode 100644 index 8f0b317b9c61fcdc787b5337ac115282641495fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8276 zcmV-aAgkX*Sx!$=LP<{hK>z>%0001Z+O1m&T#Q>AKQm1=Qqv-7(;_L!l0t}*78kjR zl1NHLR8q)JbS+895*2P}QTng=^jT?T6#(#GiQd%$_@>{q`Q)3@uJB{&0VGkuY zx6qjAO}mv2t^b-?K6Gi~oby*@Utb-uPIJZbz_(uu)HLM>dG4^>7Z#OqOYy~t_UZOp zu6B;PFwDO4biGM=Vbz+j@%ME*Kbb5@3%{HpbH(=DpldJW7foJR7qwuOlHLA_*r<8=mj{39 z%4vIST^dz+G{bk?^&8dU0byhxHRjk3AMlqi)BNrug&#Itt<~2T+MQB6byC64ft$O< zakRy>>rRQ~YhGBU=qLGTr|EmDySzL9=fLfyyB@KQcq$r99~7K%A!+&XfZ&M%;|fQb zzMt9oau?Tsj=06X6GeON&2D))nR^)(9;yrMZ!cd`VSag)n#%OzHCl;F1{?RYOgw5k za>&dTRYSBDr+j#`Z&&B!BcWZ*@zoz!?Dj7 z9x>Oy^4We>TH*JPH(HkV8!{+~*tBtfg0yGl(g3AHO3%H%|C#H)Bx`GX;l<+z3Nq~G zb$T-tg0=2FOmAuUt|KoSzU=$A)5i?8MxMKRYGxc;>_?8cb^VJX?by|+C3Ev;kMPr& z$~EUMwmRR`*)C#uJjaeTC+?K)o!VT#$)}3Plzy!&`4DGsU1i#NuOw`q!@SMv1Dq1Q z8M)(5UD&TPlr?>FY1@x0QSYncpG@Akz+Gi@AI7Nl7t+JGwB-+pS!nyp+Vj{U_t6^0 zhIt3Iy(J#(``jL%qL-KByH#zYYC~FIwE^n0iYJ%F%{{TJP}ePaMp&U^+5&@?Ft_k; zO{1T_-|8@M*Ik3xHlN?Lj6J>9K0=>yzva*{*{<9<#F>cFJ0(QTm%qYwRBUGMZg_U4 z#$WT?x|VgD>*_hFSsnqb3C6dh0+fGDmYu28)jsbwdNEBp6&T`7j}R&D*kzM900WFEoQgxki8fr8iylOL)Yk1T)5SgWFrzeF|M{ zKA=hO)6+HczA_%fGR!aOXIagPeAr}FduoGyLbRb-{$Hc+W{u8V9G_FB);z#A#SU$%~sIXp99o^5Qe6VgxskZ#E>qUJgsKnKFwV6gn>rYuYd%)=Zt&gh) zoYVU|KYitl@TIle<{q0-@-eF((m|mg+fZOWzsp zas7SmqVq~V_gL*q39%P_Th5nLLV9MO7j?|`opQlIzD4vTL{JzQz0abIcd(C}qk7lNClvunE9 zmZ72^r3!c7H9OacA3CC#(RZ=ZUm4i`?>D1uVhZhX2^!PT-Y2|6y!dBs?xm7SH4w+UDw`S$(p{&a;EnC>ILAu(~-TU1MbqD3Mf6D7^8z1oLpj<U#6C^@5_ja? z^A+Rb75{e6_Pc+-)cDDPRmPh{*Tt8LiAi|{$q@^acIsR{>F-dW^(pG;8$!FI7e<8ObY)s~-M%xGjJCfcyDP*~|9H`G3EBTg}Y0p_=d*d4in;FjWiv;XSe}b&Fdki1m(vCqKK|FrxSw7Oh`xS# z#NvY)i{|eAab@CFpBbQWh=u9Yj1T6?QTNu~cw4(7uv$w_v*4Igf+PFb`{^vuR) zk@+Bd`?=}U`WAkjH~NW5Td+7N`o6*NVJtB6_g>`+A<`Bhcb65=_wzCfdX)*4$-66BD-Fyqo%WMnB=B(yS zaWtHFz&6G4f}XLMzSnXanQ3R8^~Z?J*;pWcDe_L6tV3qPn5_OU9yl(}88h{mWzhL? zQpvOPq6$-X#bn(t8)-IefIH{YI_CHGxZ&*b^z?MUf%+n?9o`AXHGz}B%x_LX=D~M0 z%BGK3K4q@ACaU4uc?a*4+YNk=&GOToq7=H_^Ud40jN^Nm!^fO`4EAhRv>9Qz+aqL4 zx+!zxs%cM^zc~unTUmVn{~W8pAC|K$E|@Rg z&XV$RUG2g<-$|l#)))A1@D{m_&US(z&vV5DJP!h9sUrElgc$pc?X06=n-;@R42JhiN5fw^$iocJGk4L~V z7jM_~9{w%{E^Ak>a~b79G6Vu$&`5eak!WSas9quhfdY+dL{d_-iS;CgYGXl-$b;0m z#5yn>bdmHKz=x4JeY*+o%SV?#JUvzN@9zF$A99-{s%CFI-&pF`4fOX=_@%Tn4~_(+@JjE zZV$&73Q&9)&!yu{B>7uOoYbY#>i%UqFWwkB-bB(qq_=jew7L$o;pL}>&JWIiYiCd= z%s=iQ9}>gKoS%BkL8ny2nLkL`Pe}A zw_rZTfCvW62lm&K98b_+EI$Sy`~2~N^2;Aj$X~24i9q?aBIAXBKg1Dm8jFz6 zwoX~GdpqYUD^Ewu=bP~>!{H+9}Cw9n+#ofx`(OtkEaY)Dd zhXF37A7U1X(+IAJ_XiVVBFWDtaS*Xbd~(86Vi@_lFD1WNELG8s7)$bt)AA38E$8_I z<)J^=-ymW!N}{fn8hlz!|Fj34@g?ZJ4VJ?!5ekp(Q| zAJR8YL{<#yKNhknKAWh=*u8nLtr+Gvbp+aTcl`xRHW;~y$ zBiBkf67OKHl`J_u^Cx?1q<$8)$oh&mSso=ullI|X3`1M=o_Q=~55^PMRlt^uk0<0w zdr*ETV1W)XzmoI^uH##QfmDofHsufW-??+GaDE2^1f;=SCoVI3HU8$_LKZ7J%}F{dXgf|2Q9R1j+}_{}zDqkMrY3p!{^l-T85U zZULx2`Tn_z;C#qY@$3+T{`38H6~X<7^07k<#>@JL4QI8#m&+(is_emFz-{eU8xwSx z#iZf}Vl294v#6HbQK?pjBT2QAaxzpaCy!cXMFpx=P*tW{RW;PAalvox$_UtHvXC7~ z2{zI%!=YMv899U%BD%6F)%GS%bpd-UASM*27;P6wiV4}5k>?1-sj7hN zsw%4WI?jm!spPTV-TdS(VPSGRiN<@Avs#Bw$y9jqI}Ne#9p;20GU*^>(<<@f(rL3|g4D zB01@E1r{n(CS0ia3o};)F3h9pjogjI$>}))3!f_%cJpWmfO;X6Q^I=J)!R?Hnhp2Rw! zmc+G$G7rOiW%BS~8VAr=o66T|!iq;n@`xTy$~RE_fo;vccPQLM(F5Bgd`$)HIW}R8 z^gA{Q@+)^?e&nxJmt&JW*vykx?n3h2`J+kxW{N+s4e@uENB#yt`EbZTn34~G^5M{) z7R4`0_AidNjyf3Pcy(!dBLm_rl3qpPK!Q()`H3SC{SH08;s~rygVt9`zZv95 z^QV&L$NpE+bR2&q!?CG0>k#pnl&>W5G)7Yc#5n$GJi0dcM)CJRH|r)(Vm#lbF%H)E zgmJ!_0g~^o56|CbfcW|S=hy`2PXT>V5Cu&Q5I-hyCDk7Y^ZOI=3+0o_AChnE#Q8(| z8#^&wpg%~A$6FnN#~YeogGqmy!|(9MXC1*GpA8h9oKN9*c-V)5FrJSv|KGt5o<1K2 z(g){5Jw*>}Lv%FX?lbuFt%1ULzN%69A;9`IDE%DM}gCLY2 zMC-dl;%W+Gdul@QV|#;n_SCxNL#x(AEf2#|xM`%7yfa8N)FZuhy!Fr6*et|HapQQxi$MRuB>O(&wi zpiwDar47l`G^A z#Dex9#{E43ApT;Wd^xp#@%1S+V2tT9L_%&z_DC=L`A| z^EH}Rh(!4eA?-u{7=~wiwaU()3RBqrA53H)+xvrw?BV-JAfp7_0*86`k3fbsjnRF> zfW|-bcc-KKiUCc>_Zu(rev$)L^5ng`N@$GuFVYy_XD-tG*q>8`7jrFm#?zPIg)zSW zT%<7neuVI^3PA=D@Iqbo+l#aT=;0!b3qQCJg9`+`CPufeSivsFk1#Sn?8dfrT#YC@Ry1CRN2=$2q(g1s6`Y zIOP?EKBt9$sx* zmX~ZS@o(zeJ=zkiarem3+d8+QH9WroIqF=qgNS3MXQmJ{fHZ}N5GyD=jifUv`U@d? zGm*hsZc$5M`ToF}hhhF+5eQ@c46uS(nCZ%+JA*h1WBtzH1%<5uhdQ_2BuF;$-T*O_ z*8&LtNn)5N5;HLtLHrb+O6n7(`2ARM@f@D~O`?d0Sri@N?)>I-JU5Adl9#6ZG-+CGS-4Q8a(^Z9>o0ki)f7PWmA|RZxPG&Qk_6P z5Vj-rA?(M)OjJE{7A^ZR|LlV z_273)yP;0+_FKbW-JAZ0dyS#Yzt~TCA5bgz`hI4p{)_YJ|M47b*qaZ)e`iN#+wb#b z+6z0pjZ=ZQS9$mg>{im!(f~esdV18u`=N;x#qYb)E5O6W%lM1vfAcF7PV5E%bYyt# zFTW0HU-g#tn_ro5vf;z%uRDDkEUlqmnfMgFo~5urMzqY+&n#5y@15%shb&So@5jAx zi>Wz#+6xQqf>dLs>?#GFXuqtB&Q5EM<3~2T+{jq_^4vN58-%BahsT;VO>b`mo-*Cq z)%dNjG<~Jdq^l<%wA8-WS(v%*U|rgZ;?o_ib>-i`>qq78SGP{}?5r!#t;mnqILYPK zrq`D}^6&3cG2PV4C51n?ENQQNne?DBSj##rc|m&3)0nB*`uh5Q)?NdZl?Ux^tgpx? z6@S@1{2FPeRz*dHY}AKa6#0~1^?7wk)9Q5n%i?13J6T!V)-8IyVeHCxGp}!K@l7<0 z8xSR>J91H`qmz@HR%&N^OS(+`!i?45E?(PE^XB@Ez}oF*4P|$Bd<}{`bxLRBnugCd z*;U0C8}#Z=Oboodx#9CZ?;%5mct>4yxoy=qzq&O2$TSZ!UNw*N^?NrpRlc-i&TzPJ z{rYt~F$L3SMqZKIvh}i`oHEUCEIPkn`|AxWnkw^-3=6KPsJPtLT)p67aQ%Y3MM}nr zvzKQCd?`42Qf-W-%COoqXU+s)d6ty3OFDPa%9AGRnXMl`4iaG%E{bfbDmLBF_@MdG zaYOd{+IKgvipS47@m!U;tUjTPwI(&hr+T~Pl*romw~H5OCS8)zN|^WL?M-3UJ!OnpZSAE|`4$myplD0}I?sG9NK3*kpkL+qckL4MS z+_6s{J$mF)_x>XHn_k$nkRP>gS0*x+@6#(?ZFes~F3ojrlH0)4XsN)P_6B3VsTCht zv>CWWh8%NGZEk7Nx{oQ+^~ZU?#6kS88&NQM?@S5wmWu>d+zY7@HWub&(r=-|H#Ou zA5B$0VlQ{rm^}|vKT)Qg^=-_YOv%N?`ZgTv7gEWKEG?`VP22J&&C$NvlyGLOUQJn9 z8J9as&afCv=sVqw1lQ6uE8Mno73MUwvM8 z!>Yf=INvvZG2wk0ZT%wqYV;X6X@k*I3lD{Cmcn79`n^fX(MD_b#5>Gdz9xCEb8@VQ zO>1M(m?NVqW^X(k8UFr9h|y3F+XV0E`?DWJTwF3`M|nqEL(I_m7nsJ5jV=L8h_JL*R%M3IuICHHBT(ui#FB+UoGyS8@ak1Cjxy1caWLDpTB$FEbDE@}Ic zQD7yzU){7|&2-t(VE6DN#xuU>H6AQ{q*{Ann`h~@r6JOD*Hj-)OAo24ik!UXY|7iK zflI#3jXd~yOwHwtsxd`AdCUC$FEeE_*rx+o&DRdBl4NpXj$8>#*OmyLne3xG(n=!M zca^(u`Mi~Luiuh#4y=ffxscAtI3weGub?G?)0&U4nmV!H7DgUlb`e=EIST^z7? z|Lbq18<~&{@WTW6;Xnfs3*d)ePUJNc;-esi!rtV4xsAlvL0%WaiWF7=wX26JfgLe z_)Vt;Wgq(&MO2IIXptweDs>371k)*u{f#0JUP$sII^xIvM-h2lEn67^{3!rpzCMI~ zNPgIjmH_eN_$E1XESSIU^n>^1gybQ{{T)Tri$lDO`YHwFM_7;^m%!omcN7uU2jaCPM)^TlP+pK9 z(&xwV^AklFu_4CtP#?rNzm`Cl9wwUB2|t|1@07{Tx;V-P^oJ;t_;MgA^q~rnlMpJ#Dk%557;D7&7nhLkA8P!I zONf!$|8NQU7e!yA5x>YI;C&mGzKqZxf^lRd=sa?IENb(Mr9B#^H=}pdHX-zzDIh@k z)mOzqj~d`k)JqKpf_y!fbbG03v>@Lv>!N~;KNmK8Y0glPucw{9mwJqZ`e`u5NNV%& z_j2{d5%_!fx|0F{9;;V-`7RA$3zuGB!xADvw7(WC#R7hanYc}sShkjq0mcg?9$d#**Kqe4YqFz%S+hhEcAKjk* S3?$L3L|_GQ&HN8DX3%>oSH7J9 diff --git a/mods/gun-mod/actors/arm_geo.bin b/mods/gun-mod/actors/arm_geo.bin deleted file mode 100644 index 9d767e0a54ca01e4580258ce650d4df6c0d94ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7946 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 B;Clc7 diff --git a/mods/gun-mod/actors/arrow_geo.bin b/mods/gun-mod/actors/arrow_geo.bin deleted file mode 100644 index e4e5613389105a7f723afd69c08147f4d6eb1aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmV+^0oMLRSx!$=LP<`m0ssI20001Z+GF9*O)QB|EGo(`k1x;2EJ0BPg7{1f4A+6Y|3Kz_5T98QqOqhXGchkcCpA7dwKyX_C$TcMDBdu>tfV5| zfElRl#(yiYnIHat0CF4uYcN3h%n&{U6aeM_gZM0XjRlHAjAb)mU<~jJ2_ozWkl`#$ z3{bB@+|D8f@_12dS!xlA|Cv$!f0Ka)Nslxht03wa?tz?y9;ggRa)dpHtQvO;|+RR{sOV1T2DogJ?!MhDXR& vv2sGJN>9z_1ai4Swga(9BSa0z!T5p*q(+nxqK-I6gDnMOpe6-#9TSq+@HL$W$u4^} zDBJYWZYk3aGBouQTk^xXVJ;l6U$EX>DMM;0qrk0Y=J5$^pozvhltQBPj@iT7GSvjg z=YtV#i#Xi-&w957KW}>YZN0WzIQN=(I0oN-5U+5T#Y*RDV`Jb-Uc?=oB#(sivy+mA z_!}>>>~eg{L{u8F=O_Fjn&KaCuGWlbIf58+`j-8+-+0%KnmQWF_YjIgidbh(gX?4nbMzBOFz=>RflS60eWV@C42W<`! zw&sJx#5cC~6yB|p%9dlkDYx#ctIhiZ{T@1NA0%fq0?&`^tTB(zj*GTiPJ}*4En^(| zcuO?;g_@jvH*3fCj%vs5J;C`lu4XaKteAjG`eohm+H<3V1XAg?cDJoMxx-|Y4AKQpSlw~F)dZI-}OH>SYT z-H}+afsCAh?_bxd`-Prkv|*nOR!g2fR-Zfj)a1Q=uvtHIKeYVK_i=~%DX-g9a;L71 zI3+wsXeD6s_wH$4gIKPzp>4wC?c6 ztHB(Kd8x6OU{(Ta?o8Wc@wL)|;%A$bimo+nC*v1 z(l28;@(rKP@UxBf^)62+z)le2Gk!Rf13DC*?LqAKG7Kc+@30?$%&{P%hfW<#mCb*BCIKj_c2 z1dMFAVsoI9hoAII9Evl!nH5�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 diff --git a/mods/gun-mod/actors/pistol_geo.bin b/mods/gun-mod/actors/pistol_geo.bin deleted file mode 100644 index 9d6251d5a44664c60b20824286ea3404a2b69951..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4020 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 a^$CViS|0iMVkoDdb}%L2RrkNA6(>kk!4$m! diff --git a/mods/gun-mod/actors/shotgun_geo.bin b/mods/gun-mod/actors/shotgun_geo.bin deleted file mode 100644 index f31d099820a7ca17ce1c01a035e2797e86d618d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10287 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 Bn~VSe diff --git a/mods/gun-mod/actors/troll_explosion_geo.bin b/mods/gun-mod/actors/troll_explosion_geo.bin deleted file mode 100644 index 3f2152b8d4af005465b1e044e3a77ab48e98bb93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16168 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 GKf8eI-s 0 or (m.action & ACT_FLAG_INTANGIBLE) ~= 0 then - return false - else - packet_send(true, PACKET_ATTACK, { globalIndex = obj.globalPlayerIndex, weaponId = obj_get_weapon_id(bulletObj), yoshi = bulletObj.oAction == 2 }) - end - return true -end - ---- @param bulletObj Object -function hurt_star(_, bulletObj) - bullet_ricochet(bulletObj) - return false -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_sign(obj, bulletObj) - if obj.oGmHealth <= 0 or gWeaponTable[obj_get_weapon_id(bulletObj)].strong then - obj.oFaceAnglePitch = -0x4000 - obj.oInteractType = 0 - obj.hitboxRadius = 0 - obj.hitboxHeight = 0 - network_send_object(obj, false) - end - return true -end - ---- @param obj Object -function hurt_toad(obj) - obj_spawn_yellow_coins(obj, 1) - obj_mark_for_deletion(obj) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_exclamation_box(obj) - if obj.oAction < 4 then - obj.oAction = 4 - network_send_object(obj, true) - end - return true -end - ---- @param obj Object -function hurt_breakable_box(obj) - if obj.oGmHealth <= 0 then - obj.oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED - network_send_object(obj, false) - end - return true -end - ---- @param obj Object -function hurt_breakable_box_small(obj) - obj.oInteractStatus = ATTACK_KICK_OR_TRIP | INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | INT_STATUS_STOP_RIDING - network_send_object(obj, false) - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_bowling_ball(obj, bulletObj) - if obj.oGmHealth <= 0 or gWeaponTable[obj_get_weapon_id(bulletObj)].strong then - play_sound(SOUND_GENERAL_BREAK_BOX, obj.header.gfx.cameraToObject) - spawn_triangle_break_particles(30, 138, 3, 4) - obj_mark_for_deletion(obj) - end - return true -end - ---- @param obj Object -function hurt_water_bomb(obj) - play_sound(SOUND_OBJ_DIVING_IN_WATER, obj.header.gfx.cameraToObject) - set_camera_shake_from_point(SHAKE_POS_SMALL, obj.oPosX, obj.oPosY, obj.oPosZ) - obj.oAction = WATER_BOMB_ACT_EXPLODE - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_tree(obj, bulletObj) - for _ = 1, 10 do - spawn_non_sync_object( - id_bhvLeafParticleSpawner, - E_MODEL_NONE, - bulletObj.oPosX, bulletObj.oPosY, bulletObj.oPosZ, - nil - ) - end - play_sound(SOUND_ACTION_CLIMB_UP_TREE, obj.header.gfx.cameraToObject) - return false -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_chain_chomp(obj, bulletObj) - if gWeaponTable[obj_get_weapon_id(bulletObj)].strong then - for _ = 1, 5 do - spawn_non_sync_object( - id_bhvExplosion, - E_MODEL_EXPLOSION, - obj.oPosX + math.random(-200, 200), obj.oPosY + 90 + math.random(-200, 200), obj.oPosZ + math.random(-200, 200), - nil - ) - end - obj_mark_for_deletion(obj) - else - obj.oForwardVel = obj.oForwardVel - 5 - obj.oVelY = -20 - obj.oGravity = -4 - end - network_send_object(obj, false) - play_sound(SOUND_GENERAL_CHAIN_CHOMP1, obj.header.gfx.cameraToObject) - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_goomba(obj, bulletObj) - if gWeaponTable[obj_get_weapon_id(bulletObj)].strong then - obj.oInteractStatus = ATTACK_GROUND_POUND_OR_TWIRL | INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED - else - obj.oInteractStatus = ATTACK_KICK_OR_TRIP | INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED - end - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_bobomb(obj) - if obj.oAction ~= BOBOMB_ACT_EXPLODE then - obj.oAction = BOBOMB_ACT_LAUNCHED - end - network_send_object(obj, false) - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_amp(obj, bulletObj) - if gWeaponTable[obj_get_weapon_id(bulletObj)].strong then - play_sound(SOUND_GENERAL_BREAK_BOX, obj.header.gfx.cameraToObject) - spawn_triangle_break_particles(30, 138, 3, 4) - obj_mark_for_deletion(obj) - network_send_object(obj, false) - return true - else - bullet_ricochet(bulletObj) - play_sound(SOUND_ACTION_METAL_BONK, obj.header.gfx.cameraToObject) - end - return false -end - ---- @param obj Object -function hurt_koopa(obj) - if obj.oKoopaMovementType == KOOPA_BP_UNSHELLED or obj.oKoopaMovementType == KOOPA_BP_NORMAL then - obj.oInteractStatus = ATTACK_KICK_OR_TRIP + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED) - network_send_object(obj, false) - end - return true -end - ---- @param obj Object -function hurt_snufit(obj) - obj.oInteractStatus = ATTACK_PUNCH + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_chuckya(obj) - obj_spawn_loot_yellow_coins(obj, 5, 20) - play_sound(SOUND_OBJ_CHUCKYA_DEATH, obj.header.gfx.cameraToObject) - obj_mark_for_deletion(obj) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_piranha_plant(obj) - obj.oAction = PIRANHA_PLANT_ACT_ATTACKED - stop_secondary_music(50) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_spindrift(obj) - obj.oInteractStatus = ATTACK_PUNCH + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | INT_ATTACK_NOT_FROM_BELOW) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_mr_blizzard(obj) - play_sound(SOUND_OBJ_SNOWMAN_EXPLODE, obj.header.gfx.cameraToObject) - obj_mark_for_deletion(obj) - obj_spawn_loot_yellow_coins(obj, obj.oNumLootCoins, 20) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_scuttlebug(obj) - play_sound(SOUND_OBJ_DYING_ENEMY1, obj.header.gfx.cameraToObject) - obj_spawn_loot_yellow_coins(obj, obj.oNumLootCoins, 20) - obj_mark_for_deletion(obj) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_pokey(obj) - obj.oInteractStatus = ATTACK_PUNCH + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED) - return true -end - ---- @param obj Object -function hurt_mr_i(obj) - obj.oAction = 3 - network_send_object(obj, false) - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_bully(obj, bulletObj) - obj.oAction = BULLY_ACT_KNOCKBACK - obj.oMoveAngleYaw = gMarioStates[network_local_index_from_global(obj_get_weapon_owner(bulletObj))].faceAngle.y - obj.oVelY = 30 - obj.oForwardVel = if_then_else(gWeaponTable[obj_get_weapon_id(bulletObj)].strong, 30, 10) - obj.oInteractStatus = ATTACK_PUNCH + (INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | INT_ATTACK_NOT_FROM_BELOW) - network_send_object(obj, false) - return true -end - ---- @param obj Object -function hurt_moneybag(obj) - obj.oInteractStatus = INT_STATUS_INTERACTED | INT_STATUS_WAS_ATTACKED | INT_ATTACK_NOT_FROM_BELOW - network_send_object(obj, false) - return true -end - ---- @param obj Object ---- @param bulletObj Object -function hurt_king_bobomb(obj, bulletObj) - if (obj.oGmHealth <= 0 or gWeaponTable[obj_get_weapon_id(bulletObj)].strong) and obj.oHealth > 0 then - obj.oGmHealth = HEALTH_KING_BOBOMB - obj.oMoveFlags = obj.oMoveFlags | OBJ_MOVE_LANDED - obj.oAction = 4 - network_send_object(obj, true) - end - return true -end - ---- @param obj Object -function hurt_bowser(obj) - if obj.oGmHealth <= 0 and obj.oHealth > 0 then - obj.oGmHealth = HEALTH_BOWSER - obj.oHealth = obj.oHealth - 1 - if obj.oHealth <= 0 then - obj.oAction = 4 - else - obj.oAction = 12 - end - network_send_object(obj, true) - end - return true -end - - ---- @param bulletObj Object -function hurt_yoshi(_, bulletObj) - bullet_ricochet(bulletObj) - bulletObj.oAction = 2 - - djui_chat_message_create("\\#a0ffa0\\Yoshi\\#dcdcdc\\: no lol") - play_sound(SOUND_MENU_MESSAGE_APPEAR, gGlobalSoundSource) - return false -end - - -------------- --- objects -- -------------- - ---- @param o Object -local function bhv_debug_indicator_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - obj_set_billboard(o) - cur_obj_scale(0.5) -end - -local function bhv_debug_indicator_loop(o) - if o.oTimer > 90 then obj_mark_for_deletion(o) end -end - -id_bhvDebugIndicator = hook_behavior(nil, OBJ_LIST_UNIMPORTANT, true, bhv_debug_indicator_init, bhv_debug_indicator_loop) - - ---- @param o Object -local function bhv_bullet_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - o.oGraphYOffset = if_then_else(obj_has_model_extended(o, E_MODEL_YELLOW_COIN) ~= 0, -5, 0) - o.hitboxRadius = 20 - o.hitboxHeight = 20 - o.hitboxDownOffset = 10 - o.oWallHitboxRadius = 30 - o.oIntangibleTimer = 0 - - vec3f_set(o.header.gfx.pos, o.oPosX, o.oPosY, o.oPosZ) - obj_set_billboard(o) - cur_obj_scale(gWeaponTable[obj_get_weapon_id(o)].bulletScale) - cur_obj_hide() - network_init_object(o, true, {}) -end - ---- @param o Object -local function bhv_bullet_loop(o) - if o.oTimer > 150 then - obj_mark_for_deletion(o) - return - end - - if o.oTimer == 1 then cur_obj_unhide() end - - local prevPos = { x = o.oPosX, y = o.oPosY, z = o.oPosZ } - if o.oVelY == 0 then - cur_obj_move_xz_using_fvel_and_yaw() - else - cur_obj_move_using_vel() - end - cur_obj_update_floor_and_resolve_wall_collisions(0) - - local marioObj = gMarioStates[network_local_index_from_global(obj_get_weapon_owner(o))].marioObj - local shootableHitboxes = gShootableHitboxes -- localizing saves microseconds - -- loop through every shootable behavior - for behavior, hurt in pairs(shootableHitboxes) do - -- get the nearest object with the current shootable behavior - local target = obj_get_nearest_object_with_behavior_id(o, behavior) - if target ~= nil then - -- check if the bullet (o) intersects with the target object (target) - local shot = obj_check_hitbox_overlap(target, o) - -- if not, begin using the substep system to see if hitboxes overlap then - local weapon = gWeaponTable[obj_get_weapon_id(o)] - if not shot then - local bulletSteps = weapon.bulletSteps - for i = 0, bulletSteps do - local step = i / bulletSteps - -- go from the previous position of the bullet to the current one over bullet steps - local x = lerp(prevPos.x, o.oPosX, step) - local y = lerp(prevPos.y, o.oPosY, step) - local z = lerp(prevPos.z, o.oPosZ, step) - -- spawn_non_sync_object(id_bhvDebugIndicator, E_MODEL_RED_COIN_NO_SHADOW, x, y, z, nil) - -- check if the bullet (o) now intersects with target object (target) - shot = obj_check_hitbox_overlap_xyz(target, o, x, y, z) - -- hit target and break out of loop if so, otherwise continue - if shot and (marioObj._pointer ~= target._pointer or o.oAction > 0) then - target.oGmHealth = target.oGmHealth - weapon.damage - if hurt ~= nil and hurt(target, o) then - bullet_hit(o) - return - end - break - end - end - elseif marioObj._pointer ~= target._pointer or o.oAction > 0 then - target.oGmHealth = target.oGmHealth - weapon.damage - if hurt ~= nil and hurt(target, o) then - bullet_hit(o) - return - end - break - end - end - end - - -- spawn_non_sync_object(id_bhvDebugIndicator, E_MODEL_YELLOW_COIN_NO_SHADOW, prevPos.x, prevPos.y, prevPos.z, nil) - -- spawn_non_sync_object(id_bhvDebugIndicator, E_MODEL_YELLOW_COIN_NO_SHADOW, o.oPosX, o.oPosY, o.oPosZ, nil) - - local raycast = collision_find_surface_on_ray(prevPos.x, prevPos.y, prevPos.z, o.oPosX - prevPos.x, o.oPosY - prevPos.y, o.oPosZ - prevPos.z) - if raycast.surface ~= nil or (o.oMoveFlags & OBJ_MOVE_HIT_WALL) ~= 0 then - vec3f_to_object_pos(o, raycast.hitPos) - bullet_hit(o) - end -end - -id_bhvBullet = hook_behavior(nil, OBJ_LIST_UNIMPORTANT, true, bhv_bullet_init, bhv_bullet_loop, "bhvGmBullet") - - ---- @param o Object -local function bhv_bullet_hole_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE -end - ---- @param o Object -local function bhv_bullet_hole_loop(o) - cur_obj_align_gfx_with_floor() - if o.oTimer == 450 then obj_mark_for_deletion(o) end -end - -id_bhvBulletHole = hook_behavior(nil, OBJ_LIST_UNIMPORTANT, true, bhv_bullet_hole_init, bhv_bullet_hole_loop, "bhvGmBulletHole") - - -function spawn_bullets_player(x, y, z, count) - local weapon = cur_weapon() - if weapon == nil then return end - --- @type MarioState - local m = gMarioStates[0] - - for _ = 1, count do - local spread = math.random() * weapon.spread - spawn_sync_object( - id_bhvBullet, - weapon.bulletModel, - x + spread, y + spread, z + spread, - --- @param o Object - function(o) - obj_set_weapon_params(o, gNetworkPlayers[0].globalIndex, weapon.id, 0, 0) - local enabled = get_first_person_enabled() - o.oFaceAngleYaw = if_then_else(enabled, m.area.camera.yaw + 0x8000, m.faceAngle.y) - o.oForwardVel = weapon.bulletSpeed - - if enabled or (m.input & INPUT_FIRST_PERSON) ~= 0 then - -- thanks Peachy - local dx = m.area.camera.focus.x - m.area.camera.pos.x - local dy = m.area.camera.focus.y - m.area.camera.pos.y - local dz = m.area.camera.focus.z - m.area.camera.pos.z - local dv = math.sqrt(dx * dx + dy * dy + dz * dz) - o.oVelX = weapon.bulletSpeed * (dx / dv) - o.oVelY = weapon.bulletSpeed * (dy / dv) - o.oVelZ = weapon.bulletSpeed * (dz / dv) - end - end - ) - end -end \ No newline at end of file diff --git a/mods/gun-mod/b-gun.lua b/mods/gun-mod/b-gun.lua deleted file mode 100644 index bae90a96..00000000 --- a/mods/gun-mod/b-gun.lua +++ /dev/null @@ -1,89 +0,0 @@ -if SM64COOPDX_VERSION == nil then return end - ---- @param weapon Weapon ---- @return nil -function common_shoot(weapon) - --- @type MarioState - local m = gMarioStates[0] - - if not weapon.reqCheck(m) then return end - - if weapon.ammo <= 0 and weapon.maxAmmo > 0 then - audio_sample_play(SOUND_CUSTOM_DRY, gMarioStates[0].pos, 1) - return - end - - local enabled = get_first_person_enabled() - local x = if_then_else(enabled, gLakituState.pos.x, m.pos.x) - local y = if_then_else(enabled, gLakituState.pos.y, m.pos.y + FIRST_PERSON_MARIO_HEAD_POS_SHORT) - local z = if_then_else(enabled, gLakituState.pos.z, m.pos.z) - - spawn_bullets_player(x, y, z, weapon.bulletCount) - if #weapon.primarySounds > 0 then - sync_audio_sample_play(weapon.primarySounds[math.random(#weapon.primarySounds)], gMarioStates[0].pos, 1) - end - - if weapon.maxAmmo > 0 then - weapon.ammo = weapon.ammo - 1 - if weapon.ammo == 0 then common_reload(weapon) end - end - - useDualWieldWeapon = not useDualWieldWeapon -end - ---- @param weapon Weapon ---- @return nil -function common_reload(weapon) - --- @type MarioState - local m = gMarioStates[0] - if weapon.reloadTimer > 0 or not weapon.reqCheck(m) then return end - - local weapon2 = if_then_else(useDualWieldWeapon, cur_weapon(), cur_dual_wield_weapon()) - if weapon.ammo >= weapon.maxAmmo then - weapon.cooldownTimer = 0 - if weapon2 ~= nil then - if weapon2.ammo >= weapon2.maxAmmo then - weapon2.cooldownTimer = 0 - else - if #weapon.secondarySounds > 0 then - sync_audio_sample_play(weapon.secondarySounds[math.random(#weapon.secondarySounds)], m.pos, 1) - end - weapon2.ammo = 0 - weapon2.reloadTimer = weapon2.reloadTime - end - end - return - end - - if weapon2 ~= nil then - if weapon2.ammo >= weapon2.maxAmmo then - weapon2.cooldownTimer = 0 - else - if #weapon.secondarySounds > 0 then - sync_audio_sample_play(weapon.secondarySounds[math.random(#weapon.secondarySounds)], m.pos, 1) - end - weapon2.ammo = 0 - weapon2.reloadTimer = weapon2.reloadTime - end - end - - if #weapon.secondarySounds > 0 then - sync_audio_sample_play(weapon.secondarySounds[math.random(#weapon.secondarySounds)], m.pos, 1) - end - weapon.ammo = 0 - weapon.reloadTimer = weapon.reloadTime -end - ---- @param m MarioState -function check_common_gun_requirements(m) - return m.health > 0xFF and - m.action ~= ACT_STAR_DANCE_EXIT and - m.action ~= ACT_STAR_DANCE_NO_EXIT and - m.action ~= ACT_STAR_DANCE_WATER and - m.action ~= ACT_LEDGE_GRAB and - m.action ~= ACT_LEDGE_CLIMB_FAST and - m.action ~= ACT_LEDGE_CLIMB_SLOW_1 and - m.action ~= ACT_LEDGE_CLIMB_SLOW_2 and - (m.action & ACT_GROUP_MASK) ~= ACT_GROUP_SUBMERGED and - m.action ~= ACT_DISAPPEARED -end \ No newline at end of file diff --git a/mods/gun-mod/c-dialog-arrow.lua b/mods/gun-mod/c-dialog-arrow.lua deleted file mode 100644 index a432d225..00000000 --- a/mods/gun-mod/c-dialog-arrow.lua +++ /dev/null @@ -1,42 +0,0 @@ -local seen = false - ---- @param o Object -local function bhv_dialog_arrow_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - - o.parentObj = obj_get_nearest_object_with_behavior_id(o, id_bhvMessagePanel) - if o.parentObj == nil then - obj_mark_for_deletion(o) - return - end - - o.oDrawingDistance = o.parentObj.oDrawingDistance - o.oPosX = o.parentObj.oPosX - o.oPosY = o.parentObj.oPosY + 150 - o.oPosZ = o.parentObj.oPosZ -end - ---- @param o Object -local function bhv_dialog_arrow_loop(o) - o.oGraphYOffset = math.sin(o.oTimer * 0.1) * 20 - - if gMarioStates[0].interactObj == o.parentObj then - seen = true - obj_mark_for_deletion(o) - elseif o.parentObj.oInteractType == 0 then - obj_mark_for_deletion(o) - end -end - -local id_bhvDialogArrow = hook_behavior(nil, OBJ_LIST_UNIMPORTANT, true, bhv_dialog_arrow_init, bhv_dialog_arrow_loop) - -function spawn_dialog_arrow() - if gNetworkPlayers[0].currLevelNum ~= LEVEL_CASTLE_GROUNDS or not level_is_vanilla_level(LEVEL_CASTLE_GROUNDS) or seen then return end - - spawn_non_sync_object( - id_bhvDialogArrow, - E_MODEL_ARROW, - -1567, 386, 3492, - nil - ) -end \ No newline at end of file diff --git a/mods/gun-mod/c-viewmodel-animations.lua b/mods/gun-mod/c-viewmodel-animations.lua deleted file mode 100644 index 7a6b1240..00000000 --- a/mods/gun-mod/c-viewmodel-animations.lua +++ /dev/null @@ -1,96 +0,0 @@ -smlua_anim_util_register_animation("arm_idle", - 0, - 189, - 0, - 0, - 60, - { - 0x0000, 0xFFDD, 0x0000, 0x0000, 0x0000, 0xDFFF, 0xE000, 0xE002, 0xE006, - 0xE00B, 0xE011, 0xE019, 0xE021, 0xE02A, 0xE034, 0xE03F, 0xE04A, 0xE056, - 0xE061, 0xE06E, 0xE07A, 0xE086, 0xE092, 0xE09E, 0xE0AA, 0xE0B5, 0xE0C0, - 0xE0CA, 0xE0D3, 0xE0DB, 0xE0E2, 0xE0E9, 0xE0EE, 0xE0F1, 0xE0F4, 0xE0F5, - 0xE0F4, 0xE0F1, 0xE0EE, 0xE0E9, 0xE0E2, 0xE0DB, 0xE0D3, 0xE0CA, 0xE0C0, - 0xE0B5, 0xE0AA, 0xE09E, 0xE092, 0xE086, 0xE07A, 0xE06E, 0xE061, 0xE056, - 0xE04A, 0xE03F, 0xE034, 0xE02A, 0xE021, 0xE019, 0xE011, 0xE00B, 0xE006, - 0xE002, 0xE000, 0xDFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0x0000, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0x0000, 0xFFFF, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, - 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, - 0x0000, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0xFFFF, 0x0000, - 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0x2000, - }, - { - 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, - 0x0004, 0x003D, 0x0005, 0x003D, 0x0042, 0x003D, 0x007F, 0x0001, 0x00BC, - } -) - -smlua_anim_util_register_animation("arm_reload_start", - 1, - 189, - 0, - 0, - 15, - { - 0x0000, 0xFFE7, 0x0000, 0x0000, 0x0000, 0xDFFF, 0xE178, 0xE4FF, 0xE938, - 0xECBF, 0xEE38, 0xECF3, 0xE973, 0xE428, 0xDD93, 0xD64E, 0xCF09, 0xC874, - 0xC32A, 0xBFA9, 0xBE64, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, - 0x0000, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0xFFFF, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, - 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, 0x0000, 0x2000, 0x2000, - 0x2000, 0x2000, 0x2000, 0x2000, 0x1F2B, 0x1CE6, 0x1984, 0x155F, 0x10D5, - 0x0C4C, 0x0826, 0x04C5, 0x027F, 0x01AA, - }, - { - 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, - 0x0004, 0x0010, 0x0005, 0x000F, 0x0015, 0x0010, 0x0024, 0x0010, 0x0034, - } -) - -smlua_anim_util_register_animation("arm_reload_end", - 1, - 189, - 0, - 0, - 15, - { - 0x0000, 0xFFDD, 0x0000, 0x0000, 0x0000, 0xBE64, 0xBECF, 0xBFFC, 0xC1D1, - 0xC432, 0xC704, 0xCA28, 0xCD7E, 0xD0E5, 0xD43C, 0xD760, 0xDA31, 0xDC92, - 0xDE67, 0xDF94, 0xDFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0x0000, 0xFFFF, - 0x0000, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, 0xFFFF, 0xFFFF, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xFFFF, 0x0000, 0xFFFF, - 0xFFFF, 0xFFFF, 0x0000, 0xFD70, 0xFDDE, 0xFF13, 0x00F6, 0x0368, 0x064E, - 0x0989, 0x0CF8, 0x1079, 0x13E8, 0x1723, 0x1A09, 0x1C7B, 0x1E5D, 0x1F92, - 0x2000, - }, - { - 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, - 0x0004, 0x0010, 0x0005, 0x000C, 0x0015, 0x000F, 0x0021, 0x0010, 0x0030, - } -) - -smlua_anim_util_register_animation("arm_shoot", - 1, - 189, - 0, - 0, - 8, - { - 0x0000, 0xFFDD, 0x0000, 0x0000, 0x0000, 0xDFFF, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0xFFFF, 0x0000, 0x0000, 0x0000, 0xFFFF, 0xFFFF, 0xFFFF, - 0x0000, 0xFFFF, 0x0000, 0x2000, 0x21AA, 0x2555, 0x2901, 0x2AAB, 0x2901, - 0x2555, 0x21AA, 0x2000, - }, - { - 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0002, 0x0001, 0x0003, 0x0001, - 0x0004, 0x0001, 0x0005, 0x0007, 0x0006, 0x0008, 0x000D, 0x0009, 0x0015, - } -) \ No newline at end of file diff --git a/mods/gun-mod/c-viewmodel.lua b/mods/gun-mod/c-viewmodel.lua deleted file mode 100644 index 3bd74f6e..00000000 --- a/mods/gun-mod/c-viewmodel.lua +++ /dev/null @@ -1,135 +0,0 @@ -if SM64COOPDX_VERSION == nil then return end - -local CAP_FLICKER_FRAMES = 0x4444449249255555 -- this is beyond my comprehension - -gFirstPersonViewmodels = { - armObjs = { nil, nil }, - gunObjs = { nil, nil } -} - ---- @param o Object -local function bhv_viewmodel_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - o.oGraphYOffset = 0 -end - ---- @param o Object -local function bhv_viewmodel_loop(o) - if not gGlobalSyncTable.gunModEnabled or not get_first_person_enabled() then - obj_mark_for_deletion(o) - return - end - - local dualWield = obj_get_weapon_dual_wield(o) ~= 0 - --- @type Weapon - local weapon = if_then_else(dualWield, cur_dual_wield_weapon(), cur_weapon()) - - if not weapon.reqCheck(gMarioStates[0]) then - cur_obj_hide() - else - cur_obj_unhide() - end - - local horizontalOffset = 30 - if cur_dual_wield_weapon() ~= nil then - horizontalOffset = if_then_else(obj_get_weapon_dual_wield(o) ~= 0, -50, 50) - end - - -- math to calculate staying in the same screen position no matter what - o.oPosX = gLakituState.pos.x - 35 * coss(gFirstPersonCamera.pitch) * sins(gFirstPersonCamera.yaw) - o.oPosY = gLakituState.pos.y - 35 * sins(gFirstPersonCamera.pitch) - o.oPosZ = gLakituState.pos.z - 35 * coss(gFirstPersonCamera.pitch) * coss(gFirstPersonCamera.yaw) - - -- math to offset it to the left or right - o.oPosX = o.oPosX + sins(gFirstPersonCamera.yaw + 0x4000) * horizontalOffset - o.oPosZ = o.oPosZ + coss(gFirstPersonCamera.yaw + 0x4000) * horizontalOffset - - o.oFaceAnglePitch = 0 - o.oFaceAngleYaw = gFirstPersonCamera.yaw + 0x4000 - o.oFaceAngleRoll = -gFirstPersonCamera.pitch - - if weapon ~= nil then - if weapon.deployTimer > 0 then - obj_set_animation(o, "arm_reload_end") - -- freeze animation if the time hasn't come to show the arm rising up - if o.header.gfx.animInfo.animFrame > 0 and weapon.deployTimer - o.header.gfx.animInfo.curAnim.loopEnd > 0 then - o.header.gfx.animInfo.animFrame = 0 - end - else - local half = math.floor(weapon.reloadTime * 0.5) - if weapon.reloadTimer <= 0 then - if weapon.cooldownTimer > 0 then - obj_set_animation(o, "arm_shoot") - else - obj_set_animation(o, "arm_idle") - -- *try* keep both arms in sync - if dualWield then - o.header.gfx.animInfo.animFrame = gFirstPersonViewmodels.armObjs[1].header.gfx.animInfo.animFrame - end - end - elseif weapon.reloadTimer < half then - obj_set_animation(o, "arm_reload_end") - else - obj_set_animation(o, "arm_reload_start") - end - end - end - - - o.globalPlayerIndex = gNetworkPlayers[0].globalIndex - - --- @type MarioState - local m = gMarioStates[0] - if m.capTimer < 64 and ((1 << m.capTimer) & CAP_FLICKER_FRAMES) ~= 0 then - o.oAnimState = 0 - else - local vanishCap = if_then_else((gMarioStates[0].flags & MARIO_VANISH_CAP) ~= 0, 2, 0) - local metalCap = if_then_else((gMarioStates[0].flags & MARIO_METAL_CAP) ~= 0, 1, 0) - o.oAnimState = metalCap + vanishCap - end -end - -id_bhvViewmodel = hook_behavior(nil, OBJ_LIST_GENACTOR, true, bhv_viewmodel_init, bhv_viewmodel_loop, "bhvGmViewmodel") - - ---- @param weapon Weapon -local function spawn_viewmodel(weapon, dualWield) - local index = if_then_else(dualWield, 1, 2) - dualWield = if_then_else(dualWield, 1, 0) - - gFirstPersonViewmodels.armObjs[index] = spawn_non_sync_object( - id_bhvViewmodel, - weapon.armModel, - 0, -10000, 0, - --- @param o Object - function(o) - obj_set_weapon_params(o, 0, 0, dualWield, 0) - end - ) - - gFirstPersonViewmodels.gunObjs[index] = spawn_non_sync_object( - id_bhvViewmodel, - weapon.model, - 0, -10000, 0, - --- @param o Object - function(o) - obj_set_weapon_params(o, 0, 0, dualWield, 0) - end - ) -end - -function spawn_viewmodels() - local weapon1 = cur_weapon() - local weapon2 = cur_dual_wield_weapon() - if weapon1 == nil then return end - - spawn_viewmodel(weapon1, false) - if weapon2 ~= nil then spawn_viewmodel(weapon2, true) end -end - -function delete_viewmodels() - gFirstPersonViewmodels.armObjs[1] = obj_mark_for_deletion(gFirstPersonViewmodels.armObjs[1]) - gFirstPersonViewmodels.armObjs[2] = obj_mark_for_deletion(gFirstPersonViewmodels.armObjs[2]) - gFirstPersonViewmodels.gunObjs[1] = obj_mark_for_deletion(gFirstPersonViewmodels.gunObjs[1]) - gFirstPersonViewmodels.gunObjs[2] = obj_mark_for_deletion(gFirstPersonViewmodels.gunObjs[2]) -end \ No newline at end of file diff --git a/mods/gun-mod/c-weapon.lua b/mods/gun-mod/c-weapon.lua deleted file mode 100644 index 7a29319f..00000000 --- a/mods/gun-mod/c-weapon.lua +++ /dev/null @@ -1,593 +0,0 @@ -if SM64COOPDX_VERSION == nil then return end - ---------------------------------------- --- API and other important functions -- ---------------------------------------- - ---- @class Weapon ---- @field public id integer ---- @field public name string ---- @field public dualWield boolean ---- @field public model ModelExtendedId ---- @field public armModel ModelExtendedId ---- @field public bulletModel ModelExtendedId ---- @field public primarySounds integer[] ---- @field public secondarySounds integer[] ---- @field public strong boolean ---- @field public rapidFire boolean ---- @field public spread number ---- @field public damage number ---- @field public bulletCount integer ---- @field public bulletScale number ---- @field public bulletSpeed number ---- @field public bulletSteps integer ---- @field public maxAmmo integer ---- @field public ammo integer ---- @field public deployTime integer ---- @field public cooldownTime integer ---- @field public reloadTime integer ---- @field public deployTimer integer ---- @field public cooldownTimer integer ---- @field public reloadTimer integer ---- @field public primaryFireFunc fun(weapon:Weapon) ---- @field public secondaryFireFunc fun(weapon:Weapon) ---- @field public reqCheck fun(m:MarioState) - ---- @class WeaponId - ---- @type Weapon[] -gWeaponTable = {} ---- @type Weapon[] -gInventory = {} -for i = 1, MAX_INVENTORY_SLOTS do gInventory[i] = nil end -inventorySlot = 1 -useDualWieldWeapon = false - -local weaponObtained = false -local weaponId = -1 - -local sMutableWeaponFields = { - ["ammo"] = true, - ["deployTimer"] = true, - ["cooldownTimer"] = true, - ["reloadTimer"] = true -} - -local sReadonlyMetatable = { - __index = function(table, key) - return rawget(table, key) - end, - - __newindex = function() - error("attempt to update a read-only table", 2) - end -} - -local sWeaponMetatable = { - __index = function(table, key) - return rawget(table, key) - end, - - __newindex = function(table, key, value) - if sMutableWeaponFields[key] then - rawset(table, key, value) - else - error("attempt to update an immutable weapon field", 2) - end - end -} - ---- @param name string ---- @param dualWield boolean ---- @param model ModelExtendedId ---- @param armModel ModelExtendedId ---- @param bulletModel ModelExtendedId ---- @param primarySounds integer[] ---- @param secondarySounds integer[] ---- @param strong boolean ---- @param rapidFire boolean ---- @param spread number ---- @param damage number ---- @param bulletCount integer ---- @param bulletScale number ---- @param bulletSpeed number ---- @param bulletSteps integer ---- @param maxAmmo integer ---- @param deployTime integer ---- @param cooldownTime integer ---- @param reloadTime integer ---- @param primaryFireFunc fun(weapon:Weapon) ---- @param secondaryFireFunc fun(weapon:Weapon) ---- @param reqCheck function ---- @return integer ---- Registers a weapon metatable into existence -function weapon_register(name, dualWield, model, armModel, bulletModel, primarySounds, secondarySounds, strong, rapidFire, spread, damage, bulletCount, bulletScale, bulletSpeed, bulletSteps, maxAmmo, deployTime, cooldownTime, reloadTime, primaryFireFunc, secondaryFireFunc, reqCheck) - weaponId = weaponId + 1 - gWeaponTable[weaponId] = { - id = weaponId, - name = name, - dualWield = dualWield, - model = model, - armModel = armModel, - bulletModel = bulletModel, - primarySounds = primarySounds, - secondarySounds = secondarySounds, - strong = strong, - rapidFire = rapidFire, - spread = spread, - damage = damage, - bulletCount = bulletCount, - bulletScale = bulletScale, - bulletSpeed = bulletSpeed, - bulletSteps = bulletSteps, - maxAmmo = maxAmmo, - ammo = maxAmmo, - deployTime = deployTime, - cooldownTime = cooldownTime, - reloadTime = reloadTime, - deployTimer = deployTime, - cooldownTimer = 0, - reloadTimer = 0, - primaryFireFunc = primaryFireFunc, - secondaryFireFunc = secondaryFireFunc, - reqCheck = reqCheck - } - setmetatable(gWeaponTable[weaponId], sReadonlyMetatable) - return weaponId -end - ---- @param id integer ---- @return nil ---- Unregisters a weapon from existence by ID -function weapon_unregister(id) - if type(id) ~= "number" then return end - gWeaponTable[id] = nil -end - ---- @return nil ---- Unregisters all weapons from existence -function weapon_unregister_all() - gWeaponTable = {} -end - ---- @return string ---- Properly formatted weapon list string for commands -function get_weapon_list_string() - local string = "[" - for id, weapon in pairs(gWeaponTable) do - string = string .. weapon.name:lower() - if id < weaponId then - string = string .. "|" - end - end - string = string .. "]" - return string -end - ---- @param obj Object ---- @param owner integer ---- @param id integer ---- @param dualWield integer ---- @param extra integer ---- @return nil ---- Returns a 4 byte behavior parameter integer for weapon objects. -function obj_set_weapon_params(obj, owner, id, dualWield, extra) - if obj == nil then return end - if type(owner) ~= "number" or type(id) ~= "number" or type(dualWield) ~= "number" or type(extra) ~= "number" then return end - obj.oBehParams = owner | (id << 8) | (dualWield << 16) | (extra << 24) - obj.oBehParams2ndByte = id -end - ---- @param obj Object ---- @return integer ---- Returns the owner parameter (first parameter) of a weapon object. -function obj_get_weapon_owner(obj) - if obj == nil then return 0 end - return obj.oBehParams & 0xFF -end - ---- @param obj Object ---- @return integer ---- Returns the id parameter (second parameter) of a weapon object. -function obj_get_weapon_id(obj) - if obj == nil then return 0 end - return obj.oBehParams2ndByte -end - ---- @param obj Object ---- @return integer ---- Returns the dual wield parameter (third parameter) of a weapon object. -function obj_get_weapon_dual_wield(obj) - if obj == nil then return 0 end - return (obj.oBehParams >> 16) & 0xFF -end - ---- @param obj Object ---- @return integer ---- Returns the extra parameter (fourth parameter) of a weapon object. -function obj_get_weapon_extra(obj) - if obj == nil then return 0 end - return (obj.oBehParams >> 24) & 0xFF -end - ---- @return Weapon|nil ---- Returns the table of the current weapon -function cur_weapon() - return gInventory[inventorySlot] -end - ---- @return Weapon|nil ---- Returns the table of the current dual wielding weapon -function cur_dual_wield_weapon() - local weapon = cur_weapon() - if weapon == nil or not weapon.dualWield then return nil end - - local weaponBefore = gInventory[inventorySlot - 1] - if weaponBefore ~= nil and weaponBefore.dualWield and weaponBefore.id == weapon.id then return weaponBefore end - - local weaponAfter = gInventory[inventorySlot + 1] - if weaponAfter ~= nil and weaponAfter.dualWield and weaponAfter.id == weapon.id then return weaponAfter end - - return nil -end - ---- @return integer ---- Returns the current inventory slot -function get_inventory_slot() - return inventorySlot -end - ---- @param slot integer ---- @return nil ---- Sets the current inventory slot -function set_inventory_slot(slot) - if type(slot) ~= "number" then return end - - -- reset fields - gInventory[slot].deployTimer = gInventory[slot].deployTime - gInventory[slot].cooldownTimer = 0 - gInventory[slot].reloadTimer = if_then_else(gInventory[slot].ammo <= 0 and gInventory[slot].maxAmmo > 0, gInventory[slot].reloadTime, 0) - - inventorySlot = clamp(slot, 1, MAX_INVENTORY_SLOTS) - sync_current_weapons() - delete_held_weapon() - if get_first_person_enabled() then - delete_viewmodels() - spawn_viewmodels() - end -end - -local function table_clone(table) - local cloned = {} - for k, v in pairs(table) do - if type(v) == "table" then - cloned[k] = table_clone(v) - else - cloned[k] = v - end - end - return cloned -end - ---- @param weapon WeaponId -local function inventory_clone(weapon) - local table = table_clone(gWeaponTable[weapon]) - setmetatable(table, sWeaponMetatable) - return table -end - -local function get_inventory_slots_used() - local count = 0 - for i = 1, MAX_INVENTORY_SLOTS do - if gInventory[i] ~= nil then - count = count + 1 - end - end - return count -end - ---- @param weapon WeaponId ---- @return boolean ---- Picks up a weapon by ID -function pickup_weapon(weapon) - if type(weapon) ~= "number" then return false end - for i = 1, MAX_INVENTORY_SLOTS do - if gInventory[i] == weapon then - return false - elseif gInventory[i] == nil or get_inventory_slots_used() == MAX_INVENTORY_SLOTS then - if not weaponObtained then - play_sound(SOUND_MENU_STAR_SOUND, gMarioStates[0].marioObj.header.gfx.cameraToObject) - weaponObtained = true - else - play_sound(SOUND_MENU_CLICK_CHANGE_VIEW, gMarioStates[0].marioObj.header.gfx.cameraToObject) - end - - gInventory[i] = inventory_clone(weapon) - set_inventory_slot(i) - - return true - end - end - - return false -end - -function sync_current_weapons() - gPlayerSyncTable[0].curWeapon = nil - gPlayerSyncTable[0].curWeapon2 = nil - - local weapon = cur_weapon() - if weapon ~= nil then - gPlayerSyncTable[0].curWeapon = weapon.id - end - local weapon2 = cur_dual_wield_weapon() - if weapon2 ~= nil then - gPlayerSyncTable[0].curWeapon2 = weapon2.id - end -end - ---- @param weapon Weapon -function handle_reloading(weapon) - if weapon == nil then return end - - if weapon.reloadTimer > 0 then - weapon.reloadTimer = weapon.reloadTimer - 1 - if weapon.name == "Shotgun" then - weapon.ammo = math.floor(lerp(weapon.maxAmmo, 0, weapon.reloadTimer / weapon.reloadTime)) - end - if weapon.reloadTimer == 0 then - weapon.ammo = weapon.maxAmmo - end - end -end - -function weapon_update() - --- @type MarioState - local m = gMarioStates[0] - - -- update inventory slot - if (m.controller.buttonPressed & U_JPAD) ~= 0 then - inventorySlot = inventorySlot + 1 - if inventorySlot > MAX_INVENTORY_SLOTS then - inventorySlot = 1 - end - set_inventory_slot(inventorySlot) - elseif (m.controller.buttonPressed & D_JPAD) ~= 0 then - inventorySlot = inventorySlot - 1 - if inventorySlot < 1 then - inventorySlot = MAX_INVENTORY_SLOTS - end - set_inventory_slot(inventorySlot) - end - - local weapon1 = cur_weapon() - local weapon2 = cur_dual_wield_weapon() - --- @type Weapon - local weapon = if_then_else(weapon2 ~= nil and useDualWieldWeapon, weapon2, weapon1) - if weapon1 == nil then return end -- if the player isn't holding a weapon - - if weapon.deployTimer <= 0 and weapon.cooldownTimer <= 0 then - local buttonFlags = if_then_else(weapon.rapidFire, m.controller.buttonDown, m.controller.buttonPressed) - if (buttonFlags & Y_BUTTON) ~= 0 and weapon.primaryFireFunc ~= nil then - weapon.cooldownTimer = weapon.cooldownTime - weapon.primaryFireFunc(weapon) - elseif (buttonFlags & X_BUTTON) ~= 0 and weapon.secondaryFireFunc ~= nil then - weapon.cooldownTimer = weapon.cooldownTime - weapon.secondaryFireFunc(weapon) - end - end - - weapon1.deployTimer = handle_timer(weapon1.deployTimer) - weapon1.cooldownTimer = handle_timer(weapon1.cooldownTimer) - if weapon2 ~= nil then - weapon2.deployTimer = handle_timer(weapon2.deployTimer) - weapon2.cooldownTimer = handle_timer(weapon2.cooldownTimer) - end - handle_reloading(weapon1) - handle_reloading(weapon2) -end - -function delete_held_weapon() - local held = obj_get_first_with_behavior_id(id_bhvHeldWeapon) - while held ~= nil do - if obj_get_weapon_owner(held) == gNetworkPlayers[0].globalIndex then - obj_mark_for_deletion(held) - end - held = obj_get_next_with_same_behavior_id(held) - end -end - - -------------- --- objects -- -------------- - ---- @param o Object -local function bhv_held_weapon_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - o.oGraphYOffset = 10 - cur_obj_scale(0.6) - cur_obj_hide() -end - ---- @param o Object -local function bhv_held_weapon_loop(o) - local np = network_player_from_global_index(obj_get_weapon_owner(o)) - if np == nil or not gGlobalSyncTable.gunModEnabled then - obj_mark_for_deletion(o) - return - end - local m = gMarioStates[np.localIndex] - local dualWield = obj_get_weapon_dual_wield(o) - --- @type Weapon|nil - local weapon = if_then_else(dualWield ~= 0, cur_dual_wield_weapon(), cur_weapon()) - if active_player(m) == 0 or weapon == nil then - obj_mark_for_deletion(o) - return - end - - local index = if_then_else(dualWield ~= 0, 1, 0) - if m.marioBodyState.updateTorsoTime == gMarioStates[0].marioBodyState.updateTorsoTime and m.marioBodyState.handState == MARIO_HAND_FISTS and weapon.reqCheck(m) then - cur_obj_unhide() - o.oPosX = get_hand_foot_pos_x(m, index) + m.vel.x - (sins(m.faceAngle.y) * 30) - o.oPosY = get_hand_foot_pos_y(m, index) + m.vel.y + if_then_else(m.action == ACT_JUMP or m.action == ACT_DOUBLE_JUMP, 20, 0) - o.oPosZ = get_hand_foot_pos_z(m, index) + m.vel.z - (coss(m.faceAngle.y) * 30) - o.oFaceAngleYaw = m.faceAngle.y - 0x4000 - o.oFaceAnglePitch = 0 - o.oFaceAngleRoll = 0 - else - cur_obj_hide() - o.oPosX = m.pos.x - o.oPosY = m.pos.y + 60 - o.oPosZ = m.pos.z - end - - if m.playerIndex == 0 and get_first_person_enabled() then - cur_obj_hide() - end - - obj_set_model_extended(o, weapon.model) -end - -id_bhvHeldWeapon = hook_behavior(nil, OBJ_LIST_GENACTOR, true, bhv_held_weapon_init, bhv_held_weapon_loop, "bhvGmHeldWeapon") - - ---- @param o Object -local function bhv_pickup_weapon_init(o) - o.oFlags = OBJ_FLAG_UPDATE_GFX_POS_AND_ANGLE - o.oIntangibleTimer = 0 - obj_scale(o, 0.75) - - o.hitboxRadius = 90 - o.hitboxHeight = 90 - - network_init_object(o, true, {}) -end - ---- @param o Object -local function bhv_pickup_weapon_loop(o) - cur_obj_update_floor_height() - o.oPosY = o.oFloorHeight + 130 - - o.oFaceAngleYaw = o.oFaceAngleYaw + 0x800 - - local nearest = nearest_mario_state_to_object(o) - if obj_check_hitbox_overlap(o, nearest.marioObj) and o.oIntangibleTimer == 0 and nearest.playerIndex == 0 then - o.oIntangibleTimer = 450 - pickup_weapon(o.oBehParams) - end - - if o.oIntangibleTimer ~= 0 then - cur_obj_hide() - else - cur_obj_unhide() - o.oGraphYOffset = math.sin(o.oTimer * 0.5) * 5 - end -end - -id_bhvWeaponPickup = hook_behavior(nil, OBJ_LIST_LEVEL, true, bhv_pickup_weapon_init, bhv_pickup_weapon_loop, "bhvGmWeaponPickup") - - -------------- --- weapons -- -------------- - -WEAPON_PISTOL = weapon_register( - "Pistol", -- name - true, -- dual wieldable - E_MODEL_PISTOL, -- weapon model - E_MODEL_SINGLE_ARM, -- arm model - E_MODEL_YELLOW_COIN, -- bullet model - { sync_audio_sample_load("pistol_shoot.mp3") }, -- primary sounds - { sync_audio_sample_load("pistol_reload.mp3") }, -- secondary sounds - false, -- strong weapon - false, -- rapid fire - 10, -- spread - 15, -- damage - 1, -- bullet count - 0.2, -- bullet scale - 500, -- bullet speed - 10, -- bullet steps - 18, -- max ammo - 15, -- deploy time - 5, -- cooldown time - 60, -- reload time - common_shoot, -- primary fire - common_reload, -- secondary fire - check_common_gun_requirements -- requirement checks function -) - -WEAPON_MAGNUM = weapon_register( - "Magnum", -- name - true, -- dual wieldable - E_MODEL_MAGNUM, -- weapon model - E_MODEL_SINGLE_ARM, -- arm model - E_MODEL_METALLIC_BALL, -- bullet model - { sync_audio_sample_load("magnum_shoot.mp3") }, -- primary sounds - { sync_audio_sample_load("magnum_reload.mp3") }, -- secondary sounds - false, -- strong weapon - false, -- rapid fire - 0, -- spread - 50, -- damage - 1, -- bullet count - 0.2, -- bullet scale - 2000, -- bullet speed - 40, -- bullet steps - 6, -- max ammo - 15, -- deploy time - 30, -- cooldown time - 90, -- reload time - common_shoot, -- primary fire - common_reload, -- secondary fire - check_common_gun_requirements -- requirement checks function -) - -WEAPON_AK47 = weapon_register( - "AK47", -- name - false, -- dual wieldable - E_MODEL_AK47, -- weapon model - E_MODEL_SINGLE_ARM, -- arm model - E_MODEL_YELLOW_COIN, -- bullet model - { sync_audio_sample_load("ak47_shoot.mp3") }, -- primary sounds - { sync_audio_sample_load("pistol_reload.mp3") }, -- secondary sounds - false, -- strong weapon - true, -- rapid fire - 30, -- spread - 10, -- damage - 1, -- bullet count - 0.2, -- bullet scale - 500, -- bullet speed - 10, -- bullet steps - 40, -- max ammo - 30, -- deploy time - 4, -- cooldown time - 70, -- reload time - common_shoot, -- primary fire - common_reload, -- secondary fire - check_common_gun_requirements -- requirement checks function -) - ---[[WEAPON_SHOTGUN = weapon_register( - "Shotgun", -- name - false, -- dual wieldable - E_MODEL_SHOTGUN, -- weapon model - E_MODEL_SINGLE_ARM, -- arm model - E_MODEL_RED_COIN, -- bullet model - { sync_audio_sample_load("shotgun_shoot.mp3") }, -- primary sounds - {}, -- secondary sounds - true, -- strong weapon - false, -- rapid fire - 50, -- spread - 6, -- damage - 5, -- bullet count - 0.2, -- bullet scale - 1000, -- bullet speed - 20, -- bullet steps - 7, -- max ammo - 15, -- deploy time - 30, -- cooldown time - 120, -- reload time - common_shoot, -- primary fire - common_reload, -- secondary fire - check_common_gun_requirements -- requirement checks function -)]] \ No newline at end of file diff --git a/mods/gun-mod/main.lua b/mods/gun-mod/main.lua deleted file mode 100644 index cbbdf99c..00000000 --- a/mods/gun-mod/main.lua +++ /dev/null @@ -1,407 +0,0 @@ --- name: Gun Mod DX --- incompatible: weapon --- description: Gun Mod DX v3.0.2\nBy \\#ec7731\\Agent X\\#dcdcdc\\\nSpecial thanks to \\#f296af\\PeachyPeach\\#dcdcdc\\\n\nThis is a rewritten & overhauled version of my original Gun Mod for sm64ex-coop. I thought this would make a good mod to bundle with sm64coopdx. If you have two pistols, you are able to dual wield them as well!\n\nPress [\\#3040ff\\Y\\#dcdcdc\\] to shoot\nPress [\\#3040ff\\X\\#dcdcdc\\] to reload\nRun \\#00ffff\\/gm help\\#dcdcdc\\ for help --- deluxe: true - -if SM64COOPDX_VERSION == nil then return end - -gGlobalSyncTable.gunModEnabled = true - -local renderHud = true - -gShootableHitboxes = { - [id_bhvMario] = hurt_player, - [id_bhvStar] = hurt_star, - [id_bhvMessagePanel] = hurt_sign, - [id_bhvToadMessage] = hurt_toad, - [id_bhvExclamationBox] = hurt_exclamation_box, - [id_bhvBreakableBox] = hurt_breakable_box, - [id_bhvBreakableBoxSmall] = hurt_breakable_box_small, - [id_bhvBowlingBall] = hurt_bowling_ball, - [id_bhvWaterBomb] = hurt_water_bomb, - [id_bhvTree] = hurt_tree, - [id_bhvChainChomp] = hurt_chain_chomp, - [id_bhvGoomba] = hurt_goomba, - [id_bhvBobomb] = hurt_bobomb, - [id_bhvHomingAmp] = hurt_amp, - [id_bhvCirclingAmp] = hurt_amp, - [id_bhvKoopa] = hurt_koopa, - [id_bhvFlyGuy] = hurt_snufit, - [id_bhvChuckya] = hurt_chuckya, - [id_bhvPiranhaPlant] = hurt_piranha_plant, - [id_bhvSnufit] = hurt_snufit, - [id_bhvSwoop] = hurt_snufit, - [id_bhvSpindrift] = hurt_spindrift, - [id_bhvMrBlizzard] = hurt_mr_blizzard, - [id_bhvMrI] = hurt_mr_i, - [id_bhvScuttlebug] = hurt_scuttlebug, - [id_bhvPokeyBodyPart] = hurt_pokey, - [id_bhvSkeeter] = hurt_scuttlebug, - [id_bhvSmallBully] = hurt_bully, - [id_bhvBigBully] = hurt_bully, - [id_bhvSmallChillBully] = hurt_bully, - [id_bhvBigChillBully] = hurt_bully, - [id_bhvMoneybag] = hurt_moneybag, - [id_bhvKingBobomb] = hurt_king_bobomb, - [id_bhvBowser] = hurt_bowser, - [id_bhvYoshi] = hurt_yoshi -} - ---- @param enable boolean ---- @return nil ---- Globally enables or disables Gun Mod -local function enable_gun_mod(enable) - if not network_is_server() and not network_is_moderator() then return end - if type(enable) ~= "boolean" then return end - gGlobalSyncTable.gunModEnabled = enable - djui_popup_create("Gun Mod has been " .. if_then_else(gGlobalSyncTable.gunModEnabled, "enabled.", "disabled."), 2) -end - ---- @param weapon WeaponId ---- Returns a weapon by its ID -local function get_weapon(weapon) - return gWeaponTable[weapon] -end - ---- @return nil ---- Returns whether or not the Gun Mod HUD will render -local function get_render_hud() - return renderHud -end - ---- @param enable boolean ---- @return nil ---- Sets whether or not the Gun Mod HUD will render -local function set_render_hud(enable) - if type(enable) ~= "boolean" then return end - renderHud = enable -end - ---- @param behavior BehaviorId ---- @param hurtFunc fun(obj:Object, bulletObj:Object) ---- @return nil -local function shootable_register(behavior, hurtFunc) - if type(behavior) ~= "number" or type(hurtFunc) ~= "function" then return end - gShootableHitboxes[behavior] = hurtFunc -end - ---- @param m MarioState -local function mario_update(m) - if active_player(m) == 0 then return end - - if gGlobalSyncTable.gunModEnabled and gPlayerSyncTable[m.playerIndex].curWeapon ~= nil then - local spawned = false - local held = obj_get_first_with_behavior_id(id_bhvHeldWeapon) - while held ~= nil do - if obj_get_weapon_owner(held) == gNetworkPlayers[m.playerIndex].globalIndex then - spawned = true - break - end - held = obj_get_next_with_same_behavior_id(held) - end - - if not spawned then - spawn_non_sync_object( - id_bhvHeldWeapon, - gWeaponTable[gPlayerSyncTable[m.playerIndex].curWeapon].model, - 0, 0, 0, - --- @param o Object - function(o) - obj_set_weapon_params(o, gNetworkPlayers[m.playerIndex].globalIndex, gPlayerSyncTable[m.playerIndex].curWeapon, 0, 0) - end - ) - - if gPlayerSyncTable[m.playerIndex].curWeapon2 ~= nil then - spawn_non_sync_object( - id_bhvHeldWeapon, - gWeaponTable[gPlayerSyncTable[m.playerIndex].curWeapon2].model, - 0, 0, 0, - --- @param o Object - function(o) - obj_set_weapon_params(o, gNetworkPlayers[m.playerIndex].globalIndex, gPlayerSyncTable[m.playerIndex].curWeapon2, 1, 0) - end - ) - end - end - end - - if m.playerIndex ~= 0 then return end - - if vec3f_dist(m.pos, m.area.camera.pos) < 500 and (m.action & ACT_GROUP_MASK) ~= ACT_GROUP_CUTSCENE then - m.marioBodyState.modelState = m.marioBodyState.modelState | MODEL_STATE_NOISE_ALPHA - end - - if get_first_person_enabled() then - if gGlobalSyncTable.gunModEnabled and obj_get_first_with_behavior_id(id_bhvViewmodel) == nil and cur_weapon() ~= nil then - spawn_viewmodels() - end - - if (m.action & ACT_FLAG_IDLE) ~= 0 then - m.faceAngle.y = gLakituState.yaw + 0x8000 - end - - -- movement - -- if m.action ~= ACT_CUSTOM_MOVEMENT then - -- set_mario_action(m, ACT_CUSTOM_MOVEMENT, 0) - -- vec3f_copy(gPlayerFirstPerson.movement.pos, m.pos) - -- end - elseif not camera_config_is_mouse_look_enabled() then - djui_hud_set_mouse_locked(false) - end - - -- disable negative vertical speed conservation so guns don't appear lower than normal - local group = (m.action & ACT_GROUP_MASK) - if (group == ACT_GROUP_MOVING or group == ACT_GROUP_STATIONARY or group == ACT_GROUP_OBJECT) and (m.action & ACT_FLAG_AIR) == 0 and m.vel.y < 0 then - m.vel.y = 0 - end - - if gGlobalSyncTable.gunModEnabled then - weapon_update() - end -end - -local function on_level_init() - local obj = obj_get_first(OBJ_LIST_SURFACE) - while obj ~= nil do - obj.header.gfx.skipInViewCheck = true - obj = obj_get_next(obj) - end - - spawn_dialog_arrow() - - if not mod_storage_load_bool("init") then - mod_storage_save_bool("init", true) - audio_sample_play(SOUND_CUSTOM_BAD_TO_THE_BONE, gMarioStates[0].pos, 1) - end -end - -local function on_hud_render_behind() - local weapon = cur_weapon() - if weapon == nil or not renderHud or not gGlobalSyncTable.gunModEnabled or gNetworkPlayers[0].currActNum == 99 or obj_get_first_with_behavior_id(id_bhvActSelector) ~= nil then return end - - djui_hud_set_resolution(RESOLUTION_N64) - djui_hud_set_font(FONT_HUD) - - local width = djui_hud_get_screen_width() - local height = djui_hud_get_screen_height() - - if get_first_person_enabled() and weapon ~= nil and not is_game_paused() then - djui_hud_set_color(255, 255, 0, 127) - djui_hud_render_texture(TEX_CROSSHAIR, width * 0.5 - 4, height * 0.5 - 4, 0.5, 0.5) - end - - local y = height - 35 - djui_hud_set_color(255, 255, 255, 255) - if weapon.maxAmmo ~= 0 then - djui_hud_print_text(weapon.ammo .. "/" .. weapon.maxAmmo, width - 128, y, 1) - end - - local weapon2 = cur_dual_wield_weapon() - if weapon2 ~= nil and weapon2.maxAmmo ~= 0 then - djui_hud_print_text(weapon2.ammo .. "/" .. weapon2.maxAmmo, 16, y, 1) - end -end - -function on_packet_receive(dataTable) - if dataTable.packet == PACKET_ATTACK then - if gNetworkPlayers[0].currLevelNum == dataTable.level and gNetworkPlayers[0].currAreaIndex == dataTable.area and gNetworkPlayers[0].currActNum == dataTable.act then - audio_sample_play(SOUND_CUSTOM_IMPACT, gMarioStates[0].pos, 1) - end - - if dataTable.yoshi then - local pos = gMarioStates[network_local_index_from_global(dataTable.globalIndex)].pos - spawn_non_sync_object( - id_bhvExplosion, - E_MODEL_TROLL_EXPLOSION, - pos.x, pos.y + 80, pos.z, - nil - ) - end - - if gNetworkPlayers[0].globalIndex ~= dataTable.globalIndex then return end - - if dataTable.yoshi then - set_health(0) - else - set_health(get_health() - gWeaponTable[dataTable.weaponId].damage) - end - elseif dataTable.packet == PACKET_SOUND then - if gNetworkPlayers[0].currLevelNum == dataTable.level and gNetworkPlayers[0].currAreaIndex == dataTable.area and gNetworkPlayers[0].currActNum == dataTable.act then - -- audio_sample_stop(gSoundTable[dataTable.sound]) - audio_sample_play(gSoundTable[dataTable.sound], { x = dataTable.x, y = dataTable.y, z = dataTable.z }, dataTable.volume) - end - end -end - - --------------- --- commands -- --------------- - -local function on_fp_command() - set_first_person_enabled(not gFirstPersonCamera.enabled) - - djui_chat_message_create("[Gun Mod] First person mode status: " .. on_or_off(gFirstPersonCamera.enabled)) - return true -end - -local function on_fov_command(msg) - local fov = tonumber(msg) - if fov ~= nil then - if fov <= 0 then - fov = FIRST_PERSON_DEFAULT_FOV - end - mod_storage_save_number("fov", fov) - gFirstPersonCamera.fov = fov - djui_chat_message_create("[Gun Mod] Set FOV to " .. fov) - return true - end - - djui_chat_message_create("/gm \\#00ffff\\fov\\#ffff00\\ [number]\\#ffffff\\\nSets the first person camera FOV, default is \\#ffff00\\70\\#ffffff\\") - return true -end - -local function on_give_command(msg) - -- if not network_is_server() and not network_is_moderator() then - -- djui_chat_message_create("\\#ffa0a0\\You do not have permission to run this command.") - -- return true - -- end - - if not gGlobalSyncTable.gunModEnabled then - djui_chat_message_create("\\#ffa0a0\\[Gun Mod] You need to enable Gun Mod to give yourself a weapon.") - return true - end - - for id, weapon in pairs(gWeaponTable) do - if weapon.name:lower() == msg:lower() then - pickup_weapon(id) - local text = string.format("[Gun Mod] Gave %s %s", name_without_hex(gNetworkPlayers[0].name), weapon.name) - djui_chat_message_create(text) - return true - end - end - - djui_chat_message_create("/gm \\#00ffff\\give\\#ffff00\\ " .. get_weapon_list_string() .. "\\#ffffff\\\nGives yourself a gun") - return true -end - -local function on_gm_command(msg) - local args = split(msg) - if args[1] == "fp" then - return on_fp_command() - elseif args[1] == "fov" then - return on_fov_command(args[2] or "") - elseif args[1] == "give" then - return on_give_command(args[2] or "") - end - - if msg:gsub("%s+", "") == "" and (network_is_server() or network_is_moderator()) then - gGlobalSyncTable.gunModEnabled = not gGlobalSyncTable.gunModEnabled - djui_chat_message_create("[Gun Mod] Status: " .. on_or_off(gGlobalSyncTable.gunModEnabled)) - else - djui_chat_message_create("/gm \\#00ffff\\[fp|fov|give]\\#7f7f7f\\ (leave blank to toggle Gun Mod on or off)") - end - return true -end - -smlua_text_utils_dialog_replace(DIALOG_167, 1, 4, 30, 200, "Welcome to Gun Mod. After\ -4 months in development,\ -hopefully it will have\ -been worth the wait.\ -This mod has actually been\ -in development for 16\ -months, but progress was\ -pretty slow until recently.\ -I decided to rewrite the\ -rewrite to make this\ -mod's code less of a\ -total mess.\ --- TUTORIAL --\ -Press X to shoot\ -Press Y to reload\ -Run slash gm help\ -Princess Toadstool's\ -castle is just ahead.\ -\ -\ -Press [A] to jump, [Z] to\ -crouch, and [B] to punch,\ -read a sign, or grab\ -something.\ -Press [B] again to throw\ -something you're holding.") - -gServerSettings.playerInteractions = PLAYER_INTERACTIONS_PVP - -_G.gunModApi = { - enable_gun_mod = enable_gun_mod, - get_render_hud = get_render_hud, - set_render_hud = set_render_hud, - get_weapon = get_weapon, - weapon_register = weapon_register, - weapon_unregister = weapon_unregister, - weapon_unregister_all = weapon_unregister_all, - get_weapon_list_string = get_weapon_list_string, - obj_set_weapon_params = obj_set_weapon_params, - obj_get_weapon_owner = obj_get_weapon_owner, - obj_get_weapon_id = obj_get_weapon_id, - obj_get_weapon_dual_wield = obj_get_weapon_dual_wield, - obj_get_weapon_extra = obj_get_weapon_extra, - cur_weapon = cur_weapon, - cur_dual_wield_weapon = cur_dual_wield_weapon, - get_inventory_slot = get_inventory_slot, - set_inventory_slot = set_inventory_slot, - pickup_weapon = pickup_weapon, - get_health = get_health, - set_health = set_health, - common_shoot = common_shoot, - common_reload = common_reload, - bullet_ricochet = bullet_ricochet, - obj_generate_hitbox_multiply_func = obj_generate_hitbox_multiply_func, - obj_generate_health_func = obj_generate_health_func, - shootable_register = shootable_register -} - -local fov = mod_storage_load_number("fov") -if fov == 0 then - fov = FIRST_PERSON_DEFAULT_FOV - mod_storage_save_number("fov", fov) -end -gFirstPersonCamera.fov = fov - -if START_IN_FIRST_PERSON then - set_first_person_enabled(true) -end - -hook_event(HOOK_MARIO_UPDATE, mario_update) -hook_event(HOOK_ON_LEVEL_INIT, on_level_init) -hook_event(HOOK_ON_PACKET_RECEIVE, on_packet_receive) -hook_event(HOOK_ON_HUD_RENDER_BEHIND, on_hud_render_behind) - -gm_hook_behavior(id_bhvMessagePanel, false, obj_sign_hitbox) -gm_hook_behavior(id_bhvExclamationBox, false, nil, obj_generate_hitbox_multiply_func(1, 1.8)) -gm_hook_behavior(id_bhvBreakableBox, false, obj_generate_health_func(HEALTH_BREAKABLE_BOX)) -gm_hook_behavior(id_bhvBowlingBall, false, obj_generate_health_func(HEALTH_BOWLING_BALL)) -gm_hook_behavior(id_bhvWaterBomb, false, nil, obj_generate_hitbox_multiply_func(1, 2)) -gm_hook_behavior(id_bhvChainChomp, false, nil, obj_generate_hitbox_multiply_func(1.5, 1.5)) -gm_hook_behavior(id_bhvHomingAmp, false, nil, obj_amp_hitbox) -gm_hook_behavior(id_bhvCirclingAmp, false, nil, obj_amp_hitbox) -gm_hook_behavior(id_bhvFlyGuy, false, nil, obj_generate_hitbox_multiply_func(0.75, 1.75)) -gm_hook_behavior(id_bhvChuckya, false, obj_chuckya_hitbox) -gm_hook_behavior(id_bhvSnufit, false, nil, obj_snufit_hitbox) -gm_hook_behavior(id_bhvSpindrift, false, nil, obj_generate_hitbox_multiply_func(0.75, 2)) -gm_hook_behavior(id_bhvKingBobomb, false, obj_king_bobomb_hitbox) -gm_hook_behavior(id_bhvBowser, false, obj_generate_health_func(HEALTH_BOWSER)) - -gm_hook_behavior(id_bhvStaticObject, false, obj_skip_in_view_check) - -hook_chat_command("gm", "\\#00ffff\\[fp|fov|give]\\#7f7f7f\\ (leave blank to toggle Gun Mod on or off)", on_gm_command) - --- matches the function(s) below -for i = 0, MAX_PLAYERS - 1 do - gPlayerSyncTable[i].curWeapon = WEAPON_MAGNUM - gPlayerSyncTable[i].curWeapon2 = WEAPON_PISTOL -end - -pickup_weapon(WEAPON_MAGNUM) -pickup_weapon(WEAPON_PISTOL) \ No newline at end of file diff --git a/mods/gun-mod/sound/ak47_shoot.mp3 b/mods/gun-mod/sound/ak47_shoot.mp3 deleted file mode 100644 index 07a198f6c11c59ae8e40fb65fa699e27cf9bc781..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7246 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 diff --git a/mods/gun-mod/sound/bad_to_the_bone_riff.mp3 b/mods/gun-mod/sound/bad_to_the_bone_riff.mp3 deleted file mode 100644 index 4b475d72a8cb058ea7728e2468b69a37855bf06c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27104 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

^Whrt&T8W~qYEO9v7`bqowozG{^1#Xi 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 KLwo)Q{{LT$IzQ0> diff --git a/mods/gun-mod/sound/dry.mp3 b/mods/gun-mod/sound/dry.mp3 deleted file mode 100644 index 58f7ebcfc3e3feb9f8412c5cae618eb4995474bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5975 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 OpVNH*U(SCy0{;ULa5;bg diff --git a/mods/gun-mod/sound/magnum_reload.mp3 b/mods/gun-mod/sound/magnum_reload.mp3 deleted file mode 100644 index aae5f842879ef27b3f38f33c72f3853f9b52c8b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8731 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 CFKTlD diff --git a/mods/gun-mod/sound/pistol_reload.mp3 b/mods/gun-mod/sound/pistol_reload.mp3 deleted file mode 100644 index fa0ed1ffdfb0ec9f0481c7590f43b0a8f31c5484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11641 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 diff --git a/mods/gun-mod/sound/pistol_shoot.mp3 b/mods/gun-mod/sound/pistol_shoot.mp3 deleted file mode 100644 index c4520b57ff4a4203e9afcfd76fdb1161427999ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17947 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 ZGMx66VR#ePoDVdE!PC{xWt~$(697n^GRXh{